거래소 계정, 폰 지갑, 하드웨어 지갑. 세 자리는 각각 다르게 무너집니다
하드웨어 지갑은 키를 격리하는 장치입니다. 훔쳐 가는 공격은 막고 내가 승인한 것은 막지 못합니다. 그리고 지갑은 장치가 아니라 12개나 24개 단어로 된 복구문구입니다.
| 궁금한 것 | 짧은 답 |
|---|---|
| 이 장치가 하는 일이 뭔가요 | 비밀키를 자기 안에서 만들고, 서명도 자기 안에서 합니다. 밖으로 나가는 건 서명된 거래뿐입니다. |
| 그래서 뭘 막아 주나요 | 감염된 PC가 키를 복사해 가는 것, 그리고 컴퓨터 화면에 뜬 주소가 바꿔치기된 경우입니다. |
| 못 막는 건 뭔가요 | 내가 승인한 것입니다. 악성 승인에 서명하면 장치는 그 거래를 정상적으로 서명해 줍니다. |
| 장치를 잃어버리면요 | 코인은 그대로입니다. 코인은 블록체인에 있고, 새 장치에 복원하면 같은 계정이 돌아옵니다. |
| 그럼 절대 잃으면 안 되는 건 | 복구문구입니다. 12개나 24개 단어를 순서대로 적어 둔 것이고, 사본은 내가 만든 것 말고는 없습니다. |
| 결국 더 안전해지나요 | 안전해진다기보다 위험의 종류가 바뀝니다. 도난 위험은 내려가고, 내가 누른 서명과 종이 관리가 내 책임으로 넘어옵니다. |
1. 코인을 둘 수 있는 세 자리, 그리고 각자 무너지는 지점
2. 원화 거래소만 쓰던 사람에게 새로 생기는 것
3. 장치가 하는 일은 하나입니다
4. 주소는 장치 화면에서, 그것도 전부 대조합니다
5. 못 막는 것부터 보셔야 합니다
6. 화면을 봤다는 것과 읽었다는 것은 다릅니다
7. 오픈채팅에서 온 링크와 서명 요청
8. 장치는 지갑이 아니고, 이 사실이 모든 사고를 바꿉니다
9. 복구문구 보관, 서로 반대로 당기는 두 위험
10. 새 장치가 도착했을 때 사실이어야 하는 것들
11. 물리적 접근, 그리고 선택형 백업이 바꾸는 것
12. 옮겨는 놨는데 움직이지 않는 이유
13. 자주 듣는 말과 문서에 적힌 것
14. 필자의 판단: 문서와 연구를 나란히 놓고 남은 것
하드웨어 지갑을 검색하는 분은 대개 두 가지 중 하나를 겪은 뒤입니다. 거래소에서 출금이 막혀 봤거나, 지갑이 비워졌다는 글을 봤거나입니다. 그런데 이 장치가 둘 중 하나는 답하고 하나는 답하지 않습니다. 그 경계선이 이 글의 내용입니다. 아래는 제조사가 자기 보안 문서에 적어 둔 내용과 공개된 연구를 근거로, 이 장치가 실제로 하는 일 하나와 하지 않는 일들을 정리한 것입니다. 그리고 한 가지가 더 있습니다. 장치는 교체할 수 있고, 그 장치가 만들어 준 단어는 교체할 수 없습니다.

