一种可用于TLS协议的抗量子密钥封装方法与系统

未命名 09-08 阅读:62 评论:0

一种可用于tls协议的抗量子密钥封装方法与系统
技术领域
1.本发明属于密码领域,公开了一种可用于tls协议的抗量子密钥封装方法与系统。


背景技术:

2.基于公钥密码学的密钥封装技术是保证信息安全不可或缺的工具。密钥封装方案,或kem的思想是,发送方使用接收方的公钥对算法内部生成的随机共享密钥加密得到密文,发送方留存该共享密钥并将密文发送给接收方,接收方收到密文后使用对应的私钥解密得到封装在密文中的共享密钥。
3.随着对量子计算机的研究,量子算法(运行在量子计算机上的算法)逐渐被大家所认识。与经典算法不同,量子算法有着更强大的计算能力,一些在经典模型下非常困难的问题,在量子计算理论面前变得简单。经典公钥密码系统大多基于大整数分解,离散对数问题的困难性,如rsa,ecies加密算法等。随着量子计算的发展(如shor算法,grover算法等),许多基于经典数论(如大整数分解问题,离散对数问题等)的密码方案的安全性受到严重挑战,后量子密码学应运而生,其中,基于格的密码学是目前最具前景的候选之一。而在基于格的公钥加密方案中,基于环上容错学习问题(rlwe)以及分块的环上容错学习问题(module rlwe,或m-lwe)的方案,因其相对更小的密钥尺寸以及允许使用ntt变换加速计算的代数结构,成为备受关注的技术路线。
4.在nist的算法征集中,kyber(入选最终标准)和newhope(在第二轮评估中被淘汰)分别包含基于m-lwe和rlwe问题的困难性假设而构造的密钥封装方案。由于二者的设计目标是最终实现ind-cca安全性,只能容忍极低的解密错误率,因此二者所选取的参数都较为保守,模数较大;另一方面,降低模数会以牺牲一定的解密正确率为代价,带来安全性的提升、密钥和通信尺寸的降低以及计算性能的提升。欧密会22年的研究成果表明ind-1cca安全的密钥封装算法,就足以安全地实现tls以及kemtls中使用临时密钥对交换密钥的步骤。而通过将cca安全弱化为1cca安全性,将在构造上减少复杂度从而提高计算性能,并且允许更大的解密错误,从而具有更广泛的参数选择范围。而这样的ind-1cca安全的密钥封装算法,因tls协议在网络安全中的主导地位,其做出的任何性能和通信尺寸上的优化,会影响到全世界网络空间的安全与效率。kemtls则是作为取代tls协议的提议,其在后量子密码上的表现比传统tls协议高,但其中仍有需要ind-1cca安全的密钥封装算法的步骤。因此,本发明通过重新选择参数,允许存在较高的解密错误率,实现ind-1cca而非ind-cca安全的密钥封装协议,实现性能、通信尺寸以及安全性的更好的平衡。


技术实现要素:

5.本发明的目的在于构造一种可用于tls协议的抗量子密钥封装方法与系统,它的特征在于基于rlwe问题困难性,并且相比于目前采用相同技术路线的其他kem方案而言,采用了极小的模数,并允许上界为2-10
(即千分之一)或2-14
(即万分之一)的较大的解密错误率。
6.符号定义。本发明基于格密码的rlwe问题,密钥、加密、解密等计算均定义在多项式环rq=zq[x]/《xn+1》上,其中zq[x]为系数大于小于的整系数多项式构成的环,rq为zq[x]中的多项式再模多项式xn+1所构成的环。
[0007]
本发明定义rq中的维数n=512,模数q=257;
[0008]
本发明采用的技术方案如下:
[0009]
一种可用于tls协议的抗量子密钥封装方法,其步骤包括:
[0010]
1)发起方生成临时的私钥sk和公钥pk,并将公钥pk发送给响应方;
[0011]
2)响应方使用发起方的公钥pk生成封装密文c、共享密钥k和指定报文的消息认证码mac,将(c,mac)返回给发起方;
[0012]
3)发起方使用私钥sk对封装密文c进行解密得到密钥材料m',并根据封装密文c和密钥材料m'计算共享密钥k',然后使用k'计算所述指定报文的消息认证码mac',若mac'与mac一致,则密钥共享成功并输出k',否则密钥共享失败并返回错误码。
[0013]
进一步的,步骤1)中生成私钥sk和公钥pk的方法为:
[0014]
11)均匀随机生成公共参数a∈rq;rq为多项式环;
[0015]
12)从短向量分布χ中采样生成私钥s,从短向量分布χ'中,采样生成误差e;
[0016]
13)计算公钥b=a
·
s+e,其中乘法与加法均为在多项式环rq上的多项式乘法与加法;
[0017]
14)将私钥s序列化作为临时的私钥sk,将(b,a)序列化作为临时的公钥pk。
[0018]
进一步的,步骤2)中生成封装密文c、共享密钥k和指定报文的消息认证码mac的方法为:
[0019]
21)生成一密钥材料m,使用指定映射f:{0,1}
256
→rq
将m映射为多项式环rq中元素mr=f(m);所述公钥pk包括从多项式环rq上选取的随机参数a,以及基于a和sk计算得到的参数b;所述多项式环rq中模多项式次数n=512、模数q=257;
[0020]
22)从短向量分布χ中采样生成r,从短向量分布χ'中依次采样生成误差e',e”;
[0021]
23)计算密文第一部分u=a
·
r+e'和第二部分v=mr+b
·
r+e”,记封装密文c=(u,v);
[0022]
24)导出共享密钥k=h(m,c),其中h为公共的哈希函数,并使用k生成指定报文的消息认证码mac。
[0023]
进一步的,步骤3)中得到所述共享密钥k'的方法为:
[0024]
31)根据私钥s和密文c=(u,v),计算m'r=v-u
·
s;
[0025]
32)使用指定映射g:rq→
{0,1}
256
,将多项式环rq中元素m'r映射回明文密钥材料m'=g(m'r);
[0026]
33)导出共享密钥k'=h(m',c)。
[0027]
进一步的,映射g、f满足:g[f(m)]=m,并且对于所选短向量分布χ在加解封装过程中引入的误差e
*
使得g[f(m)+e
*
]≠m的概率小于设定阈值。
[0028]
进一步的,指定映射f:{0,1}
256
→rq
将m映射为多项式环rq中元素的方法为:将m以二进制比特串表示为m=(m0m1…m255
),并将其映射为多项式环rq中元素其中mi∈{0,1},i=0,1,

