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

基于数论变换的格密码多项式乘法运算的优化方法及装置与流程

2022-02-21 12:30:16 来源:中国专利 TAG:


1.本技术涉及密码算法技术领域,具体涉及一种基于数论变换的格密码多项式乘法运算的优化方法、装置及芯片。


背景技术:

2.在基于环上容错学习(ring learning with errors,rlwe)模型的密码算法中,核心运算以多项式代数的形式来实现,其中不可避免地涉及多项式乘法运算。多项式乘法相对于其它多项式代数运算更加复杂,明显需要更多的计算资源,运算时间也更长。因此多项式乘法运算的优化可以显著提升密码设备的性能。
3.目前,数论变换是多项式乘法运算最常见的优化方式之一,即通过数论变换将多项式乘变换为逐项乘,再通过对逐项乘结果进行逆变换获得多项式乘的最终结果。


技术实现要素:

4.本技术旨在提供一种基于数论变换的格密码多项式乘法运算的优化方法,通过在变换过程中迭代计算旋转因子,使密码芯片等资源紧张的紧凑型等设备可以在有限资源中支持尽可能多的格密码算法,在约束芯片设备面积和存储资源的前提下,优化算法性能,尽可能地提升算法效率。
5.根据本技术的第一方面,提供一种基于数论变换的格密码多项式乘法运算的优化方法,包括:
6.在所述数论变换前,将需要进行变换的多项式系数存储在外部寄存器中;
7.根据所述格密码算法的变换参数,计算初始化旋转因子并在所述外部存储器中进行预存储;
8.在当前阶变换中,读取预存储的所述初始化旋转因子,迭代计算当前阶旋转因子;
9.采用变换算法,对计算的所述当前阶旋转因子和读取的所述多项式系数进行当前阶变换。
10.根据本技术的一些实施例,所述变换参数,包括:多项式的数量n、有限域的模q、模q域下的n次原根ω、模q域下的2n次原根ψ。
11.根据本技术的一些实施例,所述优化方法,还包括:在所述数论变换前,读取所述变换参数并确定变换阶数。
12.根据本技术的一些实施例,所述数论变换包括正向数论变换;所述多项式系数存储在外部寄存器中顺序存储;所述数论变换的算法包括cooley-tukey算法。
13.根据本技术的一些实施例,计算初始旋转因子并在所述外部存储器中进行预存储,包括:
14.按照以下公式计算当前阶变换的初始旋转因子并进行预存储,
[0015][0016]
其中,ψm为当前阶变换的初始化旋转因子,s为当前阶变换的阶序,1≤s≤log2n。
[0017]
根据本技术的一些实施例,计算初始化旋转因子并在所述外部存储器中进行预存储,还包括:
[0018]
按照以下公式计算当前阶变换的迭代因子并进行预存储,
[0019][0020]
其中,ωm为当前阶变换的迭代因子,s为当前阶变换的阶序,1≤s≤log2n。
[0021]
根据本技术的一些实施例,迭代计算当前阶旋转因子,包括:
[0022]
按照以下公式迭代计算当前阶旋转因子,
[0023]
t0=ψm[0024]
t
i 1
=tiωm[0025]
其中,ti为当前阶旋转因子序列,0≤i≤2
s-1-1

