RFC 8463 DKIM 的 ed25519 签名:更短密钥、更强抗量子前景
概述
DKIM(RFC 6376)长期以 RSA 为唯一签名算法。随着 RSA 1024 位被认定不安全、2048 位密钥体积与签名开销变大,IETF 在 RFC 8463 中引入 Ed25519 作为第二种 DKIM 签名算法。Ed25519 是 Edwards 曲线上的 Edwards-curve Digital Signature Algorithm(EdDSA),以"小、快、强"著称。
背景:密钥强度的演进
RFC 8301 已禁止 DKIM 使用 SHA-1、并要求 RSA 密钥不少于 1024 位(推荐 2048)。但 RSA 2048 的公钥约 270 字节、签名慢,对大规模出站签名是负担。Ed25519 用 256 位公钥(仅 32 字节)、签名验证极快,且基于被广泛审计算法的曲线,天然具备更好的"抗量子"前景(相比 RSA)。
机制
在 DKIM 公钥记录(TXT selector._domainkey)中,用 k=ed25519 声明算法;签名头 bh/b 的计算方式与 RSA 相同,只是底层原语换成 Ed25519。哈希仍为 SHA-256。实际部署推荐双签名:同一邮件同时附 RSA 与 Ed25519 两段 DKIM-Signature,确保老验证器(只认 RSA)与新验证器(认 Ed25519)都能通过。
兼容性与迁移
- 并非所有历史 MTU/网关都支持 Ed25519 校验,单签 Ed25519 可能导致部分接收方验证失败;
- 双签名会令信头略长,但通常远低于 998 字符折行限制;
- 迁移路径:先发布 Ed25519 公钥并双签观察 TLS-RPT/DMARC 报告,确认无误后再视情况保留双签。
与密钥轮换管理的衔接
无论 RSA 还是 Ed25519,DKIM 都依赖"选择器(selector)轮换"来控制泄露影响半径。建议为每个算法单独选择器、定期滚动、旧密钥保留一个轮换周期(见 DKIM 密钥轮换管理实践)。昆仑邮件系统在签名策略上同时支持 RSA 与 Ed25519,便于平滑升级。
参考文献
- RFC 8463 — A New Cryptographic Signature Method for DKIM
- RFC 8301 — Cryptographic Algorithm and Key Size Updates to DKIM
- RFC 6376 — DomainKeys Identified Mail (DKIM) Signatures
- RFC 8032 — Edwards-Curve Digital Signature Algorithm (EdDSA)