,255,x为多项式中
的未定元符号。
[0029]
进一步的,指定映射g:rq→
{0,1}
256
,将多项式环rq中元素m'r映射回明文共享密钥m'=g(m'r)的方法为:记wi为中第i次项xi的系数,输出m'=g(m'r):=(m'0m
’1…
m'
255
),其中对i=0,1,

,255,
[0030][0031]
一种可用于tls协议的抗量子密钥封装系统,其特征在于,包括密钥生成模块、密钥封装模块和密钥解封装模块;
[0032]
所述密钥生成模块,用于生成临时的私钥sk和公钥pk;
[0033]
所述密钥封装模块,用于利用公钥pk生成封装密文c、共享密钥k和指定报文的消息认证码mac;
[0034]
所述密钥解封装模块,用于使用私钥sk由封装密文c进行解密出密钥材料m',并根据封装密文c和密钥材料m'计算得到一共享密钥k',然后使用k'计算所述指定报文的消息认证码mac',若mac'与mac一致,则密钥共享成功并输出k',否则密钥共享失败并返回错误码。
[0035]
一种无认证的密钥交换方法,其特征在于,在tls的握手协议的密钥交换步骤中采用上述方法完成密钥封装,完成密钥交换。
[0036]
一种计算机可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现上述方法的步骤。
[0037]
本发明涉及的组件包括:
[0038]
1.密钥生成算法。无输入,输出私钥sk和公钥pk。
[0039]
2.密钥封装算法。输入公钥pk,输出封装密文c、32字节共享密钥k和消息认证码mac。
[0040]
3.密钥解封装算法。输入私钥sk以及封装密文c和消息认证码mac,输出32字节共享密钥k',或共享失败错误码。
[0041]
发起方执行密钥生成算法生成临时公私钥对,保留其中私钥并发送其中公钥,响应方使用发起方的公钥生成对共享密钥的封装发回给发起方,发起方使用私钥解密得到响应方加密的共享密钥。
[0042]
具体而言,上述密钥生成算法的步骤如下:
[0043]
(1)均匀随机生成公共参数a∈rq;
[0044]
(2)从短向量分布χ中采样生成私钥s,从短向量分布χ'中,采样生成误差e;
[0045]
(3)计算公钥b=a
·
s+e,其中乘法与加法均为在环上的多项式乘法与加法,下文同;
[0046]
(4)输出私钥sk=s与公钥pk=(b,a)。
[0047]
接着,上述密钥封装算法的步骤如下:
[0048]
(1)输入解密方的公钥(b,a),在算法内部获取(而非作为算法输入传入)随机的或伪随机的密钥材料m,并且使用指定映射f:{0,1}
256
→rq
将m映射为环中元素mr=f(m);
[0049]
(2)从短向量分布χ中采样生成r,从短向量分布χ'中依次采样生成误差e',e”;
[0050]
(3)计算密文第一部分u=a
·
r+e'和第二部分v=mr+b
·
r+e”,记密文c=(u,v);
[0051]
(4)导出共享密钥k=h(m,c),其中h为公共的哈希函数,并使用k生成指定报文的消息认证码mac;
[0052]
(5)输出(c,mac,k)。
[0053]
最后,上述密钥解封装算法的步骤如下:
[0054]
(1)输入私钥s和密文c=(u,v);
[0055]
(2)计算m'r=v-u
·
s;
[0056]
(3)使用指定映射g:rq→
{0,1}
256
,将环中元素m'r映射回明文密钥材料m'=g(m'r);其中,g[f(m)]=m,并且对于所选误差分布χ在加解封装过程中(流程上会)引入的误差e
*
使得g[f(m)+e
*
]≠m的概率(即解密错误的概率)较小,小于设定阈值,如小于千分之一或万分之一;
[0057]
(4)导出共享密钥k'=h(m',c),其中h为公共的哈希函数;
[0058]
(5)使用k'计算指定报文的消息认证码mac',若mac'=mac匹配一致,则密钥共享成功并输出k',否则密钥共享失败并返回错误码。
[0059]
应当注意,本方法的加解封装过程有一定概率出现解密错误,即m'≠m,从而出现共享密钥不一致即k'≠k的情况。但只要在受限的应用场景下正确使用,这种情形并不影响满足安全性要求和功能需求。具体而言:
[0060]
1)ind-1cca的kem算法中的公私钥(pk,sk)只作为一次性密钥对使用,完成密钥k的共享后,无论共享成功与否,都即刻销毁(pk,sk);
[0061]
2)假如通过消息认证码mac的验证,确认密钥k的共享失败,则抛弃失败的共享密钥k,重新生成新的kem公私钥对(pk1,sk1),并尝试共享新的密钥k1。
[0062]
由于kem算法中的公私钥对只是一次性的,用完即弃,因此ind-1cca安全性即可满足要求;并且经过一致性确认,即便解密错误即共享失败的概率相比于cca的kem较大,但仍可充分满足功能性需求。
[0063]
本发明涉及的运算模块包括:
[0064]
取模运算模块,用于提供环上乘法运算中模q的运算功能。可以采用montgomery算法等通用性算法实现,也可采用针对模数q=257实现定制化的取模运算。
[0065]
多项式乘法加速运算模块,为环上的多项式乘法提供高性能运算功能,包括ntt变换与逆变换,karatsuba加速的多项式卷积乘法。对于环上的两个多项式相乘,采用先分别做ntt变换,再按分量做karatsuba乘法(记为),对所得乘积结果的向量做ntt逆变换,即可高效地得到这两个多项式在环上的乘积。
[0066]
伪随机数生成器模块,实现伪随机数生成功能,用于提供密码运算中的随机参数或密钥。
[0067]
序列化与解序列化模块,用于实现密码运算元素与计算机存储数据之间的转换。
[0068]
哈希与消息认证码计算模块,用于使用密钥材料m及其密文c导出共享密钥,以及根据报文和共享密钥k计算消息认证码。
[0069]
密钥生成模块,用于生成封装和解封装用的公钥pk和私钥sk,期间会调用伪随机数生成器模块用于生成随机参数以及进行短向量分布的采样,并且会调用取模运算以及多项式乘法加速运算模块进行公私钥的生成计算,最后会调用序列化模块对生成的密钥对进
行序列化。
[0070]
密钥封装模块,用于使用公钥pk将随机生成的密钥材料m加密为封装密文c,并导出共享密钥k。期间会调用解序列化模块对公钥解序列化,伪随机数生成器模块用于生成随机参数以及进行短向量分布的采样,并且会调用取模运算以及多项式乘法加速运算模块进行密文生成过程的运算,最后会调用序列化模块对生成的密文进行序列化。
[0071]
密钥解封装模块,用于使用私钥sk将封装密文c解密为密钥材料m',并导出共享密钥k'。期间会调用解序列化模块对私钥和密文分别解序列化,并且会调用取模运算以及多项式乘法加速运算模块进行解密过程的运算,最后输出解密所得共享密钥k'或返回共享失败错误码。
[0072]
应当注意,本方法的加解封装过程有一定概率出现解密错误,即m'≠m,从而出现共享密钥不一致即k'≠k的情况。但只要在受限的应用场景下正确使用,这种情形并不影响满足安全性要求和功能需求。同前文所述,不再赘述。
[0073]
本发明基于对使用小模数并允许宽松的解密错误率的ind-cpa安全的pke的变换,实现了具有较小密钥密文尺寸和较高计算性能的ind-1cca-mac安全方案。本发明中的密钥封装方案可以应用于tls的握手协议中,用于无认证的密钥交换步骤,实现一种新的无认证的密钥交换方法。本发明通过将ind-cca安全性弱化为ind-1cca安全,采用相比实现前者的方案更简单的构造方式,以及对解密错误更低的要求,实现了性能的提升,以及更激进的参数选择。
[0074]
与现有技术相比,本发明的积极效果为:
[0075]
cca安全的密钥封装方案,往往由cpa安全的公钥加密方案经过特定构造的变换而来,而本方案设计的目标安全性定义为较弱的1cca安全(只允许一次解密预言机询问的选择密文安全性)而非较强的cca安全(选择密文安全性),具有以下优点:1)tls1.3协议中可以使用ind-1cca安全的密钥封装算法。2)存在构造1cca安全的变换,能比构造cca安全更简单,从而能够减少算法的运算开销,提高运算性能;3)构造1cca安全的变换,相比构造cca安全的变换,对解密错误的要求较低,即允许变换底层的公钥加密方案具有较大的解密错误率,于是我们可以选择使解密错误较高,但1cca抗量子安全性更强、通信尺寸更小的参数。因tls协议在网络安全中的主导地位,其做出的任何性能和通信尺寸上的优化,会影响到全世界网络空间的安全与效率。因此,本发明通过重新选择参数,允许存在较高的解密错误率,实现ind-1cca而非ind-cca安全的密钥封装协议,实现性能、通信尺寸以及安全性的更好的平衡。
附图说明
[0076]
图1是本发明实施例提供的密钥生成模块的流程图。
[0077]
图2是本发明实施例提供的密钥封装模块的流程图。
[0078]
图3是本发明实施例提供的密钥解封装模块的流程图。
具体实施方式
[0079]
为使本发明的上述目的、特征和优点能够更加明显易懂,下面通过具体实施例和附图,对本发明做进一步详细说明。
[0080]
图1、图2、图3是本发明实施例提供的一组密钥生成、密钥封装、密钥解封装模块的流程图。
[0081]
所述实施例中,私钥和误差采样的短向量分布,均使用参数k=1的中心二项分布ψ1=b-b',其中b与b'为{0,1}中的均匀采样值,即χ=χ'=ψ1.
[0082]
所述实施例对环上的多项式乘法,采用ntt与karatsuba乘法相结合的方式进行加速。具体而言,对于模数q=257,已知系数域zq包含模q的256次本原单位根即满足ζ
256
≡1(mod q)且ζd≠1(mod q),满足该条件的不同取值的本原单位根共计有个,并且对任意选定的其中一个ζ,全部256次本原单位根可表示为{ζ,ζ3,ζ5,


255
},其中ζ的指数与256互素,即取遍所有小于256的正奇数。
[0083]
所述实施例取ζ为模q的第一个256次本原单位根ζ=3,则环rq所模多项式x
512
+1在zq[x]中可因式分解为:
[0084][0085]
其中br7(i),i=0,

