【技术实现步骤摘要】
基于NTT和INTT结构的多项式乘法运算方法和多项式乘法器
[0001]本专利技术涉及格密码环多项式乘法,尤其涉及一种基于NTT和INTT结构的多项式乘法运算方法和多项式乘法器。
技术介绍
[0002]随着云计算技术的飞速发展,针对云端数据的隐私保护问题日益突显。全同态密码因为具有良好的密文同态计算性质,能够对密文直接进行密态计算而不需要解密,已经广泛应用于云计算隐私保护和外包计算。其中基于环上的错误学习问题(Ring Learning With Error,RLWE)的全同态密码算法因具有更高的效率,得到了更为广泛的发展。而多项式乘法运算是基于RLWE的全同态密码运算中最为复杂和耗时的计算单元,是制约全同态密码运算性能的关键模块。
[0003]目前主流的面向全同态密码运算的多项式乘法器主要采用数论变换(NumberTheoretic Transform,NTT)算法实现,相比于教科书式的多项式乘法器和基于Karatsuba算法的多项式乘法器,基于NTT的多项式乘法器的计算复杂度可以降低为次线性复杂度O(nlogn)。对于给定的两个环上的多项式a(x)和b(x),假设环为多项式维度N为2的幂次,q为多项式环R
q
的模数,且q满足q=1mod2N,ω
N
为N阶本原单位根,为ω
N
在模数q上的逆元,且满足:而ψ
2N
为预处理因子,且满足为预处理因子,且满足为后处理因子,是ψ
2N
在模数q上的逆元,满足对于多项式:
[ ...
【技术保护点】
【技术特征摘要】
1.一种基于NTT和INTT结构的多项式乘法运算方法,其特征在于,包括:将预处理步骤与NTT变换进行合并,得到合并NTT变换,并分别对输入的多项式a(x)和b(x)进行所述合并NTT变换,得到多项式A(x)和B(x);对多项式A(x)和B(x)的系数执行点乘运算,得到点乘运算结果C(x):C(x)=A(x)
⊙
B(x)modq,其中,q表示多项式环R
q
的模数;将后处理步骤与INTT变换进行合并,得到合并INTT变换,对C(x)进行所述合并INTT变换,得到c(x)。2.根据权利要求1所述的基于NTT和INTT结构的多项式乘法运算方法,其特征在于,分别对输入的多项式a(x)或b(x)进行所述合并NTT变换,得到A(x)和B(x),包括:步骤1:对输入的多项式a(x)的向量a执行比特逆序操作,得到比特逆序后的多项式向量a;步骤2:当合并NTT变换的运算级数s满足1≤s≤log2N时,执行步骤3;步骤3:当合并NTT变换的蝶形运算步数j满足0≤j<N/2时,执行步骤4;步骤4:计算旋转因子幂次项指数和预处理因子幂次项指数k2=N/2
s
;步骤5:计算蝶形运算步骤:和执行j=j+1,并判断j是否等于N/2,如果等于N/2,跳转至步骤6,否则跳转回步骤4;步骤6:执行s=s+1,并判断s是否等于log2N,如果不等于log2N,则执行a=A,并返回步骤3,否则运算结束,输出多项式A(x),其中,N表示多项式维度,为2的幂次;将b(x)代入上述步骤1中的a(x),输出多项式B(x)。3.根据权利要求1所述的基于NTT和INTT结构的多项式乘法运算方法,其特征在于,所述对C(x)进行所述合并INTT变换,得到c(x),包括:步骤(1):对输入的多项式A(x)的向量A,当INTT变换的运算级数1≤s≤log2N时,执行步骤(2);步骤(2):当INTT变换的蝶形运算步数j满足0≤j<N/2时,执行步骤(3);步骤(3):计算旋转因子幂次项指数和后处理因子幂次项指数k2=2
s
‑1;步骤(4):计算蝶形运算步骤:a[2j]
←
(A[j]+A[j+N/2])
·2‑1modq和执行j=j+1,并判断j是否等于N/2,如果等于N/2,跳转至步骤(5),否则跳转回步骤(3);步骤(5):执行s=s+1,并判断s是否等于log2N,如果不等于log2N,则执行A=a,并返回步骤(2),否则执行步骤(6);步骤(6):对输出的多项式向量a执行比特逆序操作,得到比特逆序后的多项式向量a,得到多项式a(x),其中,C(x)代入上述步骤(1)中A(x),得到多项式c(x)。4.一种多项式乘法器,其特征在于,包括可重构乘法器模块,所述可重构乘法器模块执行如上述任一项权利要求1
‑
3所述的基于NTT和INTT结构的多项式乘法运算方法。5.根据权利要求4所述的多项式乘法器,其特征在于,所述多项式乘法器还包括NTT旋
转因子存储器、INTT旋转因子存储器、第一存储块、第二存储块、第一数据选择器和第二数据选择器,所述NTT旋转因子存储器,用于存储所述合并NTT变换的NTT旋转因子;所述INTT旋转因子存储器,用于存储所述合并INTT变换的INTT旋转因子;所述第一存储块和第二存储块用于存放外部输入或输出到外部的多项式系数;所述第一数据选择器由多个数据选择器构成,用于在所述第一存储块和第二存储块中选择数据进行读出或写入;所述第二数据选择器仅由一个数据选择器构成,用于选择参与所述可重构乘法器模块运算的数据;其中,当所述多项式乘法器执行NTT变换时,所述第一数据选择器持续从第一存储块中读取两个多项式系数并将所述多项式系数发送至所述可重构乘法器模块,所述第二数据选择器持续从NTT旋转因子存储器读取NTT旋转因子并将所述NTT旋转因子发送至所述可重构乘法器模块,直至所述第一存储块中的所有多项式系数都读取完毕;所述可重构乘法器模块基于所述多项式系数和NTT旋转因子进行一级蝶形运算,得到一级NTT运算结果并将所有所述一级NTT运算结果存储到所述第二存储块;所述第一数据选择器持续从所述第二存储块中读取两个所述一级NTT运算结果并将所述一级NTT运算结果发送至所述可重构乘法器模块,所述第二数据选择器持续从NTT旋转因子存储器读取NTT旋转因子并将所述NTT旋转因子发送至所述可重构乘法器模块,直至所述第二存储块中的所有NTT一级运算结果都读取完毕;所述可重构乘法器模块基于所述一级NTT运算结果和NTT旋转因子进行二级蝶形运算,得到二级NTT运算结果并将所有所述二级NTT运算结果存储到所述第一存储块;依次类推,直至所述可重构乘法器模块完...
【专利技术属性】
技术研发人员:苏阳,杨晨,杨百龙,赵松银,
申请(专利权)人:中国人民武装警察部队工程大学,
类型:发明
国别省市:
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。