[0026]
根据本技术的一些实施例,计算初始化旋转因子并在所述外部存储器中进行预存储,还包括:
[0027]
按照以下公式计算当前阶变换的迭代因子并进行预存储,
[0028][0029]
其中,ω
m,s
为当前阶蝶形变换的迭代因子,ω
m,s 1
为后一阶变换的迭代因子。
[0030]
根据本技术的一些实施例,所述数论变换包括逆向数论变换;所述多项式系数存储在外部寄存器中按反转序存储;所述数论变换的算法包括gentleman-sande算法。
[0031]
根据本技术的一些实施例,计算初始化旋转因子并在所述外部存储器中进行预存储,包括:
[0032]
按照以下公式计算当前阶变换的初始化旋转因子并进行预存储,
[0033][0034]
其中,ψ-1m
为当前阶变换的初始化旋转因子,s为当前阶变换的阶序,1≤s≤log2n。
[0035]
根据本技术的一些实施例,计算初始化旋转因子并在所述外部存储器中进行预存储,还包括:
[0036]
按照以下公式计算当前阶变换的迭代因子并进行预存储,
[0037][0038]
其中,ω-1m
为当前阶变换的迭代因子,s为当前阶变换的阶序,1≤s≤log2n。
[0039]
根据本技术的一些实施例,迭代计算当前阶旋转因子,包括:
[0040]
按照以下公式迭代计算当前阶旋转因子:
[0041]
t-10
=ψ-1m
[0042]
t-1i 1
=t-1i
ω-1m
[0043]
其中,t-1i
为当前阶旋转因子序列,0≤i≤2
s-1-1。
[0044]
根据本技术的一些实施例,计算初始化旋转因子并在所述外部存储器中进行预存储,还包括:
[0045]
分别将前一阶变换的初始化旋转因子和迭代因子的乘方运算结果,作为当前阶对应的初始化旋转因子和迭代因子。
[0046]
根据本技术的第二方面,提供一种基于数论变换的格密码多项式乘法运算的优化装置,包括:
[0047]
寄存器,用于存储所述多项式系数以及在所述数论变换过程中计算出的初始化旋转因子和迭代因子;正向数论变换模块,与所述寄存器相连,从寄存器中读取所述多项式系数进行正向数论变换;
[0048]
逆向数论变换模块,与所述寄存器相连,从寄存器中读取所述多项式系数进行逆向数论变换;
[0049]
运算模块,分别与所述正向数论变换模块和逆向数论变换模块相连,用于计算所述变换参数并传输至所述正向数论变换模块和逆向数论变换模块。
[0050]
根据本技术的第三方面,提供一种格密码芯片,包括上述优化装置。
[0051]
本技术提供的基于数论变换的多项式乘法运算的优化方法,能够产生以下有益效果:
[0052]
在迭代中动态生成旋转因子,去除了对旋转因子进行预计算的操作,无需存储预计算的旋转因子,节省了存储空间,使得算法支持更多不同的参数设置,更加节约了芯片面积;
[0053]
在ntt和intt变换中采用两种不同的蝶形算法,从而避免对寄存器的位反转序变换,减少对敏感数据的读写操作。
[0054]
应当理解的是,以上的一般描述和后文的细节描述仅是示例性的,并不能限制本技术。
附图说明
[0055]
为了更清楚地说明本技术实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本技术的一些实施例。
[0056]
图1示出根据本技术示例实施例的优化方法流程图。
[0057]
图2示出根据本技术示例实施例的8阶ntt蝶形变换运算示意图。
[0058]
图3示出根据本技术示例实施例的最小蝶形变换单元结构示意图。
[0059]
图4示出根据本技术示例实施例的优化装置示意图。
具体实施方式
[0060]
现在将参考附图更全面地描述示例实施例。然而,示例实施例能够以多种形式实施,且不应被理解为限于在此阐述的实施例。提供这些实施例是为使得本技术更全面和完整,并将示例实施例的构思全面地传达给本领域的技术人员。在图中相同的附图标记表示相同或类似的部分,因而将省略对它们的重复描述。
[0061]
此外,所描述的特征、结构或特性可以以任何合适的方式结合在一个或更多实施例中。在下面的描述中,提供许多具体细节从而给出对本技术的实施例的充分理解。然而,本领域技术人员将意识到,可以实践本技术的技术方案而没有特定细节中的一个或更多,或者可以采用其它的方法、组元、装置、步骤等。在其它情况下,不详细示出或描述公知方法、装置、实现或者操作以避免模糊本技术的各方面。
[0062]
本领域技术人员可以理解,附图只是示例实施例的示意图,可能不是按比例的。附图中的模块或流程并不一定是实施本技术所必须的,因此不能用于限制本技术的保护范围。
[0063]
基于格的密码算法在后量子密码和有后量子安全性的同态加密算法中得到了广泛应用。其中,基于容错学习(learning with errors,lwe)模型的格密码在目前最为流行,基于环上lwe(rlwe)模型的格密码是基于lwe密码的一个分支。基于环上lwe模型的格密码可以抵抗量子计算机的攻击,因此目前在后量子密码领域有广泛的应用。此外,环上的运算可以方便地构造同态映射,因此rlwe在同态加密领域也被广泛采用。
[0064]
在rlwe问题中,各种运算基于多项式进行,多项式的系数定义在有限域上,其中有限域的模q为大于1的整数。运算所涉及的多项式定义在多项式商环上,其中不可约多项式φ(x)为商环的模。例如,选定φ(x)=x
512
1,q=12289,则a=511x
511
510x
510


