当前位置: 首页 > 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…...

RestClient

什么是RestClient RestClient 是 Elasticsearch 官方提供的 Java 低级 REST 客户端&#xff0c;它允许HTTP与Elasticsearch 集群通信&#xff0c;而无需处理 JSON 序列化/反序列化等底层细节。它是 Elasticsearch Java API 客户端的基础。 RestClient 主要特点 轻量级&#xff…...

label-studio的使用教程(导入本地路径)

文章目录 1. 准备环境2. 脚本启动2.1 Windows2.2 Linux 3. 安装label-studio机器学习后端3.1 pip安装(推荐)3.2 GitHub仓库安装 4. 后端配置4.1 yolo环境4.2 引入后端模型4.3 修改脚本4.4 启动后端 5. 标注工程5.1 创建工程5.2 配置图片路径5.3 配置工程类型标签5.4 配置模型5.…...

【Linux】C语言执行shell指令

在C语言中执行Shell指令 在C语言中&#xff0c;有几种方法可以执行Shell指令&#xff1a; 1. 使用system()函数 这是最简单的方法&#xff0c;包含在stdlib.h头文件中&#xff1a; #include <stdlib.h>int main() {system("ls -l"); // 执行ls -l命令retu…...

YSYX学习记录(八)

C语言&#xff0c;练习0&#xff1a; 先创建一个文件夹&#xff0c;我用的是物理机&#xff1a; 安装build-essential 练习1&#xff1a; 我注释掉了 #include <stdio.h> 出现下面错误 在你的文本编辑器中打开ex1文件&#xff0c;随机修改或删除一部分&#xff0c;之后…...

大数据零基础学习day1之环境准备和大数据初步理解

学习大数据会使用到多台Linux服务器。 一、环境准备 1、VMware 基于VMware构建Linux虚拟机 是大数据从业者或者IT从业者的必备技能之一也是成本低廉的方案 所以VMware虚拟机方案是必须要学习的。 &#xff08;1&#xff09;设置网关 打开VMware虚拟机&#xff0c;点击编辑…...

【大模型RAG】Docker 一键部署 Milvus 完整攻略

本文概要 Milvus 2.5 Stand-alone 版可通过 Docker 在几分钟内完成安装&#xff1b;只需暴露 19530&#xff08;gRPC&#xff09;与 9091&#xff08;HTTP/WebUI&#xff09;两个端口&#xff0c;即可让本地电脑通过 PyMilvus 或浏览器访问远程 Linux 服务器上的 Milvus。下面…...

SpringBoot+uniapp 的 Champion 俱乐部微信小程序设计与实现,论文初版实现

摘要 本论文旨在设计并实现基于 SpringBoot 和 uniapp 的 Champion 俱乐部微信小程序&#xff0c;以满足俱乐部线上活动推广、会员管理、社交互动等需求。通过 SpringBoot 搭建后端服务&#xff0c;提供稳定高效的数据处理与业务逻辑支持&#xff1b;利用 uniapp 实现跨平台前…...

iOS性能调优实战:借助克魔(KeyMob)与常用工具深度洞察App瓶颈

在日常iOS开发过程中&#xff0c;性能问题往往是最令人头疼的一类Bug。尤其是在App上线前的压测阶段或是处理用户反馈的高发期&#xff0c;开发者往往需要面对卡顿、崩溃、能耗异常、日志混乱等一系列问题。这些问题表面上看似偶发&#xff0c;但背后往往隐藏着系统资源调度不当…...

20个超级好用的 CSS 动画库

分享 20 个最佳 CSS 动画库。 它们中的大多数将生成纯 CSS 代码&#xff0c;而不需要任何外部库。 1.Animate.css 一个开箱即用型的跨浏览器动画库&#xff0c;可供你在项目中使用。 2.Magic Animations CSS3 一组简单的动画&#xff0c;可以包含在你的网页或应用项目中。 3.An…...

免费数学几何作图web平台

光锐软件免费数学工具&#xff0c;maths,数学制图&#xff0c;数学作图&#xff0c;几何作图&#xff0c;几何&#xff0c;AR开发,AR教育,增强现实,软件公司,XR,MR,VR,虚拟仿真,虚拟现实,混合现实,教育科技产品,职业模拟培训,高保真VR场景,结构互动课件,元宇宙http://xaglare.c…...