블록체인/레벨 II · 작동 원리/2.1 암호학/수업 7
시드 문구(BIP39)
12개의 단어, 체크섬, 그리고 모든 것을 제어하는 512비트 시드
준비물BIP39 영어 단어 목록 (github.com/bitcoin/bips)공책
호기심
- 왜 무작위 비트 시퀀스가 16진수 형태로 남아 있지 않고 12개의 영어 단어가 되는 걸까요?
- 문구의 단어 하나를 같은 목록의 다른 단어로 바꾸면 지갑에는 어떤 일이 일어날까요?
- 똑같은 12개의 단어가 어떻게 완전히 다른 지갑을 만들어낼 수 있을까요?
탐구
- Trezor 하드웨어 지갑 개발팀을 포함한 개발자들이 2013년에 작성한 BIP39는 원시 암호학적 엔트로피를 사람이 읽을 수 있는 니모닉으로 변환합니다. 16진수 문자 32개나 64개를 손으로 옮겨 적으면 오류가 생기기 쉽지만, 단어는 쓰고, 다시 읽고, 확인하기가 더 쉽습니다. 이 표준은 이진 시퀀스와 고정된 사전의 단어 사이의 결정론적 매핑을 정의하여, 사용자가 짧은 목록을 외우거나 적어 두는 것만으로 키 계층 전체를 복구할 수 있게 해 줍니다.
- 과정은 엔트로피, 즉 128, 160, 192, 224 또는 256비트의 무작위 비트열에서 시작합니다. 이 엔트로피의 SHA-256 해시에서 처음 N비트를 떼어 엔트로피 뒤에 체크섬으로 붙이며, N은 엔트로피 길이를 32로 나눈 값입니다. 표준 12단어 문구(128비트 엔트로피)에서는 4비트가, 24단어(256비트 엔트로피)에서는 8비트가 추가됩니다. 이 체크섬 덕분에 지갑 소프트웨어는 가져오기 즉시 대부분의 옮겨 적기 오류를 감지할 수 있습니다.
- 엔트로피와 체크섬을 합친 문자열은 11비트 단위로 나뉘며, 각 단위는 고유한 항목 2,048개로 이루어진 BIP39 영어 목록에서 단어 하나를 가리킵니다. 이 목록은 어떤 두 단어도 처음 네 글자가 같지 않도록 선별되어, 손으로 옮겨 적을 때의 모호함을 줄여 줍니다. 마지막 단위에는 체크섬의 일부가 포함되므로 무작위로 고른 단어들은 대개 검증에 실패합니다. 무작위 12단어 시퀀스 중 약 16개에 1개만 체크섬을 통과합니다(24단어는 256개에 1개).
- 키 생성에 쓰이는 실제 시드를 도출하기 위해, 니모닉 문장과 선택적 패스프레이즈를 2,048회 반복하는 PBKDF2-HMAC-SHA512에 입력합니다. 솔트는 문자열 'mnemonic' 뒤에 패스프레이즈를 붙여 만듭니다(패스프레이즈가 없으면 'mnemonic'만 사용). 이 키 스트레칭 함수는 결정론적인 512비트 시드를 생성합니다. 패스프레이즈를 사용하면, 패스프레이즈가 추측을 견딜 만큼 강력한 한 12개 단어를 모두 가진 공격자라도 패스프레이즈 없이는 시드를 도출할 수 없습니다.
- 이 메커니즘은 이중 계층 보안 모델을 만듭니다. 니모닉은 복구 능력과 기본적인 오류 감지를 제공하고, 패스프레이즈는 ‘숨겨진 지갑’ 계층 역할을 합니다. 일부 사용자는 단어만으로 열리는 지갑에는 소액의 미끼 지갑을 두고, 주요 자금은 패스프레이즈 뒤에 보관합니다. 하지만 이는 손실의 경로가 되기도 합니다. 패스프레이즈를 잊어버리거나 잃어버리면 니모닉만으로는 이를 복구할 방법이 없으므로, 자금에 대한 접근이 영구적으로 차단됩니다.
- 모든 지갑이 BIP39를 따르는 것은 아닙니다. Electrum은 자체 방식을 사용하고, SLIP-0039는 다자간 보관을 위해 비밀을 샤미르 셰어로 분할합니다. 그럼에도 BIP39는 하드웨어 장치와 소프트웨어 애플리케이션 전반에 걸친 폭넓은 호환성 덕분에 여전히 지배적인 표준입니다. 여기서 생성된 512비트 시드는 BIP32 계층적 결정론적 키 파생의 루트 입력이 되며, 이는 지갑의 모든 개인 키가 궁극적으로 이 특정 문구와 패스프레이즈 조합으로 거슬러 올라간다는 뜻입니다.
핵심 사실
- BIP39는 128~256비트의 엔트로피와 SHA-256 체크섬을 2,048개 단어로 구성된 목록에서 12~24개 단어로 매핑합니다.
- 영어 단어 목록은 첫 네 글자로 각 단어를 고유하게 식별할 수 있도록 설계되었습니다.
- 2,048회 반복하는 PBKDF2-HMAC-SHA512가 니모닉과 패스프레이즈를 512비트 시드로 늘려 변환합니다.
- 같은 니모닉에 다른 패스프레이즈를 적용하면 완전히 다르면서도 유효한 지갑이 생성됩니다.
- 니모닉 단어나 연결된 패스프레이즈 중 하나라도 잃어버리면 자금에 대한 접근 권한을 영구적으로 잃게 됩니다.
- SLIP-0039는 별개이며 호환되지 않는 표준으로, 임계치 기반 복구를 위해 비밀 정보를 샤미르 셰어로 분할합니다.
연습 아홉, 여섯, 셋, 하나
9모으기지갑 또는 서명 장치 9개를 나열하고, 각각이 BIP39, 자체 방식, SLIP-39 중 무엇을 사용하는지 적으세요.
6묶기9개를 키 백업 방식에 따라 6개로 묶으세요: 12단어, 24단어, 단어 + 패스프레이즈, 샤미르 셰어, 멀티시그 구성, 기타.
3추리기6개를 복구 용이성과 도난 저항성 사이의 3가지 트레이드오프로 줄이세요.
1결정화BIP39 문구의 마지막 단어가 앞의 11개 단어와 수학적으로 다른 이유를 한 문장으로 설명하세요.
팩트 체크
날짜, 수치 및 주장은 아래에 명시된 출처들을 통해 확인되었습니다.