,127表示7bit正整数i的比特逆序。抽象代数中的中国剩余定理表明,对f=f0+f1x+

+f
511
x
511
∈rq,可通过ntt变换同构于模各因子多项式的子环上多项式组成的向量,且变换结果的乘法为其按分量乘法,加法为其按分量加法:
[0086][0087]
其中,
[0088]
记rq中的元素经上述变换得到的所有多项式向量组成的环为对任意定义按分量乘法定义按分量乘法其中每个分量f
igi
分别为在对应子环上的多项式乘法,采用karatsuba乘法进行加速运算。在下文中,将上述的同构变换记为并记其逆变换为并且对于任意f,g∈rq,等式两边计算rq中f,g乘积的结果是一致的。
[0089]
图1是本发明实施例提供的密钥生成模块。
[0090]
所述实施例中,为了节省通信尺寸,公钥中的a以用来生成它的随机种子代替,并且为了避免多项式乘法运算时重复计算ntt变换,密钥以ntt变换后的形式进行存储与发布。
[0091]
所述实施例中,密钥生成模块步骤为:
[0092]
(1)采集随机种子seed,将其输入指定的伪随机函数并扩展生成公共参数(1)采集随机种子seed,将其输入指定的伪随机函数并扩展生成公共参数是由128个3次多项式组成的向量,按照系数生成赋值,每个系数均匀取自[0,q-1]∩z,即{0,1,

,256};
[0093]
(2)从中心二项分布ψ1中,采样生成私钥s与误差e;
[0094]
(3)对s与e执行ntt变换,得到与
[0095]
(4)计算公钥
[0096]
(5)将私钥序列化并记为公钥序列化并记为
[0097]
图2是本发明实施例提供的密钥封装模块。
[0098]
所述实施例中,应当注意,密钥材料的(伪)随机性的来源不应采用与公共参数相同的伪随机数生成器,其随机性应来源于其他依赖于真随机源,或依赖于真随机源的伪随机生成器。
[0099]
所述实施例中,把所采集的密钥材料m映射到环元素上的方式,指定为messagetoring(m),其将密钥材料中的一比特按特定的位置规则,冗余编码在环元素中两个相应次数项系数的高位比特中,具体定义将在步骤中描述。
[0100]
所属实施例中,为了节省通信尺寸,采用环元素压缩技术,以引入适当的额外误差为代价,将密文的第二部分v压缩为v
comp

