# 확장 키 (Extended Key)

확장 키(Extended Key)는 HD 지갑에서 자식 키를 파생시킬 수 있도록 체인 코드로 확장된 공개 키 또는 개인 키입니다. 일반 키에 ‘체인 코드’라는 256비트 추가 값을 결합한 것으로, BIP-32 표준에서 정의되며 확장 개인 키(Extended Private Key, xprv)와 확장 공개 키(Extended Public Key, xpub) 두 종류가 있습니다.

## 체인 코드의 역할

자식 키는 부모 키와 체인 코드, 자식 번호(인덱스)를 HMAC-SHA512 함수에 넣어 계산합니다. 체인 코드가 없으면 공개 키만으로 다른 키를 예측할 수 있게 되므로, 체인 코드는 파생 과정에 필요한 비밀 재료 역할을 합니다. 같은 부모와 같은 인덱스에서는 언제나 같은 자식 키가 나오기 때문에 ‘결정적(deterministic)’ 지갑이라고 부릅니다.

## 마스터 키와 하위 키

HD 지갑은 시드에서 HMAC-SHA512 함수로 하나의 마스터 확장 개인 키(깊이 0, 경로 m)를 만듭니다. 지갑 전체를 만드는 것은 이 마스터 키뿐입니다. 그 아래 m/84'/0'/0' 같은 계정 단계에서 나온 xprv도 확장 개인 키이지만, 자기 아래 가지에 있는 키만 만들 수 있고 형제 계정이나 부모의 키는 알 수 없습니다. 회사로 비유하면 마스터 키는 본사 전체 열쇠이고, 계정 단계의 xprv는 한 부서의 열쇠 꾸러미입니다.

## 두 종류의 확장 키

- **확장 개인 키(xprv):** 해당 노드 아래 하위 트리의 모든 자식 개인 키와 공개 키, 주소를 만들 수 있습니다. 일반 파생과 강화 파생 자식을 모두 만들 수 있고, 그 키로 트랜잭션에 서명할 수 있으며, 같은 노드의 xpub도 계산할 수 있습니다. 그 가지의 모든 자금을 움직일 수 있으므로 철저히 지켜야 합니다.
- **확장 공개 키(xpub):** 일반 파생 자식의 공개 키와 주소는 만들 수 있지만 개인 키는 만들 수 없고 서명도 할 수 없습니다. 이것만으로는 자금을 옮길 수 없지만, 공유하면 파생되는 모든 주소와 거래 내역이 드러나고, 비강화(non-hardened) 자식 개인 키 하나와 함께 유출되면 부모 개인 키가 계산될 수 있으므로 신중하게 다뤄야 합니다.

## 강화 파생과 일반 파생

자식 번호가 2^31 이상이면 강화(hardened) 파생이라고 하며, 계산에 부모 개인 키가 필요해 xpub만으로는 그 자식을 만들 수 없습니다. 경로 표기에서 m/84'/0'/0'처럼 작은따옴표가 붙은 단계가 강화 파생입니다. 지갑 표준이 계정 단계를 강화 파생으로 두는 것은, xpub와 비강화 자식 개인 키가 함께 유출될 때 생기는 위험이 강화 경계 위쪽으로 번지지 않게 하기 위해서입니다. 그래서 한 계정의 키가 유출되어도 다른 계정으로 피해가 번지지 않습니다.

## 직렬화 형식

확장 키는 78바이트로 직렬화됩니다. 버전(4바이트), 깊이(1바이트), 부모 키 지문(4바이트), 자식 번호(4바이트), 체인 코드(32바이트), 키(33바이트) 순입니다. 개인 키는 32바이트이므로 앞에 0x00 1바이트를 붙여 33바이트로 맞춥니다. 이를 Base58Check로 인코딩하면 ‘xprv’ 또는 ‘xpub’로 시작하는 111자 문자열이 됩니다. 테스트넷에서는 tprv·tpub를 쓰고, 일부 지갑은 주소 형식에 따라 ypub·zpub 같은 접두사를 쓰기도 합니다.

## 쓰임새

- **계정 분리:** 저축, 지출 등 목적별로 계정을 나누고 각 계정의 xprv로 그 계정의 주소만 관리합니다.
- **지갑 간 이전:** 일부 지갑은 특정 계정의 xprv를 가져오기(import)해 그 가지의 자금을 그대로 다룰 수 있게 합니다.
- **서명 장치 분리:** 서버에는 xpub만 두고 xprv는 오프라인 장치에 두어, 개인 키 없이 입금 주소를 만들면서 서명은 따로 합니다. 하드웨어 지갑도 대개 xprv를 장치 밖으로 내보내지 않고 xpub만 컴퓨터 앱에 넘겨 주소와 잔액을 보여 주게 합니다.

## 장점과 주의점

- **체계적인 관리:** 목적이나 계정별로 키를 나눈 계층 구조를 만들어 정리가 쉽습니다.
- **단순한 백업:** 시드 구문 하나만 백업하면 HD 지갑 구조 전체와 연결된 모든 키를 복구할 수 있습니다. 반면 계정 단계 xprv 백업은 그 계정만 복구하므로, 어떤 키를 백업했는지 정확히 알아야 합니다.
- **프라이버시:** 트랜잭션마다 새 주소를 쓸 수 있습니다.
- **단일 실패 지점:** 마스터 확장 개인 키나 시드가 유출되면 HD 지갑 전체가 위험해지고, 하위 xprv가 유출되면 그 하위 트리의 모든 자금이 위험해집니다.
- **연결성 노출:** xpub를 공유하면 그 아래 모든 주소가 한 사람의 것임이 드러나 프라이버시가 손상될 수 있습니다.
- **복잡성:** 경로와 파생 방식을 잘못 이해하면 일부 주소를 놓치는 등 복구에 실패할 수 있습니다.

---
출처: https://achivx.kr/glossary/extended-key-%ED%99%95%EC%9E%A5-%ED%82%A4/ · ACHIVX 용어 사전 · 수정일 2026-10-20
