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

基于Saber密钥封装的多项式硬件乘法器及使用方法

2022-07-23 07:35:58 来源:中国专利 TAG:

基于saber密钥封装的多项式硬件乘法器及使用方法
技术领域
1.本发明属于信息安全加密技术领域,尤其涉及一种基于saber密钥封装的多项式硬件乘法器及使用方法。


背景技术:

2.在shor的量子算法出现后,传统的公钥加密方案比如rsa(非对称加密)和ecc(椭圆曲线加密)受到了巨大的威胁,存在多项式时间内被量子计算机攻破的可能性。基于格有三种密钥封装方案,saber密钥封装方案是其中之一。saber的安全性基于具有舍入问题的模块学习(module-learning with rounding,m-lwr),由公钥加密原语经f-o变换得到。在saber中,由于模量是2的幂次,可以用四舍五入的方法进行模域的变换引入随机误差,因此减小了密文和公钥的体积,这会给轻量化硬件实现带来了优势。
3.具体实现时,在不做优化的前提下,不管是软件平台还是硬件平台,多项式乘法在saber中占据了最多的资源和运算时间。但因为模量不是素数,目前快速数论变换(the number of transform,ntt)不能用于saber的硬件实现,研究人员转而采用toom-cook k-way和karatsuba算法来加速多项式乘法的运行,这种算法的核心思想是降低乘法的次数。例如,在2020年,yihong zhu等人提出用8级迭代karatsuba多项式乘法结构,将65536次系数乘法降低了90%,整体运算时间大大减少。类似的“分而治之”算法在硬件实现上以加减法换取乘法,能够减少周期数,但会需要更多的预处理和后处理步骤,因此会消耗更多的硬件资源,甚至单个乘法器的所需就超出了硬件平台的可用资源,不适合在资源受限的平台上进行轻量级实现。
4.轻量级的硬件实现关注点在于尽可能少的资源和适当快的实现速度。如何高效地实现轻量级乘法器有了重大的意义。


技术实现要素:

