Private-Key

ELI5:BIP32 中的子密鑰和強化子密鑰有什麼區別

  • February 8, 2022

我讀過BIP32,我或多或少地理解它。

有人可以像我 5 歲那樣向我解釋一下兒童鑰匙和硬化兒童鑰匙之間的區別是什麼?

我正在嘗試將高畫質錢包生成添加到我正在建構的服務中。在我涉足之前,我需要完全了解這一點。不要擔心,我將使用Bitcore,所以我不會直接涉足加密貨幣。

本質上,硬化子密鑰是用 計算的hash(parent private key + index),而非硬化子密鑰是用 計算的hash(parent public key + index)

那麼這有什麼實際後果呢?

使用擴展公鑰,您可以派生非強化子公鑰。這在您想要接受付款但無法立即使用的情況下很有用。例如,如果您有一個銷售羊駝毛襪子的網站,您的伺服器可以使用擴展的公鑰來接受付款,而如果它被黑客入侵,您的所有錢都不會損失。所以這就是你可能使用非硬化派生的原因。

使用擴展私鑰,您還可以派生強化密鑰。

但是,當攻擊者擁有 1) 擴展公鑰和 2) 派生自它的非強化私鑰之一時,非強化公鑰會更弱。在這種情況下,攻擊者可以計算出擴展公鑰的私鑰,從而獲得可以從中派生的每個密鑰,無論是加固的還是非加固的。

那麼你的應用預設應該使用什麼?

您應該使用非強化密鑰,並禁用導出私鑰的功能,因為這會允許攻擊者破壞錢包中的其他密鑰。即使攻擊者獲得了其中一個私鑰,在攻擊者無權訪問擴展公鑰的情況下,非強化等同於強化安全。在我看來,非強化密鑰的功能勝過強化密鑰所增加的安全性。

但是,如果您不需要非強化密鑰的功能,那麼您應該使用強化密鑰,因為它們更安全。

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