【技术实现步骤摘要】
基于后量子密码Saber算法的低内存占用实现技术
[0001]本专利技术属于信息安全
,具体涉及一种基于后量子密码Saber算法的低内存占用密钥生成方法、加密方法和解密方法。
技术介绍
[0002]随着量子计算机的快速发展,传统公钥密码受到了前所未有的威胁。因此,国内外越来越重视后量子密码的发展,后量子密码是一种能抵抗量子计算机攻击的一类密码,并且其运算效率普遍优于传统的公钥密码算法。在后量子密码中,格密码是最有希望成为未来后量子时代公钥密码标准的一类密码,其中基于模格的密码算法因为其更好的灵活性和效率,备受关注。后量子密码Saber是基于模格构建的密钥封装方案,与其他方案相比,其具有简洁、高效的优点。
[0003]文献《SABER:Mod
‑
LWR based KEM(Round 3Submission)》中介绍了Saber算法密钥生成、加密、解密的流程,见2.4.1
‑
2.4.3。其中密钥生成部分通过运算生成公钥和私钥,加密部分采用公钥对消息多项式进行加密得到密文,解密部分用私钥对密文进行解密。在该方案中,计算量最大的模块是矩阵向量乘法,其底层依靠多项式乘法。由于计算量大,其占用内存空间也较大。矩阵向量乘法在Saber方案中出现了两次,分别为用于计算密钥生成算法的A
T
s和加密算法的As
′
。其中A表示l
×
l维的多项式矩阵,矩阵中每个元素都是项数为n的多项式,A
T
表示矩阵A的转置,s表示l ...
【技术保护点】
【技术特征摘要】
1.一种基于后量子密码Saber算法的低内存占用密钥生成方法,其特征在于,包括:S101、生成随机种子Seed
A
和随机变量r;初始化多项式矩阵A的索引i=0,j=0,初始化临时公钥向量所有元素为0;S102、根据随机变量r生成多个伪随机数,并存储到第一存储单元中;所述第一存储单元的空间大小大于等于多项式向量s中所有元素的多项式系数对应的伪随机数所占用的空间大小;根据所述第一存储单元中的伪随机数生成多项式向量s中的元素;S103、根据随机种子Seed
A
生成多项式矩阵A第i行j列元素多项式系数对应的伪随机数,并存储到第二存储单元中,如果第二存储单元中有数据,将所述数据覆盖;所述第二存储单元的空间大小大于等于多项式矩阵A一个元素的多项式系数对应的伪随机数所占用的空间大小;更新临时公钥向量第j个元素的值:其中a
i,j
为根据第二存储单元生成的多项式矩阵A第i行j列元素,s
i
为多项式向量s第i个元素,为临时公钥向量第j个元素更新前的值;S104、如果j<l
‑
1,令j的值加一,跳转到步骤S103,更新临时公钥向量中元素的值;l为多项式向量s的维数;如果j=l
‑
1且i<l
‑
1,令j=0,i的值加一,跳转到步骤S103,更新临时公钥向量中元素的值;如果j=l
‑
1且i=l
‑
1,计算公钥向量b:其中h为预设的常数多项式;多项式矩阵A的元素中多项式系数取值为[0,q),q为取值上界,为正整数,mod为取模运算;>>为逻辑右移,右移位数为ε
q
‑
ε
p
,ε
q
和ε
p
均为预设的正整数常数,且满足ε
q
>ε
p
;返回公钥和私钥,其中随机种子Seed
A
和公钥向量b构成公钥(Seed
A
,b);多项式向量s为私钥。2.根据权利要求1所述的密钥生成方法,其特征在于,所述多项式向量s中元素的多项式系数对应的伪随机数采用即时生成,具体为:所述步骤S102中,先根据随机变量r生成多项式向量s第i个元素的多项式系数对应的多个伪随机数,并存储到第三存储单元中,所述第三存储单元的空间大小大于等于多项式向量s中一个元素的多项式系数对应的伪随机数所占用的空间大小;根据第三存储单元中的伪随机数计算多项式向量s第i个元素s
i
;所述步骤S104中,当j=l
‑
1且i<l
‑
1时,i的值加一之后还包括:根据随机变量r生成多项式向量s第i个元素的多项式系数对应的多个伪随机数,并存储到第三存储单元中,根据第三存储单元中的伪随机数计算多项式向量s第i个元素s
i
;然后再跳转到步骤S103。3.根据权利要求2所述的密钥生成方法,其特征在于,采用SHAKE算法生成伪随机数;所述第三存储单元的空间大小等于多项式向量s中一个元素的多项式系数对应的伪随机数所占用的空间大小;所述第三存储单元划分为第一子单元和第二子单元,所述第一子单元的空间大小为调
用一次伪随机数生成函数所产生的伪随机数占用的空间大小;当计算多项式向量s中元素值时:如果第二子单元中有伪随机数,提取第二子单元中的伪随机数作为当前待生成元素的多项式系数的一部分;再调用伪随机数生成函数,生成的伪随机数存储在第一子单元中,提取第一子单元中的伪随机数作为当前待生成元素的多项式系数的一部分;如果当前待生成元素的多项式系数仍有未确定的,再次调用伪随机数生成函数,生成的伪随机数存储在第一子单元中,从第一子单元中提取需要长度的伪随机数作为当前待生成元素的未确定的多项式系数;如果第一子单元中的伪随机数有未被提取的,将其存储在第二子单元中;如未被提取的数据长度大于第二子单元的空间大小,则将超出部分丢弃。4.根据权利要求1
‑
3中任一项所述密钥生成方法的加密方法,其特征在于,包括:S201、初始化多项式矩阵A的索引i=0,j=0,初始化第一密文多项式c1、第二密文向量c2、临时第二密文向量的所有元素值为0;生成随机变量r
′
;S202、根据随机变量r
′
生成多个伪随机数,并存储到第四存储单元中;所述第四存储单元的空间大小大于等于多项式向量s
′
中所有元素的多项式系数对应的伪随机数所占用的空间大小;根据所述第四存储单元中的伪随机数生成多项式向量s
′
中的元素;S203、根据公钥中的随机种子Seed
A
生成多项式矩阵A第i行j列元素多项式系数对应的伪随机数,并存储到第五存储单元中,如果第五存储单元中有数据,将所述数据覆盖;所述第五存储单元的空间大小大于等于多项式矩阵A一个元素的多项式系数对应的伪随机数所占用的空间大小;更新临时第二密文向量的第i个元素的值:其中a
i,j
为根据第五存储单元生成的多项式矩阵A第i行j列元素,s
′
j
为多项式向量s
′
第j个元素,为临时第二密文向量第i个元素更新前的值;S204、如果i<l
‑
1,令i的值加一,跳转到步骤S203,更新临时第二密文向量中元素的值;l为私钥多项式向量s的维数;如果i=l
‑
1且j<l
‑
1,令i=0,j的值加一,跳转到步骤S203,更新临时第二密文向量中元素的值;如果i=l
‑
1且j=l
‑
1,计算第二密文向量c2:其中h为预设的常数多项式;mod为取模运算,q为多项式矩阵A的元素中多项式系数取值上界,为正整数;>>为逻辑右移,右移位数为ε
q
‑
ε
p
,ε
q
和ε
p
均为预设的正整数常数,且满足ε
q
>ε
p
;S205、根据公钥中的向量b计算第一加密参数v
′
:v
′
=b
T
(s
′
mod p);其中p为第二模数,上标T表示向量或矩阵的转置;计算加密后的消息多项式c
m
:
其中h1为预设的第一常数项,m为待加密的消息多项式,ε
T
为预设的正整数常数,取值满足ε
p
>ε
T
;返回加密后的消息多项式c
m
和第二密文向量c2构成的密文(c
m
,c2)。5.根据权利要求4所述的加密方法,其特征在于,所述多项式向量s
′
中元素的多项式系数对应的伪随机数采用即时生成,具体为:所述步骤S202中,先根据随机变量r
′
生成多项式向量s
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。