当前位置: 首页 > 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.lryc.cn/news/622698.html

相关文章:

  • 【Qt开发】常用控件(四)
  • 算法提升之树上问题-(tarjan求LCA)
  • 基于Spring Boot 4s店车辆管理系统 租车管理系统 停车位管理系统 智慧车辆管理系统
  • MySQL 配置性能优化赛技术文章
  • Win10、Win11电脑之间无法Ping通解决办法
  • 设计模式之【快速通道模式】,享受VIP的待遇
  • Python - 100天从新手到大师:第十一天常用数据结构之字符串
  • OpenCV Python——图像拼接(一)(图像拼接原理、基础知识、单应性矩阵 + 图像变换 + 拼接)
  • redis基本类型之哈希
  • 爬机 验证服务器是否拒绝请求
  • 衡石使用指南嵌入式场景实践之仪表盘嵌入
  • 【Docker项目实战】使用Docker部署Notepad轻量级记事本
  • 《吃透 C++ 类和对象(中):const 成员函数与取地址运算符重载解析》
  • js原生实现手写签名与使用signature_pad库实现手写签名
  • 【Java Web 快速入门】十一、Spring Boot 原理
  • Flutter开发 网络请求
  • Flutter InheritedWidget 详解:从生命周期到数据流动的完整解析
  • Flutter Provider 模式实现:基于 InheritedWidget 的状态管理实现
  • SQL183 近三个月未完成试卷数为0的用户完成情况
  • 力扣(LeetCode) ——142. 环形链表 II(C语言)
  • JavaWeb 30 天入门:第十一天 ——Java 反射机制详解
  • 【环境变量与程序地址空间详解】
  • vue3动态的控制表格列的展示简单例子
  • 从希格斯玻色子到 QPU:C++ 的跨维度征服
  • KingbaseES高可用架构深度解析——从读写分离到异地灾备的全方位守护
  • 【C++】异常详解(万字解读)
  • 力扣hot100 | 矩阵 | 73. 矩阵置零、54. 螺旋矩阵、48. 旋转图像、240. 搜索二维矩阵 II
  • [1Prompt1Story] 生成行为控制器 | 语义向量重加权(SVR)
  • 第七十五章:AI的“思维操控师”:Prompt变动对潜在空间(Latent Space)的影响可视化——看懂AI的“微言大义”!
  • Netty 的 Select/Poll 机制核心实现主要在 NioEventLoop 的事件循环