보안 개요
Anon은 사용자가 지출 키를 통제하는 비수탁 모델입니다. 공개 거래 정보와 서비스 요청 메타데이터는 다른 주체에게 보일 수 있습니다. Mobile Sync는 암호화된 QR로 화면 간 복구 자료를 직접 전송하며 Anon에 업로드하지 않습니다.
비수탁 모델
“비수탁”은 자금을 통제하는 개인 키를 사용자만 보유한다는 뜻입니다. Anon은:
- 서버에 개인 키나 니모닉을 저장하지 않습니다
- Anon 플랫폼 계정을 요구하지 않습니다
- 거래를 동결·취소하거나 접근할 수 없습니다
- 니모닉을 잃으면 계정을 복구해 줄 수 없습니다
따라서 복구 문구 백업은 사용자의 책임입니다.
데이터 저장 위치
| 데이터 | 위치 | 접근 |
|---|---|---|
| 암호화된 니모닉 | 브라우저 IndexedDB | 패스키·비밀번호로만 복호화 |
| IDB 암호화 키 | chrome.storage.local |
PRF 파생 키로 암호화 |
| 공개 주소 | chrome.storage.local |
평문, 설계상 공개 |
| RPC 구성 | chrome.storage.local |
평문 |
| 세션 키(보기·지출) | 메모리만 | 잠금·로그아웃 시 삭제 |
| PRF 키 | 메모리만 | 인증 중에만 존재 |
| 거래 내역 | Railgun SDK IndexedDB | 로컬 암호화 |
키 자료, 니모닉, 노트 내용은 Anon 서버로 보내지 않습니다. 네트워크 호출과 노출 정보는 다음과 같습니다.
| 호출 | 목적 | 볼 수 있는 정보 |
|---|---|---|
Digest CDN(digest.anon.inc) |
쉴드 풀 이력 다운로드 | IP. 모든 사용자의 요청이 같으며 키에서 파생한 정보 없음 |
인덱서 head API(api.anon.inc) |
CDN 갱신 사이 최신 상태 유지 | IP와 체인 동기화 위치, 즉 뒤처진 정도이며 보유 자산은 아님 |
| Anon 프록시를 통한 PPOI 집계기 | 결백 증명 검사 | IP와 조회한 블라인드 커밋먼트. 지갑별 요청, 아래 참고 |
| RPC 엔드포인트 | 공개 잔액, 가스, 전파 | IP와 조회하는 공개 주소. 엔드포인트 변경 가능 |
| Waku P2P | 브로드캐스터 통신 | 온체인 제출은 위임하지만 네트워크 메타데이터가 보일 수 있음 |
| Paymaster API(선택) | 가스 지원 | IP와 지원 거래를 요청했다는 사실 |
.anon.buzz 등록 서비스(선택) |
사용자 이름 조회 | IP와 조회하는 이름 |
첫 행이 대부분의 데이터를 담당하며 지갑별 쿼리를 의도적으로 쓰지 않습니다. 누구나 같은 공개 파일을 받고 로컬에서 복호화하므로 서버가 소유 노트를 알지 못합니다. 지갑 동기화에 자세히 설명합니다.
PPOI는 별도의 프라이버시 경로입니다. 집계기는 보기 키에서 파생한 특정 커밋먼트 조회를 받습니다. 현재 Anon 프록시는 읽기를 캐시하고 매개변수를 캐시 메타데이터에 보관할 수 있습니다. 캐시 키의 해시는 매개변수를 익명화하거나 네트워크 메타데이터 연결을 막지 않습니다. 운영자의 보존·접근 통제를 검토하고 캐시되지 않는다고 가정하지 마세요.
위협 모델
Anon이 보호하는 위협
- 온체인 관찰자: zk-SNARK가 비공개 거래의 금액, 발신자, 수신자를 숨깁니다
- IP 연결: 제출 방식에 따라 연결 메타데이터를 보는 주체가 달라집니다. Waku 전파는 IP 익명성을 보장하지 않습니다
- 인덱서의 노트 소유권 파악: 지갑별 쿼리 대신 공통 공개 파일을 받고 기기에서 복호화하므로 서버가 읽을 필터가 없습니다. 지갑 동기화 참고
- 암호문 무차별 대입: 높은 메모리 비용의 Argon2id가 오프라인 사전 공격을 늦춥니다
- 저장소 탈취: 저장 시 암호화하며 보호 수준은 인증 비밀값과 구현에 달려 있습니다
- Mobile Sync QR만 탈취: 휴대전화가 생성한 120비트 페어링 코드와 양쪽에 입력한 일회용 비밀번호도 필요합니다
Anon이 보호하지 못하는 위협
- 감염된 기기: 악성코드가 메모리 키나 비밀번호를 가로챌 수 있습니다
- 브라우저 확장 취약점: 확장 코드 결함이 키 자료를 노출할 수 있습니다
- 전체 페어링 정보 탈취: 암호화 QR, 휴대전화 코드, 일회용 비밀번호를 모두 확보하면 전송 계정을 복구할 수 있습니다. 오프라인 QR 사본은 만료시키거나 추측 횟수를 제한할 수 없습니다.
- 페어링 코드 클립보드 동기화: 휴대전화 코드를 누르면 Universal Clipboard 등으로 데스크톱에 복사될 수 있습니다. 클립보드와 QR을 함께 탈취하면 남은 보호는 일회용 비밀번호입니다. 30초 후 클립보드 삭제는 최선의 노력일 뿐입니다.
- 휴대전화 화면 캡처: 지원되는 캡처·녹화를 OS에 차단 요청하고 감지 후 경고합니다. 플랫폼 보호는 노출을 줄일 뿐 보장하지 않습니다. 복구 이미지는 사진과 최근 삭제 항목에서도 지우세요.
- 네트워크 트래픽 분석: 제출 위임이 메타데이터나 트래픽 분석을 없애지는 않습니다
- 동기화 트래픽 형태: 다운로드 양과 시점으로 IP의 대략적인 최근 동기화 시점을 알 수 있으나 소유 노트는 알 수 없습니다. VPN이나 Tor는 관찰 주체를 바꿀 뿐 시점과 양을 지우지 않습니다
- 결백 증명 쿼리: 지갑별 검사가 Anon 프록시를 통해 제3자 집계기에 도달합니다
- 니모닉 분실: 12단어 문구 없이 복구할 방법이 없습니다
오픈 소스
Anon은 오픈 소스를 목표로 github.com/anondotinc에 저장소와 도구를 점진적으로 공개하고 있습니다. 공개 유지보수가 가능한 구성 요소부터 차례로 릴리스합니다.
페이마스터 릴레이의 Go, Docker, Cloudflare Worker 전체 구현 등 일부는 이미 공개됐습니다.
Anon 코드와 별개로 기반 Railgun 컨트랙트와 암호학적 회로는 오픈 소스이며 여러 독립 기관의 감사를 받았습니다. 보고서는 Railgun GitHub 조직에 있습니다. 동기화 다이제스트는 공개되고 콘텐츠 주소로 식별되므로 누구나 Anon 인프라 접근 없이 온체인 로그와 대조할 수 있습니다. 다이제스트 동기화를 참고하세요.