x为r上的一个多项式,其中a表示多项式。标准的rlwe模型定义为b=a
·
s e,其中e为误差多项式,a和b已知,s和e未知。lwe的问题模型分为两种。一种为搜索问题:攻击者获得若干组(ai,bi),求未知多项式s;另一种为决定问题:攻击者获得若干组(ai,bi),判断bi是否符合bi=ai·
s ei或b是否在r上。其中搜索问题的复杂度等价于理想格上的近似最短向量问题(asvp)。目前认为,即使对于量子计算机算法来说,asvp问题也是困难的不确定多项式(nondeterministic polynomial,np)问题。因此基于rlwe的密码在传统计算机和量子计算机的攻击下都可以保证安全。
[0065]
在进行rlwe模型的多项式乘法运算时,常用的优化方式是通过数论变换(ntt)将多项式乘转变为逐项乘法。ntt运算可以看作是离散傅里叶变换(dft)在有限域上的拓展。对于多项式其ntt变换为其中参数ω为模q域下的n次原根,即ωn=1 mod q。多项式的逆变换为其中使用表示逐项乘,对于多项式a和b,两者的乘法运算可表示为:
[0066][0067]
若直接使用上述公式计算多项式乘法,则需要将多项式长度补零拓展至2n,否则会因次数溢出导致结果错误。为避免拓展长度,可以采用负包卷积(negative wrapped convolution)对运算进行转化。令ψ为模q域下的2n次原根,即ψ2=ωmod q,定义向量ψ=(1,ψ,...,ψ
n-1
),ψ

=(1,ψ-1
,...,ψ-(n-1)
),则多项式a和b的乘法运算可表示为:
[0068][0069]
此时无需将多项式长度拓展至2n。
[0070]
针对dft的快速傅里叶变换(fft)也可用于优化ntt运算。格密码实现中常用的优化方法是蝶形网络。为方便在基2fft上应用蝶形网络,通常选定n为2的幂。常用算法包括按时域抽取的cooley-tukey算法和按频域抽取的gentleman-sande算法。在使用蝶形网络时,输入和输出中一项为自然序列,另一项为位反转序列,即将原序列下标的比特位反转所得之序列。例如,自然序列a0,a1,a2,a3,a4,a5,a6,a7对应的位反转序列为a0,a4,a2,a6,a1,a5,a3,a7。
[0071]
本发明人发现,在现有的多项式乘法运算中,存在以下问题:
[0072]
对ntt变换的旋转因子采用预计算的方法,将旋转因子等值预计算后存储于外部存储器中,从而降低运算时间。在ntt变换过程中,根据对应密码参数从外部存储器中读取
旋转因子。该种方法需要对给定的密码参数进行预计算,所存储的值在密码采用其它参数时无法应用,且预计算所得值的存储需要较多的空间(尤其是在同态加密的应用场景中),尤其在多项式次数n和模q较大时会占用较多的存储空间。若将其支持的所有参数全部预先存入外部存储器,将造成巨大的存储开销。存储容量需求的增加将导致芯片设备面积的增加。若芯片需要支持多种不同密码参数,那么将更加导致设备面积显著增大。对于密码芯片等对面积和功耗要求较高的紧凑型芯片设备来说,这将严重限制芯片设备的可用场景。
[0073]
ntt和intt运算均使用cooley-tukey算法,每次变换之前需要对输入数据先进行位反转序列变换,从而在密码芯片上会形成大量读写操作,容易造成侧信道泄露。
[0074]
针对以上技术问题,本技术提出了基于数论变换的格密码多项式乘法运算的优化方法。所述优化方法采用在数论变换迭代中动态生成旋转因子的操作,替代了在变换中预计算旋转因子的操作。一方面可显著降低对存储空间的需求、节约面积;另一方面,可使设备可以支持更多不同的密码算法参数设置。此外,所述优化方法在ntt、intt变换中采用两种不同的蝶形算法,从而省去对寄存器的位反转序变换,减少对敏感数据的读写操作。
[0075]
图1示出根据本技术示例实施例的优化方法流程图。
[0076]
根据本技术的第一方面,提供一种基于数论变换的格密码多项式乘法运算的优化方法。如图1所示,所述优化方法包括:
[0077]
在步骤s110,在所述数论变换前,将需要进行变换的多项式系数存储在外部寄存器中。
[0078]
根据本技术的一些实施例,在数论变换前,将需要进行变换的多项式系数存储在外部寄存器中。存储在外部寄存器中的多项式系数可通过地址进行读写。所述数论变换包括正向数论变换(ntt变换)和逆向数论变换(intt变换)。对于ntt变换,需要进行变换的多项式系数顺序存储在外部寄存器中。对于intt变换,需要进行变换的多项式系数按反转序存储在外部寄存器中。
[0079]
在步骤s120,根据所述格密码算法的变换参数,计算初始化旋转因子并在所述外部存储器中进行预存储。
[0080]
不同的格密码算法所需要的变换参数不尽相同。因此,在进行数论变换时,需要输入变换参数。所述正向数论变换参数包括多项式的数量n、有限域的模q、模q域下的n次原根ω、模q域下的2n次原根ψ。逆向数论变换参数包括多项式的数量n、有限域的模q、模q域下的n次原根ω-1
、模q域下的2n次原根ψ-1

