암호 화폐의 HD 지갑 구조

2646 단어 암호 화폐ECDSA
고급 결정적 지갑.
비트코인과 같은 암호화폐에 사용되는 주소는 ECDSA(Elliptic Curve Digital Signature Algorithm, 타원 곡선 전자 서명 알고리즘)의 공개 키다.이전에는 주소가 필요할 때마다 기밀 키로 무작위 수를 만들어 공개 키를 내보냈다.물론 동전을 받기 위해 주소를 명확하게 만드는 경우 개인의 프라이버시 때문에 송금할 때 거스름돈은 원래의 주소로 돌아가는 것이 아니라 새로운 거스름돈을 만드는 경우가 많다.매번 생성된 기밀 키를 백업하지 않으면 디스크가 붕괴되면 동전을 잃어버린다(이렇게 하면 확실히 불편하기 때문에 Bitcoin Core와 함께 100개의 주소를 생성한다. 실제로 100개의 백업을 하면 된다).또 수량이 늘어나면 종이 등 시뮬레이션 수단으로 백업하는 것은 비현실적이고 파일로 저장된다.
최근 클라이언트는 HD 지갑을 사용했습니다.하나의 무작위 트리 모양에서 여러 개의 주소를 생성할 수 있습니다.어떤 지갑을 쓰기 시작하면'이 단어를 적어라'라는 12개의 단어가 나온다.이것은 루트 랜덤수입니다.이렇게 되면 뿌리의 무작위 수만 백업할 수 있고 아날로그 방법으로 백업할 수도 있다.

트리 모양으로만 주소를 생성하면 규칙만 결정됩니다.하지만'어느 노드 이하의 주소(공개키) 생성은 다른 사람에게 맡기지만 그 주소에서 동전(비밀키를 알다)을 꺼낼 수 있는 건 오직 나뿐'이라는 것을 알게 돼 HD지갑을 사용할 수 있게 됐다.어떻게 이뤄졌는지 신경 쓰여 HD지갑 사양(BIP)을 읽어보고 ECDSA를 잘 사용해 재밌었다.일반적으로 비밀 키를 먼저 만들어서 비밀 키에서 공개 키를 내보내기 때문에 그런 일은 불가능하다고 여긴다.
ECDSA
타원 곡선 DSA-Wikipedia
ECDSA에서 비밀 키는 정수 $k$k이고 공개 키는 타원 곡선의 점 $K=kG=(x, y) $K입니다.타원 커브 및 기본 점 $G$$$$의 고정 값입니다.비트코인이 사용하는 secp 256k1의 각 값은 여기.에 있다.타원 곡선 암호는 타원 곡선의 점의 덧셈을 정의한다곱하기 $kG는 $G를 더하는 것으로 정의됩니다.$k$k를 실제로 추가하지 않더라도 이진법으로 $O(\log k)달러로 계산할 수 있습니다.다른 한편, $kG와 $G의 실제 시간에서 $k를 요구할 수 없습니다.
HD 지갑
bips/bip-0032.mediawiki at master · bitcoin/bips
HD 월렛에서는 부모 노드의 기밀 키, 공개 키와'검사 코드'로 불리는 정수, 부모의 몇 번째 서브 노드의 인덱스(부모의 몇 번째 서브)를 바탕으로 서브 노드의 기밀 키, 공개 키와 검사 코드를 제작한다.모노드 개인 키 $k{par}$, 검사 코드 $c{par}달러, 인덱스는 $i입니다.부모 노드의 공개 키는 $k 입니다{par} G달러k_{par}G$、$c_산열 함수를 통해 정수 $l달러를 얻다상위 $lL 및 $lR달러, $k로 나누기i=l_L+k_하위 노드 개인 키i=l_R$R을 서브노드의 격자선으로 사용합니다.부모 노드의 공개 키와 검사 코드를 알면 검사 코드를 내보낼 수 있습니다.
문제는 공개 키입니다.부모의 공개 키 $k{par}G$만 알더라도L달러는 계산할 수 있지만 기밀 키를 얻기 위해서는 부모의 기밀 키가 필요하다.공개 키만 알면 하위 노드의 공개 키는 $lLG+k_{par}을(를) G$(으)로 요청합니다.분배법칙이 성립되어, $lLG+k_{par}G=(l_L+k_{par})G=k_{i}이(가) G$이 되었습니다.재미있다.

적선은 역으로 계산할 수 없는 곳이다.
질문이 하나 있는데 아이의 비밀 열쇠를 알면i=l_L+k_부모님의 비밀 열쇠가 요구되었다.그리고 과거로 거슬러 올라가 형제의 비밀 열쇠를 찾을 수도 있다.따라서 부모의 공개 키로만 아이의 공개 키를 계산할 수 있는 특징을 없애고 부모의 비밀 키가 필요하지 않도록 강화키(hardedkey) 규격을 적용할 수도 있다.

좋은 웹페이지 즐겨찾기