[终端安全]-7 后量子密码算法

本文参考资料来源:NSA Releases Future Quantum-Resistant (QR) Algorithm Requirements for National Security Systems > National Security Agency/Central Security Service > Article

Commercial National Security Algorithm Suite 2.0” (CNSA 2.0) Cybersecurity Advisory (CSA)

(第6文终端安全之应用安全,稍后时日补上)

1 CNSA2.0

CISA、NIST 和 NSA 敦促各个行业安全应用开始为实施后量子密码学做准备。NSA发布了《商业国家安全算法套件 2.0》(CNSA 2.0) 未来抗量子 (QR) 算法要求,如下所示:

备注:

Crystal-Kyber算法标准,可参照NIST.FIPS.203.ipd.pdf(draft)

Crystal-Dilithium算法标准,可参照NIST.FIPS.204.ipd.pdf(draft)

附:以下为CNSA1.0发布算法需求

2 Crystal-Kyber

Crystal-Kyber 是一种基于格的加密方案用于密钥封装机制(KEM),可高效安全且适应未来量子计算攻击。

1)数学原理

Crystal-Kyber 基于Learning with Errors(LWE)和Ring-LWE问题,这些问题在量子计算机上被认为是难解的。Ring-LWE 难题,对于环 R =Z[x]/(x^n + 1) 和模数q,给定一个秘密向量  s∈R_q 和多个采样  (a_i, b_i = a_i s + e_i)模q,其中 a_i 是从 R_q 中均匀分布的随机元素,e_i是从某个误差分布中采样的错误向量,目标是从 (a_i, b_i) 中恢复 s 。

1.1)公钥生成:pk = a s + e mod q

1.2)加密过程:c_1 = a r + e_1 mod q;c_2 = pk r + e_2 + m⌊q/2⌋mod q

1.3)解密过程:m' = c_2 - s c_1 mod q;m = Decode(m')

2)算法步骤

2.1)参数生成:模数 q 、环的度 n 和误差分布χ。

   

2.2)密钥生成:

   - 生成一个随机多项式 a ∈ R_q 。

   - 选择秘密多项式 s, e 从χ中采样。

   - 计算公钥 pk = a s + e 。

   - 私钥为 sk = s 。

2.3)加密:

   - 选择随机多项式 r, e_1, e_2 从χ中采样。

   - 计算密文 c_1 = a r + e_1 和 c_2 = pk r + e_2 + m⋅ ⌊q/2⌋,其中m 是明文消息。

2.4)解密:

   - 计算 m' = c_2 - s c_1 。

   - 解码 m' 得到明文消息m 。

3)硬件实现

多项式运算单元:实现多项式乘法、加法、减法和模运算;使用Number Theoretic Transform (NTT)加速多项式乘法。

随机数生成器:用于生成密钥和随机噪声。

模运算模块:实现模q运算,用于多项式系数的约束。

存储单元:用于存储密钥、多项式系数和中间运算结果。

3 Crystal-Dilithium

Crystal-Dilithium 是一种基于格的数字签名方案,它的设计目标是提供高效和安全的签名和验证过程,适应未来量子计算攻击。

1)数学原理

Crystal-Dilithium 基于Module Learning with Errors(Module-LWE)和Module Short Integer Solution(Module-SIS)难题。对于环R =Z[x]/(x^n+1)和模数q,Module-LWE 问题定义如下:给定一个秘密矩阵S∈Rqk×l和多个采样A_i, B_i = A_i S + E_i模q,其中A_i是从 Rqk×l中均匀分布的随机矩阵,E_i 是从某个误差分布中采样的错误矩阵,目标是从(A_i, B_i)中恢复S。

1.1)公钥生成:pk = A S + E mod q

1.2)签名过程:W = A y mod q; c = H(W, μ); z = y + c S mod q

1.3)验证过程:W' = A z - c pk mod q;验证 c = H(W', μ)

2)算法步骤

2.1)参数生成:

   - 模数 q 、环的度 n 和误差分布χ。

   - 选择参数k 和l 。

   

