ECDSA、EdDSA 和 ed25519 關係/兼容性
我試圖了解這三種簽名方案(ECDSA、EdDSA 和 ed25519)之間的關係,主要是它們在密鑰對派生、簽名和簽名驗證方面的相互兼容程度。但我無法找到任何確鑿的資訊。我的意思是,例如,您可以使用 EdDSA 驗證 ed25519 簽名和/或反之亦然嗎?
我在這裡找到了最好的資訊,我懷疑這些方案之間可能存在一些兼容性,但我找不到任何來源來證明或反駁它。
有人可以對此有所了解嗎?
Ed25519 是EdDSA 系列簽名方案的一個特定實例。Ed25519 在RFC 8032中指定並被廣泛使用。任何人關心的唯一其他 EdDSA 實例是 Ed448,它速度較慢,未廣泛使用,並且也在 RFC 8032 中指定。 一個 EdDSA 實例中的密鑰和簽名在另一個 EdDSA 實例中沒有意義:Ed25519 和 Ed448 不同簽名方案。
ECDSA 系列簽名方案與 EdDSA 無關,只是它背後的數學還涉及橢圓曲線。ECDSA 的任何特定實例,例如曲線 secp256k1 上的 ECDSA 和 SHA-256(比特幣使用),與它的任何其他實例不兼容,例如曲線 nistp521 上的 ECDSA 和 SHA-512。
在實際層面上,使用者可能需要知道的是,Ed25519 密鑰與任何 ECDSA 實例中的密鑰在任何有意義的意義上都不兼容。因此,例如,在 ssh 協議中,
ssh-ed25519
密鑰與密鑰不兼容ecdsa-sha2-nistp521
,這就是它們被標記為不同類型的原因。同樣,ssh-ed448
Ed448 的密鑰不兼容,這就是為什麼它也標有不同類型的原因。在技術層面上,協議設計者應該知道的是,ECDSA 系列簽名方案是一種過時的緩慢設計,會鼓勵破壞安全的實施錯誤,而 EdDSA 系列簽名方案是一種避免這些錯誤的現代設計。