[0101]
所述实施例中,公共的哈希函数记为h(
·
),以密钥k和报文t作为输入的mac计算函数记为gk(t),具体可采用hmac,cmac等标准的mac计算方案实现。
[0102]
所述实施例中,作为mac计算函数输入的约定报文,定为t=0x01;此报文双方一致即可,没有其他特殊的取值要求。
[0103]
所述实施例中,密钥封装模块步骤为:
[0104]
(1)输入解密方的公钥pk,对其解序列化得到并将其中的随机种子seed输入指定的伪随机函数,扩展生成公共参数在正确执行下,将与密钥生成算法中所得到的一致;
[0105]
(2)采集随机的密钥材料m=(m0m1…m255
),其中mi∈{0,1},即m的二进制比特表示,并将其映射为环中元素
[0106]
(3)从中心二项分布ψ1中,采样生成r与两项误差e',e”;
[0107]
(4)对r与e'执行ntt变换,得到与
[0108]
(5)计算密文第一部分
[0109]
(6)计算密文第二部分并压缩得到v
comp

[0110]
(7)将密文序列化并记为
[0111]
(8)导出共享密钥k=h(m,c),并使用k计算消息认证码mac=gk(0x01);
[0112]
(9)输出(c,mac,k)。
[0113]
图3是本发明实施例提供的密钥解封装模块。
[0114]
所述实施例中,把解密恢复的环元素m'r映射回明文的密钥材料的方式,指定为ringtomessage(m'r),其将环元素中两个特定次数项系数,按照其平均值更接近0比特的编码还是1比特的编码,判断并输出密钥材料的一比特。具体定义将在步骤中描述。
[0115]
所述实施例中,密钥解封装模块步骤为:
[0116]
(1)输入私钥sk,对其解序列化得到
[0117]
(2)输入密文c,对其解序列化得到对v
comp
解压缩得到v';
[0118]
(3)输入消息认证码mac;
[0119]
(4)计算
[0120]
(5)m'r是511次多项式,记wi为中第i次项xi的系数,输出m'=ringtomessage(m'r)=(m'0m
’1…
m'
255
),其中对i∈{0,1,

,255},
[0121][0122]
(6)导出共享密钥k'=h(m',c),并使用k'计算消息认证码mac'=g
k'
(0x01);
[0123]
(7)判断是否有mac'=mac匹配一致,若一致,则密钥共享成功并输出k',否则密钥共享失败并返回错误码。
[0124]
所述实施例中,加解封装过程出现解密错误的概率,即m'≠m从而导致k'≠k的理论概率约为2-16
≈0.0015%,即平均6万余次里会有一次解密错误。
[0125]
本发明可以应用在使用临时生成的密钥对实现密钥共享的场景或协议步骤中,例如,tls协议的密钥交换步骤、kemtls协议的密钥交换步骤等。
[0126]
本发明的另一实施例提供一种高效的ind-1cca-mac安全抗量子密钥封装方法,其包括密钥生成算法、密钥封装算法和密钥解封装算法。其中各算法的具体实施过程参见前文对本发明方法的描述。
[0127]
本发明的另一实施例提供一种计算机设备(计算机、服务器、智能手机等),其包括存储器和处理器,所述存储器存储计算机程序,所述计算机程序被配置为由所述处理器执行,所述计算机程序包括用于执行本发明方法中各步骤的指令。
[0128]
本发明的另一实施例提供一种计算机可读存储介质(如rom/ram、磁盘、光盘),所述计算机可读存储介质存储计算机程序,所述计算机程序被计算机执行时,实现本发明方法的各个步骤。
[0129]
以上公开的本发明的具体实施例,其目的在于帮助理解本发明的内容并据以实施,本领域的普通技术人员可以理解,在不脱离本发明的精神和范围内,各种替换、变化和修改都是可能的。本发明不应局限于本说明书的实施例所公开的内容,本发明的保护范围以权利要求书界定的范围为准。