2.2)密钥生成:

   - 生成随机矩阵A ∈Rqk×l。

   - 选择秘密矩阵 S, E 从χ 中采样。

   - 计算公钥 pk = A S + E 。

   - 私钥为 sk = S 。

2.3)签名:

   - 选择随机矩阵 y 从某个分布中采样。

   - 计算 W = A y 并计算 c = H(W, μ),其中 H是哈希函数,μ是消息。

   - 计算签名 z = y + c S。如果 z 的系数太大,则重新生成 y 并重复。

   - 最终签名为 (μ, z, c) 。

2.4)验签:

   - 计算 W' = A z - c pk 。

   - 检查 c = H(W', μ) 是否成立。如果成立验证通过;否则验证失败。

3)硬件实现

多项式运算单元:实现多项式乘法、加法、减法和模运算;使用NTT加速多项式乘法。

哈希单元:实现SHA-3和Keccak函数,用于消息哈希和挑战生成。

随机数生成器:用于生成随机挑战和密钥。

存储单元:用于存储密钥、多项式系数、哈希值和中间运算结果。

4 基于哈希的数字签名算法

XMSS(eXtended Merkle Signature Scheme)和 LMS(Leighton-Micali Signature)是两种基于Merkle树的哈希函数数字签名方案,被NSA推荐用于软件和固件签名。

备注:参照[终端安全]-1 总体介绍 ,[终端安全]-5 移动终端之操作系统安全,终端设备的安全启动非常重要。XMSS和LMS作为后量子密码算法,用于在软件和固件中实现安全的数字签名和认证功能以防止恶意软件或未经授权对固件的修改,同时可应对未来可能出现的量子计算攻击。

1)XMSS

XMSS使用一棵 Merkle 树来组织多个一次性签名(WOTS+,Winternitz One-Time Signatures),每个叶子节点对应一个一次性签名的公钥,每次签名一个消息后对应的 OTS 就不能再使用;XMSS基于哈希函数的抗碰撞性和 Merkle 树的结构安全性高,适用于需要处理大量签名的应用如区块链。

1.1)密钥生成

参数选择:选择安全参数,包括哈希函数(通常是SHA-256或者SHA-3等安全的哈希函数)、树的高度、叶子节点哈希链长度(WOTS+ 参数)等;生成一个随机的种子作为生成所有私钥相关信息的起点。

生成主私钥和公钥:使用种子和适当的参数,通过哈希函数生成主私钥,通常是一个随机数或特定格式的数据。通过主私钥使用同样的哈希函数生成对应的主公钥。

生成签名树:根据选择的树高度生成Merkle树结构,每个叶子节点存储一个哈希链,用于后续签名生成过程中的一次性使用。

1.2)签名生成

消息哈希:使用选择的哈希函数对消息进行哈希,得到消息的摘要。

- 生成签名链:根据消息的哈希值确定要使用的Merkle树中的叶子节点索引,从选定的叶子节点开始使用哈希函数链生成一系列的哈希值,形成签名链并更新对应的叶子节点的哈希值、Merkle树的内部节点,确保树的完整性。

1.3)签名验证

- 消息哈希:使用同样的哈希函数对接收到的消息进行哈希得到摘要。

- 验证签名:根据签名中的一部分信息(通常是与签名相关的部分)确定要验证的叶子节点索引,使用公钥和相应的Merkle树中的哈希值,验证从选定的叶子节点到根节点的哈希值链是否与签名中的哈希链一致。如果验证成功说明签名有效,否则签名无效。

2)LMS

LMS使用HORS(Hash to Obtain Random Subsets)来生成签名,适用于嵌入式系统和IoT设备。

2.1)密钥生成

参数选择:选择安全参数,包括哈希函数(通常是SHA-256或者SHA-3等安全的哈希函数)、签名树的高度和哈希函数链长度;生成一个随机的种子作为生成所有私钥相关信息的起点。

- 生成主私钥和主公钥:使用种子和适当的参数通过哈希函数生成主私钥;通过主私钥使用同样的哈希函数生成对应的主公钥。

生成认证路径:根据签名树的高度生成一系列的认证路径,认证路径是从叶子节点到根节点的哈希值链,用于验证签名。

