Elliptic-Curves

提供簽名算法 ED25519 或 ED448 時使用哪個雜湊?

  • February 26, 2019

從 TLS 1.3 開始,有兩種使用 edDSA 的簽名算法:

      /* EdDSA algorithms */
      ed25519(0x0807),
      ed448(0x0808),

所有其他簽名方案都提供雜湊資訊,例如:

ecdsa_secp256r1_sha256=>sha256

rsa_pkcs1_sha384=>sha384

如何確定接收 edDSA 簽名算法時使用哪個雜湊

它們中的每一個都有預設值嗎?

如果您遵循RFC 8446中的參考資料,您會看到它引用RFC 8032來定義基於 EdDSA 的算法。RFC 8032 反過來告訴您有關 EdDSA 的散列函式和其他參數化的所有詳細資訊——欄位、曲線方程、基點、編碼、簽名方程——用於 Ed25519 和 Ed448。

RFC 8032 中涉及的散列函式有幾個角色:預散列(RFC 8032 特有,添加是為了安撫那些會引起 DoS 攻擊的劣質設計的使用者)、密鑰派生散列、每個簽名的偽隨機化散列和消息雜湊。

Ed25519 將 SHA-512 用於所有這些目的;Ed448 使用 SHAKE256。但是作為Ed25519 或 Ed448的*使用者,這些選擇都與您無關:*雜湊函式的選擇是簽名方案本身的一部分,而不是使用者選擇或計算的參數。

TLS 中的其他簽名方法是昔日的遺物,當時向使用者展示一系列令人眼花繚亂的首字母縮略詞湯選項很常見:您想使用哪種數學魔法,如 RSA ( $ s \equiv h^e \pmod n $ )、ECDSA ( $ r \equiv x([h s^{-1}]G + [r s^{-1}]A]) \pmod p $ );另外,您希望如何在計算中容易受到衝突的影響 $ h $ 從一條消息 $ m $ 像 MD5、SHA-1?這個時代為我們提供了令人愉快的荒謬名稱,例如md5WithRSAEncryption又名1.2.840.113549.1.1.4)作為簽名方案。

現代方法是使用短名稱 Ed25519 作為消息的完整簽名方案,在自適應選擇消息攻擊下提供 128 位安全性,防止存在不可偽造性,所有旋鈕和參數以及花里胡哨的東西都為您決定。Ed25519 或 Ed448 的實現對任意長度和結構的位串進行操作,並在內部進行所有這些散列 - 事實上,它甚至沒有根據固定散列定義 $ H(m) $ 一條消息;相反,它是根據偽隨機函式定義的 $ H(k, m) $ 消息在哪裡 $ k $ 是密鑰的一部分。

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