전체 글 목록

비트코인 복구 문구를 주사위로 만드는 방법: 256비트 엔트로피와 24단어 니모닉

bitcoin-recovery-phrase-dice-entropy-featured

비트코인 지갑은 일반적으로 내부 난수 생성기를 이용해 복구 문구를 자동으로 만듭니다. 공식 경로에서 구입한 하드웨어 지갑이나 신뢰할 수 있는 지갑 프로그램을 정상적인 환경에서 사용한다면, 대부분은 지갑이 제공하는 생성 절차를 따르는 것으로 충분할 수 있습니다.

저는 BIP39 복구 문구가 만들어지는 과정을 직접 확인해보고 싶어 색이 다른 주사위 두 개로 256비트 엔트로피를 만들었습니다. 그리고 이안 콜먼(Ian Coleman)의 BIP39 도구를 인터넷이 끊어진 Mac에서 실행해, 그 엔트로피에 대응하는 24단어 니모닉을 생성했습니다.

이번 글은 제가 실제로 진행한 다음 두 과정을 중심으로 정리했습니다.

  1. 색이 다른 주사위 두 개로 256비트 엔트로피를 만듭니다.
  2. 이안 콜먼 BIP39 도구를 오프라인에서 실행해 24단어 니모닉으로 변환합니다.

주사위를 사용했다고 해서 복구 문구가 자동으로 더 안전해지는 것은 아닙니다. 지갑의 난수 생성기에 대한 의존은 줄일 수 있지만, 주사위 순서와 비트 변환, 기록, 도구 입력, 생성 환경을 사용자가 직접 관리해야 하므로 실수할 가능성은 오히려 늘어날 수 있습니다.

복구 문구를 생성할 때 확인해야 할 지갑과 컴퓨터 환경은 비트코인 지갑 시리즈 3편 비트코인 복구 문구를 만들 때 조심할 점에서 정리했습니다.
엔트로피와 체크섬이 BIP39 단어로 바뀌는 원리는 시리즈 4편 비트코인 BIP39란?에서 먼저 확인할 수 있습니다.

더 읽기

비트코인 BIP39란? 엔트로피·체크섬으로 복구 문구가 만들어지는 원리

bitcoin-bip39-mnemonic-generation

비트코인 지갑을 새로 만들면 12개 또는 24개의 복구 문구가 표시되는 경우가 많습니다.

처음 보면 지갑이 2,048개의 단어 중에서 몇 개를 무작위로 골라 보여주는 것처럼 생각하기 쉽습니다.

저도 지갑을 공부하면서 복구 문구가 어떻게 만들어지는지 궁금해서 BIP39 명세를 직접 찾아본 적이 있습니다. 처음에는 단순한 무작위 추첨이라고 생각했는데, 실제로는 암호학적으로 설계된 구조라는 것을 알게 되었습니다.

하지만 BIP39 방식의 복구 문구는 단어를 하나씩 따로 추첨하는 방식으로 만들어지지 않습니다.

지갑은 먼저 엔트로피라고 부르는 무작위 이진 정보를 생성합니다. 그 뒤 엔트로피에서 체크섬을 계산해 붙이고, 전체 정보를 11비트씩 나눈 다음 각 값을 BIP39 단어 목록의 위치와 연결합니다.

더 읽기