5.本发明针对现有技术中的不足,提供一种基于saber密钥封装的多项式硬件乘法器,包括寻址电路、公共多项式数据加载模块、系数乘法累加电路和控制模块;
6.所述寻址电路包括第一存储单元和第二存储单元;所述控制模块的第一输出端通过第一地址线电连接所述第一存储单元的第一输入端,第二输出端通过第二地址线电连接所述第一存储单元的第二输入端,第三输出端通过第三地址线电连接所述第二存储单元的输入端;
7.所述公共多项式数据加载模块包括buffer控制单元、第一寄存器、第二寄存器、第三寄存器、三选一选择器、第一延迟寄存器和第二延迟寄存器;所述buffer控制单元的输入端电连接所述第二存储单元的输出端,第一输出端电连接所述第一寄存器的输入端,第二输出端电连接所述第二寄存器的输入端,第三输出端电连接所述第三寄存器的输入端,第四输出端电连接所述三选一选择器的控制端;所述第一寄存器的输出端电连接所述三选一选择器的第一输入端;所述第二寄存器的输出端电连接所述三选一选择器的第二输入端;
所述第三寄存器的输出端电连接所述三选一选择器的第三输入端;所述三选一选择器的输出端电连接所述第一延迟寄存器的输入端;所述第一延迟寄存器的输出端电连接所述第二延迟寄存器的输入端;
8.所述系数乘法累加电路包括第一dsp和第二dsp;所述第一dsp的第一输入端电连接所述第二延迟寄存器的输出端,输出端电连接有第一反相器的输入端、第一二选一选择器的第一输入端、第二反相器的输入端和第二二选一选择器的第一输入端;所述第一反相器的输出端电连接所述第一二选一选择器的第二输入端;所述第二反相器的输出端电连接所述第二二选一选择器的第二输入端;所述第一二选一选择器的输出端电连接有第一累加寄存器的输入端;所述第二二选一选择器的输出端电连接有第二累加寄存器的输入端;所述第一dsp的第二输入端电连接有所述第一存储单元的第一输出端和第二输出端;
9.所述第二dsp的第一输入端电连接所述三选一选择器的输出端,第二输入端电连接所述第一存储单元的第一输出端和第二输出端,输出端电连接有第三反相器的输入端、第三二选一选择器的第一输入端、第四反相器的输入端和第四二选一选择器的第一输入端;所述第三反相器的输出端电连接所述第三二选一选择器的第二输入端;所述第四反相器的输出端电连接所述第四二选一选择器的第二输入端;所述第三二选一选择器的输出端电连接有第三累加寄存器的输入端;所述第四二选一选择器的输出端电连接有第四累加寄存器的输入端;
10.所述控制模块的第四输出端、第五输出端、第六输出端和第七输出端分别电连接所述第一二选一选择器的控制端、第二二选一选择器的控制端、第三二选一选择器的控制端和第四二选一选择器的控制端。
11.第二方面,本发明提供一种基于saber密钥封装的多项式硬件乘法器的使用方法,所述使用方法应用于第一方面所述的多项式硬件乘法器,包括:
12.当进行矩阵-向量乘法时,公共多项式数据加载模块在环域中,多项式硬件乘法器开始的第一个周期,64位的第一寄存器的低52位加载第二存储单元中地址0数据的[51:0],也就是多项式系数a3,a2,a1,a0,由三选一选择器读取多项式系数a0,第二寄存器[11:0]加载第二存储单元中地址0数据的[63:52],也就是多项式系数a4的低12位,完整的多项式系数会在下一个地址的数据到来时合成;
[0013]
接下来的三个周期,64位的第一寄存器依次输出多项式系数a1、a2和a3;在下一周期,第三寄存器的最高一位加载地址1数据的最后一位组成多项式系数a4并输出,第三寄存器[10:0]加载地址1数据的[63:53],也就是多项式系数a9的低11位;第一寄存器落后一个周期读取地址1数据的[52:1],也就是多项式系数a8、a7、a6和a5,并输出系数;三选一选择器来控制第一寄存器、第二寄存器和第三寄存器能够顺序连续输出系数;第一延迟寄存器和第二延迟寄存器用于将系数流延迟两个周期,系数流a[j]和a[(j 2)mod 256]同时进入系数乘法累加电路;交替读取数据状态每13个地址更新一次,并且在单次多项式乘法中更新4次,即52个地址;
[0014]
当进行向量内积乘法时,公共多项式数据加载模块在环域中,只启用64位的第一寄存器、第一延迟寄存器和第二延迟寄存器;系数乘法累加电路中在寻址电路系数流准备好后,第一dsp和第二dsp分别执行19位
×
13位的乘法,相当于两次系数乘
法;第一dsp和第二dsp的乘法结果会在下一个周期产生,取低16位和高16位在模规约运算后,在控制模块的控制信号下,通过第一二选一选择器、第二二选一选择器、第三二选一选择器和第四二选一选择器选择与第一累加寄存器、第二累加寄存器、第三累加寄存器和第四累加寄存器进行相模加或者相模减;经过256周期后,得到乘积多项式的4个连续系数,并写入第一存储单元和第二存储单元,一共16384个周期后,完成256阶多项式乘法;其中第一累加寄存器、第二累加寄存器、第三累加寄存器和第四累加寄存器每256个周期读取第一存储单元和第二存储单元中相对应的上一次多项式乘法结果的系数,相当于初始化第一累加寄存器、第二累加寄存器、第三累加寄存器和第四累加寄存器。
[0015]
本发明提供一种基于saber密钥封装的多项式硬件乘法器及使用方法,其中多项式硬件乘法器包括寻址电路、公共多项式数据加载模块、系数乘法累加电路和控制模块;控制模块控制整体状态走向,并且根据针对saber的schoolbook多项式乘法算法的双层循环控制逻辑,给寻址电路提供两个乘数的地址索引。第一存储单元输出64位数据,经过公共多项式数据加载模块能够稳定得到连续的2路13位系数流,同时秘密多项式的2路4位系数流可以直接按照地址从第二存储单元读出,2路秘密多项式的低3位绝对值与13位的0组成19位com_s信号,上述三路信号进入系数乘法累加电路进行运算。本发明采用上述装置,避免频繁地读写累加结果的周期,并且不用暂停多项式乘法器,在保持硬件资源消耗基本不变和同样的低功耗的情况下,缩短运算时间。
附图说明
[0016]
为了更清楚地说明本发明的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,显而易见地,对于本领域普通技术人员而言,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
[0017]
图1为本发明实施例提供的一种基于saber密钥封装的多项式硬件乘法器的电路结构图;
[0018]
图2为本发明实施例提供的公共多项式a(x)在环域中时存储在存储单元中的示意图;
[0019]
图3为本发明实施例提供的针对saber优化后的并行的schoolbook算法原理图;
[0020]
图4为本发明实施例提供的公共多项式数据加载模块的电路结构图;
[0021]
图5为传统的schoolbook算法原理图;
[0022]
图6为本发明实施例提供的schoolbook的环多项式运算规则示意图。
具体实施方式
[0023]
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整的描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
[0024]
本发明实施例针对saber密钥封装方案的轻量级schoolbook多项式硬件乘法器,如图1所示。图中给出了轻量级并行schoolbook多项式乘法电路设计的总体架构。
[0025]
单次多项式乘法开始时,控制模块会先判断当前多项式乘法器还是进行矩阵-向
量乘法还是向量内积乘法。不同的模式会采用不同的测量。控制模块按照图3中的算法line3-line6产生地址索引提供给寻址电路,寻址电路连接到两个ram进行数据读取。
[0026]
本发明实施例部分提供一种基于saber密钥封装的多项式硬件乘法器,包括寻址电路、公共多项式数据加载模块、系数乘法累加电路和控制模块;其中控制模块由状态机组成。
[0027]
所述寻址电路包括第一存储单元ram_s和第二存储单元ram_a;所述控制模块的第一输出端通过第一地址线8位s0_addr电连接所述第一存储单元ram_s的第一输入端,第二输出端通过第二地址线8位s1_addr电连接所述第一存储单元ram_s的第二输入端,第三输出端通过第三地址线7位a(x)_addr电连接所述第二存储单元的输入端。地址线用于取得相应地址的数据。
[0028]
所述公共多项式数据加载模块包括buffer控制单元、64位的第一寄存器buffer0、13位的第二寄存器buffer1、13位的第三寄存器buffer2、三选一选择器、13位的第一延迟寄存器和13位的第二延迟寄存器,其中buffer控制单元由状态机组成。所述buffer控制单元的输入端电连接所述第二存储单元ram_a的输出端,第一输出端电连接所述第一寄存器buffer0的输入端,第二输出端电连接所述第二寄存器buffer1的输入端,第三输出端电连接所述第三寄存器buffer2的输入端,第四输出端电连接所述三选一选择器的控制端;所述第一寄存器buffer0的输出端电连接所述三选一选择器的第一输入端;所述第二寄存器buffer1的输出端电连接所述三选一选择器的第二输入端;所述第三寄存器buffer2的输出端电连接所述三选一选择器的第三输入端;所述三选一选择器的输出端电连接所述第一延迟寄存器的输入端;所述第一延迟寄存器的输出端电连接所述第二延迟寄存器的输入端。
[0029]
所述系数乘法累加电路包括第一dsp和第二dsp,其中第一dsp和第二dsp均为dsp48e1;所述第一dsp的第一输入端电连接所述第二延迟寄存器的输出端,输出端电连接有第一反相器m1的输入端、第一二选一选择器g1的第一输入端、第二反相器m2的输入端和第二二选一选择器g2的第一输入端;所述第一反相器m1的输出端电连接所述第一二选一选择器g1的第二输入端;所述第二反相器m2的输出端电连接所述第二二选一选择器g2的第二输入端;所述第一二选一选择器g1的输出端电连接有第一累加寄存器acc1的输入端;所述第二二选一选择器g2的输出端电连接有第二累加寄存器acc2的输入端;所述第一dsp的第二输入端电连接有所述第一存储单元ram_s的第一输出端和第二输出端。
[0030]
所述第二dsp的第一输入端电连接所述三选一选择器的输出端,第二输入端电连接所述第一存储单元ram_s的第一输出端和第二输出端,输出端电连接有第三反相器m3的输入端、第三二选一选择器g3的第一输入端、第四反相器m4的输入端和第四二选一选择器g4的第一输入端;所述第三反相器m3的输出端电连接所述第三二选一选择器g3的第二输入端;所述第四反相器m4的输出端电连接所述第四二选一选择器g4的第二输入端;所述第三二选一选择器g3的输出端电连接有第三累加寄存器acc3的输入端;所述第四二选一选择器g4的输出端电连接有第四累加寄存器acc4的输入端。
[0031]
所述控制模块的第四输出端、第五输出端、第六输出端和第七输出端分别通过输出线sign1

