基于后量子密码Saber算法的低内存占用实现技术制造技术

技术编号:30319550 阅读:10 留言:0更新日期:2021-10-09 23:26
本发明专利技术公开了一种基于后量子密码Saber算法的低内存占用实现技术,包括密钥生成方法及系统、加密方法及系统、解密方法及系统。其中采用矩阵即时生成来计算多项式矩阵向量乘法,将多项式矩阵所占用的内存空间降低为单个元素所占用的内存大小,显著地降低了Saber方案的内存占用,有利于Saber方案在物联网设备中的部署。部署。部署。

【技术实现步骤摘要】
基于后量子密码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维的多项式列向量,向量中每个元素都是多项式。假设矩阵A中的元素,每个多项式系数为kBytes的数据类型,那么矩阵A占用的内存大小为l
×
l
×
n
×
k Bytes。在上述文献记载的方案中,如l=3,n=256,k=2,则矩阵A占用4.5KB的内存。物联网(IoT)场景中有着数以亿计的资源受限嵌入式设备,这一类设备的特点是计算能力弱、内存资源受限。某些设备的内存只有8KB到64KB,这些内存资源不仅需要用来部署操作系统、业务逻辑还需要部署复杂的密码学组件来保护数据传输安全。Saber较大的内存占用严重阻碍了其在IoT场景中的部署。

技术实现思路

[0004]专利技术目的:针对现有技术中存在的问题,本专利技术提供一种基于后量子密码Saber算法的低内存占用实现技术,包括密钥生成方法及系统、加密方法及系统、解密方法及系统,可以降低Saber方案的内存占用。
[0005]技术方案:本专利技术提供了基于后量子密码Saber算法的低内存占用密钥生成方法,包括:
[0006]S101、生成随机种子Seed
A
和随机变量r;初始化多项式矩阵A的索引i=0,j=0,初始化临时公钥向量所有元素为0;
[0007]S102、根据和随机变量r生成多个伪随机数,并存储到第一存储单元中;所述第一存储单元的空间大小大于等于多项式向量s中所有元素的多项式系数对应的伪随机数所占用的空间大小;根据所述第一存储单元中的伪随机数生成多项式向量s中的元素;
[0008]S103、根据随机种子Seed
A
生成多项式矩阵A第i行j列元素多项式系数对应的伪随机数,并存储到第二存储单元中,如果第二存储单元中有数据,将所述数据覆盖;所述第二存储单元的空间大小大于等于多项式矩阵A一个元素的多项式系数对应的伪随机数所占用的空间大小;
[0009]更新临时公钥向量第j个元素的值:其中a
i,j
为根据第二存储单元生成的多项式矩阵A第i行j列元素,s
i
为多项式向量s第i个元素,为临时公钥向量第j个元素更新前的值;
[0010]S104、如果j<l

1,令j的值加一,跳转到步骤S103,更新临时公钥向量中元素的值;l为多项式向量s的维数;
[0011]如果j=l

1且i<l

1,令j=0,i的值加一,跳转到步骤S103,更新临时公钥向量中元素的值;
[0012]如果j=l

1且i=l

1,计算公钥向量b:
[0013][0014]其中h为预设的常数多项式;多项式矩阵A的元素中多项式系数取值为[0,q),q为取值上界,为正整数,mod为取模运算;>>为逻辑右移,右移位数为ε
q

ε
p
,ε
q
和ε
p
均为预设的正整数常数,且满足ε
q
>ε
p

[0015]返回公钥和私钥,其中随机种子Seed
A
和公钥向量b构成公钥(Seed
A
,b);多项式向量s为私钥。
[0016]本专利技术提供了基于上述密钥生成方法的加密方法,包括:
[0017]S201、初始化多项式矩阵A的索引i=0,j=0,初始化第一密文多项式c1、第二密文向量c2、临时第二密文向量的所有元素值为0;生成随机变量r


[0018]S202、根据随机变量r

生成多个伪随机数,并存储到第四存储单元中;所述第四存储单元的空间大小大于等于多项式向量s

中所有元素的多项式系数对应的伪随机数所占用的空间大小;根据所述第四存储单元中的伪随机数生成多项式向量s

中的元素;
[0019]S203、根据公钥中的随机种子Seed
A
生成多项式矩阵A第i行j列元素多项式系数对应的伪随机数,并存储到第五存储单元中,如果第五存储单元中有数据,将所述数据覆盖;所述第五存储单元的空间大小大于等于多项式矩阵A一个元素的多项式系数对应的伪随机数所占用的空间大小;
[0020]更新临时第二密文向量的第i个元素的值:其中a
i,j
为根据第五存储单元生成的多项式矩阵A第i行j列元素,s

j
为多项式向量s

第j个元素,为临时第二密文向量第i个元素更新前的值;
[0021]S204、如果i<l

1,令i的值加一,跳转到步骤S203,更新临时第二密文向量中元素的值;l为私钥多项式向量s的维数;
[0022]如果i=l

1且j<l

1,令i=0,j的值加一,跳转到步骤S203,更新临时第二密文向量中元素的值;
[0023]如果i=l

1且j=l

1,计算第二密文向量c2:
[0024][0025]其中h为预设的常数多项式;mod为取模运算,q为多项式矩阵A的元素中多项式系数取值上界,为正整数;>>为逻辑右移,右移位数为ε
q

ε
p
,ε
q
和本文档来自技高网
...

【技术保护点】

【技术特征摘要】
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

【专利技术属性】
技术研发人员:刘哲张吉鹏
申请(专利权)人:南京航空航天大学
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1