BIP-39 엔트로피, HD 지갑 파생(BIP-32/44/84), 패스프레이즈 보호, 금속 백업까지 - 비트코인 시드 구문의 모든 것을 기술적으로 해설합니다.
2018년, 캐나다 암호화폐 거래소 QuadrigaCX의 창립자 제럴드 코튼이 인도 여행 중 갑작스럽게 사망했다. 그는 약 1억 9천만 달러에 달하는 고객 자산을 통제하는 비밀번호와 시드 구문을 유일하게 알고 있던 사람으로 알려졌다. 해당 자금은 결코 회수되지 못했다. QuadrigaCX 사건의 진실이 무엇이든 - 여러 가지 음모론이 존재한다 - 이 사건은 비트코인의 근본적인 현실을 보여준다: 시드 구문은 단순한 비밀번호가 아니다. 그것은 소유권 그 자체다. 잃어버리면 비트코인은 사실상 존재하지 않는 것이 되고, 노출하면 다른 누군가가 당신의 부를 소유하게 된다.
이 글에서는 시드 구문이 정확히 무엇인지, 암호학적 수준에서 어떻게 작동하는지, 왜 이런 방식으로 설계되었는지, 그리고 화재·홍수·도난·세월을 견딜 수 있도록 어떻게 보관해야 하는지를 설명한다.
시드 구문(Seed Phrase) - 니모닉 구문, 복구 구문, 백업 구문이라고도 불린다 - 은 12개 또는 24개의 영어 단어로 구성된 순서가 있는 목록으로, 모든 비트코인 개인 키를 파생시키는 마스터 시크릿을 인코딩한다. 지갑이 지금까지 생성한 모든 주소와 앞으로 생성할 모든 주소는 이 단일 단어 시퀀스에 의해 수학적으로 결정된다.
단어들은 BIP-39(비트코인 개선 제안 39)에 정의된 2,048개의 표준 영어 단어 목록에서 나온다. 이 표준은 2013년 마렉 팔라티누스와 파볼 루스낙이 발표했다. 단어 목록은 처음 네 글자가 같은 단어가 없도록 신중하게 선별되어 필기 오류 가능성을 줄였다. 예를 들어, "abandon"은 목록에 있지만 "abandoned"는 없고, "able"은 있지만 "ability"는 없다.
12개 단어 시드 구문의 예시 (절대 사용하지 마시오 - 공개적으로 알려진 구문이다):
abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon about
이 특정 구문은 잘 알려진 테스트 벡터에 해당한다. 이 구문에서 파생된 주소로 비트코인을 보내면, 블록체인을 스캔하는 자동화된 봇에 의해 몇 초 안에 도난당한다.
시드 구문의 보안은 엔트로피(무작위성)라는 수학적 개념에 기반한다 - 컴퓨터로 추측하는 것이 계산적으로 불가능한 수준의 무작위성이다.
12단어 시드 구문은 128비트의 엔트로피를 인코딩한다. 작동 원리는 다음과 같다:
결과: 128비트의 진정한 무작위성과 4비트 체크섬을 인코딩하는 12개 단어.
2^128은 얼마나 큰 수인가? 약 3.4 × 10^38 - 340간(澗)개의 가능한 조합이다. 이것을 구체적으로 이해하면:
24단어 시드 구문은 256비트의 엔트로피를 인코딩한다. 동일한 과정을 따르지만 256개의 무작위 비트와 8비트 체크섬(총 264비트, 24개의 11비트 그룹으로 분할)으로 시작한다. 가능한 조합의 수는 2^256 ≈ 1.16 × 10^77 - 열역학적 계산 한계(란다우어 원리)로 작동하는 가상의 컴퓨터로도 무차별 대입이 물리적으로 불가능한 수이다.
대부분의 사용자에게 128비트 보안(12단어)은 충분하고도 남는다. 256비트 옵션은 주로 이론적 양자 컴퓨팅 위협(그로버 알고리즘이 유효 비트 보안을 절반으로 줄여 256비트를 128비트로 만들지만 - 여전히 깨뜨릴 수 없는 수준)을 포함한 미래 컴퓨팅 발전에 대비하기 위해 존재한다.
시드 구문이 단 하나의 개인 키만 생성할 수 있다면 그 유용성은 크게 제한될 것이다. 진정한 힘은 BIP-32에 정의된 계층적 결정론적(HD) 지갑 파생에 있다. 단일 시드에서 무제한의 키 쌍 트리를 생성할 수 있다.
니모닉 단어들이 선택적 패스프레이즈와 함께 PBKDF2-HMAC-SHA512 키 스트레칭 함수에 입력된다. 이 함수는 2,048번의 해싱 라운드를 실행하여 512비트 시드를 생성한다. 키 스트레칭은 의도적인 설계다 - 니모닉에 대한 무차별 대입 공격을 계산적으로 더 비용이 많이 들게 만든다.
512비트 시드가 "Bitcoin seed"라는 키와 함께 HMAC-SHA512를 통해 처리되어 다음을 생성한다:
체인 코드는 핵심 구성 요소다. 각 파생 레벨에서 추가적인 256비트의 엔트로피를 더하여, 자식 키를 알아도 형제 키를 알 수 없도록 보장한다.
HD 지갑은 파생 경로를 사용하여 키를 계층적 구조로 조직한다. 경로 형식은 다음과 같다:
m / purpose' / coin_type' / account' / change / address_index
BIP-44 (레거시 주소, 1로 시작):
m/44'/0'/0'/0/0 → 첫 번째 수신 주소
m/44'/0'/0'/0/1 → 두 번째 수신 주소
m/44'/0'/0'/1/0 → 첫 번째 잔돈 주소
BIP-84 (네이티브 세그윗 주소, bc1q로 시작):
m/84'/0'/0'/0/0 → 첫 번째 수신 주소
m/84'/0'/0'/0/1 → 두 번째 수신 주소
BIP-86 (탭루트 주소, bc1p로 시작):
m/86'/0'/0'/0/0 → 첫 번째 수신 주소
아포스트로피(')는 강화 파생(hardened derivation)을 나타내며, 파생 과정에서 개인 키를 사용하여 부모 공개 키로 자식 키를 파생하는 것을 방지한다. 이것은 중요한 보안 기능이다 - 강화 파생이 없다면, 공격자가 단일 자식 개인 키와 부모 공개 키를 획득하면 부모 개인 키와 모든 형제 키를 계산할 수 있다.
파생이 결정론적이기 때문에, 지갑은 수천 개의 개인 키를 저장할 필요가 없다. 오직 시드 구문(또는 그로부터 파생된 512비트 시드)만 저장하면 된다. 지갑 소프트웨어를 열 때마다 시드에서 모든 키를 재파생한다. 이것이 12개 또는 24개 단어만으로 완전히 새로운 기기에서 지갑을 복원할 수 있는 이유다.
BIP-39에는 자주 활용되지 않는 보안 기능이 포함되어 있다: 패스프레이즈(때때로 "25번째 단어"라 불리지만, BIP-39 목록의 단어뿐만 아니라 어떤 문자열이든 가능하다).
패스프레이즈를 추가하면, PBKDF2 키 스트레칭 함수에서 "솔트"로 포함된다:
PBKDF2(mnemonic, "mnemonic" + passphrase, 2048, 512)
핵심 포인트: 다른 패스프레이즈는 완전히 다른 지갑을 생성한다. 동일한 12단어에 패스프레이즈 "alpha"를 사용하면, 패스프레이즈 "bravo"를 사용하거나 패스프레이즈 없이 사용하는 것과 완전히 다른 키가 생성된다. "잘못된" 패스프레이즈는 존재하지 않는다 - 모든 패스프레이즈는 유효한(그러나 다른) 지갑을 연다.
패스프레이즈는 양날의 검이다:
시드 구문은 두 가지 위협으로부터 보호해야 한다: 분실(화재, 홍수, 하드웨어 고장, 망각)과 도난(물리적 침입, 디지털 해킹, 소셜 엔지니어링). 이상적인 보관 방법은 두 가지를 동시에 방어해야 한다.
종이는 취약하다. 233°C(화씨 451도)에서 타고, 물에 녹고, 수십 년에 걸쳐 열화된다. 상당한 양의 비트코인에는 금속 백업이 필수적이다.
스탬핑 강철판 (Cryptosteel Capsule, Blockplate, Billfodl, SeedPlate): 이 제품들은 스테인리스 스틸이나 티타늄 판에 개별 문자나 단어를 찍거나 밀거나 새길 수 있게 해준다. 견딜 수 있는 조건:
비트코인 보안 연구자로 알려진 제임슨 로프(Jameson Lopp)는 금속 시드 보관 제품에 대해 광범위한 스트레스 테스트를 수행했다. 블로우토치, 산, 압축에 노출시킨 결과를 jlopp.github.io/metal-bitcoin-storage-reviews/에 공개하고 있다.
고급 사용자의 경우, 샤미르 비밀 공유(Shamir's Secret Sharing, SSS)를 사용하여 시드를 여러 조각으로 분할할 수 있다. 원본을 복원하려면 최소 임계값만큼의 조각이 필요하다. 예를 들어, 2-of-3 분할은 3개의 조각을 만들고 그 중 아무 2개로 시드를 복원하는 방식이다. 조각을 지리적으로 분산된 장소에 보관할 수 있다 - 하나는 집에, 하나는 은행 금고에, 하나는 신뢰할 수 있는 가족에게.
Trezor Model T와 Trezor Safe 3는 별도의 단어 목록을 사용하여 지갑 수준에서 이 방식을 구현하는 SLIP-39 (샤미르 백업)을 기본 지원한다.
경고: 표준 BIP-39 시드 구문의 순진한 분할(예: 1~12번째 단어는 한 종이에, 13~24번째 단어는 다른 종이에)을 시도하지 마라. 이는 각 절반의 보안을 겨우 64비트 또는 128비트 수준으로 낮추며, 진정한 비밀 공유 방식이 아니다.
대부분의 비트코인 보유자에게 다음 전략이 견고한 보호를 제공한다:
시드 구문의 보안은 생성되는 순간만큼만 강력하다. 악성코드에 감염된 컴퓨터에서 소프트웨어 지갑으로 시드를 생성하면, 악성코드가 생성 순간에 시드를 캡처할 수 있다. 이것이 하드웨어 지갑이 강력히 권장되는 이유다 - 자체 하드웨어 난수 생성기를 사용하여 내부적으로 시드를 생성하며, 시드는 컴퓨터에 절대 노출되지 않는다.
"브레인 월렛"은 사용자가 선택한 암기 문구에서 파생된 시드 또는 개인 키다. 문제는: 인간은 무작위성을 만드는 데 매우 서투르다. 자신에게 고유해 보이는 문구("우리 강아지 이름은 똥개이고 나는 1987년에 태어났다")는 초당 수백만 개의 일반적인 문구를 테스트하는 자동화 도구에게는 사소한 추측 대상이다. 2015년 한 연구자는 노래 가사, 영화 대사, 일반적인 문구에서 생성된 브레인 월렛을 몇 초 만에 크래킹할 수 있음을 보여주었다. 신뢰할 수 있는 하드웨어 지갑의 암호학적으로 생성된 무작위성만 사용하라.
놀라울 정도로 많은 사용자가 시드 구문을 한 번 적고, 보관하고, 검증하지 않는다. 필기 오류는 흔하다 - 단어 하나가 틀리거나 순서가 바뀌면 전체 백업이 무용지물이 된다. 시드를 적은 후:
최고의 물리적 보안은 비밀 유지다. 아무도 당신이 상당한 비트코인을 보유하고 있다는 것을 모른다면, 아무도 당신을 표적으로 삼지 않을 것이다. 이것은 소셜 미디어에도 적용된다 - 비트코인 보유량을 게시하지 마라, 지갑 잔액 스크린샷을 공유하지 마라, 친구와 가족에게도 비트코인 소유에 대해 논의할 때 주의하라. $5 렌치 공격(시드 구문을 빼내기 위해 물리적 폭력을 위협하는 것)은 이론적인 것이 아니다 - 반복적으로 발생해 왔다.
비트코인의 자기 주권적 특성은 고유한 유산 계획 과제를 만든다. 시드 구문을 전달하지 않고 사망하면, 비트코인은 영원히 사라진다 - 은행에 보관되어 청구를 기다리는 것이 아니라, 진정으로, 영구적으로 접근 불가능해진다.
상속 계획에 대한 몇 가지 접근 방식이 존재한다:
핵심 원칙: 상속 계획은 살아 있을 때 테스트해야 한다. 테스트되지 않은 상속 계획은 검증되지 않은 백업이다 - 가장 중요한 순간에 실패할 수 있다.
오스트리아 경제학의 관점에서, 시드 구문은 화폐 역사상 전례 없는 것을 나타낸다: 절대적이고 위조 불가능한 소유권. 역사 전반에 걸쳐 재산권은 국가와 제도의 집행 능력에 의존해 왔다. 금은 몰수될 수 있었다(1933년 행정 명령 6102에 의해 그러했다). 은행 계좌는 동결될 수 있다. 부동산은 수용권을 통해 압류될 수 있다.
시드 구문은 암기하거나 강철에 찍어 숨기면, 소유자의 협조 없이는 몰수할 수 없다. 이것은 진정으로, 물리적으로 몰수 불가능한 최초의 재산 형태다 - 루트비히 폰 미제스와 프리드리히 하이에크가 상상하지 못했지만, 개인의 경제적 주권에 있어 심대한 진보로 인식했을 개념이다.
이것이 시드 구문 보안이 단순한 기술적 연습이 아닌 이유다. 그것은 금융 자기 주권의 기초다. 그에 걸맞게 보호하라.