b0[3]、sign2

b1[3]、sign3

b0[3]和sign4

b1[3]电连接所述第一二选一选择器的控制端、第二二选一选择器的控制端、第三二选一选择器的控制端和第四二选一选择器的控制端。
[0032]
本发明实施例部分还提供一种基于saber密钥封装的多项式硬件乘法器的使用方法,包括当进行矩阵-向量乘法时,公共多项式数据加载模块在环域中,多项式硬件乘法器开始的第一个周期,64位的第一寄存器的低52位加载第二存储单元中地址0数据的[51:0],也就是多项式系数a3,a2,a1,a0,由三选一选择器读取多项式系数a0,第二寄存器[11:0]加载第二存储单元中地址0数据的[63:52],也就是多项式系数a4的低12位,完整的多项式系数会在下一个地址的数据到来时合成。
[0033]
接下来的三个周期,64位的第一寄存器依次输出多项式系数a1、a2和a3;在下一周期,第三寄存器的最高一位加载地址1数据的最后一位组成多项式系数a4并输出,第三寄存器[10:0]加载地址1数据的[63:53],也就是多项式系数a9的低11位;第一寄存器落后一个周期读取地址1数据的[52:1],也就是多项式系数a8、a7、a6和a5,并输出系数;三选一选择器来控制第一寄存器、第二寄存器和第三寄存器能够顺序连续输出系数;第一延迟寄存器和第二延迟寄存器用于将系数流延迟两个周期,系数流a[j]和a[(j 2)mod 256]同时进入系数乘法累加电路;交替读取数据状态每13个地址更新一次,并且在单次多项式乘法中更新4次,即52个地址。
[0034]
当进行向量内积乘法时,公共多项式数据加载模块在环域中,只启用64位的第一寄存器、第一延迟寄存器和第二延迟寄存器;系数乘法累加电路中在寻址电路系数流准备好后,第一dsp和第二dsp分别执行19位
×
13位的乘法,相当于两次系数乘法;第一dsp和第二dsp的乘法结果会在下一个周期产生,取低16位和高16位在模规约运算后,在控制模块的控制信号下,通过第一二选一选择器、第二二选一选择器、第三二选一选择器和第四二选一选择器选择与第一累加寄存器、第二累加寄存器、第三累加寄存器和第四累加寄存器进行相模加或者相模减;经过256周期后,得到乘积多项式的4个连续系数,并写入第一存储单元和第二存储单元,一共16384个周期后,完成256阶多项式乘法;其中第一累加寄存器、第二累加寄存器、第三累加寄存器和第四累加寄存器每256个周期读取第一存储单元和第二存储单元中相对应的上一次多项式乘法结果的系数,相当于初始化第一累加寄存器、第二累加寄存器、第三累加寄存器和第四累加寄存器。
[0035]
在saber中,当进行矩阵-向量乘法时,控制模块产生地址索引提供给寻址电路,公共多项式的系数为13bits,产生公共多项式的输出扩展函数shake-128每一轮“挤压”输出过程会以64位的比特流的形式,将1344位字节串写入ram中。之所以用64位的位宽来输出,是因为能够减小数据对齐的消耗。但13bits的系数在位宽为64位的存储单元ram中的会存在跨地址存储的现象。如图2所示,特定的系数在这样的存储方式下会被地址分割,比如地址0的高12位属于系数a4的低12位,a4剩余的最高的1位是地址1的最低1位;地址1的高11位属于系数a9的低11位,a9剩余的2位在地址2的最低2位;地址10的高2位属于a54的低2位,a54的剩余的10位是地址11的低10位,以此类推,这样的情况会每13个地址重复一次,一个多项式占据的52个地址重复4次。因此,需要顺序并且连续地读取64位的ram中的公共多项式的系数时,仔细设计读取策略以规避掉系数被分割的情况成为了一个挑战。可以很直接想到的传统解决方法是直接用13
×
64=832位的buffer来读取第一存储单元ram_a的数据,但消耗的寄存器数量较大,并且等待832位buffer读满的周期开销较多。
[0036]
本设计根据公共多项式在ram中的存放方式设计了如图4所示的数据加载模块,其
中64位的第一寄存器buffer0的低52位用来加载每一个地址中完整的连续4个系数,并顺序输出。第二寄存器buffer1和第三寄存器buffer2交替加载地址数据中的部分高比特位,部分低比特位,例如第二寄存器buffer1会优先读取地址0的高12位,并等待剩余的1位组成a4后在a3后一个周期输出,第三寄存器buffer2会优先读取地址1的高11位,并等待剩余的2位组成a9后在a8后输出。以上的交替读取控制逻辑由buffer控制单元中的计数器以及状态机组成,当一个完整的系数合成后,三选一选择器会选择第一寄存器buffer0、第二寄存器buffer1和第三寄存器buffer2中的一个进行读取,剩下的两个寄存器用来将系数流a[j]延迟两个周期以产生a[(j 2)mod n],这两路数据准备好后会同时进入系数乘法累加电路。a[j]为图3中算法第三行所需的系数流,每个周期更新一次,由内层的循环索引j控制具体每个周期是某个公共多项式系数参与乘法。
[0037]
saber的另一种情况,方案在进行向量内积多项式乘法时,在中操作,但公共多项式的系数为16bits,最高的6bits是为了方便后续的数据对齐而补充的0,这样系数在ram中的存储不会出现跨地址的现象,因此可以简单得读入第一寄存器buffer0,并只调用三选一选择器后的第一延迟寄存器和第二延迟寄存器进行连续输出。在环域中的公共多项式与秘密多项式在相乘完后会被进一步约束到中,此时的多项式的系数都为10位,此时如果直接存入64比特位宽的ram中同样会被截断,因此可以在高位补0成16位,这样就可以不被ram截断。这样的操作不在乘法器内实现,且几乎不消耗运算资源。
[0038]
在以上两种情况下,秘密多项式s(x)的系数都为4bits,可以直接按照算法中的地址索引读取第一存储单元ram_s的数据。当系数流coeff_a0、coeff_a1以及com_s准备好后,调用的第一dsp和第二dsp开始进行4次系数乘法。取第一dsp和第二dsp的高16位和低16位作为暂时的结果进行模运算,得到temp1-temp4,并分别在sign

