FIPS203 后量子安全ML-KEM(标准简读)

FIPS 203是美国国家标准与技术研究院(NIST)发布的关于模块格基密钥封装机制(ML-KEM)的标准,旨在提供一种能抵御量子计算机攻击的密钥建立方案。以下是对该文档的详细总结:
在这里插入图片描述

标准概述

  • 目的与范围:规定ML-KEM算法及参数集,用于在公共信道上建立共享密钥,提供了不同安全强度与性能权衡的参数集,包括ML-KEM - 512、ML-KEM - 768和ML-KEM - 1024。
  • 背景:因量子计算机发展对现有公钥密码系统构成威胁,NIST开展后量子密码学标准化工作,ML-KEM基于CRYSTALS - KYBER算法,是被选中的标准化算法之一。

术语、缩写与符号

  • 术语定义:详细解释了如批准、(KEM)密文、密码模块、解封装、封装等相关术语。
  • 缩写:列举了AES、CBD、FIPS、KEM、LWE、MLWE、NIST等缩写的含义。
  • 数学符号:定义了如n、q、ζ、B、Q、Z、Zm、Zq^n、Rq、Tq等符号的意义。

ML - KEM方案概述

  • 密钥封装机制(KEM):由KeyGen、Encaps、Decaps三个算法和参数集组成,用于双方建立共享密钥,ML-KEM的安全性基于Module Learning with Errors (MLWE)问题。
  • ML - KEM方案
    • 计算假设:安全性基于MLWE问题,是Learning With Errors (LWE)问题的推广,与模块格中的计算问题相关。
    • 方案构造:先从MLWE问题构建公钥加密(PKE)方案,再用Fujisaki - Okamoto (FO)变换转换为KEM,使用Number - Theoretic Transform (NTT)提高多项式乘法效率。
    • 参数集与算法:包括ML-KEMKeyGen、ML-KEMEncaps、ML-KEMDecaps三个算法,有ML-KEM - 512、ML-KEM - 768、ML-KEM - 1024三个参数集,不同参数集影响密钥和密文长度及安全性。
    • 解封装失败:在正常情况下,解封装失败概率极低,如ML-KEM - 512的失败率为2^-138.8等。

ML - KEM实现要求

  • K - PKE仅为组件:K - PKE不能单独使用,只能作为ML - KEM算法的子例程。
  • 内部函数访问控制:ML - KEM内部函数接口仅用于测试,密钥生成和封装所需随机值由密码模块生成。
  • 等效实现:允许使用数学等效步骤替换标准算法。
  • 共享密钥使用:成功生成的共享密钥为256位,可直接用于对称加密或按规定方式派生密钥。
  • 随机数生成:ML - KEMKeyGen和ML - KEMEncaps需使用批准的随机位生成器(RBG)生成随机数,不同参数集对RBG安全强度有不同要求。
  • 输入检查:ML - KEMEncaps和ML - KEMDecaps需进行输入检查,确保输入合法。
  • 中间值销毁:计算过程中的中间数据应及时销毁,部分数据可按规定保留。
  • 禁止浮点运算:实现中不能使用浮点运算,以避免舍入误差导致错误结果。

辅助算法

  • 密码函数:使用SHA3 - 256、SHA3 - 512、SHAKE128、SHAKE256等哈希函数和可扩展输出函数(XOF),通过包装函数定义来实例化PRF、哈希函数和XOF等,避免字节数组与位长度混淆。
  • 通用算法
    • 转换与压缩算法:包括BitsToBytes、BytesToBits用于位数组和字节数组转换,Compress和Decompress用于整数压缩和解压缩,ByteEncode和ByteDecode用于整数与字节转换。
    • 采样算法:SampleNTT用于从均匀随机字节流生成NTT表示的多项式样本,SamplePolyCBD用于从特定分布采样多项式系数。
  • 数论变换(NTT):NTT是ML - KEM提高环Rq上乘法效率的重要部分,将多项式在Rq和Tq环之间进行转换,Tq环上乘法效率更高,算法9和10分别用于计算NTT和逆NTT,算法11用于计算Tq环上的乘法。

K - PKE组件方案

  • K - PKE概述:由K - PKEKeyGen(密钥生成)、K - PKEEncrypt(加密)、K - PKEDecrypt(解密)三个算法组成,不能单独使用,作为ML - KEM算法子例程,其参数集与ML - KEM相关联。
  • K - PKE密钥生成(K - PKEKeyGen):输入随机数,生成加密密钥(可公开)和解密密钥(需保密),涉及矩阵A、向量s和噪声e的生成与计算。
  • K - PKE加密(K - PKEEncrypt):使用加密密钥、明文和随机数生成密文,包括提取向量、重新生成矩阵、采样噪声、计算新的噪声方程、编码消息等步骤。
  • K - PKE解密(K - PKEDecrypt):使用解密密钥解密密文得到明文,通过恢复系数、计算真实常数项、解码消息等操作完成。

