跳到主要内容
ecdsa.com

Ed25519

基于 Curve25519 的 Edwards 形式并使用 SHA-512 的 EdDSA(RFC 8032 §5.1),公钥为 32 字节,确定性签名为 64 字节,安全强度约为 128 位。
其他写法Ed25519 signaturessh-ed25519Ed25519ctx

生成密钥时,用 SHA-512 对 32 字节的种子计算哈希:前半部分经过钳位后作为秘密标量,后半部分作为 nonce 前缀。公钥是对点的 y 坐标做 32 字节小端序编码的结果,最高位存放 x 的符号;签名为 R ‖ S,共 64 字节。各个 API 对“私钥”的含义理解不一:有的指 32 字节的种子(RFC 8032,以及 RFC 8410 规定的 PKCS #8),有的指种子后接公钥的 64 字节(NaCl、libsodium、Go 的 ed25519.PrivateKey),这是转换密钥时常见的出错根源。

标识符:OID 1.3.101.112,算法参数省略(RFC 8410);JOSE 中 kty 为 OKP、crv 为 Ed25519(RFC 8037),alg 为 Ed25519(RFC 9864,取代多态的 EdDSA);COSE 中为 −19(以及较早的 −8);TLS 1.3 中为 ed25519(0x0807);SSH 中为 ssh-ed25519(RFC 8709);此外还有原生的 OpenPGP v6 密钥(RFC 9580)。Firefox 129、Safari 17、Chrome 137 及更高版本的 WebCrypto 支持它。

在 Apple M4 Max 的单个核心上,OpenSSL 3.6.5 每秒约可完成 59,800 次 Ed25519 签名和 24,900 次验证。FIPS 186-5 批准了 Ed25519。在对抗性边界情况(小阶点、非规范编码、带余因子与不带余因子的检查)上,各个库的处理不一致,这只在多方必须就有效性达成一致的场景中才有影响。

与 ECDSA 相比,它签名时不需要随机性,不存在 high-S 变体,并使用完备的加法公式。它的主要短板在硬件:Apple 的 Secure Enclave 以及许多智能卡和 HSM 只提供 P-256,因此通行密钥和设备绑定密钥大多采用 ECDSA。

标准与参考资料

全部术语