[0081]
在所述数论变换前,需要确定需要进行数论变换的阶数。所述数论变换的阶数可通过读取所述变换参数来确定变换阶数。根据本技术的一些实施例,ntt变换采用的算法可以是cooley-tukey算法,intt变换采用的算法可以是gentleman-sande算法。相应地,采用上述算法,共需进行的变换阶数为log2n。在第s阶蝶形变换初始时(1≤s≤log2n),计算当前阶的初始旋转因子ψm、ψ-1m
和迭代因子ω
m、
ω-1m
,并将计算结果存储于外部存储器中。
[0082]
对于ntt变换,根据本技术的一些实施例,可以按照以下公式计算当前阶ntt变换的初始旋转因子ψm:
[0083][0084]
其中,ψm为当前阶变换的初始化旋转因子,s为当前阶变换的阶数,1≤s≤log2n。
[0085]
根据本技术的一些实施例,可以按照以下公式计算当前阶ntt变换的迭代因子
ωm:
[0086][0087]
其中,ωm为当前阶蝶形变换的迭代因子,s为当前阶蝶形变换的阶数,1≤s≤log2n。
[0088]
上述ωm和ψm可在蝶形变换开始之前通过预计算存储,在每阶变换过程中直接读取,节约计算时间。在第log2n阶变换中,ωm=ω,且对于任意两个相邻阶,前一阶变换对应的迭代因子ω
m,s
和后一阶变换对应的迭代因子ω
m,s 1
满足一下条件:
[0089][0090]
因此,对于各阶蝶形变换,所需要的迭代因子ωm可由ω依次乘方的逆序列获得,即ω
n/2
,ω
n/4
,...,ω2,ω。对每一阶的迭代因子ωm的计算,只需在后一阶的迭代因子基础上进行乘方和取模,所得结果序列存储之后在蝶形变换中读取即可。初始旋转因子ψm的预计算与迭代因子ωm的预算具有相同的原理。因此,在所述变换方法中,预计算内容的存储空间复杂度为o(log2n),而直接预计算旋转因子所需要的存储空间复杂度为o(n)。可见,所述变换方面显著降低了对存储空间的需求。
[0091]
对于intt变换,根据本技术的一些实施例,可以按照以下公式计算当前阶intt变换的初始旋转因子ψ-1m

[0092][0093]
其中,ψ-1m
为当前阶变换的初始化旋转因子,s为当前阶变换的阶数,1≤s≤log2n。
[0094]
对于intt变换,根据本技术的一些实施例,可以按照以下公式计算当前阶intt变换的迭代因子ω-1m

