首页 > 其他分享 >Kyber原理解析

Kyber原理解析

时间:2024-10-31 16:48:02浏览次数:3  
标签:CPAPKE 封装 Kyber 生成 密钥 原理 解析 CCAKEM

Kyber是一种IND-CCA2安全的密钥封装机制。Kyber的安全性基于在模格(MLWE问题)中解决LWE问题的难度。Kyber的构造采⽤两阶段⽅法:⾸先介绍⼀种⽤来加密固定32字节⻓度的消息原⽂的IND-CPA安全性的公钥加密⽅案,我们称之为 CPAPKE, CPAPKE由密钥生成( CPAPKE.KeyGen)、加密( CPAPKE.Encrypt)、解密( CPAPKE.Decrypt)三个算法组成。然后,我们使⽤略微调整的Fujisaki-Okamoto(FO)变换来构建IND-CCA2安全性的CCAKEM,CCAKEM方案由密钥生成(CCAKEM.KeyGen)、封装(CCAKEM.Encaps)、解封装(CCAKEM.Decaps)三个算法组成。

由CPAPKE通过FO变换转换成CCAKEM并不复杂,本文我们主要举例解释一下CPAPKE的三个算法,Kyber出于安全性考虑,系统参数都较大,这里我们只为了简要解释原理,因此采用了压缩版的参数。假设q=17, 多项式模数f=x^4+1

1.密钥对生成

添加图片注释,不超过 140 字(可选)

对于密钥对生成阶段,我们会获得密钥对(pk,sk),其中pk=t=As+e, sk=s。A,s, e都是随机生成的,我们假设其取值如图上所示,最终计算获得:t = (-15x^6-26x^5-41x^4-18x^3+8x, -11x^6-9x^5-23x^4-24x^3+x^2-15x)

由于多项式系数取值模数 f=x^4+1 ,可以简单理解为x^4=-1 ,对t进行转换:

t=(-15x^6-26x^5-41x^4-18x^3+8x,-11x^6-9x^5-23x^4-24x^3+x^2-15x)=(15x^2+26x+41-18x^3+8x,11x^2+9x+23-24x^3+x^2-15x)=(-18x^3+15x^2+34x+41,-24x^3+12x^2-6x+23)

(将x^4 转换为-1)

又由于q=17, 我们进一步对系数取模得到:

t=(16x^3+15x^2+7,10x^3+12x^2+11x+6)

综上,密钥生成阶段我们生成了密钥对pk=(16x^3+15x^2+7,10x^3+12x^2+11x+6),sk=(-x^3-x^2+x,-x^3-x)

2.密钥封装

添加图片注释,不超过 140 字(可选)

密钥封装阶段我们从公钥中恢复了种子 ρ ,从而恢复出密钥对生成阶段的矩阵A,又随机生成了 r,e_1,e_2 , 并假设我们的输入 message=(11)_{10}=(1011)_2 .转化为多项式系数后 m_b=x^3+x+1

添加图片注释,不超过 140 字(可选)

Decompressq(m_b,1)=q/2 \ast m_b=9m_b=9x^3+9x+9 ,

再结合之前生成的 ,A,r, e_1,e_2 , 计算 u=A^Tr+e_1=(11x^3+11x^2+10x+3,4x^3+4x^2+13x+11)

v=t^Tr+e_2+Decompress_q(m_b,1)=7x^3+6x^2+8x+15

3.密钥解封装

添加图片注释,不超过 140 字(可选)

根据密钥封装阶段的u,v和密钥对生成阶段的sk, 我们计算出密钥解封装阶段的 m_n=8x^3+14x^2+8x+6 ,最后我们将 m_n的多项式系数与 q/2 , 0 对比并取round,获取了round后的多项式 m_{round}=9x^3+9x+9 ,最终我们计算 m_b=1/9\ast m_{round}=x^3+x+1=1x^3+0x^2+1x+1 ,取系数得 message=(1011)_2=(11)_{10}.

标签:CPAPKE,封装,Kyber,生成,密钥,原理,解析,CCAKEM
From: https://blog.csdn.net/dedanddwb/article/details/143404541

