본문으로 건너뛰기
buybitcoinsmart

용어집 / 주소와 키

체인 코드

체인 코드란 무엇입니까?
체인 코드는 HD 지갑에서 각 키와 함께 전달되는 32바이트의 추가 엔트로피로, 모든 하위 키 도출에 섞여 들어가 키를 형제 키로부터 추측할 수 없게 합니다.

BIP-32에 명시되어 있습니다.

확장 키의 절반은 키가 아닙니다. BIP-32는 512비트 해시를 256비트 키와 256비트 체인 코드로 나누며, xpub 문자열은 이 둘을 함께 담아 총 111자입니다. xpub을 건네는 순간 체인 코드도 함께 건네는 것이며, 그것이 수령자가 앞으로의 주소를 도출할 수 있게 하는 것입니다.

작동 방식

체인 코드는 HMAC 호출 한 번 안에서 역할을 합니다. 하위 키를 도출할 때 부모 체인 코드를 키로, 부모 공개 키와 4바이트 인덱스를 메시지로 하여 HMAC-SHA512를 실행합니다. 64바이트 결과는 가운데에서 나뉩니다. 왼쪽 32바이트를 부모 개인 키에 더한 뒤 그 합을 곡선 차수로 나눈 나머지가 하위 개인 키가 되고, 오른쪽 32바이트는 하위 키 자신의 체인 코드가 되며, 그 키는 이 체인 코드를 자신의 하위 키에 사용합니다.

이 솔트의 요점은 누가 트리를 따라 내려갈 수 있는가입니다. 공개 키만으로는 아무것도 도출되지 않습니다. 짝이 되는 체인 코드 없이는 도출 함수가 실행되지 않기 때문입니다. 그래서 확장 공개 키는 이름만 긴 공개 키가 아닙니다. 공개 키에 그 체인 코드를 더한 것이며, 이 둘을 누군가에게 건네면 곡선 위의 한 점이 아직 사용하지 않은 무한하고 열거 가능한 주소 가지로 바뀝니다.

BIP-32는 그에 따르는 위험한 지점을 기록합니다. 공격자가 여러분의 확장 공개 키를 가지고 있으면서 비경화 하위 개인 키 하나를 함께 손에 넣으면, 도출된 오프셋을 빼서 부모 개인 키를 복구할 수 있고, 그와 함께 모든 형제 키와 모든 하위 키도 복구됩니다. 경화 도출은 그 경로를 끊기 위해 존재합니다. 경화 단계에서는 해시 대상 메시지에 공개 키가 아니라 부모 개인 키가 들어가므로, 공개 자료를 아무리 모아도 아무도 위로 올라갈 수 없습니다.

확인할 수 있는 곳

체인 코드를 직접 입력하는 일은 없으며, 어떤 소비자용 지갑도 체인 코드를 따로 표시하지 않습니다. 체인 코드는 확장 키 안에서 이동합니다. xpub 또는 xprv로 시작하는 Base58Check 문자열은 78바이트로 디코딩되며, 4바이트 버전, 1바이트 깊이, 4바이트 부모 지문, 4바이트 하위 번호, 32바이트 체인 코드, 마지막으로 33바이트 키 순서로 배치됩니다. 그래서 xpub이 텍스트로 111자가 되는 것입니다.

필드가 필드로서 드러나는 곳은 개발자 도구입니다. Bitcoin Core의 deriveaddresses RPC는 확장 키를 내장한 디스크립터에서 작동하고, python-bip32 같은 라이브러리는 체인 코드를 별도 속성으로 반환하며, 감시 전용 설정을 위해 계정을 내보내는 서명 장치는 정확히 이 쌍을 내보냅니다.

적절한 주의 수준은 비밀번호에 적용할 수준이 아니라 전체 거래 내역에 적용할 수준입니다. 체인 코드는 서명할 수 없으므로 그 자체로는 잃을 것이 없습니다. 그러나 분석 업체, 클라우드 백업, 또는 xpub을 지원 요청서에 붙여 넣은 사람의 손에 들어가면 그 가지의 모든 결제를 과거와 미래까지 노출하며, 이후에 접근 권한을 취소할 방법은 없습니다.

체인 코드 vs 개인 키

체인 코드와 개인 키는 모두 32바이트의 무작위처럼 보이는 값이지만, 지출할 수 있는 것은 둘 중 하나뿐입니다. 개인 키는 서명을 만들어 냅니다. 체인 코드는 더 많은 도출 외에는 아무것도 만들어 내지 않으며, 바로 그 점 때문에 사람들이 이를 과소평가합니다. 돈을 옮길 수 없기 때문에 키라면 절대 하지 않을 일을 하면서 확장 공개 키를 공유 스프레드시트, 버그 보고서, 휴대폰 앱에 붙여 넣는 것입니다. 그 결과는 절도가 아니라 자신의 재정에 대한 영구적인 창이며, 두 실패에는 서로 다른 이름이 붙어야 합니다.

혼동하기 쉬운 용어

자주 묻는 질문

체인 코드는 비밀입니까?

지출을 위한 비밀은 아니지만 프라이버시를 위한 비밀입니다. 여러분의 체인 코드와 짝이 되는 공개 키를 가진 사람은 누구나 그 가지의 모든 주소를 도출하고 전체 내역을 읽을 수 있으므로, 내보낸 xpub은 사적인 금융 데이터로 취급해야 합니다.

체인 코드를 적어 둘 필요가 있습니까?

아닙니다. 시드 문구가 마스터 키와 그 아래의 모든 체인 코드를 다시 만들어 내므로, 단어를 백업하면 트리 전체가 백업됩니다. 체인 코드는 확장 키를 내보내거나 원시 도출 코드로 작업할 때만 나타납니다.

관련 용어

주소와 키 분야의 다른 용어

이 페이지를 영어로 읽기