니모닉, BIP-32, BIP-39, BIP-44에 대해 알아보자

김규원·2025년 8월 21일
0
post-thumbnail

니모닉(mnemonic)

사람이 기억하기 쉽게 만든 단어 조합
혹은 암호화폐 지갑을 복구하기 위한 12~24개의 영어 단어 조합

  • 보통 12~24개 단어
  • 니모닉 자체는 개인키가 아님
  • 키를 복구할 수 있는 원재료
  • 니모닉 →(BIP-39)→ Seed →(BIP-32)→ 키

Mnemonic Code Converter

https://iancoleman.io/bip39/

니모닉의 자세한 생성 과정

https://velog.io/@gimgyuwon/니모닉시드개인키는-어떤-관계일까

BIP

  • Bitcoin Improvement Proposal
  • 비트코인 및 관련 생태계의 표준 제안서
  • 즉, 비트코인 시스템에 대해 새로운 기능을 도입하거나, 규칙을 정의하거나, 개선 방식을 문서화하는 공식 절차

https://github.com/bitcoin/bips

BIP 특징

1. 표준화 문서

  • 프로토콜 지갑 구조, 주소 형식 등의 다 같이 써야 하는 규칙을 정의
    • 예) BIP-32(HD Wallet) BIP-39(Mnemonic → Seed 변환 규칙), BIP-44(경로 표준)

2. 공식 프로세스

  • 제안서 작성 → 개발자 커뮤니티 리뷰 → 합의 → 승인되면 표준 채택

3. IETF RFC와 유사

  • 인터넷 세계에서 “RFC(Request for Comments)”가 인터넷 표준을 정리하는 것처럼
  • 비트코인 세계에서는 “BIP”가 그 역할을 함

유명한 BIP 들 간의 관계

[니모닉(12~24 단어)]
   └─(BIP-39)→ [Seed(64바이트)]
        └─(BIP-32)→ [마스터 xprv/xpub + 체인코드]
             └─(BIP-44 경로 규칙)→ [특정 자식 개인키]
                  └→ 공개키 → 주소(코인별 규칙)

유명한 BIP들의 필요성

  1. 문제: 주소마다 키를 따로 백업하면 관리 지옥 → 분실·혼선 위험
    • BIP-32: 하나의 “마스터”에서 무한히 많은 키를 결정적으로 파생(HD 지갑).
  1. 문제: 난수(Seed)는 사람이 기억/백업하기 어려움

    • BIP-39: 사람이 외우기 쉬운 단어열(니모닉) 로 Seed를 만들고 복구.
  2. 문제: 지갑마다 파생 경로가 제각각이면 복구 호환이 안 됨

    • BIP-44: 코인/계정/거스름돈/인덱스까지 경로 표준 제시.

BIP-39

니모닉 ↔ Seed 규격

  • 니모닉(+패스프레이즈)을 입력으로 받아 Seed(보통 64바이트) 생성.
  • 내부적으로 PBKDF2-HMAC-SHA512(2048회) 사용.
  • 동일 니모닉 + 동일 패스프레이즈 → 동일 Seed (지갑 간 호환의 핵심)
  • Seed는 곧 BIP-32 마스터 키의 재료.

BIP-32

HD(계층적 결정적) 지갑

  • Seed → 마스터 개인키 + 체인코드 → 이를 담은 확장키(extended key) 생성
    • xprv: 확장 개인키(개인키+체인코드+메타)
    • xpub: 확장 공개키(공개키+체인코드+메타)
  • Hardened(강화) 자식: 인덱스에 ' 표기(또는 2³¹ 더하기)
    • 부모 xpub만으로는 파생 불가(보안↑), 부모 xprv 필요
  • Non-hardened 자식: 부모 xpub만으로도 자식 공개키 파생 가능
    • 입금 전용(조회/회계용)으로 유용

관례상 purpose' / coin_type' / account' 는 전부 hardened 로 구분.

BIP-44

실사용 파생 경로 표준

m / purpose' / coin_type' / account' / change / address_index

필드 설명

  • purpose': 항상 44' (BIP-44 규칙 사용)
  • coin_type': 코인 종류(SLIP-44 표, 예: BTC=0', ETH=60')
  • account': 계정 번호(프로젝트/용도 분리)
  • change: 0=외부(입금용), 1=내부(거스름돈)
  • address_index: 0부터 증가(0,1,2…)

대표 경로 예시

  • BTC(레거시 P2PKH): m/44'/0'/0'/0/0
  • ETH(일반 지갑): m/44'/60'/0'/0/0

참고: 비트코인 최신 주소 타입은 BIP-49(49'), BIP-84(84'), BIP-86(86') 처럼 다른 purpose를 써요. (예: BIP-84는 네이티브 세그윗)

profile
행복한 하루 보내세요

0개의 댓글