技术特征:
1.一种可用于tls协议的抗量子密钥封装方法,其步骤包括:1)发起方生成临时的私钥sk和公钥pk,并将公钥pk发送给响应方;2)响应方使用发起方的公钥pk生成封装密文c、共享密钥k和指定报文的消息认证码mac,将(c,mac)返回给发起方;3)发起方使用私钥sk对封装密文c进行解密得到密钥材料m',并根据封装密文c和密钥材料m'计算共享密钥k',然后使用k'计算所述指定报文的消息认证码mac',若mac'与mac一致,则密钥共享成功并输出k',否则密钥共享失败并返回错误码。2.根据权利要求1所述的方法,其特征在于,步骤1)中生成私钥sk和公钥pk的方法为:11)均匀随机生成公共参数a∈r
q
;r
q
为多项式环;12)从短向量分布χ中采样生成私钥s,从短向量分布χ'中,采样生成误差e;13)计算公钥b=a
·
s+e,其中乘法与加法均为在多项式环r
q
上的多项式乘法与加法;14)将私钥s序列化作为临时的私钥sk,将(b,a)序列化作为临时的公钥pk。3.根据权利要求2所述的方法,其特征在于,步骤2)中生成封装密文c、共享密钥k和指定报文的消息认证码mac的方法为:21)生成一密钥材料m,使用指定映射f:{0,1}
256

