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

后量子 KEM 方案:Kyber

参考文献:

  1. Bos J, Ducas L, Kiltz E, et al. CRYSTALS-Kyber: a CCA-secure module-lattice-based KEM[C]//2018 IEEE European Symposium on Security and Privacy (EuroS&P). IEEE, 2018: 353-367.
  2. Avanzi R, Bos J, Ducas L, et al. Crystals-kyber[J]. NIST, Tech. Rep, 2017.
  3. Brakerski Z, Gentry C, Vaikuntanathan V. (Leveled) fully homomorphic encryption without bootstrapping[J]. ACM Transactions on Computation Theory (TOCT), 2014, 6(3): 1-36.

文章目录

  • Kyber
    • Module-LWE
    • IND-CPA PKE
    • IND-CCA KEM
    • KEY EXCHANGE
    • 正确性分析
    • 实例化

Kyber

Module-LWE

Kyber 基于 MLWE 问题,成为了唯一进入 NIST PQC 第 3 轮的 KEM 方案(一共 4 个方案,另外 3 个都是签名,其中 2 个也基于 MLWE,另外 1 个基于 Hash)。

MLWE 最早作为标准 LWE 与 Ring-LWE 的扩展 General LWE 出现在 BGV 方案中:分圆多项式环记做 Rq=Zq[X]/(Xn+1)R_q = Z_q[X]/(X^n+1)Rq=Zq[X]/(Xn+1),随机采样秘密向量 s∈Rqks \in R_q^ksRqk,均匀随机采样 ai∈U(Rqk)a_i \in U(R_q^k)aiU(Rqk),计算 bi=aiTs+ei∈Rqb_i=a_i^Ts+e_i \in R_qbi=aiTs+eiRq,输出 mmm 对样本 (ai,bi)∈Rqk×Rq(a_i,b_i) \in R_q^k \times R_q(ai,bi)Rqk×Rq

基于 MLWE 问题的密码方案,需要使得 m=km=km=k 以保证私钥的安全性。因此,按行排列,mmm 个 MLWE 样本可以写作 (A,b)∈Rqk×k×Rqk(A,b) \in R_q^{k \times k} \times R_q^k(A,b)Rqk×k×Rqk,其中 b=As+eb=As+eb=As+e

使用 MLWE 的一个优势是:改变安全级别时,只需调整矩阵规模 kkk 以及噪声规模 η\etaη,而环 RqR_qRq 不需要改变,因此可以代码复用,有利于软硬件优化。

IND-CPA PKE

Kyber 使用 Newhope-Simple 的思路,通过压缩密钥和密文来减小规模。对于 x∈Zqx \in \mathbb Z_qxZq,进行 ddd 比特离散化:
Compress(x,d):=⌊2dq⋅x⌉(mod2d)Decompress(x,d):=⌊q2d⋅x⌉(modq)\begin{aligned} \text{Compress}(x,d) &:= \left\lfloor \dfrac{2^d}{q} \cdot x \right\rceil \pmod{2^d}\\ \text{Decompress}(x,d) &:= \left\lfloor \dfrac{q}{2^d} \cdot x \right\rceil \pmod{q}\\ \end{aligned} Compress(x,d)Decompress(x,d):=q2dx(mod2d):=2dqx(modq)

这可以被视为FHE中的“模切换”技术,引入了少量的(均匀)舍入噪声。

Kyber 的 PKE 方案与 Newhope 和 LAC 的几乎完全一样:

在这里插入图片描述

IND-CCA KEM

同样的,Kyber 也是用 Fujisaki–Okamoto transform 得到 CCA 安全的 KEM:

在这里插入图片描述

当解密错误时,并不输出 ⊥∉{0,1}256\perp \not \in \{0,1\}^{256}{0,1}256,而是输出伪随机的 H(z,c)H(z,c)H(z,c),“隐式拒绝”。

KEY EXCHANGE

无身份认证的 KE 协议:

在这里插入图片描述

单方面身份认证的 KE 协议:

在这里插入图片描述

双向身份认证的 KE 协议:

在这里插入图片描述

正确性分析

