BIP39 완전 해설: 2,048개의 단어가 암호화폐를 지키는 원리
목차
암호화폐 지갑을 설정해 본 적이 있다면, 12개 또는 24개의 단어를 적어두라는 요청을 받은 적이 있을 것입니다. 이 단어들은 사전에서 무작위로 뽑은 어휘가 아닙니다. BIP39 --- Bitcoin Improvement Proposal 39 --- 라는 정밀한 표준에서 비롯된 것이며, 단어의 수부터 각 단어가 선택되는 방식까지 모든 세부 사항은 암호화폐를 최대한 안전하고 이식 가능하게 만들기 위해 설계되었습니다.
이 가이드는 BIP39를 처음부터 분해합니다: 엔트로피가 어떻게 시드 구문이 되는지, 왜 단어 목록에 정확히 2,048개의 항목이 있는지, 그리고 이 단어들을 지갑에 입력할 때 내부에서 어떤 일이 벌어지는지 설명합니다.
BIP39란 무엇인가?¶
BIP39는 2013년에 발표된 명세로, 랜덤한 이진수를 사람이 읽을 수 있는 단어 목록 --- 니모닉 --- 으로 변환한 다음, 그 니모닉을 암호화 키를 생성하는 데 사용되는 이진 시드로 변환하는 방법을 정의합니다.
BIP39 이전에는 지갑 백업이 원시 16진수 문자열이었습니다: 5e884898da28047151d0e56f8dc...와 같은 64자리 문자열이었죠. 이런 문자열을 직접 복사하는 것은 번거롭고 오류가 발생하기 쉬웠습니다. 한 글자만 잘못 쓰면 백업 전체가 무용지물이 되었습니다.
BIP39는 같은 랜덤 바이트를 일반 영어 단어에 매핑하여 이 문제를 해결했습니다. 16진수를 복사하는 대신 "abandon ability able about above absent absorb abstract..."와 같은 단어를 적으면 됩니다 --- 이 단어들은 읽고, 확인하고, 종이나 금속에 보관하기 훨씬 쉽습니다.
BIP39의 세 가지 목표는 다음과 같습니다:
- 사람이 읽기 쉬움 --- 단어는 16진수보다 옮겨 적고, 확인하고, 기억하기 쉽습니다.
- 오류 감지 --- 내장된 체크섬이 옮겨 적기 실수를 잡아냅니다.
- 결정론적 파생 --- 같은 단어는 어떤 지갑 소프트웨어를 사용하든 항상 같은 마스터 시드를 생성합니다.
128비트 엔트로피가 12개의 단어가 되는 과정¶
BIP39 시드 구문의 보안은 엔트로피 --- 암호학적으로 안전한 난수 생성기(CSPRNG)가 생성하는 순수한 무작위성에서 시작됩니다. 엔트로피의 양에 따라 단어 수가 결정됩니다:
| 엔트로피(비트) | 체크섬(비트) | 합계(비트) | 단어 수 |
|---|---|---|---|
| 128 | 4 | 132 | 12 |
| 160 | 5 | 165 | 15 |
| 192 | 6 | 198 | 18 |
| 224 | 7 | 231 | 21 |
| 256 | 8 | 264 | 24 |
가장 일반적인 구성은 12단어 구문(128비트)과 24단어 구문(256비트)입니다.
12단어 구문의 단계별 과정은 다음과 같습니다:
- 128개의 랜덤 비트를 생성합니다. 이것이 원시 엔트로피입니다. 현대 시스템에서 이 무작위성은 운영체제의 CSPRNG에서 옵니다 --- 예를 들어 브라우저의 Web Crypto API나 Linux의
/dev/urandom이 해당됩니다. - 체크섬을 계산합니다. 128비트의 SHA-256 해시를 구합니다. 해시의 처음 4비트가 체크섬이 됩니다.
- 연결합니다. 원래 128비트에 4비트의 체크섬을 추가하여 132비트를 만듭니다.
- 11비트 그룹으로 분할합니다. 132비트를 11비트씩 12개 그룹으로 나눕니다.
- 단어에 매핑합니다. 각 11비트 그룹은 0에서 2,047 사이의 숫자입니다. 이 숫자를 BIP39 단어 목록의 인덱스로 사용합니다.
결과는 12개의 영어 단어입니다.
128비트는 얼마나 안전할까요? 2^128개의 가능한 조합이 있으며 --- 이는 약 3.4 x 10^38입니다. 이를 비유하면, 지구상의 모든 컴퓨터가 초당 1조 개의 조합을 시도하더라도 전체 공간을 소진하는 데 약 10^14년이 걸립니다. 시드 구문에 대한 브루트 포스가 왜 비현실적인지에 대한 더 자세한 내용은 2026년 시드 구문 브루트 포스를 참조하세요.
2,048개의 단어 목록과 체크섬¶
왜 정확히 2,048개의 단어일까요? 2,048 = 2^11이기 때문입니다. 각 단어는 정확히 11비트의 데이터를 인코딩하여, 이진수와 단어 간의 변환을 깔끔하고 가역적으로 만듭니다.
공식 영어 BIP39 단어 목록은 여러 특성을 갖추도록 세심하게 선별되었습니다:
- 4자 미만의 단어는 없습니다. 모호함을 방지하기 위해서입니다.
- 각 단어의 처음 4글자는 고유합니다. 충돌 없이 축약할 수 있습니다 --- "abso"는 명확하게 "absorb"입니다. 일부 하드웨어 지갑은 이를 활용하여 입력 속도를 높입니다.
- 유사한 단어는 제외됩니다. 목록은 "woman"과 "women"처럼 한 글자만 다른 쌍을 피합니다.
- 단어는 알파벳순으로 정렬됩니다. 조회를 효율적으로 만들어 줍니다.
BIP39 단어 목록은 여러 언어로 존재합니다 --- 영어, 일본어, 한국어, 스페인어, 중국어(간체 및 번체), 프랑스어, 이탈리아어, 체코어, 포르투갈어. 영어 목록이 단연 가장 널리 사용되지만, 이 표준은 언어에 구애받지 않습니다. 사용 가능한 모든 목록을 확인하려면 모든 언어의 BIP39 단어 목록을 참조하세요.
체크섬이 오류를 잡아냅니다¶
마지막 단어에 포함된 체크섬은 BIP39의 가장 실용적인 기능 중 하나입니다. 실수로 잘못된 단어를 적거나 두 단어의 순서를 바꾸면, 지갑을 복구하려 할 때 체크섬이 거의 확실히 실패합니다.
12단어 구문의 경우 체크섬은 4비트입니다. 즉, 무작위로 변경된 구문 중 16개에 1개만 체크섬 테스트를 통과합니다. 24단어 구문의 경우 체크섬은 8비트이므로 256개 중 1개의 잘못된 구문만 유효하게 보입니다. 이것은 보증이 아니라 안전망입니다 --- 잠금장치가 아닌 --- 하지만 대다수의 옮겨 적기 오류를 잡아냅니다.
인터넷에 노출하지 않고도 시드 구문의 체크섬을 확인할 수 있습니다. SafeSeed의 Bitcoin Seed Phrase Generator와 같은 오프라인 도구를 사용하면 됩니다. 이 도구는 완전히 브라우저 내에서 실행됩니다.
니모닉에서 마스터 시드로¶
12개의 단어를 갖고 있다고 해서 과정이 끝나는 것은 아닙니다. 지갑은 니모닉을 직접 암호화 키로 사용하지 않습니다. 대신, 니모닉은 PBKDF2라는 키 스트레칭 함수를 통해 512비트 이진 시드로 변환됩니다.
변환 과정은 다음과 같습니다:
- 니모닉 단어들이 하나의 문자열로 결합됩니다(공백으로 구분).
- "mnemonic"이라는 문자열 앞에 선택적 패스프레이즈를 붙여 솔트를 만듭니다. 패스프레이즈가 설정되지 않은 경우, 솔트는 단순히 "mnemonic"이라는 문자열입니다.
- PBKDF2-HMAC-SHA512가 2,048회 반복으로 적용되어 512비트 시드를 생성합니다.
이 512비트 시드는 그 후 BIP32에 설명된 대로 HD 지갑 트리의 마스터 개인 키와 체인 코드를 파생하는 데 사용됩니다. 이 하나의 마스터 키에서 무한한 수의 자식 키 --- 따라서 주소들을 --- 여러 블록체인에 걸쳐 생성할 수 있습니다.
선택적 패스프레이즈(때때로 "25번째 단어"라고 불림)는 강력한 보호 계층을 추가합니다. 같은 12개의 단어에 다른 패스프레이즈를 적용하면 완전히 다른 지갑이 생성됩니다. 즉, 누군가가 단어 목록을 발견하더라도 패스프레이즈 없이는 자금에 접근할 수 없습니다. 하지만 패스프레이즈에는 체크섬이 없습니다: 잘못된 패스프레이즈는 오류를 발생시키지 않고 조용히 다른(비어 있는) 지갑을 생성합니다.
마스터 시드가 자식 키와 주소를 어떻게 생성하는지에 대한 자세한 내용은 HD 지갑과 파생 경로 설명을 참조하세요.
블록체인 전반에서의 BIP39¶
BIP39는 Bitcoin 생태계에서 만들어졌지만, 그 채택은 훨씬 더 넓습니다. 같은 12개 또는 24개의 단어로 Ethereum, Solana, Polygon 및 수십 개의 다른 네트워크에서 자금을 보호할 수 있습니다.
체인 간에 달라지는 것은 시드 구문 자체가 아니라, 마스터 시드가 생성된 후 사용되는 파생 경로입니다. Bitcoin은 Native SegWit 주소에 m/84'/0'/0'을 사용합니다. Ethereum과 EVM 체인은 m/44'/60'/0'/0을 사용합니다. Solana는 m/44'/501'/0'/0'을 사용합니다. 니모닉에서 시드로의 단계는 어디서나 동일합니다 --- 항상 같은 매개변수를 가진 PBKDF2입니다.
이 크로스체인 호환성은 BIP39의 가장 큰 강점 중 하나입니다. 하나의 백업으로 지원되는 모든 네트워크의 자산을 보호합니다. SafeSeed는 여러 체인에 대한 시드 구문 생성기를 제공합니다 --- Bitcoin, Ethereum, Solana --- 모두 동일한 BIP39 표준을 사용합니다.
예외도 있습니다. 일부 지갑, 특히 Electrum은 BIP39와 호환되지 않는 자체 니모닉 체계를 사용합니다. Electrum의 체계는 니모닉 자체에 버전 정보를 포함하며, 이는 다른 트레이드오프를 가집니다. Electrum 시드를 BIP39 지갑에 가져오거나 그 반대로 하면 다른 키가 생성됩니다. 지갑이 어떤 니모닉 표준을 사용하는지 항상 확인하세요.
흔한 실수들¶
BIP39를 이해하는 것은 바로 비용이 큰 실수를 피하는 데 도움이 되기 때문에 가치가 있습니다. 가장 빈번한 실수들은 다음과 같습니다:
시드 구문을 디지털로 저장하기¶
스크린샷을 찍거나, 텍스트 파일로 저장하거나, 12개의 단어를 자신에게 이메일로 보내는 것은 원래 목적을 무효화합니다. 기기가 침해되면 공격자가 모든 것을 손에 넣습니다. 구문을 종이에 적거나 금속에 각인하여 물리적으로 보관하세요. 자세한 전략은 2026년 콜드 스토리지 가이드를 참조하세요.
시드 구문과 개인 키를 혼동하기¶
시드 구문은 많은 개인 키를 생성하고, 하나의 개인 키는 정확히 하나의 계정만 제어합니다. 이들은 상호 교환 가능하지 않습니다. MetaMask에서 개인 키를 내보내면 시드 구문이 나오지 않으며, 그 반대도 마찬가지입니다. 철저한 비교를 위해서는 시드 구문 vs 개인 키를 읽어보세요.
검증되지 않은 웹사이트에 시드 구문 입력하기¶
합법적인 서비스는 절대로 인터넷에 연결된 상태에서 시드 구문을 웹사이트에 입력하라고 요청하지 않습니다. 지갑 인터페이스를 모방하는 피싱 사이트는 가장 흔한 공격 벡터 중 하나입니다. 시드 구문을 생성하거나 확인해야 한다면, 완전히 오프라인으로 클라이언트 측에서 실행되는 도구를 사용하세요 --- SafeSeed의 도구는 서버에 데이터를 전송하지 않고 작동합니다.
체크섬 무시하기¶
지갑이 시드 구문이 유효하지 않다고 알려주면, 강제로 진행하지 마세요. 체크섬이 무언가 잘못되었다고 알려주는 것입니다. BIP39 단어 목록과 대조하여 모든 단어를 다시 확인하세요. 흔한 오류는 처음 네 글자가 같지만 그 이후가 다른 단어를 혼동하는 것입니다.
패스프레이즈를 잊어버리기¶
선택적 패스프레이즈를 설정한 후 잊어버리면 자금은 복구할 수 없습니다. 패스프레이즈는 어디에도 저장되지 않으며 --- 암호학적 입력의 일부입니다. 시드 구문과 동일한 수준으로 주의를 기울여야 합니다.
BIP39는 암호화폐에서 가장 우아한 표준 중 하나로 남아 있습니다. 이 표준은 해독하기 어려운 이진 데이터를 사람이 종이에 적어 금고에 보관할 수 있는 것으로 변환합니다 --- 보안성을 단 한 비트도 희생하지 않고. 이것이 어떻게 작동하는지 이해하는 것이 디지털 자산을 책임감 있게 보호하는 첫 번째 단계입니다.