ML - KEM主算法

  • 内部密钥生成(ML - KEMKeyGen_internal):输入两个随机种子,生成封装密钥(与K - PKE加密密钥相同)和解封装密钥(包含K - PKE解密密钥、封装密钥哈希值和随机值)。
  • 内部封装(ML - KEMEncaps_internal):输入封装密钥和随机字节数组,输出密文和共享密钥,通过K - PKE加密随机值得到密文,并从随机值和封装密钥派生共享密钥。
  • 内部解封装(ML - KEMDecaps_internal):输入解封装密钥和密文,输出共享密钥,解析解封装密钥,解密密文得到明文,重新加密明文并计算候选共享密钥,根据密文匹配情况确定最终共享密钥。
  • ML - KEM密钥生成(ML - KEMKeyGen):生成封装密钥和解封装密钥,种子可存储用于重新生成密钥,密钥对可进行检查但不保证生成正确。
  • ML - KEM封装(ML - KEMEncaps):输入封装密钥,生成密文和共享密钥,需进行封装密钥检查,包括类型检查和模数检查。
  • ML - KEM解封装(ML - KEMDecaps):输入解封装密钥和密文,输出共享密钥,需进行输入检查,包括密文类型检查、解封装密钥类型检查和哈希检查。

参数集

  • 参数集内容:ML - KEM有三个参数集,每个参数集包含k、η1、η2、du、dv五个参数及n = 256和q = 3329两个常数,不同参数影响算法中矩阵、向量维度和分布等,如k决定矩阵A维度。
  • 安全强度与性能:不同参数集对应不同安全强度,如ML - KEM - 512安全类别为1,ML - KEM - 768为3,ML - KEM - 1024为5,安全强度通过与特定块密码或哈希函数比较衡量,选择参数集时需权衡安全与性能,NIST推荐默认使用ML - KEM - 768。

代码参考

ML-KEM: https://github.com/pq-crystals/kyber

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Android GPU纹理数据拷贝

在 Android 开发中读取纹理数据有以下几种方法: glReadPixelsImageReaderPBO(Pixel BufferObject) HardwareBuffer 1. glReadPixels glReadPixels 是 OpenGL ES 的 API,通常用于从帧缓冲区中读取像素数据,OpenGL ES…

NVM切换本地node版本

1、下载nvm https://github.com/coreybutler/nvm-windows/releases nvm-windows 然后点击nvm-setup.exe下载&#xff0c;尽可能都选择默认安装选项 2、nvm常用命令 使用以下命令安装特定版本的 Node.js&#xff1a; nvm install <version> nvm install 14.17.0 使…

GNN系统学习:消息传递图神经网络

引言 在开篇中我们介绍了&#xff0c;为节点生成节点表征&#xff08;Node Representation&#xff09;是图计算任务成功的关键&#xff0c;我们要利用神经网络来学习节点表征。 消息传递范式是一种聚合邻接节点信息来更新中心节点信息的范式&#xff0c;它将卷积算子推广到了…

C语言 | Leetcode C语言题解之第554题砖墙

题目&#xff1a; 题解&#xff1a; struct HashTable {int key, val;UT_hash_handle hh; };int leastBricks(int** wall, int wallSize, int* wallColSize) {struct HashTable* cnt NULL;for (int i 0; i < wallSize; i) {int n wallColSize[i];int sum 0;for (int j …

全文检索ElasticSearch到底是什么?

学习ElasticSearch之前&#xff0c;我们先来了解一下搜索 1 搜索是什么 ① 概念&#xff1a;用户输入想要的关键词&#xff0c;返回含有该关键词的所有信息。 ② 场景&#xff1a; ​ 1互联网搜索&#xff1a;谷歌、百度、各种新闻首页&#xff1b; ​ 2 站内搜索&#xff…

【C++】vector模拟实现、迭代器失效问题(超详解)

vector会使用之后我们来模拟实现一下&#xff0c;通过对vector的模拟实现&#xff0c;我们来说一下迭代器失效问题。 1.准备工作 在头文件vector.h里声明和实现函数&#xff0c;然后在test.cpp里测试代码的正确性。 在vector.h中用命名空间分隔一下&#xff0c;因为c库里面也有…

前端CSS3 渐变详解

文章目录 CSS3 渐变详解一、引言二、CSS3 渐变基础1、线性渐变1.1、基本线性渐变1.2、改变渐变方向 2、径向渐变2.1、基本径向渐变2.2、设置径向渐变的中心 三、高级渐变技巧1、重复渐变1.1、重复线性渐变1.2、重复径向渐变 四、总结 CSS3 渐变详解 一、引言 在现代网页设计中…

Docker学习—Docker的安装与使用

Docker安装 1.卸载旧版 首先如果系统中已经存在旧的Docker&#xff0c;则先卸载&#xff1a; yum remove docker \docker-client \docker-client-latest \docker-common \docker-latest \docker-latest-logrotate \docker-logrotate \docker-engine2.配置Docker的yum库 首先…

M1M2 MAC安装windows11 虚拟机的全过程

