Public-Key

為什麼公鑰是從橢圓曲線密碼學(ECC)而不是從散列中派生的?

  • December 2, 2021

我剛剛開始研究比特幣和加密貨幣,所以我可能錯了,但到目前為止,我的理解是公鑰是使用ECDSA從私鑰派生的,在比特幣的情況下使用secp256k1。這是一種單向函式,從技術上講,在計算上是安全的……直到你考慮到量子計算。使用量子計算,您可能能夠暴力破解並從公鑰中找出私鑰。為什麼選擇 ECDSA 而不是散列算法,因為兩者都是單向函式,但後者更安全?我錯過了什麼嗎?

…公鑰是使用 ECDSA 從私鑰派生的…使用 secp256k1。

不完全的。私鑰到公鑰的轉換不使用ECDSA。它根據 secp256k1 的參數,使用稱為點乘法的操作,並使公鑰/私鑰對稍後可用於ECDSA

這是一個單向函式……直到你考慮到量子計算。使用量子計算,您可能能夠暴力破解並從公鑰中找出私鑰。

正確的。從私鑰到公鑰很容易,而不是相反,除非我們假設加密相關的量子電腦(不要屏住呼吸)。

為什麼選擇 ECDSA 而非散列算法?

這樣我們就可以用私鑰對消息進行數字簽名,並用公鑰驗證消息/簽名對;因此,對於不同的消息,私鑰對於生成通過驗證的消息/簽名對是必需的。如果公鑰是通過對私鑰進行散列獲得的,我們無法做到這一點¹。換句話說:從私鑰到公鑰的功能是單向的,並不是使數字簽名成為可能的充分條件。


¹ 有基於散列的簽名算法,但公鑰不是通過一個帶有標準散列的私鑰的散列得到的。公鑰包含多個散列,使其遠大於 ECDSA secp256k1 公鑰的 33 個字節。此外,可以安全簽名的消息數量也是有限的。

引用自:https://crypto.stackexchange.com/questions/96418