2.2)签名生成

- 消息哈希:使用选择的哈希函数对消息进行哈希得到摘要。

- 计算签名:根据消息哈希值的一部分(例如最低位的一些比特)选择要使用的签名树的叶子节点,使用哈希函数链生成一系列的哈希值,直到生成根节点的哈希值。结合消息摘要生成最终的数字签名。

2.3)签名验证

消息哈希:使用同样的哈希函数对接收到的消息进行哈希,得到消息的摘要。

验证签名:依据签名中的一部分信息(通常是与签名相关的部分)选择相应的签名树节点,使用公钥和事先生成的认证路径,验证从选定的叶子节点到根节点的哈希值链是否与签名中的哈希链一致。如果验证成功说明签名有效,否则签名无效。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/44173.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

领域驱动设计DDD

为什么要DDD 传统MVC 传统的MVC模型框架拆分成了三层:显示层、控制层、模型层。显示层负责显示用户界面,控制层负责处理业务逻辑、而模型则负责与数据库通信,对数据进行持久化的操作。从代码角度来看,这样的框架结构每个模块职责…

【漏洞复现】WordPress插件Recall CVE-2024-32709 SQL注入漏洞

0x01 产品简介 WordPress是一款免费开源的内容管理系统(CMS),最初是一个博客平台,但后来发展成为一个功能强大的网站建设工具,适用于各种类型的网站,包括个人博客、企业网站、电子商务网站等,并逐步演化成一款内容管理…

小白学c嘎嘎(第二天)入门基础下

温馨提醒:本篇文章起,文章内容排版将更新,层层深入 基础知识 回顾 引用的语法格式:类型& 引⽤别名 引⽤对象; 引用特性 1. 引⽤在定义时必须初始化 2. ⼀个变量可以有多个引⽤ 3. ⼀旦引⽤⼀个实体,再不…

STM32(二):STM32工作原理

0、参考1、寄存器和存储器基本概念(1)基本概念(2)主要区别(3)联系(4)实际应用中的案例(5)总结(6)一些名词解释 2、STM32指南者板子-存…

ArcGis将同一图层的多个面要素合并为一个面要素

这里写自定义目录标题 1.加载面要素的shp数据 2.点击菜单栏的地理处理–融合,如下所示: 3.将shp面要素输入,并设置输出,点击确定即可合并。合并后的属性表就只有一个数据了。

怎样卸载电脑上自带的游戏?

卸载电脑上自带的游戏通常是一个简单的过程,以下是几种常见的方法,您可以根据自己的操作系统版本选择相应的步骤进行操作: 方法一:通过“设置”应用卸载(适用于Windows 10和Windows 11) 1. 点击开始菜单&…

设计模式之外观模式(Facade)

Facade设计模式,也称为外观模式,是一种结构型设计模式,它主要用于为子系统中的一组接口提供一个统一的高层接口,从而使得子系统更加容易使用。以下是关于Facade设计模式的详细介绍: 一、定义 Facade模式为多个复杂的…

基于Android平台开发,购物商城

1. 项目功能思维导图 2. 项目涉及到的技术点 使用SQLite数据库实现数据存储使用CountDownTimer实现启动页倒计时使用SharedPreferences实现记住密码登录使用BottomNavigationView实现底部导航栏使用ActivityFragment实现底部导航栏页面之间切换使用RecyclerViewadapter实现商品…

无人机之穿越机注意事项篇

一、检查设备 每次飞行前都要仔细检查穿越机的每个部件,确保所有功能正常,特别是电池和电机。 二、遵守法律 了解并遵循你所在地区关于无人机的飞行规定,避免非法飞行。 三、评估环境 在飞行前检查周围环境,确保没有障碍物和…

在openSUSE-Leap-15.6-DVD-x86_64下停用USB无线网卡驱动rtw88_8822bu改用rtl88x2bu

在openSUSE-Leap-15.6-DVD-x86_64下停用USB无线网卡驱动rtw88_8822bu改用rtl88x2bu 一、openSUSE-Leap-15.6-DVD-x86_64自带USB无线网卡驱动rtw88_8822bu能够正常上网但不能让USB无线网卡内置小灯闪蓝光 当有数据流量通过USB无线网卡,其内置小灯会不断闪蓝光的&…