M1/M2 MAC安装windows11 虚拟机的全过程 这两天折腾了一下windows11 arm架构的虚拟机&#xff0c;将途中遇到的坑总结一下。 1、虚拟机软件&#xff1a;vmware fusion 13.6 或者 parallel 19 &#xff1f; 结论是&#xff1a;用parellel 19。 这两个软件都安装过&#xff0…

蓝桥杯备考——算法

一、排序 冒泡排序、选择排序、插入排序、 快速排序、归并排序、桶排序 二、枚举 三、二分查找与二分答案 四、搜索&#xff08;DFS&#xff09; DFS&#xff08;DFS基础、回溯、剪枝、记忆化&#xff09; 1.DFS算法&#xff08;深度优先搜索算法&#xff09; 深度优先搜…

‘conda‘ 不是内部或外部命令,也不是可运行的程序或批处理文件,Miniconda

下载了conda&#xff0c;但是在cmd里执行conda --version会显示’conda’ 不是内部或外部命令&#xff0c;也不是可运行的程序或批处理文件。 原因是环境变量里没有添加conda&#xff0c;无法识别路径。 需要在系统环境变量里添加如下路径&#xff1a; 保存之后重新打开cmd&am…

UE5 随机生成地牢关卡

参考视频&#xff1a;【UE5 | 教程 | 地编】虚幻引擎5 中创建史诗级 程序化 地下城_哔哩哔哩_bilibili 首先创建一个父项Actor 这个BOX碰撞提是和地板重叠的 这三个是场景组件&#xff0c;这个ExitsFolder下面的箭头等会会在子蓝图中添加 接下来创建BP_MasterRoom的子蓝图&…

Qt信号和槽-->day04

Qt信号和槽 标准的信号和槽函数Qt中的槽函数Qt中的信号 connect案例 自定义信号和槽案例分析 信号槽的拓展信号连接信号案例 信号槽的两种连接方式Qt5中的处理方式Qt4中的处理方式Qt5处理信号槽重载问题案例 lambda表达式简单案例Qt中的应用 补充知识点 标准的信号和槽函数 QW…

十大经典排序算法-冒泡算法详解介绍

1、十大经典排序算法 排序算法是《数据结构与算法》中最基本的算法之一。 排序算法可以分为内部排序和外部排序&#xff0c;内部排序是数据记录在内存中进行排序&#xff0c;而外部排序是因排序的数据很大&#xff0c;一次不能容纳全部的排序记录&#xff0c;在排序过程中需要…

ASMR助眠声音视频素材去哪找 吃播助眠素材网站分享

在快节奏的现代生活中&#xff0c;越来越多的人感到压力山大&#xff0c;许多人开始寻求助眠和放松的方式。而ASMR&#xff08;自发性知觉经络反应&#xff09;助眠声音视频&#xff0c;凭借其独特的声音刺激和放松效果&#xff0c;成为了睡前的“神器”。如果你是一位内容创作…

【Linux】常用命令(2.6万字汇总)

文章目录 Linux常用命令汇总1. 基础知识1.1. Linux系统命令行的含义1.2. 命令的组成 2. 基础知识2.1. 关闭系统2.2. 关闭重启2.3. 帮助命令&#xff08;help&#xff09;2.4. 命令说明书&#xff08;man&#xff09;2.5. 切换用户&#xff08;su&#xff09;2.6.历史指令 3.目录…

量化分析工具日常操作日记-5-通合科技

使用量化分析微信小程序工具“梦想兔企业智能风险分析助手”日常操作日记-5-军工-通合科技&#xff08;300491&#xff09;。 周末国家新政策&#xff0c;要大力支持军工行业&#xff0c;我用工具挖掘了两个低位股&#xff0c;供大家参考。通合科技&#xff08;300491&#xff…

4D施工奇迹:废弃码头变身地标体育场

SYNCHRO 促进协同和战略性施工&#xff0c;完成大型项目交付 改造举世闻名的海滨城市 为了提升球迷的比赛日体验&#xff0c;英国足球俱乐部埃弗顿足球俱乐部正在利物浦默西河畔废弃的布拉姆利摩尔码头建造一座新的现代化体育场。该体育场是利物浦城市总体规划的一部分&#xf…

图神经网络(GNN)入门笔记(1)——图信号处理与图傅里叶变换

一、信号处理&#xff1a;时域与频域 时域&#xff08;Time Domain&#xff09;是我们生活中常见的信号表示方式&#xff0c;以横轴为时间&#xff0c;纵轴为信号该时刻的强度&#xff08;幅度&#xff09;&#xff0c;就可以得到一张时域图。打个比方&#xff0c;通过每时每刻…

【八百客CRM-注册安全分析报告-无验证方式导致安全隐患】

前言 由于网站注册入口容易被黑客攻击&#xff0c;存在如下安全问题&#xff1a; 1. 暴力破解密码&#xff0c;造成用户信息泄露 2. 短信盗刷的安全问题&#xff0c;影响业务及导致用户投诉 3. 带来经济损失&#xff0c;尤其是后付费客户&#xff0c;风险巨大&#xff0c;造…