术语表

ML-DSA (基于模格的数字签名算法(FIPS 204))

最后核实

定义

ML-DSA 是 NIST 于 2024 年 8 月在 FIPS 204 中标准化的基于格的后量子数字签名算法,源自 CRYSTALS-Dilithium。

ML-DSA 是一种安全性基于模格问题的数字签名方案,由 NIST 在 FIPS 204 中标准化,定义了 ML-DSA-44、ML-DSA-65、ML-DSA-87 三组参数,强度依次递增。NIST 还在 FIPS 205 中标准化了基于哈希的替代方案 SLH-DSA,其公钥更小,但签名更大、速度更慢。

为什么重要

要让 TLS 的身份认证扛得住未来的量子攻击者,证书签名和握手签名终究要从 RSA 和 ECDSA 迁移出去。最大的障碍是体积:ML-DSA-44 的签名有 2,420 字节,而 ECDSA P-256 签名只有约 64 字节;一次典型握手要携带多个签名和公钥,包括叶子证书公钥、叶子与中间证书上的签名、CertificateVerify 签名和内嵌的 SCT。全部换成 ML-DSA,每次握手会多出好几 KB。由于身份认证无法被"事后破解",这项迁移不如基于 ML-KEM 的后量子密钥交换紧迫。

例子

FIPS 204 中的尺寸,以及用 OpenSSL 3.5 及以上版本生成密钥:

Parameter set   Public key     Signature
ML-DSA-44       1,312 bytes    2,420 bytes
ML-DSA-65       1,952 bytes    3,309 bytes
ML-DSA-87       2,592 bytes    4,627 bytes
openssl genpkey -algorithm ML-DSA-65 -out mldsa65.key
openssl pkey -in mldsa65.key -pubout -out mldsa65.pub

常见误区

  • 应该先上后量子证书,再上后量子密钥交换。 顺序正好相反:录下的流量可以日后解密,而签名只需在被验证的那一刻抗伪造。
  • ML-DSA 可以直接替换 ECDSA。 它的密钥和签名大了几十倍,会影响握手、CT 日志和硬件安全模块。
  • ML-DSA 和 ML-KEM 干的是同一件事。 ML-DSA 负责签名,ML-KEM 负责建立共享密钥。

延伸阅读