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

news2024/9/9 7:55:13

本文参考资料来源: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.coloradmin.cn/o/1919048.html

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

相关文章

高性价比之战,希喂、霍尼韦尔、安德迈宠物空气净化器真实PK

在拥有孕妇与小孩的家庭中饲养宠物,营造一个既温馨又健康的居家环境显得尤为重要。尽管日常的打扫与清洁工作已做得相当到位,但空气中仍难免悬浮着细微的宠物浮毛与不易察觉的异味,这些长期累积下来,极易成为细菌滋生的温床&#…

双一流高校某教学系统存在多个高危漏洞

脆弱资产搜集 信息搜集过程中,除了用常见子域名扫一遍,还可以通过空间搜索引擎手动搜索。我用的就是把学校名称或者缩写作为关键字,利用语法: web.body“关键字”&&web.body“系统” web.body“关键字”&&web.body“登录”…

05:定时器中断

中断 1、定时器T0中断2、案例:通过定时器T0中断来实现灯间隔1s亮灭 1、当中央处理机CPU正在处理某件事的时候外界发生了紧急事件请求,要求CPU暂停当前的工作,转而去处理这个紧急事件,处理完以后,再回到原来被中断的地方…

基于红黑树对map和set的封装

前言 前面我们已经对红黑树做了介绍和实现,本期我们来对红黑树进一步改造,然后基于改造后的红黑树封装出map和set! 本期内容介绍 • 红黑树的改造 • 红黑树的迭代器实现 • map的封装 • set的封装 • 全部源码 ● 红黑树的改造 我们目前…

小程序项目记录

写小程序遇到的问题: 1、如何发行小程序 第一步点击“发行” 然后选择“小程序-微信(仅适用于uni-app)” 然后会弹出一个这样的框 微信小程序名称和AppId会自动带入 然后控制台会出现这些信息 注意:生成的这个路径build为线上环境部署所使用路径&…

Hydra-MDP: 端到端多模态规划与多目标 Hydra 蒸馏

Hydra-MDP: End-to-end Multimodal Planning with Multi-target Hydra-Distillation Hydra-MDP: 端到端多模态规划与多目标 Hydra 蒸馏 Abstract We propose Hydra-MDP, a novel paradigm employing multiple teachers in a teacher-student model. This approach uses know…

音质强者悠律Ringbuds pro,时尚与音质并存

首次将手机使用的“素皮”材料用在充电仓的设计上,不仅手感好,质感直接拉满,而这样的工业设计不仅获得了很多消费者的喜爱,同时也荣获了世界知名的红点设计大奖,此奖项并一直被冠以“国际工业设计的奥斯卡”之称。可见…

Android 使用 Debug.startMethodTracing 分析方法耗时

参考 Generate Trace Logs by Instrumenting Your App 官网提供了 trace 工具来分析方法耗时。 生成 trace 文件 package com.test.luodemo.trace;import androidx.appcompat.app.AppCompatActivity;import android.os.Bundle; import android.os.Debug; import android.uti…

从点击到转化,Xinstall解析移动广告全链路数据,优化ROI的秘密

在疫情的持续影响下,全球营销环境正经历着前所未有的变革。品牌广告主们面对挑战,展现出前所未有的积极与韧性。移动端广告投放的持续增长,尤其是短视频和图文广告的兴起,为品牌带来了新的机遇。然而,如何在激烈的市场…

Dify 与 Xinference 最佳组合 GPU 环境部署全流程

背景介绍 在前一篇文章 RAG 项目对比 之后,确定 Dify 目前最合适的 RAG 框架。本次就尝试在本地 GPU 设备上部署 Dify 服务。 Dify 是将模型的加载独立出去的,因此需要选择合适的模型加载框架。调研一番之后选择了 Xinference,理由如下&…

【PostgreSQL】Spring boot + Mybatis-plus + PostgreSQL 处理json类型情况

Spring boot Mybatis-plus PostgreSQL 处理json类型情况 一、前言二、技术栈三、背景分析四、方案分析4.1 在PostgreSQL 数据库中直接存储 json 对象4.2 在PostgreSQL 数据库中存储 json 字符串 五、自定义类型处理器5.1 定义类型处理器5.2 使用自定义类型处理器 一、前言 在…

微信闪退怎么回事?实用技巧助你轻松应对

在使用微信的过程中,偶尔会遇到闪退的问题,这不仅影响我们的日常沟通,还可能导致重要信息的丢失。那么,微信闪退怎么回事呢?闪退的原因可能有很多,包括软件问题、手机存储不足、系统不兼容等。本文将详细分…

好用的IP反查接口(2)

IP-地理信息查询接口-本地化 参考: 通过Ip查询对应地址,Ip2location全球IP地址网段-CSDN博客 因为在线接口有限制(毕竟别人提供服务,服务器,数据维护,域名啥的都要费用), 所以本地化服务的需…

vue2学习笔记-官网使用指南和搭建开发环境

官网使用指南 官网地址:介绍 — Vue.js 1、学习 1.1 教程和API 最重要的两个板块。API是VUE的字典,需要时来查阅。 1.2、风格指南 如何写出风格优雅的VUE代码。规则分为四类:必要的,强烈推荐、推荐、谨慎使用。 1.3、示例 …

C嘎嘎类与对象上篇

类的定义 1. class为定义类的关键字,Stack为类的名字,{}中为类的主体,注意类定义结束时后⾯分号不能省略 。类体中内容称为类的成员:类中的变量称为类的属性或成员变量; 类中的函数称为类的⽅法或者成员函数。 2. C中struct也可以…

C++入门基础题:数组元素逆序(C++版互换方式)

1.题目&#xff1a; 数组元素逆置案例描述: 请声明一个5个元素的数组&#xff0c;并且将元素逆置. (如原数组元素为:1,3,2,5,4;逆置后输出结果为:4,5,2,3,1) 2.图解思路&#xff1a; 3.代码演示&#xff1a; #include<iostream>using namespace std;int main(){int a…

为什么使用代理IP无法访问网站

代理IP可以为用户在访问网站时提供更多的便利性和匿名性&#xff0c;但有时用户使用代理IP后可能会遇到无法访问目标网站的问题。这可能会导致用户无法完成所需的业务要求&#xff0c;给用户带来麻烦。使用代理IP时&#xff0c;您可能会因为各种原因而无法访问您的网站。以下是…

网络安全应急响应信息收集利器-Eagle_Eye

项目介绍: 网络安全应急响应信息收集利器 - Eagle_Eye&#xff1a;您的终端信息自动收集专家 在网络安全的紧急时刻&#xff0c;每一秒都至关重要。Eagle_Eye&#xff0c;这款专为应急响应设计的工具&#xff0c;如同一位随时待命的侦察兵&#xff0c;能够在危机时刻迅速收集…

插片式远程 I/O模块:Profinet总线耦合器在SIMATIC Manager配置

XD9000是Profinet总线耦合器&#xff0c;单个耦合器最多可扩展32个I/O模块&#xff01;本文将详细介绍如何在SIMATIC Manager中配置插片式远程 I/O模块的Profinet总线耦合器&#xff0c;帮助您更好地应用这一技术。 一、SIMATIC Manager软件组态步骤&#xff1a; 1、创建工程&…

【PowerShell】-1-快速熟悉并使用PowerShell

目录 PowerShell是什么&#xff1f;和CMD的区别&#xff1f; PowerShell的演变 自动化IT管理任务 一些名词 详尽的PowerShell开始之路 1.打开PowerShell&#xff1a; 2.基本命令&#xff1a; &#xff08;1&#xff09;Get-Process &#xff08;2&#xff09;变量赋值…