1. 코인을 둘 수 있는 세 자리, 그리고 각자 무너지는 지점
코인을 어디에 두느냐는 사실 세 가지 중 하나를 고르는 일입니다. 업비트나 빗썸 같은 원화 거래소 계정에 두거나, 폰에 깐 지갑 앱에 두거나, 하드웨어 지갑에 둡니다. 그리고 이 셋은 각각 다른 것에 무너집니다. 어느 쪽이 더 좋다는 순위표가 아니라, 내가 감당할 수 있는 사고가 어느 쪽인지를 고르는 문제입니다.
| 코인이 있는 곳 | 열쇠를 가진 쪽 | 이 방식이 막아 주는 것 | 이 방식이 무너지는 지점 | 돌아오는 길 |
|---|---|---|---|---|
| 거래소 계정 | 거래소 | 내 폰·PC 감염, 내가 종이를 잃어버리는 사고 | 거래소 자체의 문제(잔고는 청구권), 계정 탈취, 출금 정지 | 거래소 절차와 고객센터 |
| 폰·PC 지갑 앱 | 나 (인터넷에 연결된 기기 안) | 거래소에 얽힌 위험 | 기기 감염, 악성 승인, 내 백업 습관 | 복구문구로 다시 설치 |
| 하드웨어 지갑 | 나 (격리된 칩 안) | 키 유출, 주소 바꿔치기, 원격 탈취 | 내가 누른 승인, 물리적 접근, 내 백업 습관 | 복구문구로 다른 장치에 복원 |
첫 줄부터 보셔야 하는 이유
거래소 계정에 찍혀 있는 숫자는 회사 데이터베이스에 적힌 값이고, 뜻은 ‘회사가 나에게 그만큼 갚을 게 있다’입니다. 거래소가 멀쩡할 때는 이 구분이 아무 의미가 없습니다. 문제가 생기는 순간에만 의미가 생기고, 그때는 이것이 유일하게 중요한 사실이 됩니다. 이 이야기는 거래소가 파산하면 내 코인은 어떻게 되나에서 따로 다뤘습니다.
다만 파산은 드문 일이고, 훨씬 자주 겪는 건 같은 의존의 작은 판본들입니다. 거래소 계정이 털린 경우와 출금이 동결된 경우가 그렇습니다. 하드웨어 지갑을 검색하게 되는 계기도 대개 이 둘 중 하나를 겪은 뒤입니다.
두 번째 줄과 세 번째 줄의 차이
폰에 깐 지갑 앱과 하드웨어 지갑은 둘 다 열쇠가 내 쪽에 있어서 같은 편처럼 보입니다. 실제로는 열쇠가 놓인 자리가 다릅니다. 앱 지갑에서는 열쇠가 암호화된 상태로 폰 안에 있고, 그 폰은 문자도 받고 앱도 깔고 링크도 엽니다. 하드웨어 지갑에서는 열쇠가 그 어느 것도 하지 않는 칩 안에 있습니다.
대신 세 번째 줄에는 두 번째 줄에 없던 항목이 하나 붙습니다. 물리적 접근입니다. 폰을 잃어버리면 잠금과 앱 비밀번호가 남지만, 하드웨어 지갑은 물건 자체가 열쇠를 담고 있어서 그 물건을 어디에 두는지가 위험 목록에 들어옵니다. 아래에서 이 항목만 따로 다루는 섹션이 있습니다.
정리하면 표의 네 번째 칸이 이 글의 실제 주제입니다. 세 방식 모두 무너지는 지점이 있고, 셋 다 다릅니다. 그래서 하드웨어 지갑으로 옮긴다는 결정은 위험을 없애는 결정이 아니라 내가 관리할 위험을 갈아 끼우는 결정입니다.
2. 원화 거래소만 쓰던 사람에게 새로 생기는 것
국내 거래소만 써 온 분에게는 짚고 넘어갈 게 하나 있습니다. 업비트에서 코인을 사고파는 동안 내가 서명한 것은 한 번도 없습니다. 화면에서 매수를 누르면 거래소 내부 장부의 숫자가 바뀌고, 열쇠는 처음부터 끝까지 거래소가 들고 있었습니다. 그래서 ‘토큰 승인’이라는 개념을 만난 적이 없고, 만날 필요도 없었습니다.
자기수탁으로 넘어오는 순간 그게 바뀝니다. 열쇠가 내 손에 오면 서명 권한도 같이 옵니다. 좋은 쪽으로는 어느 회사도 내 코인을 못 움직이고, 나쁜 쪽으로는 어느 회사도 되돌려 주지 못합니다. 고객센터가 서명을 취소해 줄 수 없고, 네트워크에 항의할 창구도 없습니다. 하드웨어 지갑을 산다는 건 장치 하나를 사는 게 아니라 이 교환에 동의하는 일입니다.
국내 앱에서 처음 만나는 화면
실제 동선으로 보면 이렇습니다. 업비트나 빗썸에서 출금을 누르면 받는 주소를 넣는 칸이 나오고, 어떤 네트워크로 보낼지 고르게 됩니다. 여기까지는 거래소가 대신 서명해 주는 구간입니다. 코인이 하드웨어 지갑에 도착한 다음부터는 반대가 됩니다. 무엇을 하든 장치를 꺼내서 확인을 눌러야 하고, 그 확인이 되돌릴 수 없는 서명이 됩니다.
예를 들어 디파이나 NFT 사이트에 지갑을 연결하면 ‘이 계약이 내 토큰을 옮길 수 있게 허용하겠느냐’는 요청이 뜹니다. 국내 거래소에서는 이런 화면을 볼 일이 없었습니다. 거래소가 내부에서 처리했기 때문입니다. 자기수탁에서는 이 요청이 나에게 직접 오고, 승인 여부를 내가 판단합니다. 새로 생긴 권한이면서 새로 생긴 사고 지점입니다.
그래서 이 글의 순서가 이렇습니다
보통은 무엇을 지켜 주는지부터 설명합니다. 그런데 실제로 돈이 사라지는 지점은 지켜 주지 않는 쪽에 몰려 있고, 그쪽을 모르면 장치를 사고도 똑같이 털립니다. 그래서 아래에서는 장치가 하는 일 하나를 먼저 정리하고, 바로 못 막는 것으로 넘어갑니다. 지갑이라는 말 자체가 아직 낯설다면 암호화폐 지갑이 무엇인지를 먼저 보고 오시는 편이 낫고, 코인 자체가 처음이라면 암호화폐 시작하기가 앞 단계입니다.
3. 장치가 하는 일은 하나입니다
기능 소개를 다 걷어내면 이 장치의 일은 한 문장입니다. 장치가 자기 칩 안에서 비밀키를 만들고, 그 안에 보관하고, 서명도 그 안에서 합니다. 케이블을 통해 밖으로 나가는 것은 서명이 끝난 거래이고, 비밀키는 장치 밖으로 나가지 않습니다.
그래서 컴퓨터가 감염돼 있어도 버틸 수 있습니다. 악성코드가 키보드 입력을 다 기록하고 화면을 다 들여다봐도 가져갈 게 없습니다. 훔치려는 비밀이 애초에 그 컴퓨터에 없었기 때문입니다. 폰이나 PC에 깐 지갑 앱은 사정이 다릅니다. 거기서는 키가 암호화된 상태로 들어 있고, 그 기기는 브라우저도 돌리고 다운로드도 하고 메신저도 씁니다.
화면이 나머지 절반입니다
키를 격리하는 것만으로는 절반짜리입니다. 내가 무엇에 서명하는지는 누군가 알려 줘야 하는데, 알려 주는 그 컴퓨터가 못 믿을 대상이 됐기 때문입니다. 그래서 장치는 받는 주소와 금액을 자기 화면에 직접 띄웁니다. 일부 제품은 인증된 보안칩이 화면까지 직접 구동한다고 밝히고, 그게 화면에 뜬 값이 중간에 바뀌지 않았다는 근거입니다.
여기서 나오는 결론은 기술이 아니라 습관 쪽입니다. 확인 화면은 형식적으로 넘기는 절차가 아니고, 보안 설계 전체가 나에게 질문을 던지는 순간입니다. 읽지 않고 누르는 습관이 붙으면 격리는 사고 검증은 버린 셈이 되는데, 그게 값의 절반입니다.
‘인터넷에 연결되지 않는다’는 말의 정확한 뜻
이 장치를 콜드월렛이라고 부르는데, 표현이 오해를 만듭니다. 장치는 케이블이나 블루투스로 컴퓨터와 대화합니다. 정확한 뜻은 장치가 웹을 돌아다니지 않는다는 것이고, 하는 일이 딱 두 가지로 제한된다는 것입니다. 서명해 달라는 요청을 받고, 서명을 돌려줍니다. 그 사이에 화면으로 나에게 묻습니다.
그래서 지갑 앱이나 관리 프로그램이 감염되면 보여주는 내용은 조작할 수 있어도 서명을 만들지는 못합니다. 공격자가 할 수 있는 최선은 내가 서명하고 싶어 하도록 화면을 꾸미는 일이고, 그게 왜 이 장치를 상대로 하는 공격이 전부 사람을 겨냥하는지에 대한 설명입니다.
같은 이유로 자기수탁에는 고객센터가 없습니다. 서명을 취소해 주는 절차가 설계 안에 아예 없습니다. 거래소에서 잘못 보냈을 때와 자기 지갑에서 잘못 서명했을 때의 차이가 여기서 갈립니다. 전자는 사람과 이야기할 여지가 조금 남아 있고, 후자는 대개 남아 있지 않습니다.
4. 주소는 장치 화면에서, 그것도 전부 대조합니다
이 장치가 가능하게 해 주는 습관 중에 가장 쓸모 있는 것은 설명이 지루하고 건너뛰기는 쉽습니다. 확인을 누르기 전에 받는 주소를 장치 화면에서 읽는 것입니다. 모니터에 뜬 창이 아니라 장치의 작은 화면입니다. 설계의 절반이 이 한 동작을 위해 붙어 있습니다.
이게 답하는 공격은 오래됐고 지금도 작동합니다. 클립보드를 노리는 악성코드는 조용히 대기하다가 코인 주소처럼 생긴 문자열이 복사되는 순간 그것을 자기 주소로 바꿔 놓습니다. 붙여넣기를 하면 칸은 채워져 있고, 보내기를 누릅니다. 붙여넣기 동작에 이상한 점이 없었습니다. 실제로 이상한 점이 없었기 때문입니다.
앞자리만 보는 확인은 확인이 아닙니다
여기서 사람들이 방어를 스스로 내려놓습니다. 주소가 길어서 앞 네 글자만 슬쩍 보고 같으니 확인을 누르는 습관이 생깁니다. 이 공격을 다룬 공개 연구, 이른바 EthClipper 연구는 뻔한 대응책을 실제로 보여 줬습니다. 미리 만들어 둔 주소 데이터베이스를 조회해서 원래 주소와 눈으로 가장 비슷하게 보이는 것을 골라 내놓는 방식입니다. 앞자리를 맞춘 주소는 만들기 어렵지 않습니다.
그래서 실제로 버티는 확인은 세 군데를 보는 것입니다. 앞 다섯 글자, 뒤 다섯 글자, 그리고 중간에서 한 묶음. 몇 초 걸리고, 이게 검증과 의식(儀式)의 차이입니다. 지난주에 저장해 둔 주소로 다시 보내는 경우라면 사이트가 친절하게 채워 준 값이 아니라 내가 저장해 둔 값과 대조하는 편이 낫습니다.
비슷하게 보이지만 원인이 다른 사고도 있습니다. 장치 화면의 주소가 분명히 내 주소인데도 코인이 엉뚱한 곳에 가 있는 경우입니다. 이건 주소가 아니라 네트워크를 잘못 고른 것이고, 잘못된 네트워크로 보낸 경우에 정리해 뒀습니다.
5. 못 막는 것부터 보셔야 합니다
이제 못 막는 쪽입니다. 실제로 자기수탁 지갑이 비워지는 사고는 대부분 여기서 납니다. 어떤 사람이 하드웨어 지갑을 원하던 사이트와 똑같이 생긴 곳에 연결하고, 요청을 눌러 넘기고, 작은 화면에서 확인을 누릅니다. 1분 뒤 토큰이 사라집니다. 장치는 완벽하게 동작했습니다. 승인에 서명하라고 해서 승인에 서명했을 뿐입니다.
내가 승인한 거래는 장치가 막지 못합니다. 제조사들도 자사 보안 문서에 같은 취지로 적어 뒀습니다. 장치는 공격자가 내 키를 가져가는 것을 막고, 내가 이미 내준 권한을 되돌려 주지는 않습니다.
| 상황 | 장치가 막나 | 실제로 막는 것 |
|---|---|---|
| PC·폰이 감염돼 키를 찾는다 | 막습니다 | 키가 칩 밖으로 안 나가서 훔칠 게 없습니다 |
| 클립보드가 받는 주소를 바꿔치기했다 | 조건부로 막습니다 | 컴퓨터 화면이 아니라 장치 화면에서 주소를 확인하는 것 |
| 사칭 사이트에서 토큰 승인에 서명했다 | 못 막습니다 | 승인 회수, 그리고 읽지 않은 요청을 거절하기 |
| 해독되지 않은 데이터에 서명했다 | 못 막습니다 | 그 상태를 알아보고 거절하는 판단 |
| 고객센터라는 곳에 복구문구를 입력했다 | 못 막습니다 | 어떤 화면에도 문구를 넣지 않는 규칙 |
| 장치를 분실하거나 고장 났다 | 해당 없음 | 복구문구로 새 장치에 복원 |
| 복구문구를 사본 없이 잃었다 | 못 막습니다 | 없습니다. 여기서 길이 끊깁니다 |
| 장치가 남의 손에 오래 있었다 | 모델에 따라 다릅니다 | 패스프레이즈(복구문구에 추가로 입력하는 문자열로 숨은 지갑을 만듭니다), 그리고 장치를 두는 곳 |
| 거래소가 출금을 막았다 | 무관합니다 | 장치와 상관없는 다른 문제입니다 |
가운데 세 줄이 이 글의 핵심입니다. 아홉 가지 중 셋이 하드웨어가 손댈 수 없는 영역이고, 그 셋은 모두 내가 확인을 누른 화면을 통과했습니다. 제품 결함이 아니고, 키를 격리한다는 방식 자체의 경계선입니다.