在 CPA PKE 中,公钥的第二分量包含中心二项分布噪声和舍入噪声,
b=Decompress(Compress(A⋅s+e,d0),d0)=As+e+r0\begin{aligned} b &= \text{Decompress}(\text{Compress}(A \cdot s+e,d_0),d_0)\\ &= As+e+r_0\\ \end{aligned} b=Decompress(Compress(As+e,d0),d0)=As+e+r0

其中 s←RΨη1kns \leftarrow_R \Psi_{\eta_1}^{kn}sRΨη1kne←RΨη2kne \leftarrow_R \Psi_{\eta_2}^{kn}eRΨη2kn。在压缩时简单丢弃了低位比特,因此可以近似地认为舍入噪声是均匀的。令 l=⌈log⁡q⌉l = \lceil \log q \rceill=logq,那么 r0←RU(R2l−d0k)r_0 \leftarrow_R U(R_{2^{l-d_0}}^k)r0RU(R2ld0k)

类似地,密文的第一分量中的噪声为:
c1=Decompress(Compress(AT⋅s′+e′,d1),d1)=AT⋅s′+e′+r1\begin{aligned} c_1 &= \text{Decompress}(\text{Compress}(A^T \cdot s'+e',d_1),d_1)\\ &= A^T \cdot s'+e'+r_1\\ \end{aligned} c1=Decompress(Compress(ATs+e,d1),d1)=ATs+e+r1

其中 s′←RΨη1kns' \leftarrow_R \Psi_{\eta_1}^{kn}sRΨη1kne′←RΨη2kne' \leftarrow_R \Psi_{\eta_2}^{kn}eRΨη2knr1←RU(R2l−d1k)r_1 \leftarrow_R U(R_{2^{l-d_1}}^k)r1RU(R2ld1k)

