后量子密码算法ML-DSA介绍及开源代码实现
原文:https://nvlpubs.nist.gov/nistpubs/FIPS/NIST.FIPS.204.pdf
在数字化浪潮中,数字签名如同电子世界的 “公章”,确保信息的真实性与完整性。然而,随着量子计算技术的飞速发展,传统基于大整数分解或离散对数的签名算法(如 RSA、ECDSA)正面临被量子算法破解的风险。为应对这一挑战,美国国家标准与技术研究院(NIST)推出了基于模格密码学的 ML-DSA(Module-Lattice-Based Digital Signature Algorithm),并将其纳入 FIPS 204 标准,为后量子时代的信息安全提供了新保障。
一、为什么需要 ML-DSA?
传统数字签名的安全性建立在 “某些数学问题在经典计算机上难以求解” 的基础上。例如,RSA 依赖于大整数分解的困难性,而 ECDSA 则基于椭圆曲线离散对数问题。但量子计算机若实现规模化应用,肖尔(Shor)算法可在多项式时间内解决这些问题,导致现有签名体系瞬间失效。
为抵御量子威胁,NIST 自 2016 年起启动后量子密码学标准化进程,从 82 个候选算法中筛选出首批抗量子方案,ML-DSA 便是其中之一。它源于 CRYSTALS-DILITHIUM 算法,经优化后成为首个标准化的模格基数字签名方案,其安全性基于模格上的学习误差问题(MLWE)—— 这一问题被证明在量子计算模型下仍具有极高的计算复杂度。
二、ML-DSA 的核心技术原理
ML-DSA 的设计核心是利用格结构的数学特性构建安全的签名机制,同时通过优化算法实现高效计算。其工作流程可分为密钥生成、签名生成和签名验证三个阶段。
1. 密钥生成:构建 “锁与钥匙”
- 随机种子扩展:通过 cryptographically secure 随机数生成器(RBG)产生 32 字节种子,再通过 SHAKE256 等哈希函数扩展出公钥种子 ρ 和私钥种子 ρ'。
- 格矩阵与向量生成:从公钥种子 ρ 生成多项式矩阵 A(类似 “锁芯”),从私钥种子 ρ' 生成短系数秘密向量 s₁和 s₂(类似 “钥匙齿纹”)。
- 公钥压缩:计算公开向量 t = A・s₁ + s₂,压缩后得到 t₁(丢弃低 13 位系数),最终公钥为(ρ,t₁),私钥则包含秘密向量和 t 的完整信息。
2. 签名生成:生成 “一次性印章”
签名过程采用Fiat-Shamir 带中止范式,通过随机化和拒绝采样确保安全性:
- 承诺阶段:生成随机向量 y,计算 w = A・y 并取高位得到承诺 w₁。
- 挑战阶段:将 w₁与消息哈希值串联,通过哈希生成挑战多项式 c(系数为 ±1 或 0)。
- 响应阶段:计算响应 z = y + c・s₁,通过拒绝采样确保 z 的系数足够小(避免泄露私钥),并生成提示信息 h 辅助验证。
3. 签名验证:验证 “印章真伪”
验证者通过公钥和签名重构承诺,检查一致性:
- 从签名中提取 z、c 和 h,计算近似值 w'_approx = A・z - c・t₁。
- 利用提示 h 重构承诺 w'₁,验证其与挑战 c 的哈希是否匹配,同时检查 z 的系数范围是否合法。
关键优化:效率与安全的平衡
- 数论变换(NTT):将多项式乘法复杂度从 O (n²) 降至 O (n log n),大幅提升计算效率。
- 参数可配置:通过不同参数集平衡安全性与性能(如 ML-DSA-44 适合一般场景,ML-DSA-87 适合高安全需求)。
三、参数集:安全与性能的权衡
ML-DSA 定义了三个参数集,覆盖不同安全级别,具体特性如下:
参数集 | 安全等级 | 私钥大小 | 公钥大小 | 签名大小 | 适用场景 |
ML-DSA-44 | 类别 2(≈128 位安全) | 2560 字节 | 1312 字节 | 2420 字节 | 普通互联网应用 |
ML-DSA-65 | 类别 3(≈192 位安全) | 4032 字节 | 1952 字节 | 3309 字节 | 金融交易、政务系统 |
ML-DSA-87 | 类别 5(≈256 位安全) | 4896 字节 | 2592 字节 | 4627 字节 | 国防、关键基础设施 |
参数集中的 “安全等级” 对应 NIST 定义的抗量子攻击能力,数值越高,抵御量子计算机破解的能力越强,但密钥和签名尺寸也随之增加。
四、应用场景:从日常到关键领域
ML-DSA 的抗量子特性使其适用于需要长期安全保障的场景:
- 电子政务:保护敏感公文传输,确保政令下达的真实性与完整性。
- 金融交易:在跨境支付、区块链交易中防止签名伪造,避免资金损失。
- 软件供应链:验证操作系统镜像、固件更新的来源,抵御供应链攻击。
- 物联网:为智能设备固件签名,防止恶意代码注入。
此外,ML-DSA 还支持预哈希模式(HashML-DSA),通过先哈希大型消息再签名,提高处理长文档的效率,适合云计算、大数据传输等场景。
五、安全优势与未来展望
核心安全特性
- 抗量子性:基于 MLWE 问题,即使面对大规模量子计算机仍能保持安全。
- 强不可伪造性:在选择消息攻击下,攻击者无法伪造有效签名。
- 非否认性:签名者无法否认已生成的签名,适合法律证据场景。
六、开源代码实现参考
【openHiTLS开源密码库已开源实现ML-DSA,欢迎下载使用】
openHiTLS旨在打造算法先进、性能卓越、高效敏捷、安全可靠的密码套件,通过轻量级、可剪裁的软件技术架构满足各行业不同场景的多样化要求,让密码技术应用更简单,同时探索后量子等先进算法创新实践,构建密码前沿技术底座!
项目地址:https://gitcode.com/openHiTLS/openhitls