前端复刻百度网址精简版HTML+CSS

案列图&#xff1a; 自制效果图&#xff1a; 源代码 <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><title>…

雷达视频采集卡 HPx-410

产品简介 雷达视频采集卡 HPx-410&#xff0c;应用于接入导航雷达数据&#xff0c;导航雷达视频&#xff0c;适用于JRC雷达、古野furuon雷达、Sperry雷达等多种型号的雷达。 HPx-410 可以接入导航雷达数据&#xff0c;引入导航雷达原始回波&#xff0c;然后将雷达视频采集到计…

如何用IP地址申请SSL证书实现网络安全

互联网是一个全球性的网络&#xff0c;它将世界各地的计算机系统和设备连接在一起。在这个庞大的网络中&#xff0c;每个设备都需要一个唯一的标识符&#xff0c;即IP&#xff08;Internet Protocol&#xff09;地址&#xff0c;以便其他设备能够找到并与其通信。然而&#xff…

C# + halcon 联合编程示例

C# halcon 联合编程示例 实现功能 1.加载图像 2.画直线&#xff0c;画圆&#xff0c;画矩形, 画椭圆 ROI&#xff0c;可以调整大小和位置 3.实现找边&#xff0c;找圆功能 效果 开发环境 Visual Studio 2022 .NET Framework 4.8 halcondotnet.dll 查看帮助文档 项目结构 DL…

探索东芝 TCD1304DG 线性图像传感器的功能

主要特性 高灵敏度和低暗电流 TCD1304DG 具有高灵敏度和低暗电流&#xff0c;非常适合需要精确和可靠图像捕捉的应用。传感器包含 3648 个光敏元件&#xff0c;每个元件尺寸为 8 m x 200 m&#xff0c;确保了出色的光灵敏度和分辨率。 电子快门功能 内置的电子快门功能是 T…

力扣爆刷第162天之TOP100五连刷76-80(最小路径和、最长公共前缀、最长连续序列)

力扣爆刷第162天之TOP100五连刷76-80&#xff08;最小路径和、最长公共前缀、最长连续序列&#xff09; 文章目录 力扣爆刷第162天之TOP100五连刷76-80&#xff08;最小路径和、最长公共前缀、最长连续序列&#xff09;一、64. 最小路径和二、221. 最大正方形三、162. 寻找峰值…

mysql判断时间段是否重合

mysql判断时间段是否重合 SELECT CASE WHEN t1.start_time < t2.end_time AND t1.end_time > t2.start_time THEN ‘重合’ ELSE ‘不重合’ END AS result FROM table_name t1, table_name t2 WHERE t1.id <> t2.id;

14-26 剑和侠客 – 预训练模型三部曲3 – 机器人时代来临

概述 在第 1 部分和第 2 部分中&#xff0c;我们讨论了适用于文本和图像任务的预训练模型&#xff0c;并探索了当今常用的模型。我们分析了这些模型的架构以及如何将它们用于特定任务。实现 AGI 所需的两个主要支柱是语言理解和机器的视觉能力。有许多任务与这两种能力有关。 …

中职网络安全B模块渗透测试system0016

访问http://靶机IP/web1/,获取flag值&#xff0c;Flag格式为flag{xxx}&#xff1b; 可能会跳转8000端口删除进入80端口 进入后点击侦查一下&#xff0c;这里乱码了&#xff0c;我们点击查看是一个柯南&#xff0c;web但这是一个web题目肯定不是隐写术&#xff0c;所以说题目的…

CDF累积分布函数和PPF百分点位分布函数

目录 cdf累积分布函数 (CDF) ppf百分位点函数 (PPF) 区别与联系示例关系和区别 cdf 累积分布函数 (CDF) 定义&#xff1a; 累积分布函数 F ( x ) F(x) F(x) 给出随机变量 X X X 小于或等于某个值 x x x 的概率。数学定义&#xff1a; F ( x ) P ( X ≤ x ) F(x) P(X \l…