一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

一种应用在格密码加密的多项式乘法计算方法

2022-12-10 13:19:17 来源:中国专利 TAG:


1.本发明属于后量子加密技术领域,具体涉及一种应用在格密码加密的多项式乘法计算方法。


背景技术:

2.随着量子计算机的问世,传统的公钥加密体制如rsa、ecc逐渐被shor算法破解,这会致使保密信息的安全性大大降低。目前,针对抗量子计算方面,人们做了大量研究工作。现有的抗量子加密协议主要应用到了基于格、基于编码、基于格、基于超奇异同源等理论,其中受到广泛关注的是基于格的加密算法,在基于格的后量子密码中,多项式乘法是其中极为耗时的操作,普通的多项式乘法的算法复杂度为o(n2),并且需要对多项式维度进行0填充,但是基于数论变换(number theoretic transform,ntt)的多项式乘法计算可以将计算复杂度降低到o(nlogn)。与传统的在实数域进行的多项式乘法不同的是,格密码中的多项式乘法是在多项式环zg/xn 1下进行计算的,环中的q对应后量子加密协议中的模数,并且多项式的每个系数范围在0到q之间,n为多项式的系数个数,一般取为2的幂次,q满足q=1mod 2n,ωn为模数q的n阶单位原根,γ
2n
为模数q的2n次单位原根并且满足对两个n维的多项式进行运算时,基于负包卷积(negative wrapped convolution,nwc)算法的ntt多项乘法可以避免0填充,但是要对多项式乘法的两个输入进行预处理,并且在逆数论变换(inverse number theoretic transform,intt)后对向量进行后处理。
3.给定两个多项式,如下式(1)(2)所示:
[0004][0005][0006]
基于nwc乘法的运算步骤如下:
[0007]
1.对输入的两个多项式向量乘以进行预处理,
[0008]
2.对向量的元素分别执行ntt变换,根据ntt变换公式得到两个ntt域中的向量a=(a0,a1,...,a
n-1
),b=(b0,b1,...,b
n-1
);
[0009]
3.对两个ntt域中的向量进行对应点乘操作得到c,即c=(a0b0,a1b1,...,a
n-1bn-1
)=(c0,c1,...,c
n-1
);
[0010]
4.根据intt的公式对c进行逆ntt变换,即4.根据intt的公式对c进行逆ntt变换,即得到
[0011]
5.对向量中的元素分别乘以进行后处理,最后得到目的向量


技术实现要素:

[0012]
本发明克服了上述技术的不足,提供了一种应用在格密码加密的多项式乘法计算方法,旨在解决在格密码中模数不同条件下的ntt和intt的快速运算,以及引入的预处理和后处理的运算开销问题。
[0013]
第一方面,本发明实施例提供了一种基于k-red模乘运算方法,主要是针对模数为12289的多项式乘法进行模乘运算,主要包括:
[0014]
根据模数q=k*2
p
1的特殊性质,确定每个模数对应的因子k的大小,之后将两系数相乘的结果进行比特拆分,分成低位部分x0、中间部分x1以及高位部分x2。计算k2x
0-kx1 x2的结果,最后加上模数q的整数倍就是模乘结果。
[0015]
第二方面,本发明实施例提供了一种快速计算ntt和intt的方法。该方法将预处理步骤、模乘因子k以及ntt变换进行合并,得到调和ntt变换公式,之后分别对两个输入多项式a(x)和b(x)进行调和ntt变换;得到的a(x)和b(x)进行对应点乘得到c(x);最后将后处理步骤、k的模逆,intt变换合并成调和intt变换,对点乘结果c(x)进行调和intt变换得到目标结果c(x)。
附图说明
[0016]
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
[0017]
图1是本发明实施例中k-red模乘算法流程图;
[0018]
图2是本发明实施例基于调和ntt和调和intt变换的示意图。
具体实施方式
[0019]
为使本发明的目的、技术方案和优点更加清楚明了,下面将结合具体实施方式并参照附图,对本发明进一步详细说明。应当理解,这些描述只是示例性的,而并非要限制本发明的范围。还应当理解,当在本说明书和所附权利要求书中使用时,术语“包含”和“包括”指示所描述特征、整体、步骤、操作、元素和/或组件的存在,但不排除一个或多个其它特征、整体、步骤、操作、元素和/或其集合的存在或添加。此外,在以下说明中,省略了对公知结构和技术的描述,以避免不必要地混淆本发明的概念。
[0020]
示例性方法
[0021]
图1示意性地示出了根据本公开实施例的基于k-red模乘运算方法的一种示例性的处理流程100。
[0022]
如图1所示,处理流程100开始后,首先执行步骤s110。
[0023]
步骤s110、输入a,b两个整数,它们的范围都在[0,(q-1)2)之间;
[0024]
步骤s120、根据模数q=k*2
p
1的特殊性质,找出k的大小,比如当q为12289时,k=3;
[0025]
步骤s130、计算a和b相乘的结果x,并模2的p次幂,得到x的低p位比特x0;
[0026]
步骤s140、计算得到x除以2的p次幂的商x1并模2的p次幂的结果,即x1=x/2
p
mod 2
p
,此时x1表示x的第p位至第2p-1位;
[0027]
步骤s150、计算得到x除以2的2p次幂的商x2,即x2=x/2
2p
,此时的x2表示x的高位部分;
[0028]
步骤s160、最后计算出模乘的结果k2x
0-kx1 x2。
[0029]
如图2所示,一种基于ntt和intt结构的多项式乘法运算方法包括:
[0030]
将预处理、模乘因子和ntt变换进行合并,得到调和ntt变换,并分别对输入的两个多项式a(x)和b(x)进行调和ntt变换,得到a(x)和b(x);
[0031]
对a(x)和b(x)进行逐点相乘,得到ntt域下的结果c(x);
[0032]
对c(x)进行调和intt变换得到c(x);
[0033]
在一实施例中,分别对输入的两个多项式a(x)和b(x)进行调和ntt变换,得到a(x)和b(x),包括:
[0034]
步骤1:调和ntt变换的传输级数l满足1≤l≤log2n条件时,并且m=2
l
,执行步骤2;
[0035]
步骤2:执行l=l 1,控制旋转因子个数的j满足0≤j≤2
l-1-1条件时执行步骤3;
[0036]
步骤3:执行j=j 1,每个旋转因子的参与运算的蝶形单元个数为k,k满足0≤k≤n-1条件时,执行步骤4;
[0037]
步骤4:执行计算蝶形单元步骤:
[0038][0038]
k以m为步进长度参与蝶形运算,执行k=k m,当k>n-1时,跳转到步骤2;当j>2
l-1-1时,跳转到步骤1;当l>log2n时执行步骤5;
[0039]
步骤5:执行a=a,得到调和ntt变换结果;
[0040]
本实施例将预处理步骤、模乘因子合并到ntt变换的方法可以避免预处理操作和k-red引入的k的影响,一个n-1次的多项式可减少n次乘法的预处理操作。
[0041]
由ntt的变换公式推导出的调和ntt变换公式如下:
[0042][0043]
根据时域抽取(decimation in time,dit)的方法,将调和ntt变换拆成奇数项求和和偶数项求和,如式(4)所示:
[0044][0045]
根据旋转因子的约简性和周期性,得到如下公式(5)(6):
[0046][0047]
[0048]
令可以得到如下公式(7)(8):
[0049][0050][0051]
由公式(7)(8)可以得知原来n点的调和ntt变换变成n/2点的变换,采用上述方式,可以递归到计算2点的ntt变换。
[0052]
本实施例将后处理步骤、模乘因子合并到intt变换的方法可以避免后处理操作和k-red引入的k的影响,一个n-1次的多项式可减少n次乘法的后处理操作。
[0053]
由intt变换公式变成的调和intt变换公式如式(9)所示:
[0054][0055]
根据频率抽取(decimation in frequency,dif)的方法,将intt变换分成前n/2和后n/2部分,并将j的范围从[n/2,n-1]调整到[0,n/2-1]得到式(10);
[0056][0057]
根据下标j的奇偶性,将式(10)拆分成(11)(12)所示:
[0058][0059][0060]
根据旋转因子的约减性和周期性,将式(11)(12)表示为式(13)(14):
[0061][0062][0063]
通过(13)(14)可知n点的intt变换可以由n/2点的intt变换,采用上述方式,可以递归到计算2点的intt变换。
[0064]
本发明相对于之前的负包卷积计算方法有着更低的计算复杂度,应用调和ntt变换可以减少n次预处理过程,应用调和intt变换可以减少n次后处理过程。
[0065]
应当理解的是,本发明的上述具体实施方式仅仅用于示例性说明或解释本发明的原理,而不构成对本发明的限制。因此,在不偏离本发明的精神和范围的情况下所做的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。此外,本发明所附权利要求旨在涵盖落入所附权利要求范围和边界、或者这种范围和边界的等同形式内的全部变化和修改例。
再多了解一些

本文用于创业者技术爱好者查询,仅供学习研究,如用于商业用途,请联系技术所有人。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献