当前位置: 首页 > news >正文

后量子密码算法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

http://www.dtcms.com/a/334475.html

相关文章:

  • 343整数拆分
  • 实例分割-动手学计算机视觉13
  • MQ积压如何处理
  • ABAP AMDP 是一项什么技术?
  • 深入理解Java虚拟机(JVM):架构、内存管理与性能调优
  • MongoDB 聚合提速 3 招:$lookup 管道、部分索引、时间序列集合(含可复现实验与 explain 统计)
  • 片料矫平机·第四篇
  • Element Plus 中 el-input 限制为数值输入的方法
  • 暴雨服务器:以定制化满足算力需求多样化
  • 深入剖析跳表:高效搜索的动态数据结构
  • 【测试工具】OnDo SIP Server--轻松搭建一个语音通话服务器
  • 社保、医保、个税、公积金纵向横向合并 python3
  • 深入理解 Vue Router
  • Centos7.9安装Dante
  • 04时间复杂度计算方法
  • Python 桌面应用形态后台管理系统的技术选型与方案报告
  • Linux系统之lslogins 命令详解
  • vector 手动实现 及遇到的各种细节问题
  • 深入剖析 TOTP 算法:基于时间的一次性密码生成机制
  • Golang分布式事务处理方案
  • 如何在win服务器中部署若依项目
  • JVM垃圾回收器
  • 深度解析Java synchronized关键字及其底层实现原理
  • python学习DAY43打卡
  • C++实战
  • 如果构建企业本地的ERP智能ai系统,让先进的大模型数据处理ERP的各类数据,更加轻松智能,准确?从企业资源计划ERP变成企业资源智能EPA的升级
  • CUDA 编程笔记:CUDA内存模型概述
  • 【数据库】Oracle学习笔记整理之五:ORACLE体系结构 - 参数文件与控制文件(Parameter Files Control Files)
  • 虚拟专用网技术
  • Gradle#构建生命周期三个阶段