자식 공개 키 (Child Public Key)
자식 공개 키는 HD 지갑(BIP-32)에서 부모 키와 체인 코드로부터 파생된 공개 키로, 비강화 파생이면 부모 확장 공개 키(xpub)만으로도 개인 키 없이 계산할 수 있습니다. child를 사람 '어린이'로 옮기면 안 되며, 트리 구조의 하위 노드라는 뜻으로 '자식 키'라고 합니다.
자세히 알아보기
계층적 결정적(HD) 지갑은 하나의 시드에서 마스터 키를 만들고, 그 아래로 나무처럼 수많은 자식 키를 파생합니다. 각 파생은 부모 키, 부모의 체인 코드(32바이트 추가 엔트로피), 그리고 자식 번호(인덱스)를 HMAC-SHA512에 넣어 이뤄집니다. 결과의 앞 32바이트로 자식 키를, 뒤 32바이트로 자식 체인 코드를 만듭니다. 같은 입력이면 늘 같은 자식 키가 나오므로, 시드 하나만 백업하면 모든 키를 다시 만들 수 있습니다.
파생에는 두 종류가 있습니다. 일반(비강화) 파생은 인덱스 0부터 2³¹−1까지를 쓰며, 부모 공개 키와 체인 코드만 있으면 자식 공개 키를 계산할 수 있습니다. 강화(hardened) 파생은 2³¹ 이상의 인덱스를 쓰고(경로 표기에서 작은따옴표 '), 부모 개인 키가 있어야만 자식 키를 만들 수 있습니다.
비강화 파생은 편리하지만 주의할 점이 있습니다. 부모 확장 공개 키(xpub)와 그 아래 비강화 자식 개인 키 하나가 함께 유출되면, 공격자는 부모 개인 키를 계산해 모든 형제 키를 손에 넣을 수 있습니다. 그래서 BIP-44 같은 표준 경로는 계정 단계까지는 강화 파생을 쓰고(m/44'/0'/0'), 그 아래 주소 단계에서만 비강화 파생을 씁니다.
블록체인·암호화폐에서는
자식 공개 키 파생의 가장 큰 활용은 '읽기 전용' 운영입니다. 온라인 쇼핑몰 서버나 회계 시스템에 계정의 xpub만 두면, 개인 키 없이도 고객마다 새 입금 주소를 무한히 만들고 잔액을 조회할 수 있습니다. 서버가 해킹당해도 자금을 옮길 수는 없습니다. 다만 xpub이 노출되면 그 계정의 모든 주소와 거래 내역이 드러나므로 프라이버시 측면에서는 민감한 정보로 다뤄야 합니다. 멀티시그 지갑도 각 공동 서명자의 xpub을 모아 자식 공개 키들로 주소를 만듭니다.
쉽게 말하면
본사 계좌의 '공개 정보'만으로 지점 계좌 번호를 계속 새로 만들어 낼 수 있지만, 돈을 빼는 데 필요한 비밀번호는 본사 금고에만 있는 구조입니다.
예시
경로 m/84'/0'/0'/0/5의 공개 키는, 계정 m/84'/0'/0'의 xpub만 알면 그 아래 /0/5를 비강화 파생해 계산할 수 있습니다. 반면 m/84'/0'/0' 자체는 강화 파생이라 상위 개인 키 없이는 만들 수 없습니다.
이 글은 학습을 위한 일반 정보이며 투자 권유나 법률 자문이 아닙니다. 가상자산은 가격 변동이 크고 원금 손실 위험이 있습니다.