6. 화면을 봤다는 것과 읽었다는 것은 다릅니다
장치 화면을 봤다는 것과 무엇에 서명하는지 읽었다는 것은 다른 일입니다. 그 사이의 틈에는 이름이 있습니다.
블라인드 서명은 지갑이 그 거래의 내용을 해독하지 못해서, 무슨 뜻인지 읽을 수 없는 데이터를 그대로 확인하게 되는 상태입니다. 코인을 그냥 보내는 거래는 깔끔하게 풀립니다. 받는 주소와 금액이 뜹니다. 반면 계약을 호출하는 거래는 안 풀릴 수 있고, 그러면 화면에는 알 수 없는 값들이 뜨고 확인을 누르면 효과를 모르는 무언가를 승인한 셈이 됩니다.
고치려는 시도가 세 번 있었습니다
먼저 EIP-712가 16진수 덩어리를 사람이 읽는 항목들로 바꿔 줍니다. 분명한 개선이지만 해결은 아닙니다. 기술 항목까지 전부 같이 들어와서 중요한 항목이 묻힙니다. 그다음이 명확 서명입니다. 장치가 내용을 해석해 보여 줄 항목을 골라 주고, 그러면 화면이 이 거래가 무엇을 하는지 평범한 말로 알려 줍니다.
함정은 제조사 문서에 그대로 적혀 있습니다. 특정 계약에 대해 명확 서명이 되려면 그 계약에 맞는 설명 정보가 레지스트리에 등록돼 있어야 하고, 없으면 블라인드 서명으로 되돌아갑니다. 즉 내 확인 화면의 품질이 누군가 그 계약을 위해 미리 작업해 뒀는지에 달려 있고, 그 사실을 나는 결정을 요구받는 순간에 알게 됩니다.
| 보고 있는 화면 | 화면에 뜨는 것 | 화면이 알려주지 않는 것 | 확인할 것 |
|---|---|---|---|
| 코인 전송 | 받는 주소, 금액, 수수료 | 그 주소가 누구 것인지 | 주소 앞·뒤·중간 대조 |
| 토큰 승인 | 계약 주소, 한도(무제한일 수 있습니다) | 그 계약이 권한으로 무엇을 할지 | 한도, 계약 주소, 내가 들어온 경로 |
| 해독 안 된 계약 호출 | 데이터 조각, 함수 식별자 | 확인을 누르면 벌어지는 일 | 이게 블라인드 서명이라는 사실, 거절 여부 |
| 메시지 서명 | 문자열 또는 항목 묶음 | 그 서명이 나중에 어디 쓰일지 | 요청한 사이트, 항목 이름 |
이게 계약을 다루는 데 장치가 쓸모없다는 뜻은 아닙니다. 정직한 안내가 세상에 도는 안내보다 한 줄 길다는 뜻입니다. 도는 안내는 하드웨어 지갑을 쓰라는 데서 끝나고, 정확한 안내는 여기에 한 줄이 붙습니다. 아무것도 알려주지 않는 화면을 알아볼 수 있어야 한다는 줄입니다.
7. 오픈채팅에서 온 링크와 서명 요청
한국에서 이 서명 요청이 들어오는 경로는 꽤 정해져 있습니다. 오픈채팅방이나 리딩방, 텔레그램에서 링크가 하나 옵니다. 상장 기념 물량이 남았다거나, 미청구 에어드랍이 있다거나, 지갑 점검이 필요하다는 말이 붙습니다. 페이지에는 받기 버튼이 하나 있고, 누르면 지갑 연결과 서명 요청이 뜹니다.
토큰 승인은 계약이 내 토큰을 옮길 수 있게 해 주는 권한이고, 별개의 거래로 남아 있습니다. 하려던 스왑에 쓰이고 없어지는 게 아니고, 저절로 만료되지도 않습니다. 무제한 권한을 악성 계약에 준 경우 실제 인출은 그날 밤에 일어날 수도 있고 몇 주 뒤 공격자가 편한 때 일어날 수도 있습니다.
여기서 하드웨어가 도울 수 없는 이유
훔쳐 간 게 없기 때문입니다. 정상 키가 정상 서명을 만들었고, 그 거래를 확인한 사람은 소유자입니다. 보안 설계의 모든 부분이 설계대로 동작했습니다. 그래서 대응은 한 층 위, 토큰 승인 확인과 회수에 있고, 사고가 난 다음이 아니라 주기적으로 하는 편이 낫습니다.
요청 화면에서 갈리는 신호
서명 요청 자체는 정상적인 기능이라 요청이 떴다는 사실만으로는 판단이 안 됩니다. 대신 갈리는 지점이 몇 개 있습니다. 첫째, 내가 먼저 찾아간 사이트인지 아니면 링크를 받고 들어간 사이트인지입니다. 드레이너 대부분은 받은 링크 쪽에서 옵니다. 둘째, 요청이 전송인지 승인인지입니다. 받을 게 있다는 페이지가 내 토큰을 옮길 권한을 요구하면 방향이 반대입니다. 받는 일에는 내 서명이 필요하지 않습니다.
셋째, 한도입니다. 승인 화면의 한도가 무제한으로 잡혀 있는데 하려던 일이 소액이라면 요청과 권한의 크기가 맞지 않습니다. 넷째, 지갑 점검이나 동기화 같은 말입니다. 지갑은 점검을 위해 서명을 요구하지 않습니다. 그런 표현이 붙은 화면은 대개 승인이나 메시지 서명을 받아 가려는 화면입니다.
들어오는 문 두 개는 각각 따로 정리해 뒀습니다. 받을 게 있다는 클레임 페이지는 진짜 에어드랍과 가짜를 구별하는 법에 있고, 먼저 말을 걸어오는 계정 쪽은 코인 사기가 어떻게 구성되는지에 있습니다. 이미 빠져나갔다면 코인 사기 환불이 가능한가가 현실적인 범위를 정리합니다. 승인 하나가 아니라 복구문구 자체가 노출된 경우라면 시계가 다른 사고이고, 시드문구가 유출됐을 때로 가야 합니다.
8. 장치는 지갑이 아니고, 이 사실이 모든 사고를 바꿉니다
주제 전체를 다시 정리해 주는 문장이 하나 있습니다. 코인은 장치 안에 들어 있지 않습니다. 블록체인에 기록으로 있고, 장치는 그 기록을 바꿀 권한이 있는 키를 들고 있을 뿐입니다. 그래서 장치는 지갑이 아닙니다. 지갑은 복구문구이고, 장치는 그 문구를 쓰는 여러 방법 중 교체 가능한 하나입니다.
이 문장을 실제로 사람들이 겪는 사고에 대입하면 무서운 목록이 아니게 됩니다.
| 잃어버린 것 | 자산은 어떻게 되나 | 해야 하는 일 |
|---|---|---|
| 장치 | 그대로입니다 | 복구문구로 다른 장치에 복원. 잃어버린 장치는 PIN에 잠긴 상태로 남습니다 |
| PIN | 그대로입니다 | 장치가 초기화되게 두고, 복구문구로 복원한 뒤 새 PIN 설정 |
| 장치가 고장 | 그대로입니다 | 복원하면 됩니다. 같은 브랜드가 아니어도 됩니다 |
| 복구문구, 사본이 어디에도 없음 | 접근 경로가 사라집니다 | 여기에 적을 단계가 없습니다 |
| 복구문구의 통제권, 즉 남이 알게 됨 | 지금 위험합니다 | 새 지갑을 만들어 자산을 옮깁니다 |
| 패스프레이즈 | 그 숨은 지갑만 못 엽니다 | 여기도 단계가 없습니다. 문구가 맞아도 안 열립니다 |
PIN을 틀리는 것은 방어입니다
PIN은 백업과 독립이라 잊어도 자산이 아니라 복원 한 번을 잃습니다. 틀릴 수 있는 횟수는 제품마다 다르고, 정확히 적어 두는 편이 낫습니다. Ledger 장치는 세 번 틀리면 공장 초기화되고, Trezor Safe 7은 열 번, 그 밖의 Trezor 모델은 열여섯 번입니다. 그 뒤는 다 같습니다. 장치가 빈 상태가 되고 복구문구가 되돌립니다. 이 초기화가 분실 장치를 주워 간 사람에게 문이 열리지 않는 이유이기도 합니다. 무한정 찍어 볼 수 없습니다.
제조사는 의존 대상이 아닙니다
복구문구는 2,048개 단어로 된 표준 목록에서 뽑은 12~24개 단어를 순서대로 적은 것이고, 이걸 BIP-39라고 부릅니다. 같은 단어에서는 항상 같은 키가 계산되므로 A사 장치에서 만든 문구를 B사 장치에서 복원할 수 있습니다. 제조사가 문을 닫으면 코인도 같이 사라진다는 말은 이 사실 앞에서 성립하지 않습니다.
같은 사실에 경고가 하나 붙어 있고 제조사들도 명시합니다. 확인해 볼 생각으로 하드웨어 지갑의 복구문구를 소프트웨어 지갑에 입력하지 마십시오. 그 순간 문구가 인터넷에 연결된 기기로 옮겨가고, 애초에 문구를 장치 안에서 만든 이유가 사라집니다.
지갑을 하나만 쓸 필요는 없습니다
같은 장치에서 계정을 여러 개 만들 수 있고, 이게 승인 사고의 피해 범위를 줄이는 방법으로 쓰입니다. 사이트에 연결하는 용도의 계정에는 그때 쓸 만큼만 두고, 그냥 들고 있을 물량은 어디에도 연결하지 않은 계정에 둡니다. 연결한 적이 없는 계정에는 내가 내준 권한이 하나도 없으므로, 앞에서 본 승인 경로가 통하지 않습니다.
관리 부담이 두 배가 되지는 않습니다. 복구문구는 하나이고 계정은 그 문구에서 갈라져 나오는 가지라서, 복원할 때 한 번에 같이 돌아옵니다. 늘어나는 건 어느 계정을 어디에 연결했는지 기억하는 일 정도입니다.
복원했더니 잔액이 0으로 보인다면
이 화면은 놀랍지만 대개 표시 문제입니다. 파생경로는 앱이 들여다보는 키 나무의 가지이고, 가지가 다르면 같은 시드에서 완전히 다른 주소가 나옵니다. 비트코인이 보기 쉽습니다. 어떤 경로는 1로 시작하는 예전 주소를, 어떤 경로는 bc1q를, 또 어떤 경로는 bc1p를 만듭니다. 틀린 것은 없고 한 나무의 다른 가지입니다. 앱이 다른 가지를 보고 있으면 성실하게 0을 보고합니다. 확인은 간단합니다. 알고 있는 주소를 블록 탐색기에 넣어 보고 잔액이 있으면 자산은 무사하고, 고칠 곳은 앱의 경로 설정이나 계정 번호입니다.
9. 복구문구 보관, 서로 반대로 당기는 두 위험
복구문구 보관은 초보가 서로 반대되는 조언을 듣는 지점입니다. 조언이 엉성해서가 아니고 두 위험이 실제로 반대 방향으로 움직이기 때문입니다.
사본을 늘리면 잃어버릴 위험은 내려가고 누가 찾아낼 위험은 올라갑니다. 한 곳에 몰면 반대가 됩니다. 사진을 찍거나 클라우드에 올리면 나쁜 쪽 두 개를 동시에 합니다. 사본을 늘리면서 인터넷에서 닿는 곳에 올려놓습니다.
| 보관 방식 | 잃어버릴 위험 | 도난 위험 | 남는 문제 |
|---|---|---|---|
| 종이 한 장, 한 곳 | 높음 | 낮음 | 화재·물·이사, 가족이 존재를 모름 |
| 종이 여러 장, 여러 곳 | 낮음 | 올라감 | 어디에 뭐가 있는지 내가 잊음, 누가 또 닿을 수 있는지 |
| 금속판 | 낮음 | 두는 곳에 달림 | 비용, 각인 오타 |
| 사진·클라우드·메신저 | 낮음 | 매우 높음 | 계정 하나 뚫리면 끝 |
| 패스프레이즈 병행 | 올라감 | 내려감 | 패스프레이즈를 잊으면 복원 불가 |
| 선택형 백업 서비스 | 내려감 | 성격이 바뀜 | 신원 확인과 보관 사업자가 들어옴 |
패스프레이즈는 두 번째 비밀입니다
패스프레이즈는 복구문구에 추가로 입력하는 문자열이고, 둘을 합쳐 별개의 숨은 지갑을 만듭니다. 장치에 저장되지 않습니다. 두 가지가 사람을 놀라게 합니다. 오타를 내도 틀렸다는 안내가 없습니다. 그냥 다른 빈 지갑이 열립니다. 어떤 문자열이든 유효해서 각자 자기 계정을 만들기 때문입니다. 그리고 잊으면 문서 표현이 단호합니다. 복원할 신뢰할 만한 방법이 없고 제조사도 도울 수 없습니다.
그래서 표에 있는 자리가 정확합니다. 내 장치와 내 종이를 동시에 손에 쥔 사람에게 쓸 수 있는 가장 강한 답이고, 동시에 내 머릿속에서 관리하는 새로운 단일 실패 지점입니다. 게시판에서 켜라고 해서 켜는 설정이 아니라, 비용이 분명한 선택입니다.
종이를 적는 순간에 생기는 실무 문제 세 가지
첫째는 오타입니다. 단어 목록에서 뽑힌 단어라 비슷한 철자가 섞여 있고, 한 글자가 틀리면 복원이 안 됩니다. 적은 다음 장치의 복구 확인 절차로 되읽어 검증하는 편이 낫습니다. 이 절차를 제공하는 제품이 많고, 나중에 확인하려면 다시 초기화해야 하는 상황이 옵니다.
둘째는 위치입니다. 집 한 곳에 두면 화재와 이사에 약하고, 부모님 집이나 다른 건물에 사본을 하나 더 두면 잃어버릴 위험은 내려가는 대신 그 집에 드나드는 사람 수만큼 도난 위험이 올라갑니다. 정답이 하나로 정해지지 않고, 내 상황에서 어느 쪽 사고가 더 그럴듯한지로 갈립니다.
셋째는 가족입니다. 아무도 이 종이의 존재를 모르면 내가 사고를 당하는 순간 자산도 같이 사라집니다. 반대로 문구 자체를 알려 주면 그 사람도 잔고를 통제할 수 있습니다. 실무적으로는 존재와 위치를 아는 사람과 문구를 아는 사람을 분리하는 방식이 쓰입니다. 어느 쪽이든 결정을 미루면 기본값은 첫 번째 경우입니다.
10. 새 장치가 도착했을 때 사실이어야 하는 것들
하드웨어 지갑의 일생에서 위험이 가장 높은 시간은 처음 설정하는 그 한 시간입니다. 나머지 기간은 설계가 지켜 주고, 설정 시간은 내가 무언가를 알아채는지에만 달려 있습니다.
규칙 하나가 대부분을 덮습니다. 장치는 초기화되지 않은 상태로 와야 하고, 복구문구는 내 손에서 처음 만들어져야 합니다. 제조사 문서에는 단어도 PIN도 미리 적혀 있지 않습니다. 단어가 이미 채워져 있다면 그 장치는 내가 하지 않은 설정을 이미 거쳤다는 뜻이고, 그 설정을 한 사람은 나와 같은 잔고를 봅니다. 실제로 문구를 친절하게 끼워서 장치를 판 사례가 있고, 그래서 주요 제조사 두 곳 모두 중고 장치에 대한 경고를 따로 올려 뒀습니다.
| 본 것 | 무슨 뜻인가 | 할 일 |
|---|---|---|
| 복구 단어가 카드에 이미 적혀 있다 | 누군가 이미 초기화했습니다 | 쓰지 않습니다 |
| 판매자가 PIN을 알려 준다 | 같은 결론입니다 | 쓰지 않습니다 |
| 단어 수가 제품 설명과 다르다 | 위조나 조작된 설정 흐름입니다 | 쓰지 않고 제조사에 문의합니다 |
| 포장이 찌그러졌거나 뜯긴 흔적 | 배송 중에 무슨 일이 있었을 수 있습니다 | 초기화 전에 물어봅니다 |
| 공식 앱의 정품 확인이 실패한다 | 장치가 제조사 쪽으로 검증되지 않습니다 | 거기서 멈춥니다 |
| 중고·재판매 장치 | 예전 문구가 아직 통제권을 가질 수 있습니다 | 직접 초기화하고 새 문구를 만듭니다 |
확인 절차가 각각 답하는 질문
설정 과정에는 정품 확인이 들어 있습니다. 장치가 제조사 앱에 자기가 진짜임을 증명하는 절차입니다. 일부 제품은 펌웨어 해시 확인도 제공하는데, 이건 다른 질문에 답합니다. 하드웨어가 진짜인지가 아니라, 안에 든 소프트웨어가 공개된 그 소프트웨어인지를 봅니다. 펌웨어 업데이트도 PIN 없이는 되지 않아서, 장치를 손에 넣은 사람이 조용히 자기 것을 심을 수 없습니다.
이 대목을 겁내며 지날 필요는 없습니다. 공식 경로로 사고, 초기화된 상태로 온 장치는 쓰지 않고, 앱이 제안하는 확인을 돌리고, 단어는 직접 적습니다. 목록이 짧은 건 위험이 좁기 때문입니다.
구매 경로에 관해서만 짚어 둘 것
한국에서는 제조사 공식 스토어에서 직접 주문하거나 국내 오픈마켓의 판매자를 통해 사게 됩니다. 두 경로의 차이는 가격이 아니라 중간에 사람이 몇 명 끼는지입니다. 오픈마켓 판매자가 정품을 취급하더라도 상품 페이지만으로는 그 재고가 어디를 거쳐 왔는지 알기 어렵습니다. 그래서 어느 경로로 사든 개봉 후 정품 확인과 초기화를 내 손으로 하는 절차가 실제 방어선이 됩니다.
정품 확인이 실패하면 재시도부터 하지 말고 그 자리에서 멈추는 편이 낫습니다. 케이블이나 앱 버전 문제일 수도 있지만, 판단은 제조사 지원 쪽에서 하게 두면 됩니다. 확인이 실패한 장치에 복구문구를 만들어 넣는 것이 되돌릴 수 없는 동작이라, 순서를 바꾸면 나중에 정리할 방법이 없습니다.
중고 거래로 받은 장치라면 판매자가 무슨 말을 했는지와 무관하게 초기화하고 새 문구를 만드는 것이 전제입니다. 그리고 이미 자산이 들어 있는 상태로 넘겨받는 거래는 성립하지 않는 거래입니다. 문구를 아는 사람이 둘이 되는 구조라서, 넘겨받는 쪽이 이기는 구조가 아닙니다.

