확장 키 (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) 자식 개인 키 하나와 함께 유출되면 부모 개인 키가 계산될 수 있으므로 신중하게 다뤄야 합니다.
강화 파생과 일반 파생
자식 번호가 231 이상이면 강화(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를 공유하면 그 아래 모든 주소가 한 사람의 것임이 드러나 프라이버시가 손상될 수 있습니다.
- 복잡성: 경로와 파생 방식을 잘못 이해하면 일부 주소를 놓치는 등 복구에 실패할 수 있습니다.
이 글은 학습을 위한 일반 정보이며 투자 권유나 법률 자문이 아닙니다. 가상자산은 가격 변동이 크고 원금 손실 위험이 있습니다.