b[3]的控制下与第一累加寄存器acc1、第二累加寄存器acc2、第三累加寄存器acc3和第四累加寄存器acc4做模加或模减运算,如图1所示。公共多项式和秘密多项式都由一个能够产生无尽随机系数的函数shake-128产生,但这两个多项式产生时,函数的输入也称为种子的不同,其中秘密多项式是需要保密的,所以被称为秘密多项式。
[0039]
本发明比较了高效并行的针对saber的schoolbook算法原理图和传统的schoolbook算法原理图,如图3和图5所示。传统的schoolbook多项式乘法是将两个多项式乘数作卷积运算。先将累加寄存器acc初始化,当内层的变量j加一递增时,将一个乘数系数a[j]与每一个被乘数多项式b[i]遍历相乘,同时因为在环域rq里计算,多项式b(x)需要在外层循环中乘x进行阶数的变换。每当外层的循环结束一次,就会得到图6中粗线方框中的结果,但在轻量级的实现中,累加寄存器的大小受限于资源不会很大,所以需要在进行乘法时将累加的值与存储单元进行频繁写入/读取。而图5中的算法则不一样,优化过的针对saber的schoolbook算法改变了读取a(x)与s(x)的顺序。a[j]、a[(j 2)mod n]与s[(i-j)mod n]、s[(i-j 1)mod n]的读取策略可以固定连续的累加寄存器,避免像传统的schoolbook多项式乘法一样频繁读写累加值,这样能够节省不必要的周期。在外层的一次循环结束后,即可得到连续的4个结果系数,如图6中细线方框所示。这样相当于进行了一个小的卷积运算。16384个周期后完成一次完整的多项式乘法运算。
[0040]
需要强调的是,本实例是单独对多项式乘法器进行了优化,ram资源可以归属到整体的资源所需中重复利用。本实施例利用vivado 2018.3在artix-7 fpga上构建了上述硬件结构,并选取q=2
13
,n=256。最终整体频率达到了130mhz,需要16384个时钟周期。消耗561的lut面积资源,302的ffs以及2个dsp48e1。与现有的针对saber的轻量级多项式乘法器技术相比,本实施例能够以几乎相当的硬件资源提供更快的运算速度,节省了3087个周期,并提高了频率。
[0041]
本说明书中各个实施例之间相同相似的部分互相参见即可。尤其,对于装置实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例中的说明即可。
[0042]
以上结合具体实施方式和范例性实例对本发明进行了详细说明,不过这些说明并不能理解为对本发明的限制。本领域技术人员理解,在不偏离本发明精神和范围的情况下,可以对本发明技术方案及其实施方式进行多种等价替换、修饰或改进,这些均落入本发明的范围内。本发明的保护范围以所附权利要求为准。
再多了解一些

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

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

相关文献