11. 물리적 접근, 그리고 선택형 백업이 바꾸는 것
물리적 접근도 위협 목록에 들어갑니다. 그리고 여기가 양쪽으로 과장하기 쉬운 대목입니다. 부풀리면 장치가 쓸모없어 보이고, 줄이면 호텔 서랍에 두고 나가는 사람이 됩니다.
공개된 연구는 구체적입니다. 어느 보안 연구팀이 범용 마이크로컨트롤러를 쓴 구형 모델에서, 부팅 중 공급 전압을 정확한 순간에 흔들면 읽기 보호를 우회해 암호화된 시드를 읽어낼 수 있다는 것을 보였습니다. 장치를 손에 쥐고 15분 정도, 그리고 소액의 장비가 필요했습니다. 원격으로는 되지 않았습니다. 이 숫자들은 그 연구가 그 모델들을 대상으로 얻은 값이고, 지금 팔리는 제품에 대한 판정으로 옮겨 쓰면 안 됩니다.
답이 양쪽에서 하나씩 나왔습니다
제조사 쪽 답은 하드웨어였습니다. 이후 제품들은 인증된 보안칩을 씁니다. 바로 이런 종류의 물리 공격을 견디도록 설계된 칩이고, 현행 모델 하나는 PIN 검증에 보안칩 두 개를 함께 쓴다고 밝힙니다. 사용자 쪽 답은 이미 있었고 지금도 유효합니다. 같은 연구가 BIP-39 패스프레이즈를 켜 두면 이 공격이 통하지 않는다고 적었습니다. 칩에서 빼낸 단어만으로는 계정을 계산할 수 없기 때문입니다.
실무로 옮기면 질문이 하나로 좁혀집니다. 이 장치가 남의 손에 얼마나 오래 있을 수 있는지입니다. 집에 두고 다니는 경우와 가방에 넣고 다니는 경우, 사무실 서랍에 두는 경우가 각각 다릅니다. 그리고 이 위험은 복구문구를 어디에 뒀는지와 겹쳐서 계산해야 합니다. 장치와 종이가 같은 서랍에 있으면 서랍 하나가 곧 전부입니다.
선택형 백업 서비스가 바꾸는 것
일부 제조사는 선택형 유료 백업 서비스를 팝니다. 충성 시험처럼 볼 일이 아니고, 구조를 알고 고르면 되는 항목입니다. 회사 설명에 따르면 보안칩이 문구 뒤에 있는 값을 암호화해 사본을 만들고, 세 조각으로 나눠 각각 다른 나라의 다른 회사에 별도 경로로 보냅니다. 한 조각만으로는 아무것도 되지 않습니다. 복원할 때는 신원 확인을 거치고, 그 뒤 세 조각 중 두 개가 내 장치에서 내 동의 아래 다시 합쳐집니다.
켜기 전에는 내 지갑을 재구성할 수 있는 사람의 목록이 한 줄이었습니다. 내 종이를 가진 사람입니다. 켠 뒤에는 목록이 길어집니다. 신원 확인과 보관 사업자들의 상태가 거기 들어갑니다. 반대쪽 무게는 자기수탁 잔고를 실제로 가장 많이 날려 먹는 실패, 도난이 아니라 분실 쪽에 돌아올 길이 생긴다는 점입니다. 선택 항목이라 켜지 않으면 기존 구조가 그대로 남습니다. 안전과 위험 사이의 선택이 아니라, 서로 다른 두 목록 중 무엇에 의존할지의 선택입니다.
12. 옮겨는 놨는데 움직이지 않는 이유
자기수탁으로 넘어오는 사람 거의 전부가 부딪히는 실무 벽이 하나 있고, 보안과는 상관이 없습니다. 토큰을 장치로 넣는 건 쉽습니다. 넣은 다음 움직이려면 사람들이 챙기는 걸 잊는 게 필요합니다.
수수료는 그 체인의 기본 코인으로 냅니다. 스테이블코인을 이더리움으로 옮겼다면 같은 지갑에 ETH가 있어야 아무것이든 나갑니다. 트론에 올린 토큰이면 TRX가 필요합니다. 토큰이 자기 전송비를 못 냅니다. 그래서 기본 코인이 지갑에 있어야 하고, 없으면 잔고는 보이는데 한 발짝도 못 움직입니다. 이 계산이 어떻게 되는지, 그리고 왜 보내는 금액이 계산에 안 들어가는지는 가스비와 네트워크 수수료에 있습니다.
첫 출금에서 실제로 벌어지는 일
가령 처음으로 거래소에서 코인을 빼 온다고 해 보겠습니다. 당황하게 만드는 건 셋이고 어느 것도 공격이 아닙니다. 거래소에서 고른 네트워크가 받는 지갑이 보고 있는 네트워크여야 합니다. 이게 어긋나면 잘못된 네트워크로 보낸 경우가 됩니다. 컴펌은 체인이 걸리는 만큼 걸리므로 아직 안 보이는 잔고는 대개 입금이 반영되지 않은 상태이고 손실이 아닙니다. 그리고 기본 코인은 필요해지기 전에 넣어 둬야 합니다.
순서를 하나 정해 두면 사고가 줄어듭니다
예를 들어 USDT를 이더리움 네트워크로 옮길 계획이라면 순서가 이렇게 됩니다. 먼저 소액만 보내서 도착을 확인하고, 그다음 기본 코인인 ETH를 수수료로 쓸 만큼 보내고, 마지막에 나머지를 보냅니다. 순서를 바꿔서 큰 금액을 먼저 보내면 도착은 하는데 그 지갑에서 아무것도 못 하는 상태가 되고, 그 상태를 풀려면 또 한 번 송금을 해야 합니다.
소액 테스트가 아깝게 느껴질 수 있는데, 여기서 확인하는 것은 금액이 아니라 주소와 네트워크의 조합입니다. 한 번 맞는 것을 확인한 뒤에는 그 주소를 지갑 주소록에 등록해 두고 다음부터는 등록된 항목에서 고릅니다. 거래소 쪽에도 같은 기능이 있어서, 출금 주소를 미리 등록해 두는 방식이 매번 붙여넣기보다 사고가 적습니다.
왕복이라는 점도 알아 두면 좋습니다. 다시 원화로 만들려면 결국 거래소로 보내게 되고, 오는 쪽과 가는 쪽 양쪽에 수수료와 컴펌 대기가 붙습니다. 그래서 많은 분이 두 일을 나눠 둡니다. 사고팔 것은 거래소에, 들고 있을 것은 지갑에 둡니다. 거래하는 쪽을 어디에 둘지 고민이라면 안전한 거래소를 판별하는 기준이 체크리스트이고, 거래소 비교는 수수료와 계정 규칙을 정리해 뒀습니다.
Binance
Bybit
OKX
제휴 고지: 일부 링크는 제휴 링크이며, 추가 비용 없이 수수료를 받을 수 있습니다. 투자 조언이 아닙니다.
13. 자주 듣는 말과 문서에 적힌 것
이 장치를 두고 도는 말 여섯 개를 정리해 두겠습니다. 각각 틀렸거나, 들리는 것보다 좁은 범위에서만 맞습니다.
| 자주 듣는 말 | 실제 | 근거 |
|---|---|---|
| 하드웨어 지갑 쓰면 해킹 안 당한다 | 키 탈취는 막힙니다. 내가 승인한 것은 그대로 실행됩니다 | 연결해서 확인을 누르면 장치가 정상 서명합니다 |
| 콜드월렛이니 승인도 안전하다 | 승인은 평범한 온체인 거래이고 장치가 대신 판단해 주지 않습니다 | 회수는 내가 따로 해야 하는 동작입니다 |
| 코인이 장치 안에 들어 있다 | 코인은 블록체인에 있고 장치에는 키만 있습니다 | 장치 분실이 자산 분실이 아닙니다 |
| 제조사가 사라지면 코인도 사라진다 | 표준 문구는 다른 지갑, 다른 브랜드에서 복원됩니다 | BIP-39, 2,048개 단어 목록에서 뽑은 순서 있는 목록 |
| 복원 후 잔액이 0이면 도난이다 | 파생경로가 다르면 같은 시드에서 다른 주소가 나옵니다 | 알고 있는 주소를 탐색기에서 확인 |
| 장치 화면을 봤으면 읽은 것이다 | 해독되지 않은 화면은 확인처럼 보이지만 알려주는 게 없습니다 | 블라인드 서명과 그 뒤의 폴백 동작 |
용어 정리
복구문구. 내 모든 키가 계산돼 나오는 12~24개 단어의 순서 있는 목록. BIP-39 표준이고 2,048개 단어 목록에서 뽑습니다.
보안칩. 물리 공격을 견디도록 만든 인증 칩. 키를 보관하고, 제품에 따라 화면 구동까지 맡습니다.
패스프레이즈. 복구문구에 더해 입력하는 문자열로 별개의 숨은 지갑을 만듭니다. 장치에 저장되지 않고 잊으면 복원되지 않습니다.
파생경로. 앱이 읽는 키 나무의 가지. 경로가 다르면 같은 시드에서 다른 주소가 나오고, 그래서 복원 직후 빈 지갑처럼 보일 수 있습니다.
블라인드 서명. 지갑이 해독하지 못한 거래를 확인하는 상태. 화면에 거래의 뜻 대신 원본 데이터가 뜹니다.
토큰 승인. 계약이 내 토큰을 옮길 수 있게 해 주는 권한. 자기 거래로 따로 남고 회수할 때까지 유지됩니다.
자기수탁. 열쇠를 내가 들고 있는 방식. 상대방 위험이 사라지는 동시에 고객센터도 사라집니다.
14. 필자의 판단: 문서와 연구를 나란히 놓고 남은 것
제조사 문서와 공개된 연구를 나란히 놓고 읽으면 네 가지가 남습니다. 칭찬은 첫 번째뿐입니다.
설계는 안쪽에서 일관됩니다. 키를 격리하고, 칩 안에서 서명하고, 장치에 화면을 달아서 감염된 컴퓨터가 무엇에 서명하는지를 속이지 못하게 합니다. 문서에 적힌 기능이 전부 이 셋 중 하나에 봉사하고, PIN 초기화 동작과 정품 확인, 펌웨어 잠금도 그 논리가 놓을 자리에 정확히 놓여 있습니다.
맞는 용도는 팔리는 이미지보다 좁습니다. 키 탈취와 원격 침해, 주소 바꿔치기에는 잘 답합니다. 승인 피싱에는 전혀 답하지 않고, 대신 내 종이에 적힌 단어를 내가 가진 가장 값나가는 물건으로 만듭니다. 걱정이 거래소가 출금을 막거나 문을 닫는 쪽이라면 이 장치가 답이고, 걱정이 내가 엉뚱한 걸 서명하는 쪽이라면 답이 아닙니다.
가장 미심쩍은 전제는 하드웨어가 아닙니다. 사람이 작은 화면을 매번 꼼꼼히 읽는다는 전제입니다. 업계도 이걸 사실상 인정했습니다. 화면을 읽을 수 있게 만들려고 명확 서명을 만들었고, 그 작업은 내 앞에 있는 계약을 위한 설명 정보가 준비돼 있는지에 달려 있습니다. 설계에서 하중을 받는 부분이 책상 앞의 피곤한 사람에게 맡겨져 있습니다.
반대 의견이 성립하는 자리도 분명합니다. 매주 사고파는 편이고 서류를 잘 잃어버리는 사람이라면, 출금 통제를 걸어 둔 잘 관리되는 거래소 계정이 자기한테는 위험이 낮은 배치라고 판단할 수 있습니다. 그 판단에 붙는 반론은 이 업계의 파산 이력입니다. 제가 어느 쪽에서도 받아들이지 않는 건 한쪽이 그냥 더 안전하다는 프레임입니다. 두 배치는 같은 방식으로 무너지지 않고, 내가 견딜 수 있는 실패가 어느 쪽인지는 제품에 관한 사실이 아니라 나에 관한 사실입니다.







