Bip32-Hd-Wallets
從 xpub 和子私鑰確定 xprv
我對 BIP0032 中的措辭感到困惑:
一個可能不會立即明顯的弱點是,知道父擴展公鑰加上任何從它傳下來的非硬化私鑰等價於知道父擴展私鑰(因此每個私鑰和公鑰都從它傳下來)。這意味著必須比正常公鑰更仔細地對待擴展公鑰。這也是硬密鑰存在的原因,以及它們用於樹中的帳戶級別的原因。這樣,帳戶特定(或以下)私鑰的洩漏永遠不會危及主帳戶或其他帳戶。
預設推薦的錢包佈局是
m/0'/0/i
.因此,如果我洩露了
xpub
ofm/0'/0
(理論上,我的審計員擁有)和一個私鑰m/0'/0/14
,那麼所有的密鑰都不會m/0'/0/i
被洩露嗎?我理解這一點m/1'
並且m
是安全的,但現在您已經失去了整個帳戶,而需要做的就是強化索引。這個建議的原因是什麼?
此建議直接來自同一文件中的一項安全考慮:
但是請注意,以下屬性不存在: (…) 給定父擴展公鑰 (K par ,c par ) 和非硬化子私鑰 (k i ),很難找到 k par。
提出此建議的原因是所有非硬化密鑰派生都基於某些橢圓曲線屬性。其中之一是您可以向私鑰添加一些數字(它本身就是普通數字)。當您將相同的數字轉換為橢圓曲線上的點時,您可以將其添加到公鑰(它本身就是橢圓曲線上的點)。這個新的私鑰正是新公鑰的私鑰。
問題是我們添加的這個數字(解析256 ( IL ))可以從父公鑰和父私鑰計算出來。
因此,如果我們知道子私鑰 k child並且之前提到的數字解析256 (I L )(我們知道,因為我們知道父公鑰),那麼我們可以重新排列派生該密鑰的等式:
k孩子= 解析256 (I L ) + k par (mod n)
並找到作為父私鑰的k par 。