Wallet

BIP32 HD錢包可能的攻擊向量

  • September 4, 2018

我一直在閱讀有關 BIP32 HD 錢包及其實現的資訊,並遇到了一些關於洩露的私有子密鑰和已知xpub父密鑰的可能已知“攻擊”向量導致發現父私鑰的一些問題。給定 HD 錢包的以下路徑:

m/b/p/c

m從種子派生的主節點在哪裡,b, p, c是不同深度的索引節點。

想像一下,一個伺服器正在監視並創建來自’s 的接收c地址。如果’ 節點的私鑰之一被洩露並且伺服器被黑客入侵,從而向攻擊者透露,攻擊現在可以生成’並且這樣,所有’ 節點的私有和公共地址都可以由攻擊者派生(硬化包括節點)。p``xpub``c``xpub``p``xpriv``c``c

第一個問題:如果p是一個硬化節點,攻擊者還能從它xpub和一個孩子的私鑰中計算出它的私鑰嗎?

第二個問題:攻擊者能否從洩露的密鑰和’s計算’s後一路“爬升”深度(計算 parent’s xpriv)?在這裡會變硬還是有所作為?p``m``p``xpriv``c``p``xpub``b``p

第三個問題:如果來自 ’s 深度的私鑰c被洩露並且攻擊者知道m’s xpub,攻擊者可以計算m‘‘‘‘‘‘‘‘‘‘‘’exploit 是否只允許計算被洩露孩子的直接父母?

額外問題:誰能給出在路徑中使用一個或多個硬化節點的實際案例?

第一個問題:如果p是一個硬化節點,攻擊者還能從它xpub和一個孩子的私鑰中計算出它的私鑰嗎?

是的。p如何生成並不重要。重要的是如何c生成。

第二個問題:攻擊者能否從洩露的密鑰和’s計算’s後一路“爬升”深度(計算 parent’s xpriv)?p``m``p``xpriv``c``p``xpub

僅當攻擊者也有andb時。派生的一個重要部分是父鏈碼。鏈碼是其中的一部分,如果攻擊者沒有鏈碼,那麼他就無法導出父級的私鑰。m``xpub``xpub

在這裡會變硬b還是p有所作為?

如果攻擊者有bm的鏈碼,是的,強化會有所作為。硬化完全可以防止這種攻擊。但是,強化不允許某人擁有xpub並且能夠在沒有私鑰的情況下生成密鑰。

c第三個問題:如果來自’ 深度的私鑰被洩露,並且攻擊者知道m‘xpub,攻擊者是否可以計算 m 的私鑰,或者該漏洞是否只允許計算洩露孩子的直接父級?

該攻擊僅對子密鑰及其直接父擴展公鑰進行。

然而,給定m的 xpub 和s 的私鑰,即使它不是的直接父級c,仍然有可能恢復的私鑰。如果and是使用未硬化的推導推導的,則可以用於推導and的s。從那裡,使用所有這些s,攻擊者可以從那裡向後工作以獲得.m``c``b``p``m``b``p``xpub``xpub``c``m

如果bp被硬化,那麼這是不可能的。

額外問題:誰能給出在路徑中使用一個或多個硬化節點的實際案例?

以 BIP 44 為例。它定義了一個標準的推導路徑m/44'/0'/0'/i/k。xpub atm/44'/0'/0'已發出。但是由於它本身是通過強化派生得到的,如果m,m/44'或中m/44'/0'的任何一個xpub被洩露,使用者的主密鑰仍然是安全的,因為使用了強化派生。

此外,Bitcoin Core 使用強化派生來派生所有密鑰。這是因為它使用 BIP 32 來實現更簡單的備份功能(您可以使用較舊的備份並仍然獲得所有相同的密鑰),而不是用於可審計性。

引用自:https://bitcoin.stackexchange.com/questions/78889