Hash
ECDSA 輸出和散列大小之間的大小差異
因此,例如,如果我使用 secp256k1,我的密鑰大小為 256 位,並假設我簽署了一條消息的 SHA256 雜湊,大小為 256 位,我得到大小為 512 位的輸出。為什麼雜湊大小和 EC 大小之間存在差異。換句話說,為什麼不使用 SHA512 來提供更大的熵?
我對實際的 ECDSA 算法不太熟悉,所以我可能遺漏了一些東西。
謝謝!
首先解釋一下,為什麼從 256 位曲線得到 512 位輸出:
輸出基本上是一個點(x 座標就足夠了)和一個消息相關值,x 座標表示為整數。您可以通過檢查點與消息相關值和公鑰點之間的特定關係來驗證簽名。為了建立這種關係,需要私鑰。
其次,回答您的問題,為什麼使用 SHA-256 而不是 SHA-512。考慮一下雜湊函式是如何在 ECDSA 中實際使用的。你總是拿 $ n $ 最左邊的位,與 $ n $ 是曲線階位長度。因此,如果您使用 SHA-512,您“浪費”了 256 位,而使用 SHA-256,您“浪費”了任何東西。
而且從密鑰長度的角度來看,選擇 128 位安全級別(通過您選擇的 secp256 定義)也是有意義的,選擇具有 256 位安全級別的雜湊函式是沒有意義的與提供 128 位的曲線一起使用。