1. Masster Seed得到子公鑰、子私鑰
由主私鑰和鏈碼,再結合子密鑰索引(索引是一個 4Byte 序號),通過 HMAC-SHA512 衍生出子密鑰,
父級私鑰 --> 子級公鑰有兩種途徑
- 父級私鑰 --> 子級私鑰, 子級私鑰 --> 公鑰
- 父級私鑰 --> 父級公鑰, 父級公鑰 --> 子級公鑰

HMAC-SHA512(Key, data) = 64Byte子密鑰 = 左側32Byte子密鑰 + 右側32Byte ChainCode
Key: 父級的 ChainCode
data:父級公鑰(33Byte)+索引拼接
鏈碼ChainCode:用來引入確定性隨機資料,使得索引不能充分衍生其他的子密鑰,
2. 已知父級私鑰,由父級私鑰=>子級私鑰=>子級公鑰
Step1.1. 父級私鑰->父級公鑰
Step Mid. HMAC-SHA512中間程序
Step1.2. 子級私鑰 = 左側32Byte 子密鑰 + 父級私鑰
有個橢圓曲線和是否為零的校驗;校驗通過則是一個合法的子級私鑰,不合法則會跳過當前索引,
Step1.3. 子級私鑰->子級公鑰
3. 已知父級公鑰,由父級公鑰 =>子級公鑰
如圖Step Mid, step2.1 和step2.2,
(ParentPrevKey + LeftBytes) * P = ParentPrevKey * P + LeftBytes * P
=>
子級公鑰 = 父級公鑰 + ECC(左側的 32Byte子密鑰)
說明:橢圓曲線是阿貝爾群, PubKey = PrevKey * P, P 是特定橢圓曲線上常數, 其中 LeftBytes * P 即為 ECC(左側的 32Byte子密鑰);
【參考】
[1] HMAC演算法可參考"HMAC(2)哈希運算訊息認證碼HMAC"
[2] github wiki BIP 0032
[3] github bip-0032.mediawiki
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/267424.html
標籤:區塊鏈
上一篇:3.7位元幣日內能破位50000嗎?以太坊解套布局思路
下一篇:html5標簽變化
