셀프 커스터디 백업: 종이, 금속, Shamir 중 무엇인가
시드 문구는 '지갑의 백업'이 아니라 128 또는 256비트의 연산입니다. 단어가 무엇을 인코딩하는지, 체크섬이 무엇을 놓치는지(실측), 오늘 밤 해볼 복원 훈련까지 정리합니다.
시드 문구는 흔히 '지갑의 백업'이라 불립니다. 아닙니다. 128 또는 256비트를 사람이 손으로 옮겨 적을 수 있는 문자로 표현한 것이고, 당신의 모든 키와 주소는 호환 기기라면 누구나 다시 계산할 수 있는 그 비트에 대한 연산입니다. 사람들은 단어를 비밀로 지키면서(맞습니다), 그것이 동시에 사양서라는 사실을 잊습니다(치명적입니다). 아래에서 단어가 무엇을 인코딩하는지, 체크섬이 실제로 무엇을 잡는지, 백업이 망가지는 세 가지 방식, 그리고 오늘 밤 해볼 복원 훈련을 다룹니다.
단어가 인코딩하는 것. BIP39는 2,048단어, 단어당 11비트입니다. 공식 영어 목록을 확인했습니다: 2,048개가 중복 없이 정렬되어 있고 4글자 접두사도 모두 다릅니다 — 그래서 지갑이 aband를 abandon으로 채웁니다. 12단어는 132비트(엔트로피 128 + 체크섬 4), 24단어는 264(256 + 8). 문구에 다른 정보는 없습니다. 지갑 이름도, 파생 경로도, 네트워크도 없습니다. 모네로는 다른 경로입니다. 목록은 1,626단어이고 3글자 접두사도 모두 다릅니다. 인코더는 4바이트를 3단어로 바꿉니다. 리틀엔디언 uint32 값 v에 대해 v mod 1626, (v div 1626 + 앞 단어) mod 1626, (v div 1626² + 앞 단어) mod 1626 — electrum-words.cpp의 루프입니다. 32바이트 스펜드 키는 24단어가 되고, 25번째는 목록 전체의 체크섬이 아니라 seed[crc32(24개 접두사) mod 24], 즉 항상 내 24단어 중 하나입니다. (모네로 확인 대기)
체크섬이 실제로 잡는 것. 길이별로 한 단어만 잘못 적은 경우를 2만 회 시뮬레이션하고 실제 규칙을 적용했습니다. BIP39 12단어는 6.35%가 통과(이론 1/16), 24단어는 0.395%로 1/256 근처였습니다. 모네로 25단어는 4.2%가 통과했습니다. 버그가 아니라 구조입니다. 인덱스가 crc32 mod 24여서 건드리지 않은 단어에 떨어지면 비교가 구조적으로 성공하고, 확률은 1/24, 나머지는 우연입니다. 뒤집어 보면 모네로는 25번에 1번, 12단어 BIP39는 16번에 1번 오기가 빠져나갑니다. 지갑이 받아들인 것은 철자의 증거이지 완전성의 증거가 아닙니다. 체크섬은 의미에 의견이 없어서, 사본이 내부적으로 일관되면 5번째 단어가 다른 단어여야 했더라도 완벽히 통과합니다. 진짜 질문에 답하는 것은 이미 아는 주소를 재현하는 복원뿐입니다.
백업이 망가지는 세 가지 방식. 첫째는 패스프레이즈입니다. BIP39 패스프레이즈는 문구에 저장되지도, 문구에서 유도되지도 않아서 다른 값을 넣으면 완전히 다른, 지극히 정상적인, 잔액 0의 지갑이 오류 없이 나타납니다. 같은 24단어에 다른 패스프레이즈를 가진 두 사람은 무관한 두 지갑을 가지며, 단어로는 어느 쪽이 의도였는지 알 수 없습니다. 둘째는 중복 없는 단일 사본입니다. 화재, 침수, 이사, 공항에 두고 온 가방, 서랍을 정리하는 상속인. 시드에는 문의 창구가 없습니다. 셋째는 디지털 사본입니다. 동기화되는 갤러리 사진, 동기화 노트 한 줄, 스풀에 남은 인쇄, 채팅의 스크린샷. 장기적으로 가장 무거운 실패이고 시드는 폐기할 수 없습니다. 노출 후 유일한 대응은 새 시드와 자금 이동이며, 비용은 설정이 아니라 수수료와 시간입니다.
매체 선택. 종이는 싸고 확인이 쉬우며 물, 불, 취급에 약하고 잉크는 자외선에 바랩니다. 각인 금속은 불과 물을 수십 년 견디지만 발견에는 무력합니다. 서랍 속 판은 손님이 읽는 판입니다. 24단어를 둘로 나눠 따로 두는 것은 암호학적으로 타당하고 빠진 절반이 132비트 미지를 남기지만, 단어 순서가 남고 복원하는 사람이 다른 절반의 존재를 알아야 합니다. 비밀번호 관리자 안의 암호화 파일은 물리 리스크를 원격 리스크와 마스터 비밀번호 망각 리스크로 바꿉니다. 잠긴 계정은 화재만큼 최종적입니다. 매체보다 우선하는 규칙 하나: 패스프레이즈는 단어와 함께 두지 마세요. (모네로 확인 대기)
Shamir와 SLIP-39. SLIP-39는 GF(256) 위에서 바이트 단위 Shamir를 적용하고 각 셰어를 1,024단어 목록, 단어당 10비트 니모닉으로 인코딩합니다. 128비트 시크릿은 셰어당 20단어, 256비트는 33단어입니다. 같은 시크릿의 셰어는 앞 두 단어, 같은 그룹 셰어는 앞 세 단어가 같아 세트를 눈으로 분류할 수 있습니다 — 주운 사람도 마찬가지입니다. 각 셰어의 4바이트 HMAC-SHA256 다이제스트 덕분에 부족하거나 불일치하는 세트는 잘못된 지갑을 만들지 않고 중단합니다. 순진한 분할에 없는 성질입니다. 대가는 셰어와 다른 곳에 임계값을 기록해야 한다는 점, 그리고 대부분 지갑이 구현하지 않은 복원 경로입니다. 기하학적 함정도 있습니다. 2-of-3에서 두 셰어를 같이 두면 서류만 늘어난 1-of-1입니다.
복원 훈련. 오늘 쓰는 수취 주소와 두 번째 파생 주소 — 모네로 서브주소나 비트코인 두 번째 계정 — 를 적습니다. 파생 경로 오류가 우연한 일치 뒤에 숨지 못하게 하기 위해서입니다. 사본(사용 기기가 아니라)을 오프라인 예비 기기로. 단어는 붙여넣지 말고 손으로 입력하세요. 긴장한 사람이 읽을 수 있는 필사인지도 시험됩니다. 주소를 한 글자씩 비교합니다. 모네로는 복원 높이를 첫 거래 이전으로 설정하세요. 너무 높으면 이력을 조용히 놓치고, 너무 낮으면 제네시스부터 몇 시간 스캔합니다. 소액을 넣고 복원 지갑에서 다시 보내고, 예비 기기를 지우고, 봉투에 날짜를 적습니다. 마지막 펌웨어 이후 시험하지 않은 백업은 보험이 아니라 가설입니다.
실제 스왑과 맞닿는 지점. 주문 폼은 지급 주소와 선택적 환불 주소를 받고, 주문 생성 엔드포인트는 자산 코드·금액·주소 길이(256자)를 검증하며 그 외는 저장하지 않습니다. 이메일도 계정도 재설정할 비밀번호도 없습니다. 의도된 설계로 복원 부담 전체를 당신에게 옮깁니다. 시드가 사라지면 티켓도 이의도 지급 주소 뒤의 키를 재구성하지 못합니다. 시간도 냉정해서, 주문은 생성 후 30분 지불 가능하고 로컬 만료 후 6시간 지연 입금을 추적하며 24시간에 닫힙니다. 통제할 수 없는 주소로 들어간 돈은 소멸하지 않고 체인 위에 그대로 보이지만 쓸 수 없고, 당신 입장에서는 분실과 구분되지 않습니다.
작성 시점의 숫자. 2026-10-26 18:05 UTC 무렵, 100 USDT-TRC20는 0.14772457 XMR, 500은 0.81018058, 1,000은 1.63812328, 5,000은 8.26013651. XMR당 676.9, 617.1, 610.4, 605.3 USDT이며 이 차이는 가격 변동이 아니라 주문당 하한에서 나옵니다. 10 LTC는 0.93171887 XMR, 1 XMR은 10.21937454 LTC, 0.001 BTC는 0.12310131 XMR, 페어 하한은 19.704235 USDT. 한 장면일 뿐이고 행동 근거는 페이지의 실시간 견적입니다. 스왑은 한 번뿐인 인계이고 지급은 한 번만 도착하며, 작년에 시험한 시드만이 그 지급과 곤란한 한 주 사이에 서 있습니다. (XMR→USDT 출구 루트)
반복되는 실수. 패스프레이즈를 단어와 같은 판에 적거나 아예 어디에도 적지 않기. 자금 도착 후에 처음 복원을 시험하기. 거래소 입금 주소를 환불 주소로 쓰기 — 당신 것이 아니고 환불은 같은 네트워크의 같은 자산으로만 돌아옵니다. 동기화되는 갤러리의 시드 사진. 휴대폰 지갑과 콜드여야 할 지갑이 하나의 시드를 공유하기. 체크섬을 통과하면 좋은 사본이라는 확신. 방식·임계값·파생 경로 기록이 전혀 없는 것 — 3-of-5가 상속인에게 무가치해지는 경로입니다. 백업은 외주도 사후 검증도 불가능한 유일한 부분이라 작업은 작습니다. 주소 두 개를 적고, 서랍 속 사본에서 복원하고, 글자를 비교하고, 소액을 옮기세요. 일치하면 아직 값쌀 때 확신을 산 것입니다.