Tech Lab2 min read

블록체인 코스 #22: 니모닉(BIP-39)으로 지갑 복구하는 원리

니모닉은 사람이 다루기 쉬운 12/24개 단어로 시드 복구를 가능하게 하는 BIP-39 표준입니다. 생성 과정(엔트로피→체크섬→11비트→단어→PBKDF2)과 보안 주의점을 함께 정리합니다.

#BIP-39#니모닉#시드-구문#HD-월렛#PBKDF2

독자는 이 글을 통해 니모닉이 시드/지갑 복구를 어떻게 쉽게 만드는지 이해하고, BIP-39 생성 흐름(체크섬·11비트·PBKDF2)을 따라가며 보안 실수를 줄일 수 있습니다.

니모닉 흐름도

니모닉이란?

  • 니모닉(Mnemonic)은 난수(엔트로피)를 12개 또는 24개의 영어 단어로 표현해 지갑 복구를 돕는 방식입니다.
  • 표준은 BIP-39이며, “사람이 복사·기록·검증하기 쉬운 형태”를 목표로 합니다.
  • 니모닉 단어를 이용해 최종적으로 시드(seed) 를 만들고, 그 시드가 HD 월렛 키 파생의 출발점이 됩니다.

왜 16진수 시드만으로는 불편할까

기존 시드 키는 아래처럼 긴 16진수 문자열 형태였습니다.

8979644bfb6b6206792bdd6a071b3a00daebfb84ac5e3d81fa8c87a8012b04be060765762d4540ff10788959a84dec51667f34b0380e66be373d0ab2c62f8f94

문제는 한 글자만 틀려도 복구가 실패하고, 오타를 찾는 과정이 번거롭다는 점입니다. 반면 니모닉은 “단어” 기반이라 사람이 오타를 더 빨리 인지할 수 있습니다.

endless convince patrol calm apology scene client jungle fitness blind grass pause

주의: 니모닉은 편하지만 “사람이 다루기 쉬운 만큼” 훔치기도 쉽습니다. 사진·클라우드 저장은 금지하세요.

니모닉 월렛이 복구하는 것은 무엇인가

니모닉 월렛은 “코인/토큰”을 복구하는 게 아니라, 그 자산을 통제하는 키(시드 → 개인키) 를 복구합니다.

개인키를 탈취당해 자산이 빠져나갔다면, 니모닉으로 지갑을 복원해도 이미 이동한 자산은 돌아오지 않습니다.

팁: 지갑의 역할이 헷갈리면 지갑 개념과 HD 월렛에서 개인키·서명 흐름을 먼저 확인하세요.

BIP-39 생성 흐름 핵심

BIP-39는 “엔트로피 → 니모닉 단어 → 시드(512bit)” 로 이어집니다. 중간에 체크섬키 스트레칭이 들어갑니다.

1) 엔트로피와 체크섬

  • 128bit 또는 256bit 엔트로피(난수) 를 생성합니다.
  • 엔트로피를 SHA-256으로 해싱한 뒤, (엔트로피 길이 / 32) 만큼의 비트를 체크섬으로 사용합니다.
    • 예: 128bit 엔트로피라면 체크섬은 128 / 32 = 4bit

2) 11비트 단위 분할과 단어 매핑

  • 엔트로피 뒤에 체크섬을 붙여 하나의 비트열을 만듭니다.
  • 이를 11비트씩 나눕니다.
  • 각 11비트 값(0~2047)을 사전 정의된 2048개 단어 목록의 인덱스로 매핑해 니모닉 단어를 만듭니다.

니모닉 엔트로피

시드 생성 9단계 요약

아래는 “니모닉 코드 생성” 관점에서의 흐름을 간단히 정리한 버전입니다.

  1. 128bit 또는 256bit 엔트로피 생성
  2. 엔트로피를 SHA-256으로 해싱
  3. 해시에서 (엔트로피 / 32)비트 만큼 체크섬 추출
  4. 엔트로피 뒤에 체크섬 결합
  5. 결합 비트열을 11bit 단위로 분할
  6. 각 11bit를 단어 목록 인덱스로 변환
  7. 순서를 유지해 12/24개 니모닉 단어 완성
  8. 니모닉과 솔트로 PBKDF2 수행
  9. 결과로 512bit 시드(seed) 생성

체크섬(Checksum): 입력 데이터에 오류가 있는지 “검사용”으로 확인하기 위한 비트 정보입니다.

PBKDF2로 시드(512bit) 만들기

니모닉 단어는 그 자체로 최종 시드가 아닙니다. BIP-39는 키 스트레칭을 위해 PBKDF2를 사용합니다.

  • 입력 1: 니모닉 문장(단어들을 공백으로 연결한 문자열)
  • 입력 2: 솔트(salt)
    • "mnemonic" + 사용자가 선택한 패스프레이즈(passphrase) 결합
  • 함수: PBKDF2-HMAC-SHA512
  • 반복: 2048 라운드
  • 출력: 512bit 시드

주의: 패스프레이즈를 쓰면 보안이 강해지지만, 잊어버리면 같은 니모닉으로도 다른 시드가 생성되어 복구에 실패합니다.

실무 보안 체크리스트

  • 니모닉은 오프라인에 기록하고 2곳 이상 분산 보관
  • 사진 촬영·메신저 전송·클라우드 백업 금지
  • 복구 연습은 소액 테스트 지갑으로만 진행
  • 패스프레이즈 사용 시, 니모닉과 분리 보관(둘 다 잃으면 복구 불가)

참고 링크

다음으로 읽어볼 글