对于密文的第二分量,可以计算出它携带的噪声项:
c2=Decompress(Compress(bT⋅s′+e′′+Encode(m),d2),d2)=bT⋅s′+e′′+Encode(m)+r2=(As)Ts′+eTs′+r0Ts′+e′′+r2+Encode(m)\begin{aligned} c_2 &= \text{Decompress}(\text{Compress}(b^T \cdot s'+e''+ \text{Encode}(m),d_2),d_2)\\ &= b^T \cdot s'+e''+ \text{Encode}(m)+r_2\\ &= (As)^T s' + e^Ts' + r_0^Ts' + e'' + r_2 + \text{Encode}(m)\\ \end{aligned} c2=Decompress(Compress(bTs+e′′+Encode(m),d2),d2)=bTs+e′′+Encode(m)+r2=(As)Ts+eTs+r0Ts+e′′+r2+Encode(m)

其中 e′′←RΨη2kne'' \leftarrow_R \Psi_{\eta_2}^{kn}e′′RΨη2knr2←RU(R2l−d2k)r_2 \leftarrow_R U(R_{2^{l-d_2}}^k)r2RU(R2ld2k)

解密步骤是 m←Decode(c2−c1T⋅s)m \leftarrow \text{Decode}(c_2 - c_1^T \cdot s)mDecode(c2c1Ts),我们可以计算出
c2−c1T⋅s=Encode(m)+(As)Ts′+eTs′+r0Ts′+e′′+r2−sTATs′−sTe′−sTr1=Encode(m)+(e+r0)Ts′−sT(e′+r1)+(e′′+r2)\begin{aligned} c_2 - c_1^T \cdot s =\,\,& \text{Encode}(m) + (As)^T s' + e^Ts' + r_0^Ts' \\ &+ e'' + r_2 - s^TA^Ts' - s^Te' - s^Tr_1\\ =\,\,& \text{Encode}(m) + (e+r_0)^Ts' - s^T(e'+r_1)+(e''+r_2) \end{aligned} c2c1Ts==Encode(m)+(As)Ts+eTs+r0Ts+e′′+r2sTATssTesTr1Encode(m)+(e+r0)TssT(e+r1)+(e′′+r2)

简记 E=∥(e+r0)Ts′−sT(e′+r1)+(e′′+r2)∥∞E = \|(e+r_0)^Ts' - s^T(e'+r_1)+(e''+r_2)\|_\inftyE=(e+r0)TssT(e+r1)+(e′′+r2) 为解密时的累积噪声规模。由于对消息采用了MSB编码方式,所以等式 m=Decode(Encode(m)+e)m=\text{Decode}(\text{Encode}(m)+e)m=Decode(Encode(m)+e) 成立的充要条件是 ∥e∥∞<⌊q/4⌉\|e\|_\infty < \lfloor q/4 \rceile<q/4

因此,我们需要选取合适的参数集,使得解密错误率足够小:
Δ:=Pr⁡[E≥⌊q4⌉:(n,k,η1,η2,d0,d1,d2)]\Delta := \Pr\left[ E \ge \left\lfloor \dfrac{q}{4} \right\rceil:\,\, (n,k,\eta_1,\eta_2,d_0,d_1,d_2) \right] Δ:=Pr[E4q:(n,k,η1,η2,d0,d1,d2)]

实例化

在第三轮 NIST PQC 文档中,Kyber 的参数选取如下:
在这里插入图片描述

由于 q=3329=13×256+1q = 3329 = 13 \times 256+1q=3329=13×256+1,因此在 GF(q)GF(q)GF(q) 中存在 256256256 次本原单位根,从而可以支持 log⁡128=7\log{128}=7log128=7 轮的“不完全的反循环NTT变换”,将环元素 f∈Rqf \in R_qfRq 同构于 128128128 个长度为 222 的小多项式。注意 NTT 实现时采用 Montgomery 算法、 Barrett 算法,进行加速。

用到的对称原语(PRF, XOF, KDF, Hash)采用 FIPS-202 标准(SHA3):

在这里插入图片描述

相关文章:

后量子 KEM 方案:Kyber

参考文献&#xff1a; Bos J, Ducas L, Kiltz E, et al. CRYSTALS-Kyber: a CCA-secure module-lattice-based KEM[C]//2018 IEEE European Symposium on Security and Privacy (EuroS&P). IEEE, 2018: 353-367.Avanzi R, Bos J, Ducas L, et al. Crystals-kyber[J]. NIST…...

2019年广东工业大学腾讯杯新生程序设计竞赛(同步赛)

同步赛链接 A-原初的信纸(最值&#xff0c;STL&#xff09; 题意&#xff1a; 找 n 个数的最大值. 参考代码&#xff1a; void solve() {int n;std::cin >> n;std::vector<int> a(n);for (auto &c : a)std::cin >> c;std::cout << *max_element…...

生产Nginx现大量TIME-WAIT,连接耗尽,该如何处理?

背景说明&#xff1a; 在尼恩读者50交流群中&#xff0c;是不是有小伙伴问&#xff1a; 尼恩&#xff0c;生产环境 Nginx 后端服务大量 TIME-WAIT &#xff0c; 该怎么办&#xff1f; 除了Nginx进程之外&#xff0c;还有其他的后端服务如&#xff1a; 尼恩&#xff0c;生产环境…...

Linux服务器clang-13安装(环境变量配置)

1.从llvm的github网址选择合适的release合适的运行平台进行下载&#xff0c;下载官方预编译的二进制压缩包。 2.将下载好的压缩包进行本地上传。 使用scp命令进行上传 scp -r -P 端口号 本地文件路径 服务器ID等:服务器上目标地址 3.解压(tar命令&#xff09; 4.环境变量配…...

【C++】C/C++内存管理模板初阶

文章目录一、 C/C内存管理1. C/C内存分布2. C内存管理方式3. operator new与operator delete函数4. new和delete的实现原理5. 定位new表达式6. 常见面试题malloc/free和new/delete的区别内存泄漏二、模板初阶1. 泛型编程2. 函数模板3. 类模板一、 C/C内存管理 1. C/C内存分布 …...

笙默考试管理系统-index展示

public class PageList<T> : List<T> { public int PageIndex { get; private set; } //页索引 public int PageSize { get; private set; }//页大小 public int TotalPage { get; private set; }//总页数 public int TotalCo…...

前端基础知识6

谈谈你对语义化标签的理解语义化标签就是具有语义的标签&#xff0c;它可以清晰地向我们展示它的作用和用途。 清晰的代码结构&#xff1a;在页面没有css的情况下&#xff0c;也能够呈现出清晰的代码内容 有利于SEO: 爬虫依赖标签来确定关键字的权重&#xff0c;因此可以和搜索…...

【项目精选】智慧物业管理系统

点击下载源码 1、 选题的背景、研究目的和意义 1&#xff09;选题的背景 智慧物业是物业发展的必然趋势&#xff0c;是物业管理的一种新理念&#xff0c;是 新形势下社会管理创新的一种新模式。 随着人工智能、大数据、互联网等高新技术的发展&#xff0c;物业管理企 业先后试…...

解决HC-05/HC06等蓝牙模块的调试问题

解决HC-05/HC06等蓝牙模块的调试问题问题&#xff1a;1.无法使用USB转串口工具设置HC-05等蓝牙模块&#xff0c;具体问题是&#xff1a;发送AT指令&#xff0c;无回复&#xff1b;2.电脑如何连接HC-05模块&#xff0c;与模块通信&#xff08;具体场景&#xff1a;HC-05模块的串…...

dfs(八)数字的全排列 (含有重复项与非重复项)

如果每个数字任意取的话。就不需要加book标志位 没有重复项数字的全排列_牛客题霸_牛客网 描述 给出一组数字&#xff0c;返回该组数字的所有排列 例如&#xff1a; [1,2,3]的所有排列如下 [1,2,3],[1,3,2],[2,1,3],[2,3,1],[3,1,2], [3,2,1]. &#xff08;以数字在数组中的位…...

基于微信小程序的医院挂号系统小程序

文末联系获取源码 开发语言&#xff1a;Java 框架&#xff1a;ssm JDK版本&#xff1a;JDK1.8 服务器&#xff1a;tomcat7 数据库&#xff1a;mysql 5.7/8.0 数据库工具&#xff1a;Navicat11 开发软件&#xff1a;eclipse/myeclipse/idea Maven包&#xff1a;Maven3.3.9 浏览器…...

工程经验:残差连接对网络训练的巨大影响

文章目录1、没有使用残差连接的网络难以训练2、loss 不下降的原因3、使用了残差连接的网络可以高效训练1、没有使用残差连接的网络难以训练 经典的 SegNet 网络结构如下&#xff1a; 在使用上图所示的 SegNet 作为噪声预测网络训练扩散模型&#xff08;DDPM&#xff09;时&…...

靓号管理-搜索

搜索手机号&#xff1a; 最后一条就是使用的关键mobile__contains 使用字典&#xff1a; 后端的逻辑&#xff1a; """靓号列表"""data_dict {}search_data request.GET.get(q, "")# 根据关键字进行搜索&#xff0c;如果关键字存在&…...

B站发帖软件哪个好用?好用的哔哩哔哩发帖工具

B站发帖软件哪个好用?好用的哔哩哔哩发帖工具#发帖软件#哔哩哔哩发帖#视频发布软件 登录成功之后&#xff0c;进入到这样一个界面&#xff0c;默认情况下是这个样子的&#xff0c;我们在这里输入一下我们的一个文件夹的路径&#xff0c;输入到这里&#xff0c;点击添加账号&a…...

docker

docker ps docker images 拉取ubuntu镜像 docker pull ubuntu 启动 docker start podid 进入bash界面 docker exec -it podid /bin/bash 安装sudo apt-get install sudo 更新使配置生效 sudo apt update 安装vim apt-get install vim 安装中文包 sudo apt-get i…...

Django by Example·第三章|Extending Your Blog Application@笔记

Django by Example第三章|Extending Your Blog Application笔记 之前已经写过两章内容了&#xff0c;继续第三章。第三章继续对博客系统的功能进行拓展&#xff0c;其中将会穿插一些重要的技术要点。 部分内容引用自原书&#xff0c;如果大家对这本书感兴趣 请支持原版Django …...

23.2.13 Drive development 设备树信息解析相关代码

1.练习课上代码 2.把设备树信息解析相关函数按照自己的理解发布CSDN 3.复习中断相关内核 IO多路复用---epoll 核心内容&#xff1a;一棵树一个链表三个方法 epoll会将要监听的事件文件描述符添加到内核里一颗红黑树上&#xff0c;当有事件发生&#xff0c;epoll会调用回调函数…...

智能工厂以MES系统为基础,实现"信息化减人,自动化换人"

MES是一种生产信息化的管理系统&#xff0c;它适用于制造业的车间实施层面。MES能够为企业提供生产数据、项目看板、库存、成本、工装、生产计划、计划排程、质量、人力资源、采购、生产过程控制、底层数据集成分析、上层数据集成分解等管理模块&#xff0c;为企业打造一个扎实…...

【数据挖掘实战】——电力窃漏电用户自动识别

【数据挖掘实战】——电力窃漏电用户自动识别一、背景和挖掘目标二、分析方法与过程1、初步分析2、数据抽取3、探索分析4、数据预处理5、构建专家样本三、构建模型1、构建窃漏电用户识别模型2、模型评价3、进行窃漏电诊断拓展思考项目代码地址&#xff1a;https://gitee.com/li…...

树莓派 安装 宝塔linux面板5.9. 2023-2-13

​​​​​​​ 一.环境 1.硬件环境: 树莓派3b , 8GB tf卡 ,micro usb电源 2.网络环境: 网线直连路由器 , 可访问互联网 3.软件环境: 树莓派操作系统 CentOS-Userland-7-armv7hl-RaspberryPI-Minimal-2009-sda(linux) 系统刻录工具 Win32DiskImager (win) ip扫描工具 Adv…...

如何提高短视频的播放量-4个技巧

做短视频自媒体&#xff0c;点击率是第一位&#xff0c;点击量越多&#xff0c;粉丝也就越多。可是&#xff0c;怎么才能增加短视频的点击率和提高播放量呢&#xff1f;今天就来教大家4个技巧&#xff1a; 1、蹭热点 热门话题自带流量&#xff0c;它的热度和价值&#xff0c;是…...

搜索二叉树

文章目录二叉搜索树模拟实现InsertInsertR()EraseEraseR搜索树的价值实现代码二叉搜索树 在二叉树的基础之上, 左子树的值都比根节点小&#xff0c;右子树都更大。那么他的左右子树也分别叫做二叉搜索树。 查找一个节点,最多查找高度次(建立在这个树是比较均衡的).10亿里面找…...

CentOS8基础篇5:用户账号与用户组的创建

一、用户与用户组概念 Linux是一个多用户、多任务的服务器操作系统&#xff0c;多用户多任务指可以在系统上建立多个用户&#xff0c;而多个用户可以在同一时间内登录同一个系统执行各自不同的任务&#xff0c;而互不影响。 Linux用户是根据角色定义的&#xff0c;具体分为三…...

阿里云服务器使用

服务器配置CPU&内存&#xff1a;2核(vCPU)2 GiB操作系统&#xff1a;Ubuntu 22.04 64位运行环境部署因为部署用到了nodejs首先&#xff0c;打开终端&#xff0c;并输入以下命令以安装必要的软件包&#xff1a;sudo apt-get install curl接着&#xff0c;使用 curl 命令安装…...

全国空气质量排行,云贵川和西藏新疆等地空气质量更好

哈喽&#xff0c;大家好&#xff0c;春节刚刚过去&#xff0c;不知道大家是不是都开始进入工作状态了呢&#xff1f;春节期间&#xff0c;允许燃放烟花爆竹的地区的朋友们不知道都去欣赏烟花表演没有&#xff1f;其他地区的朋友们相比烟花表演可能更关心燃放烟花爆竹造成的环境…...

Learning C++ No.8【内存管理】

引言&#xff1a; 北京时间&#xff1a;2023/2/12/18:04&#xff0c;昨天下午到达学校&#xff0c;摆烂到现在&#xff0c;该睡睡&#xff0c;该吃吃&#xff0c;该玩玩&#xff0c;在一顿操作之下&#xff0c;目前作息调整好了一些&#xff0c;在此记录&#xff0c;2月11&…...

『 MySQL篇 』:MySQL表的相关约束

基础篇 MySQL系列专栏(持续更新中 …)1『 MySQL篇 』&#xff1a;库操作、数据类型2『 MySQL篇 』&#xff1a;MySQL表的CURD操作3『 MySQL篇 』&#xff1a;MySQL表的相关约束文章目录 1 . 非空约束 (not null)2 . 唯一性约束(unique)3 . check约束4 . 默认约束(default)5 . 主…...

家政服务小程序实战教程10-分类展示

小程序一般底部菜单栏会有一个分类的功能&#xff0c;点击分类&#xff0c;以侧边栏导航的形式列出所有类目&#xff0c;点击某个类目可以做数据筛选&#xff0c;我们本篇就实现一下该功能 01 优化数据源 在我们家政服务小程序里&#xff0c;我们已经建立了类型和服务的数据源…...

一篇文章带你学会Ansible的安装及部署

目录 前言 一、什么是Ansible 二、Ansible的工作方式 三、Ansible的安装 四、构建Anisble清单 1、清单书写方式 2、清单查看 3、清单书写规则 4、主机规格的范围化操作 五、ansible命令指定清单的正则表达式 六、 Ansible配置文件参数详解 1、配置文件的分类与优先…...

opencv常用函数

1)读视频 img cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY) if vc.isOpened():ret, frame vc.read() else:ret False while ret:#此处省略具体的操作ret, frame vc.read() # 读下一帧 vc.release() 2&#xff09;保存视频 def mk_video_writer(vc, path&#xff0c;frame_…...

wordpress新闻站自动采集器/色盲测试图及答案大全

前言 正常情况下&#xff0c;pytest 用例默认执行顺序是自上而下的&#xff0c;对于一些有上下文依赖关系的用例&#xff0c;我们可以通过 pytest-ordering 插件来控制用例执行顺序&#xff0c;也可以通过setup、teardown和fixture来解决 pytest-ordering 详解 (建议掌握程度…...

用cn作网站行么/做百度推广

小米手机拥有很多好用功能&#xff0c;相信这个大家都知道&#xff0c;但是大家知道小米便签还隐藏着一个神奇用法吗&#xff1f;只要按下小米便签里面的一个按键&#xff0c;就能快速将录音变成文字啦~那下面我们就一起来详细看看吧~一、实时录音转文字不少人对于小米便签的印…...

一网网站制作平台/seo上首页

什么是探针 探针Probe是由 kubelet对容器执行的定期诊断。要执行诊断&#xff0c;kubelet 调用由容器实现的 Handler。有三种类型的处理程序&#xff1a; ExecAction&#xff1a;在容器内执行指定命令。如果命令退出时返回码为 0 则认为诊断成功。TCPSocketAction&#xff1a;对…...

免费网站建设软件推荐/唯尚广告联盟app下载

http://dev.yesky.com/359/2145859.shtml 前文我们对非MFC DLL和MFC规则DLL进行了介绍&#xff0c;现在开始详细分析DLL的最后一种类型――MFC扩展DLL。   6.1概论  MFC扩展DLL与MFC规则DLL的相同点在于在两种DLL的内部都可以使用MFC类库&#xff0c;其不同点在于MFC扩展DL…...

做网站界面设计大小/厦门seo代理商

本文是转载张元礼的博客 http://blog.csdn.Net/vincetest 一、测试需求描述 对服务后台一系列的http接口功能测试。 输入&#xff1a;根据接口描述构造不同的参数输入值 输出&#xff1a;XML文件 eg:http://xxx.com/xxx_product/test/content_book_list.jsp?listid1 二、实现方…...

重庆梁平网站建设哪家好/互联网线上推广

作者▕ IT修真院编审▕ 暗灭编辑▕ 匹诺曹本文共3500字&#xff0c;预计阅读需要20分钟课程大纲第一阶段——HTML及CSS入门任务一&#xff1a;九宫格——用htmlcss制作一个网页1、盒模型、常见元素分类、调试如何理解盒模型及其content、padding、border、margin&#xff1f;常…...