지갑 복구 문구는 어디에 입력해야 할까?
복구 문구는 지갑 자체의 복원 흐름에 속하며, 지원 채팅이나 빌려온 가상 머신에 넣는 것이 아닙니다. 비밀이 어디에 입력되고 누가 볼 수 있는지 추적하세요.
지갑 복구는 텍스트 입력 작업처럼 보이지만 실제로는 키 보관 작업이다. 입력하는 문구는 서버가 검사하는 비밀번호가 아니라, 지갑이 잃어버리기 전에 가졌던 것과 같은 개인 키를 다시 만드는 유도 함수의 입력이다. 그 순간 키 입력, 클립보드, 프로세스 메모리를 읽을 수 있는 무엇이든 그것도 다시 만들 수 있다. 따라서 준비란 비밀이 존재하기 전에 비밀이 존재해도 되는 위치를 정하는 일이다.
문구를 매체에서 유도된 키까지 추적하라
BIP-39 방식의 니모닉은 정규화되고, 선택적 암호 문구를 소금으로 사용해 PBKDF2-HMAC-SHA512로 늘려지며, 지갑이 키를 유도하는 시드로 바뀐다. 여기서 두 가지 결과가 곧바로 따라온다. 첫째, 문구는 세션 자격 증명이 아니라 지속적인 권한이므로 유출되어도 서버 측 재설정이 없다. 둘째, 선택적 암호 문구가 유도에 참여하기 때문에 빈 지갑이 만들어진 것처럼 보이는 복원은 보통 문구가 아니라 암호 문구를 잘못 입력했다는 뜻이다.
정규화 이후의 모든 단계는 입력한 프로세스 안에서 일어난다. 대부분의 복구 안내서가 건너뛰는 부분이 바로 이것으로, 노출 면은 입력 경로와 그 프로세스의 메모리이며 당신과 웹사이트 사이의 네트워크가 아니다.
어떤 프로세스가 정당한지는 지갑에 달려 있다. 하드웨어 기기는 기기 자체의 복구 인터페이스를 가지고, 소프트웨어 지갑은 검증된 빌드에 문서화된 복원 화면을 가진다. 어느 쪽도 지원 채팅이 아니고, 어느 쪽도 당신 대신 문구를 검사해 주겠다는 페이지가 아니다.
게스트 시스템은 호스트의 신뢰를 물려받는다
가상 머신은 별도의 컴퓨터처럼 느껴지지만 독립적인 신뢰 경계가 아니다. 완전 가상화에 관한 NIST 지침은 이 의존성을 직접 설명한다: 게스트의 보안은 호스트와 그 아래의 하이퍼바이저에 달려 있고, 클립보드나 폴더 통합 같은 공유 자원은 둘 사이의 통로를 넓힌다. 이미 의심하는 머신에 게스트를 설치해도 새로운 입력 경로가 생기지 않는다.
| Control | What it addresses | What it leaves exposed |
|---|---|---|
| Verified wallet build | Running the code the publisher actually signed | Everything the running process can read once it starts |
| Live-boot environment, no persistent disk | Secrets left in swap, caches or a saved session | The firmware, the keyboard and the display path |
| Full-disk encryption on the host | Recovery material at rest after shutdown | The same material while the machine is unlocked |
| Tunnel to a trusted exit | Who can observe traffic in transit | Local processes, screen capture and input hooks |
실제 유출도 같은 선을 따른다. 공유 클립보드는 복사한 모든 것을 옮긴다. 스냅숏과 일시 중지 상태 파일은 문구가 담긴 메모리를 잡을 수 있다. 호스트 파일 시스템에 접근할 수 있는 게스트 추가 기능은 게스트에게 호스트 경로를, 호스트에게 게스트 경로를 보여 준다. 어느 것도 이국적인 공격이 아니라 가상 머신을 편리하게 만드는 기능일 뿐이다.
정직한 결론은 «가상 머신은 안전하지 않다»보다 좁다. 호스트가 신뢰하는 머신이고 공유 기능을 제거했다면 가상 머신은 이 작업에 맞는 그릇이 될 수 있다. 신뢰하지 않는 호스트를 구해 주지는 못한다.
암호화된 터널이 실제로 덮는 범위
VPN은 두 끝점 사이의 패킷을 보호한다. 어느 쪽 끝에서 누가 화면을 보는지에 대한 의견은 없고, 로컬 프로세스가 창에 입력하는 것을 관찰하는 것도 막지 않는다. 그래서 터널은 걱정이 경로에 있을 때 관련이 있고, 걱정이 호스트에 있을 때는 관련이 없다.
이 구분이 중요한 이유는 둘이 함께 팔리기 때문이다. «암호화된 연결»은 전송을 설명하고 «신뢰할 수 있는 기기»는 끝점을 설명한다. 복구 절차는 둘 모두에 별도의 답이 필요하며, 그중 하나만 네트워크 서비스가 답할 수 있다.
내려받은 것을 검증하는 일은 끝점에 관한 같은 질문군에 속한다. 해시 검사와 서명 검사는 보관 파일이 게시자가 배포한 것과 일치함을 확인하지만, 그것을 실행할 머신에 대해서는 아무 말도 하지 않는다.
sha256sum -c SHA256SUMS.txt
gpg --verify SHA256SUMS.txt.sig SHA256SUMS.txt자료가 나타나기 전에 환경을 준비하라
순서가 도구보다 중요하다. 호스트를 정하고, 공유 기능을 제거하고, 연결할 필요가 없는 것을 끊고, 그런 다음에야 복구 기록을 보관 장소에서 꺼낸다. 반대 순서로 하면 어디로 가야 할지 아직 정하는 동안 비밀이 이미 메모리에 있다.
그다음 비밀을 지갑 제조사가 문서화한 흐름 안에 두라. 지갑 자체의 복원 인터페이스에서, 지갑이 기대하는 네트워크에서 입력하고, 지갑이 제공하는 신뢰할 수 있는 화면에서 확인할 수 있는 작업만 승인하라. 익숙한 데스크톱 대화 상자는 기기가 그 대화 상자의 주장을 승인한다는 증거가 아니다.
노출이 의심되면 그 시스템에 자료를 입력하는 것을 멈추고 독립적으로 신뢰할 수 있는 환경으로 옮겨라. 가상 머신을 닫거나 VPN 비밀번호를 바꾸거나 지갑 앱을 다시 설치하는 것은 지갑의 권한을 교체하지 않으며, 새로 만든 키를 가진 새 지갑으로 자산을 옮기는 것만이 그것을 한다. 지갑별 단계를 구하는 동안 원본 문구를 어떤 지원 대화에도 넣지 마라, 정당한 지원 절차는 그것을 필요로 하지 않기 때문이다. 그 한 가지 규칙이 어떤 강화 체크리스트보다 더 많은 손실을 막는다.