r
q
将m映射为多项式环r
q
中元素m
r
=f(m);所述公钥pk包括从多项式环r
q
上选取的随机参数a,以及基于a和sk计算得到的参数b;所述多项式环r
q
中模多项式次数n=512、模数q=257;22)从短向量分布χ中采样生成r,从短向量分布χ'中依次采样生成误差e',e”;23)计算密文第一部分u=a
·
r+e'和第二部分v=m
r
+b
·
r+e”,记封装密文c=(u,v);24)导出共享密钥k=h(m,c),其中h为公共的哈希函数,并使用k生成指定报文的消息认证码mac。4.根据权利要求3所述的方法,其特征在于,步骤3)中得到所述共享密钥k'的方法为:31)根据私钥s和密文c=(u,v),计算m'
r
=v-u
·
s;32)使用指定映射g:r
q

{0,1}
256
,将多项式环r
q
中元素m'
r
映射回明文密钥材料m'=g(m'
r
);33)导出共享密钥k'=h(m',c)。5.根据权利要求4所述的方法,其特征在于,映射g、f满足:g[f(m)]=m,并且对于所选短向量分布χ在加解封装过程中引入的误差e
*
使得g[f(m)+e
*
]≠m的概率小于设定阈值。6.根据权利要求3所述的方法,其特征在于,指定映射f:{0,1}
256

r
q
将m映射为多项式环r
q
中元素的方法为:将m以二进制比特串表示为m=(m0m1…
m
255
),并将其映射为多项式环r
q
中元素其中m
i
∈{0,1},i=0,1,

,255,x为多项式中的未定元符号。7.根据权利要求4所述的方法,其特征在于,指定映射g:r
q

{0,1}
256
,将多项式环r
q
中元素m'
r
映射回明文共享密钥m'=g(m'
r
)的方法为:记w
i
为中第i次项x
i
的系数,输出m'=g(m'
r
):=(m'0m1'

m'
255
),其中对i=0,1,

,255,
8.一种可用于tls协议的抗量子密钥封装系统,其特征在于,包括密钥生成模块、密钥封装模块和密钥解封装模块;所述密钥生成模块,用于生成临时的私钥sk和公钥pk;所述密钥封装模块,用于利用公钥pk生成封装密文c、共享密钥k和指定报文的消息认证码mac;所述密钥解封装模块,用于使用私钥sk由封装密文c进行解密出密钥材料m',并根据封装密文c和密钥材料m'计算得到一共享密钥k',然后使用k'计算所述指定报文的消息认证码mac',若mac'与mac一致,则密钥共享成功并输出k',否则密钥共享失败并返回错误码。9.一种无认证的密钥交换方法,其特征在于,在tls的握手协议的密钥交换步骤中采用权利要求1所述方法完成密钥封装,完成密钥交换。10.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现权利要求1至7任一所述方法的步骤。

技术总结
本发明公开了一种可用于TLS协议的抗量子密钥封装方法与系统。本方法为:1)发起方生成临时的私钥sk和公钥pk,并将pk发送给响应方;2)响应方使用发起方的公钥pk生成封装密文c、共享密钥K和指定报文的消息认证码MAC,将(c,MAC)返回给发起方;3)发起方使用私钥sk对封装密文c进行解密得到密钥材料m',并根据封装密文c和密钥材料m'计算共享密钥K',然后使用K'计算所述指定报文的消息认证码MAC',若MAC'与MAC一致,则密钥共享成功并输出K',否则密钥共享失败并返回错误码。享失败并返回错误码。享失败并返回错误码。


技术研发人员:陈隆 张振峰 庄子迪 韩将
受保护的技术使用者:中国科学院软件研究所
技术研发日:2023.05.31
技术公布日:2023/9/6
版权声明

本文仅代表作者观点,不代表航家之家立场。
本文系作者授权航家号发表,未经原创作者书面授权,任何单位或个人不得引用、复制、转载、摘编、链接或以其他任何方式复制发表。任何单位或个人在获得书面授权使用航空之家内容时,须注明作者及来源 “航空之家”。如非法使用航空之家的部分或全部内容的,航空之家将依法追究其法律责任。(航空之家官方QQ:2926969996)

航空之家 https://www.aerohome.com.cn/

飞机超市 https://mall.aerohome.com.cn/

航空资讯 https://news.aerohome.com.cn/

分享:

扫一扫在手机阅读、分享本文

相关推荐