Private-Key
ELI5:BIP32 中的子密鑰和強化子密鑰有什麼區別
我讀過BIP32,我或多或少地理解它。
有人可以像我 5 歲那樣向我解釋一下兒童鑰匙和硬化兒童鑰匙之間的區別是什麼?
我正在嘗試將高畫質錢包生成添加到我正在建構的服務中。在我涉足之前,我需要完全了解這一點。不要擔心,我將使用Bitcore,所以我不會直接涉足加密貨幣。
本質上,硬化子密鑰是用 計算的
hash(parent private key + index)
,而非硬化子密鑰是用 計算的hash(parent public key + index)
。那麼這有什麼實際後果呢?
使用擴展公鑰,您可以派生非強化子公鑰。這在您想要接受付款但無法立即使用的情況下很有用。例如,如果您有一個銷售羊駝毛襪子的網站,您的伺服器可以使用擴展的公鑰來接受付款,而如果它被黑客入侵,您的所有錢都不會損失。所以這就是你可能使用非硬化派生的原因。
使用擴展私鑰,您還可以派生強化密鑰。
但是,當攻擊者擁有 1) 擴展公鑰和 2) 派生自它的非強化私鑰之一時,非強化公鑰會更弱。在這種情況下,攻擊者可以計算出擴展公鑰的私鑰,從而獲得可以從中派生的每個密鑰,無論是加固的還是非加固的。
那麼你的應用預設應該使用什麼?
您應該使用非強化密鑰,並禁用導出私鑰的功能,因為這會允許攻擊者破壞錢包中的其他密鑰。即使攻擊者獲得了其中一個私鑰,在攻擊者無權訪問擴展公鑰的情況下,非強化等同於強化安全。在我看來,非強化密鑰的功能勝過強化密鑰所增加的安全性。
但是,如果您不需要非強化密鑰的功能,那麼您應該使用強化密鑰,因為它們更安全。