[0095][0096]
其中,ω-1m
为当前阶变换的迭代因子,s为当前阶变换的阶数,1≤s≤log2n。
[0097]
根据本技术的另一些实施例,intt变换中,后一阶变换中的迭代因子和初始旋转因子还可由前一阶变换对应的迭代因子和初始旋转因子乘方直接获得。因此,迭代计算旋转因子相关的运算成本不高,无需通过预计算存储。
[0098]
在步骤s130,在当前阶变换中,读取预存储的所述初始化旋转因子,迭代计算当前阶旋转因子。
[0099]
在进行当前阶的ntt变换过程中,可从外部存储器中读取初始旋转因子和迭代因子,并按照以下公式、迭代计算当前阶的旋转因子:
[0100]
t0=ψm[0101]
t
i 1
=tiωm[0102]
其中,ti为当前阶旋转因子序列,0≤i≤2
s-1-1。经过迭代计算,当前阶的旋转因子可表示为:
[0103]
在进行当前阶的intt变换过程中,可按照以下公式、迭代计算当前阶的旋转因子:
[0104]
t-10
=ψ-1m
[0105]
t-1i 1
=t-1i
ω-1m
[0106]
其中,t-1i
为当前阶旋转因子序列,0≤i≤2
s-1-1。
[0107]
分别将前一阶变换的初始化旋转因子和迭代因子的乘方运算结果,作为当前阶对应的初始化旋转因子和迭代因子。
[0108]
在步骤s140,采用变换算法,对计算的所述当前阶旋转因子和读取的所述多项式系数进行当前阶变换。
[0109]
迭代计算出当前阶的旋转因子后,即可从外部存储器中读取多项式系数进行当前阶变换。
[0110]
在每一阶ntt蝶形变换中,所对应的系数需要按位反转序读取。在硬件实现中,将地址线反转从而按位反转序读数可以快速实现。采用此算法时输出结果的存储顺序为位反转序。
[0111]
在每一阶intt蝶形变换中,在每一阶蝶形变换中,所对应的系数需要按位反转序读取。在硬件实现中,将地址线反转从而按位反转序读数可以快速实现。采用此算法时输出结果为顺序存储。
[0112]
图2示出根据本技术示例实施例的8阶ntt蝶形变换运算示意图。
[0113]
图3示出根据本技术示例实施例的最小蝶形变换单元结构示意图。
[0114]
根据本技术示例实施例,采用cooley-tukey算法变换进行ntt变换的算法流程如下所述:
[0115]
[0116][0117]
上述算法流程中,omega_m=omega^(m/2)mod q和twiddle=psi^(m/2)mod q,可通过预计算之后从寄存器中查表读取实现,预计算表内容为(psi^n,psi^(n/2),

,psi)。若设备寄存器资源不足,也可在循环过程中迭代计算。因为m/2为2的幂,所以omega_m和twiddle的计算可以通过log2m/2次乘方和取模来实现,从而减少模乘次数,节约计算时间,并避免计算中数值位数过多而导致溢出。
[0118]
使用gentleman-sande算法进行intt蝶形变换时,最小蝶形变换单元结构与图3中所示的最小蝶形变换单元结构为镜像反转关系。在算法流程的循环中各变量的意义一致。根据本技术示例实施例的intt变换算法流程如下所述:
[0119]
[0120][0121]
图4示出根据本技术示例实施例的优化装置示意图。
[0122]
在密码设备中,本技术提供的优化方法的应用以图4中所示的优化装置200来实
现。优化装置200包括寄存器210、正向数论变换模块220、逆向数论变换模块230和运算模块240。
[0123]
寄存器210,用于存储所述多项式系数以及在所述数论变换过程中计算出的初始化旋转因子和迭代因子。
[0124]
正向数论变换模块220,与所述寄存器相连,从寄存器中读取所述多项式系数进行正向数论变换。
[0125]
逆向数论变换模块230,与所述寄存器相连,从寄存器中读取所述多项式系数进行逆向数论变换。
[0126]
运算模块240,分别与所述正向数论变换模块和逆向数论变换模块相连,用于计算所述变换参数并传输至所述正向数论变换模块和逆向数论变换模块。
[0127]
在上述优化装置中,ntt和intt变换分别采用不同的蝶形算法实现,因此采用两个不同的模块,ntt模块220和intt模块230。需要进行变换的多项式系数保存在寄存器210中。ntt模块220与intt模块230均可对寄存器210进行读写。运算模块240计算变换过程中需要的相关参数,例如mod q,并将相关变换参数发送至ntt模块220和intt模块230,从而控制运算。根据本技术的一些实施例,运算模块240可以是外部控制电路。本技术中的寄存器210中无需存储预计算所得的旋转因子,因此占用的存储空间显著减小。
[0128]
根据本技术的另一方面,还提供一种格密码芯片,包括上述优化装置。在密码芯片中,mod q运算通常可以由相应的硬件优化来实现,在运算中可直接调用相应模块加速计算。例如,针对不同的q值,设计barrett约减法电路。根据算法输入的q,选择相应的约减电路模块进行mod q运算。因为barrett约减可以用移位和加减等简单运算实现,所需逻辑电路面积不大,即使支持多种不同的q值也不会对芯片面积产生明显影响。因此,在本技术的基础上,进一步通过优化模运算电路,就可以以较小的成本实现对多种q值的支持。
[0129]
需要说明的是,以上参照附图所描述的每个实施例仅用以说明本技术而非限制本技术的范围,本领域的普通技术人员应当理解,在不脱离本技术的精神和范围的前提下对本技术进行的修改或者等同替换,均应涵盖在本技术的范围之内。此外,除上下文另有所指外,以单数形式出现的词包括复数形式,反之亦然。另外,除非特别说明,那么任何实施例的全部或一部分可结合任何其它实施例的全部或一部分来使用。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

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

相关文献