# BIP32 (Hierarchical Deterministic Key Derivation)

BIP32(Bitcoin Improvement Proposal 32)는 하나의 시드에서 트리 구조로 사실상 무한한 개인 키와 공개 키를 결정적으로 파생하는 표준입니다. 2012년 피터 위일(Pieter Wuille)이 작성했으며, 현재 거의 모든 HD(계층적 결정적) 지갑과 xpub·xprv 확장 키 형식의 기반입니다.

## 자세히 알아보기

먼저 128~512비트 시드에 HMAC-SHA512(키 = "Bitcoin seed")를 적용해 512비트를 얻고, 왼쪽 256비트를 마스터 개인 키, 오른쪽 256비트를 마스터 체인 코드로 씁니다. 개인 키와 체인 코드를 합친 것을 '확장 키'라고 하며, 자식 키는 부모 확장 키와 인덱스 번호를 다시 HMAC-SHA512에 넣어 계산합니다. 같은 시드에서는 언제나 같은 키 트리가 나오므로 시드만 백업하면 모든 주소를 복구할 수 있습니다.

인덱스는 두 종류입니다. 0 ~ 2³¹−1은 '일반(normal)' 파생으로, 부모 확장 공개 키(xpub)만으로도 자식 공개 키를 만들 수 있습니다. 2³¹ 이상은 '강화(hardened)' 파생(경로 표기에서 ' 또는 h)으로, 부모 개인 키가 있어야만 자식을 만들 수 있습니다. xpub 덕분에 서버는 개인 키 없이도 입금 주소를 계속 생성할 수 있지만, 위험도 있습니다. xpub과 그 아래 일반 파생 자식 개인 키 하나가 함께 유출되면 부모 개인 키가 계산됩니다. 그래서 계정 단계까지는 강화 파생을 쓰는 것이 원칙입니다.

확장 키는 78바이트로 직렬화되고 Base58Check로 인코딩되어 xprv…, xpub…으로 시작합니다. 니모닉에서 시드를 만드는 방법은 BIP-39, 경로 구조는 BIP-44 등에서 따로 정의합니다.

## 블록체인·암호화폐에서는

BIP-44 경로 m / purpose' / coin_type' / account' / change / address_index에서 coin_type은 SLIP-44 등록 번호로, Bitcoin은 0, Ethereum은 60, Tron은 195입니다. 예를 들어 MetaMask의 첫 Ethereum 계정은 m/44'/60'/0'/0/0, Tron 지갑의 첫 주소는 보통 m/44'/195'/0'/0/0입니다. 그래서 같은 니모닉으로 여러 체인의 주소를 한꺼번에 관리할 수 있고, 거래소는 xpub으로 고객별 입금 주소를 대량 생성합니다. Ed25519를 쓰는 체인(Solana 등)은 강화 파생만 지원하는 SLIP-0010 방식을 사용합니다.

## 쉽게 말하면

씨앗 하나에서 정해진 규칙대로 가지와 잎이 자라는 나무입니다. 씨앗(시드)만 잘 보관하면 언제든 같은 나무 전체를 다시 키울 수 있습니다.

## 예시

m/44'/60'/0'/0/0 → 강화 파생 3단계(44', 60', 0') 후 일반 파생 2단계(0, 0)로 얻은 Ethereum 첫 번째 주소의 키.

---
출처: https://achivx.kr/glossary/bip32-hd-key-derivation-bip32-%EA%B3%84%EC%B8%B5%EC%A0%81-%EA%B2%B0%EC%A0%95%EC%A0%81-%ED%82%A4-%ED%8C%8C%EC%83%9D/ · ACHIVX 용어 사전 · 수정일 2026-10-20
