Ed25519
Ed25519 是什么?
Ed25519基于扭曲爱德华兹曲线 edwards25519 的 EdDSA 签名方案,提供约 128 位安全性,具备确定性、高性能与抗旁路特性(RFC 8032)。
Ed25519 是爱德华兹曲线数字签名算法(EdDSA)部署最广泛的实例,由 RFC 8032 规定。它使用素域 2²⁵⁵ − 19 上的扭曲爱德华兹曲线 edwards25519(与 Curve25519 双有理等价),生成 32 字节公钥和 64 字节签名,提供约 128 位安全性。签名是确定性的:每次签名的一次性随机数由私钥和消息经 SHA-512 派生,从而消除了曾令索尼 PlayStation 3 代码签名以及重用 ECDSA k 值的 Android 比特币钱包崩溃的灾难性随机数重用故障。
2023 年 2 月,NIST 将 EdDSA(Ed25519 与 Ed448)纳入 FIPS 186-5,结束了该方案在实践中无处不在却未获 FIPS 批准的长期缺口——这一缺口曾把它挡在部分受监管部署之外。如今 Ed25519 已是 OpenSSH、WireGuard、GnuPG、TLS 1.3、Signal 以及现代代码签名系统的默认选择。
一个微妙的陷阱在于验证语义。由于曲线余因子为 8,各实现对是否接受小阶点、验证是否带余因子存在分歧,因而一个库接受的签名可能被另一个库拒绝,某些实现还允许可延展(malleable)变体。2020 年论文《Taming the Many EdDSA》(Chalkias、Garillot、Nikolaenko)整理了这些差异。在每个验证者都必须逐比特一致的共识系统(如 Solana、Cardano 等区块链)中,这一点至关重要。RFC 8032 推荐更严格的检查,libsodium 等库默认强制执行。
flowchart TD
SK["私钥种子"] -->|SHA-512| H["哈希 h0..h63"]
H --> A["标量 a,公钥 A = a*B"]
H --> PR["前缀字节"]
PR --> R["r = SHA-512(前缀, M)"]
R --> RP["R = r*B"]
RP --> S["S = r + SHA-512(R, A, M)*a"]
S --> SIG["签名 = R, S<br/>64 字节,确定性"]
SIG --> V{"验证:<br/>8*S*B == 8*R + 8*h*A ?"}
A --> V
V -->|是| OK["有效"]
V -->|否| BAD["拒绝"]● 示例
- 01
使用 `ssh-keygen -t ed25519` 生成的 OpenSSH 主机与用户密钥。
- 02
Solana、Cardano 等区块链使用 Ed25519 为交易签名。
● 常见问题
Ed25519 是什么?
基于扭曲爱德华兹曲线 edwards25519 的 EdDSA 签名方案,提供约 128 位安全性,具备确定性、高性能与抗旁路特性(RFC 8032)。 它属于网络安全的 密码学 分类。
Ed25519 是什么意思?
基于扭曲爱德华兹曲线 edwards25519 的 EdDSA 签名方案,提供约 128 位安全性,具备确定性、高性能与抗旁路特性(RFC 8032)。
如何防御 Ed25519?
针对 Ed25519 的防御通常结合技术控制与运营实践,详见上方完整定义。
Ed25519 还有哪些其他名称?
常见的别称包括: edwards25519 上的 EdDSA, RFC 8032 Ed25519。