인증
Anon은 패스키(권장)와 비밀번호 인증을 지원합니다. 두 방식 모두 지갑 키 계층을 지원하며 루트 비밀값의 파생·보호 방식이 다릅니다.
패스키(WebAuthn PRF)
패스키는 WebAuthn 표준의 PRF 확장(의사 난수 함수)을 사용합니다. 인증할 때:
- 브라우저가 Touch ID, Face ID, Windows Hello, FIDO2 하드웨어 키 같은 인증 장치를 호출합니다
- 인증 장치가 Anon 자격 증명을 키로 HMAC-PRF를 실행합니다
- 결정론적 32바이트 비밀값인 PRF 출력을 지갑 키 파생에 사용합니다
패스키의 장점
- 인증 장치 보호: 저장, 기기 귀속, 동기화는 인증 장치에 따라 다릅니다. PRF 지원이 필요하며 손상된 기기에 대한 안전을 보장하지 않습니다.
- 피싱 저항성: WebAuthn 자격 증명은 출처(
chrome-extension://...)에 연결되어 피싱 사이트가 요청할 수 없습니다. - 비밀번호 입력 불필요: 키로거에 지갑 비밀번호가 노출되는 일을 피하지만 세션 비밀값은 계속 보호해야 합니다.
- 생체 인증의 편의성: 한 번의 터치나 시선으로 인증합니다.
지원 인증 장치
브라우저, OS, 인증 장치, PRF 지원 여부에 따라 다릅니다. 설정 중 호환성을 확인하세요. 아래 예시는 모든 버전의 동작을 보장하지 않습니다.
- Touch ID(Mac)
- Face ID(Bluetooth를 통한 외부 인증 장치로서의 iPhone/iPad)
- Windows Hello
- YubiKey 및 기타 FIDO2 하드웨어 보안 키
비밀번호 인증
비밀번호를 선택하면 Argon2id로 루트 키를 파생합니다.
- Argon2id는 오프라인 추측 비용을 높이도록 설계된 메모리 집약적 비밀번호 해시 알고리즘입니다
- Anon은 높은 메모리 비용(64 MB)을 사용해 오프라인 무차별 대입 비용을 높입니다
- 무작위 솔트는
chrome.storage.local에 저장되며 파생 키는 서버에 전달되지 않습니다
비밀번호는 편리하지만 다음 이유로 패스키보다 보안성이 다소 낮습니다.
- 파생 중 비밀번호가 잠시 메모리에 존재합니다
- 저장소를 탈취당하면 약한 비밀번호는 여전히 오프라인 공격에 취약합니다
길고 고유한 암호문을 사용하세요.
세션 관리
인증 후 Anon이 세션을 만듭니다.
- 백그라운드 동기화를 위해 보기 전용 키를 메모리에 로드합니다
- 지출 키는 거래를 시작할 때 필요에 따라 로드합니다
- 설정된 시간 제한 후 세션이 만료됩니다
만료되면 Anon이 잠기고 모든 세션 키가 메모리에서 지워집니다.
자동 잠금
시스템 이벤트에 따라 자동 잠금이 가능합니다.
- 유휴 시간 제한: N분 동안 활동이 없을 때
- OS 잠금: 화면 잠금 또는 절전 시(해당 브라우저 확장 API 필요, 기본 활성화)
- 브라우저 닫기: 항상 잠금을 실행
Settings → Security에서 동작을 설정할 수 있습니다.