Dsa
ECDSA 和 EdDSA 有什麼區別?
據我了解,兩者都適用於橢圓曲線,但似乎有所不同,因為通常建議使用 EdDSA 而不是 ECDSA。
TLS 1.3 是否部分涵蓋了Ed25519 / Ed448 的 ECDSA-Sig-Value 編碼簽名?但補充一點,rfc8032 將 EdDSA 的優勢描述為:
- EdDSA 在各種平台上提供高性能;
- 不需要為每個簽名使用唯一的隨機數;
- 對側通道攻擊更具彈性;
- EdDSA 分別為 Ed25519 和 Ed448 使用小公鑰(32 或 57 字節)和簽名(64 或 114 字節);
- 這些公式是“完整的”,即它們對曲線上的所有點都有效,沒有例外。這消除了 EdDSA 對不受信任的公共值執行昂貴的點驗證的需要;和
- EdDSA 提供了碰撞恢復能力,這意味著散列函式碰撞不會破壞這個系統(僅適用於 PureEdDSA)。
ECDSA 也有小尺寸(4 個),但不完全相同——並且(所有?大多數?)應用程序使用 ASN.1,它是可變大小且稍微複雜一些,儘管算法本身並不要求這樣做。ECDSA 也具有良好的性能 (1),儘管 Bernstein 等人認為 EdDSA 使用 Edwards 形式使其更容易同時獲得良好的性能和側溝道電阻 (3) 和強韌性 (5)。EdDSA 還使用了一個不同的驗證方程(在上面的連結中指出),AFAICS 更容易檢查。
標準化的 ECDSA 確實要求每條消息都是隨機的,如果它針對不同的消息重複,則會發生災難性的失敗 (2);由我們自己的熊提出的 rfc6979 對此提出了解決方案,但尚未被廣泛採用,至少目前還沒有。(6) 只是意味著 EdDSA 標准允許省略消息雜湊,ECDSA 標準官方不允許,但實際上人們無論如何都會這樣做,所以我認為這種差異是虛假的。
有關由 Edwards 形式引起/啟用的差異的更多資訊,請參閱:
Elliptic Curves of different forms
還有 EdDSA 更新的總體效果,它既有真正的優勢(學習和適應現場經驗,針對現代系統和實施方法進行優化),也有虛假的優勢(更時尚,給人的印像是“和酷孩子在一起” ‘)。再加上伯恩斯坦不是美國政府的影響,有些人只是不信任和/或不喜歡,原因大多不在此處。