相关文章

  • 3.4 可靠数据传输原理
    以下全文为《计算机网络自顶向下方法》(第8版)3.4小节的总结。rdt:reliabledatatransferudt:unreliabledatatransfer下方有限状态机图片中横线上方表示事件event,下方表示操作action。3.4.1构造可靠数据传输协议  1.经完全可靠信道的可靠数据传输:rdt1.0  2......
  • 【Linux】巧妙运用<信号量>解决<水果放取问题>(思维导图&代码演示&思路解析)
    前言大家好吖,欢迎来到YY滴Linux系列,热烈欢迎!本章主要内容面向接触过C++的老铁主要内容含:欢迎订阅YY滴C++专栏!更多干货持续更新!以下是传送门!YY的《C++》专栏YY的《C++11》专栏YY的《Linux》专栏YY的《数据结构》专栏YY的《C语言基础》专栏YY的《初学者易错点》......
  • 深入解析 Memcached原理、架构与最佳实践
    1.引言什么是Memcached?Memcached是一个高性能的分布式内存对象缓存系统,旨在通过减少数据库负载来加速动态Web应用程序。它以键值对的形式将数据存储在内存中,允许应用程序快速读取数据,从而提高响应速度和系统的可扩展性。由于其简单的设计和高效的性能,Memcached被广......
  • 线程池原理
    线程池是一种多线程处理方式,处理过程中将任务添加到队列,然后在创建线程后自动启动这些任务。线程池线程都是后台线程。每个线程都使用默认的堆栈大小,以默认的优先级运行,并处于多线程单元中。如果某个线程在托管代码中空闲(如正在等待某个事件),则线程池将插入另一个辅助线程来使所有......
  • React 中useState 原理
    useState是React中的一个Hook,用于在函数组件中添加状态管理。理解useState的原理有助于更好地掌握React的状态管理机制。1.基本概念状态(State):状态是组件内部的数据,可以影响组件的渲染。每当状态更新时,组件会重新渲染以反映新的状态。useState的作用:通过useS......
  • 小白手把手教学用spring框架实现mybatis和mysql以及工作原理
    Maven_Mybatis_Mysql什么是MybatisMyBatis是一款优秀的持久层框架,它支持自定义SQL、存储过程以及高级映射。MyBatis免除了几乎所有的JDBC代码以及设置参数和获取结果集的工作。MyBatis可以通过简单的XML或注解来配置和映射原始类型、接口和JavaPOJO(PlainOldJavaObj......
  • 无损检测仪的独特之处与优势解析
    无损检测仪是一种在工业检测领域发挥着重要作用的设备。与其它测厚仪相比,无损检测仪具有显著的区别和独特优势。无损检测仪最大的特点在于其非破坏性检测的能力。在检测过程中,它不会对被检测物体造成任何损伤,能够保持物体的完整性和原有性能。这与一些传统的测厚仪形成鲜明对......
  • 200道网络安全常见面试题合集(附答案解析+配套资料)零基础入门到精通,收藏这一篇就足够了
    有不少小伙伴面临跳槽或者找工作,本文总结了常见的安全岗位面试题,方便各位复习。祝各位事业顺利,财运亨通。在网络安全的道路上越走越远!所有的资料都整理成了PDF,面试题和答案将会持续更新,因为无论如何也不可能覆盖所有的面试题。php爆绝对路径方法?单引号引起数据库报错......
  • FMC子卡设计原理图:FMC229-8路DAC&2路ADC 的FMC子卡
    FMC229-8路DAC&2路ADC的FMC子卡 一、板卡概述   FMC229-8路DAC&2路ADC的FMC子卡是公司自主研发的8路250MspsDA16bit,2路AD 250Msps 14bitAD板卡。板卡采用标准FMC子卡架构,可方便的与其他FMC板卡实现高速互联,可广泛用于高频模拟信号采集等场......
  • RAID篇:理解磁盘阵列原理并配置RAID5
    RAID(独立磁盘阵列冗余):一种存储技术,通过将两个或多个硬盘驱动器(HDD)或固态硬盘(SSD)合并成一个协调的存储单元或阵列,从而创建数据丢失的故障安全机制。RAID0:条带化(数据分块),没有冗余,提供较高的读写性能。适用场景:需要高性能而不关心数据冗余的场景(视频编辑和处理、大型数据库应......