基于NTT和INTT结构的多项式乘法运算方法和多项式乘法器技术

技术编号:34720611 阅读:71 留言:0更新日期:2022-08-31 18:05
本发明专利技术公开了一种基于NTT和INTT结构的多项式乘法运算方法和多项式乘法器。该方法包括将预处理步骤与NTT变换进行合并,得到合并NTT变换,并分别对输入的多项式a(x)和b(x)进行合并NTT变换,得到多项式A(x)和B(x);对多项式A(x)和B(x)的系数执行点乘运算,得到点乘运算结果C(x):C(x)=A(x)

【技术实现步骤摘要】
基于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上的逆元,满足对于多项式:
[0004][0005][0006]如图9所示,采用传统的基于负折叠卷积(Negative Wrapped Convolution,NWC)的NTT多项式乘法器的运算步骤如下:
[0007]1、对输入多项式a(x)和b(x)执行预处理步骤,多项式a(x)和b(x)的每个系数分别乘以预处理因子ψ
2N
的j次幂,得到的j次幂,得到
[0008]2、对和的系数分别执行正向NTT变换:的系数分别执行正向NTT变换:并得到转换后的向量A=(A0,A1,A2,...,A
N
‑1)和B=(B0,B1,B2,...,B
N
‑1),即和通过时域抽取(Decimation in Time,DIT)的方法,将NTT变换拆分成基本的蝶形运算单元可以有效加速NTT变换的运算速度,如图8(a),基于恒定几何(Constant Geometry,CG)算法的DIT NTT蝶形运算结构如下:
[0009][0010]其中,旋转因子项步数计数变量级数计数变量s=1,2,...,log2(N);
[0011]3、对A(x)和B(x)的系数执行点乘运算,即
[0012]4、对C(x)的系数执行反向NTT(INTT)变换:并得到转换后的向量即:通过频域抽取(Decimation inFrequency,DIF)的方法,将INTT变换拆分成基本的蝶形运算单元同样可以加速INTT变换的运算速度,如图8(b),基于Constant Geometry算法的DIF INTT蝶形运算结构如下:
[0013][0014]其中,旋转因子项步数计数变量j=0,1,...,N/2

1,级数计数变量s=1,2,...,log2(N);
[0015]5、对执行后处理步骤,多项式的每个系数乘以后处理因子的j次幂,得到
[0016]基于负折叠卷积的NTT多项式乘法器在继承了NTT多项式乘法器低线性复杂度的同时,避免了对多项式a(x)和b(x)进行零填充操作,有效缩短了参与NTT变换的多项式长度。但是,代价是引入了对多项式a(x)和b(x)的预处理步骤和对结果多项式b(x)的后处理步骤,带来了额外的计算开销。另外,对于多项式乘法器的硬件设计,通常需要为NTT变换、INTT变换、点乘以及点乘加运算分别设计单独的硬件结构,带来了额外的硬件资源开销。

技术实现思路

[0017]本专利技术实施例提供了一种基于NTT和INTT结构的多项式乘法运算方法和多项式乘法器,旨在解决现有技术中基于负折叠卷积的NTT多项式乘法器存在额外计算开销的问题。
[0018]第一方面,本专利技术实施例提供了一种基于NTT和INTT结构的多项式乘法运算方法,其包括:
[0019]将预处理步骤与NTT变换进行合并,得到合并NTT变换,并分别对输入的多项式a(x)和b(x)进行合并NTT变换,得到多项式A(x)和B(x);
[0020]对多项式A(x)和B(x)的系数执行点乘运算,得到点乘运算结果C(x):C(x)=A(x)

B(x)mod q,其中,q表示多项式环R
q
的模数;
[0021]将后处理步骤与INTT变换进行合并,得到合并INTT变换,对C(x)进行合并INTT变换,得到c(x)。
[0022]第二方面,本专利技术实施例提供了一种多项式乘法器,包括可重构乘法器模块,所述可重构乘法器模块执行如上述任一项所述的基于NTT和INTT结构的多项式乘法运算方法。
[0023]本专利技术实施例提供了一种基于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)mod q,其中,q表示多项式环R
q
的模数;将后处理步骤与INTT变换进行合并,得到合并INTT变换,对C(x)进行合并INTT变换,得到c(x)。该方法将负折叠卷积的NTT多项式乘法器的预处理步骤和后处理步骤分别合并到NTT变换和INTT变换,完全省去了预处理步骤和后处理步骤,有效减小了多项式乘法器的计算复杂度,极大的降低了算法的计算复杂度。
附图说明
[0024]为了更清楚地说明本专利技术实施例技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图是本专利技术的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
[0025]图1是本专利技术实施例基于NTT和INTT结构的多项式乘法运算方法的多项式乘法器结构示意图;
[0026]图2是当N=8时,本专利技术实施例基于NTT和INTT结构的多项式乘法运算方法中将预处理步骤和后处理步骤合并到NTT和INTT变换后的结构图,(a)表示将预处理步骤合并到NTT变换后的NTT结构图,(b)表示将后处理步骤合并到INTT变换后的INTT结构图;
[0027]图3是本专利技术实施例中多项式乘法器的总体电路示意图;
[0028]图4是本专利技术实施例中可重构乘法器模块的电路示意图;
[0029]图5是本专利技术实施例中1/2模乘器电路本文档来自技高网
...

【技术保护点】

【技术特征摘要】
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运算结果存储到所述第一存储块;依次类推,直至所述可重构乘法器模块完...

【专利技术属性】
技术研发人员:苏阳杨晨杨百龙赵松银
申请(专利权)人:中国人民武装警察部队工程大学
类型:发明
国别省市:

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

1