多项式乘法的加速方法及装置、NTRU加解密加速方法及装置与流程

文档序号:16929326发布日期:2019-02-22 20:07阅读:286来源:国知局
多项式乘法的加速方法及装置、NTRU加解密加速方法及装置与流程

本发明属于计算机技术领域,具体涉及一种多项式乘法的加速方法及装置、ntru加解密加速方法及装置。



背景技术:

ntru(numbertheoryresearchunit)算法是一种基于环的公开密钥体制,其在安全性和速度方面具有较大的优势。ntru算法的加解密过程需进行大量的多项式乘法运算,但现有的多项式乘法运算方式均为串行计算模式,多项式乘法运算的运算速度较慢导致运算过程的耗时较大,进而导致ntru加解密过程的效率较低。

应该注意,上面对技术背景的介绍只是为了方便对本发明的技术方案进行清楚、完整的说明,并方便本领域技术人员的理解而阐述的。不能仅仅因为这些方案在本发明的背景技术部分进行了阐述而认为上述技术方案为本领域技术人员所公知。



技术实现要素:

本发明所要解决的技术问题是针对现有技术中上述不足,提供一种多项式乘法的加速方法及装置、ntru加解密加速方法及装置,能够提升多项式乘法的运算速度,从而提升ntru加解密过程的效率。

为实现上述目的,本发明提供了一种多项式乘法的加速方法,包括:

设置多个乘法器,所述多个乘法器均用于输入乘法结果至同一加法器中;

将与第一多项式a对应的数组a=[a0,a1,a2…an‐1]中的各元素按照a0,a1…an-1的顺序依次排列后分别输入至对应乘法器的第一输入端;

将与第二多项式b对应的数组b=[b0,b1,b2…bn‐1]中的各元素按照b0,bn-1,bn-2…b2,b1的顺序依次排列后分别输入至对应乘法器的第二输入端;

通过多个所述乘法器生成乘法结果并输入所述乘法结果至同一加法器中,所述乘法器均分别根据第一输入端和第二输入端的输入元素生成乘法结果;

每当所述加法器根据多个所述乘法器的乘法结果生成一个加法结果时,将数组b=[b0,b1,b2…bn‐1]中各元素的当前排列顺序后向循环移动一位后分别输入至对应乘法器的第二输入端,以供所述加法器生成下一加法结果,并直至所述加法器生成n个加法结果为止。

可选地,还包括:

通过所述加法器生成的n个加法结果生成第一多项式与第二多项式的相乘多项式。

可选地,所述乘法器的数量为n个,所述n个乘法器的编号分别为m0,m1…mn-1,所述加法器生成的n个加法结果分别为c0,c1,c2…cn‐1;

当数组a中的元素a0,a1…an-1依次分别输入至乘法器m0,m1…mn-1的第一输入端且数组b中的元素b0,bn-1,bn-2…b2,b1依次分别输入至乘法器m0,m1…mn-1的第二输入端时,所述加法器根据n个所述乘法器的乘法结果生成的加法结果为c0;

当数组a中的元素a0,a1…an-1依次分别输入至乘法器m0,m1…mn-1的第一输入端且数组b中的元素bn-1,bn-2…b2,b1,b0依次分别输入至乘法器m0,m1…mn-1的第二输入端时,所述加法器根据n个所述乘法器的乘法结果生成的加法结果为cn‐1。

可选地,所述第一多项式a=[a0+a1x1+a2x2+…+an‐1xn‐1],所述第二多项式b=[b0+b1x1+b2x2+…+bn‐1xn‐1];

所述相乘多项式c=a*b=[c0+c1x1+c2x2+…+cn‐1xn‐1]。

可选地,所述加法器根据多个所述乘法器的乘法结果生成一个加法结果的时长记为一个乘法周期。所述加法器生成n个加法结果的时长包括n个乘法周期。

为实现上述目的,相应地,本发明还提供了一种多项式乘法的加速装置,包括:

设置模块,用于设置多个乘法器,所述多个乘法器均用于输入乘法结果至同一加法器中;

第一顺序排列模块,用于将与第一多项式a对应的数组a=[a0,a1,a2…an‐1]中的各元素按照a0,a1…an-1的顺序依次排列后分别输入至对应乘法器的第一输入端;

第二顺序排列模块,用于将与第二多项式b对应的数组b=[b0,b1,b2…bn‐1]中的各元素按照b0,bn-1,bn-2…b2,b1的顺序依次排列后分别输入至对应乘法器的第二输入端;

生成输入模块,用于通过多个所述乘法器生成乘法结果并输入所述乘法结果至同一加法器中,所述乘法器均分别根据第一输入端和第二输入端的输入元素生成乘法结果;

循环移位模块,用于每当所述加法器根据多个所述乘法器的乘法结果生成一个加法结果时,将数组b=[b0,b1,b2…bn‐1]中各元素的当前排列顺序后向循环移动一位后分别输入至对应乘法器的第二输入端,以供所述加法器生成下一加法结果,并直至所述加法器生成n个加法结果为止。

可选地,还包括:

生成模块,用于通过所述加法器生成的n个加法结果生成第一多项式与第二多项式的相乘多项式。

为实现上述目的,本发明还提供了一种ntru加解密加速方法,所述ntru加解密过程中的多项式乘法运算均通过如上所述的多项式乘法的加速方法实现。

可选地,所述乘法器的数量为n个,所述n为所述ntru加解密过程中所涉及的多个多项式中项数最大的多项式的项数。

为实现上述目的,相应地,本发明还提供了一种ntru加解密加速装置,包括如上所述的多项式乘法的加速装置。

本发明的有益效果是:本发明提供的多项式乘法的加速方法设置有多个乘法器,通过多个乘法器生成乘法结果并输入该乘法结果至同一加法器中,每当加法器根据多个乘法器的乘法结果生成一个加法结果时,将数组b=[b0,b1,b2…bn‐1]中各元素的当前排列顺序后向循环移动一位后分别输入至对应乘法器的第二输入端,以供加法器生成下一加法结果,能够提升多项式乘法的运算速度,从而提升ntru加解密过程的效率。

参照后文的说明和附图,详细公开了本发明的特定实施方式,指明了本发明的原理可以被采用的方式。应该理解,本发明的实施方式在范围上并不因而受到限制。在所附权利要求的精神和条款的范围内,本发明的实施方式包括许多改变、修改和等同。

针对一种实施方式描述和/或示出的特征可以以相同或类似的方式在一个或更多个其它实施方式中使用,与其它实施方式中的特征相组合,或替代其它实施方式中的特征。

应该强调,术语“包括/包含”在本文使用时指特征、整件、步骤或组件的存在,但并不排除一个或更多个其它特征、整件、步骤或组件的存在或附加。

附图说明

为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。

图1a为本发明实施例一提供的一种多项式乘法的加速方法的流程示意图;

图1b为本发明实施例一提供的一种多项式乘法的加速装置的结构示意图;

图2a为本发明实施例二提供的一种多项式乘法的加速方法的流程示意图;

图2b为本发明实施例二提供的一种多项式乘法的加速装置的结构示意图;

图3a和图3b为本发明实施例二提供的多项式乘法的逻辑结构示意图;

图4为现有技术中多项式乘法的逻辑结构示意图。

具体实施方式

为使本领域技术人员更好地理解本发明的技术方案,下面结合附图和具体实施方式对本发明作进一步详细描述。

本领域技术技术人员知道,本发明的实施方式可以实现为一种系统、装置、设备、方法或计算机程序产品。因此,本发明公开的实施例可以具体实现为以下形式,即:完全的硬件、完全的软件(包括固件、驻留软件、微代码等),或者硬件和软件结合的形式。

下面参考本发明的若干代表性实施方式,详细阐释本发明的原理和精神。

实施例一

图1a为本发明实施例一提供的一种多项式乘法的加速方法的流程示意图,图1b为本发明实施例一提供的一种多项式乘法的加速装置的结构示意图,如图1a所示,该多项式乘法的加速方法包括以下步骤:

步骤101、设置多个乘法器,所述多个乘法器均用于输入乘法结果至同一加法器中。

步骤102、将与第一多项式a对应的数组a=[a0,a1,a2…an‐1]中的各元素按照a0,a1…an-1的顺序依次排列后分别输入至对应乘法器的第一输入端。

步骤103、将与第二多项式b对应的数组b=[b0,b1,b2…bn‐1]中的各元素按照b0,bn-1,bn-2…b2,b1的顺序依次排列后分别输入至对应乘法器的第二输入端。

步骤104、通过多个所述乘法器生成乘法结果并输入所述乘法结果至同一加法器中,所述乘法器均分别根据第一输入端和第二输入端的输入元素生成乘法结果。

步骤105、每当所述加法器根据多个所述乘法器的乘法结果生成一个加法结果时,将数组b=[b0,b1,b2…bn‐1]中各元素的当前排列顺序后向循环移动一位后分别输入至对应乘法器的第二输入端,以供所述加法器生成下一加法结果,并直至所述加法器生成n个加法结果为止。

相应地,本实施例还提供了一种多项式乘法的加速装置,如图1b所示,该多项式乘法的加速装置包括:设置模块11、第一顺序排列模块12、第二顺序排列模块13、生成输入模块14和循环移位模块15。

设置模块11用于设置多个乘法器,所述多个乘法器均用于输入乘法结果至同一加法器中。第一顺序排列模块12用于将与第一多项式a对应的数组a=[a0,a1,a2…an‐1]中的各元素按照a0,a1…an-1的顺序依次排列后分别输入至对应乘法器的第一输入端。第二顺序排列模块13用于将与第二多项式b对应的数组b=[b0,b1,b2…bn‐1]中的各元素按照b0,bn-1,bn-2…b2,b1的顺序依次排列后分别输入至对应乘法器的第二输入端。生成输入模块14用于通过多个所述乘法器生成乘法结果并输入所述乘法结果至同一加法器中,所述乘法器均分别根据第一输入端和第二输入端的输入元素生成乘法结果。循环移位模块15用于每当所述加法器根据多个所述乘法器的乘法结果生成一个加法结果时,将数组b=[b0,b1,b2…bn‐1]中各元素的当前排列顺序后向循环移动一位后分别输入至对应乘法器的第二输入端,以供所述加法器生成下一加法结果,并直至所述加法器生成n个加法结果为止。

本实施例提供的多项式乘法的加速方法及装置,设置有多个乘法器,通过多个乘法器生成乘法结果并输入该乘法结果至同一加法器中,每当加法器根据多个乘法器的乘法结果生成一个加法结果时,将数组b=[b0,b1,b2…bn‐1]中各元素的当前排列顺序后向循环移动一位后分别输入至对应乘法器的第二输入端,以供加法器生成下一加法结果,能够提升多项式乘法的运算速度,从而提升ntru加解密过程的效率。

实施例二

图2a为本发明实施例二提供的一种多项式乘法的加速方法的流程示意图,图2b为本发明实施例二提供的一种多项式乘法的加速装置的结构示意图,如图2a所示,该多项式乘法的加速方法包括以下步骤:

步骤201、设置多个乘法器,所述多个乘法器均用于输入乘法结果至同一加法器中。

优选地,本实施例中的各步骤由多项式乘法的加速装置执行。

本实施例中,乘法器的数量为n个,n个乘法器的编号分别记为m0,m1…mn-1,n个乘法器按照编号依次排列。n个乘法器用于计算得出第一多项式a与第二多项式b的相乘多项式c=a*b,其中第一多项式a和第二多项式b中项数最大者的项数为n,相乘多项式c的项数为第一多项式a和第二多项式b中项数最小者的项数。优选地,第一多项式a和第二多项式b的项数均为n项,相乘多项式c的项数也为n项。

步骤202、将与第一多项式a对应的数组a=[a0,a1,a2…an‐1]中的各元素按照a0,a1…an-1的顺序依次排列后分别输入至对应乘法器的第一输入端。

第一多项式a=[a0+a1x1+a2x2+…+an‐1xn‐1],与第一多项式a对应的数组a=[a0,a1,a2…an‐1]包括第一多项式a中各元素的系数。

步骤203、将与第二多项式b对应的数组b=[b0,b1,b2…bn‐1]中的各元素按照b0,bn-1,bn-2…b2,b1的顺序依次排列后分别输入至对应乘法器的第二输入端。

第二多项式b=[b0+b1x1+b2x2+…+bn‐1xn‐1],与第二多项式b对应的数组b=[b0,b1,b2…bn‐1]包括第二多项式b中各元素的系数。

步骤204、通过多个所述乘法器生成乘法结果并输入所述乘法结果至同一加法器中,所述乘法器均分别根据第一输入端和第二输入端的输入元素生成乘法结果。

本实施例中,每个乘法器包括两个输入端:第一输入端和第二输入端。乘法器用于根据第一输入端和第二输入端输入的元素生成乘法结果,乘法器还包括乘法器输出端,乘法器输出端用于输出乘法结果。乘法器的输出端与加法器的输入端相连,以使得乘法结果输入至加法器中。加法器包括多个加法器输入端,加法器用于根据多个加法器输入端输入的乘法结果生成加法结果。加法器还包括加法器输出端,加法器输出端用于输出加法结果,加法结果为相乘多项式c中各元素的系数。

本实施例中,当多个乘法器的第一输入端和第二输入端均输入元素时,多个乘法器并行生成乘法结果并输出至加法器中,能够实现多项式乘法中各项系数的并行相乘及累加。

步骤205、每当所述加法器根据多个所述乘法器的乘法结果生成一个加法结果时,将数组b=[b0,b1,b2…bn‐1]中各元素的当前排列顺序后向循环移动一位后分别输入至对应乘法器的第二输入端,以供所述加法器生成下一加法结果,并直至所述加法器生成n个加法结果为止。

图3a和图3b为本发明实施例二提供的多项式乘法的逻辑结构示意图,如图3a和图3b所示,n个乘法器根据依次输入的数组a和数组b生成分别与n个乘法器m0,m1…mn-1对应的n个乘法结果,n个乘法结果均输入至同一加法器中,该加法器每次根据n个乘法结果生成一个加法结果。当数组a中的各元素一直以a0,a1…an-1的顺序输入对应的乘法器m0,m1…mn-1的第一输入端时,数组b中的各元素后向循环排列顺序多次并在每次变换排列顺序后输入至对应的乘法器m0,m1…mn-1的第二输入端,加法器在数组b中的各元素每次变换排列顺序后即生成下一加法结果,经过n-1次顺序变换后加法器共生成n个加法结果,加法器生成的n个加法结果分别为c0,c1,c2…cn‐1。

当数组a中的元素a0,a1…an-1依次分别输入至乘法器m0,m1…mn-1的第一输入端且数组b中的元素b0,bn-1,bn-2…b2,b1依次分别输入至乘法器m0,m1…mn-1的第二输入端时,所述加法器根据n个所述乘法器的乘法结果生成的加法结果为c0。当数组a中的元素a0,a1…an-1依次分别输入至乘法器m0,m1…mn-1的第一输入端且数组b中的元素bn-1,bn-2…b2,b1,b0依次分别输入至乘法器m0,m1…mn-1的第二输入端时,所述加法器根据n个所述乘法器的乘法结果生成的加法结果为cn‐1。

步骤206、通过所述加法器生成的n个加法结果生成第一多项式与第二多项式的相乘多项式。

加法器生成的n个加法结果分别为c0,c1,c2…cn‐1即为相乘多项式c中各元素的系数。

根据加法器生成的n个加法结果生成第一多项式a=[a0+a1x1+a2x2+…+an‐1xn‐1]与第二多项式b=[b0+b1x1+b2x2+…+bn‐1xn‐1]的相乘多项式c=a*b=[c0+c1x1+c2x2+…+cn‐1xn‐1]。

值得说明的是,本实施例中,加法器根据多个所述乘法器的乘法结果生成一个加法结果的时长记为一个乘法周期t,则加法器生成n个加法结果的时长包括n个乘法周期t,即完成一次n项多项式乘法的耗时为n*t。

图4为现有技术中多项式乘法的逻辑结构示意图,如图4所示,在现有技术中,若要计算出第一多项式a=[a0+a1x1+a2x2+…+an‐1xn‐1]与第二多项式b=[b0+b1x1+b2x2+…+bn‐1xn‐1]的相乘多项式c=a*b=[c0+c1x1+c2x2+…+cn‐1xn‐1],则需一一计算c中各元素的系数ck=a0bk+a1bk‐1+a2bk‐2+…+akb0+ak+1bn‐1+ak+2bn‐2+…+an‐1bk+1,即需要进行n次乘法计算,由于c中含有n个元素,完成一次n项多项式乘法的耗时为n2*t。现有技术采用串行计算的模式实现多项式相乘运算。本实施例设置有多个乘法器,通过移位变换第二多项式中各项系数的输入方式的方式改进了多项式环乘积计算模式,实现多项式乘法中每级系数并行相乘并累加,加法器生成n个加法结果的时长仅需n个乘法周期t,本实施例完成一次n次多项式乘法的耗时n*t远小于现有技术中完成一次n次多项式乘法的耗时n2*t。本实施例的多项式乘法的加速方法能够显著提升多项式乘法的运算速度,当将该多项式乘法的加速方法应用于ntru加解密过程时,能够进而提升ntru加解密过程的效率。

相应地,本实施例还提供了一种多项式乘法的加速装置,如图2b所示,该多项式乘法的加速装置包括:设置模块11、第一顺序排列模块12、第二顺序排列模块13、生成输入模块14和循环移位模块15。

设置模块11用于设置多个乘法器,所述多个乘法器均用于输入乘法结果至同一加法器中。第一顺序排列模块12用于将与第一多项式a对应的数组a=[a0,a1,a2…an‐1]中的各元素按照a0,a1…an-1的顺序依次排列后分别输入至对应乘法器的第一输入端。第二顺序排列模块13用于将与第二多项式b对应的数组b=[b0,b1,b2…bn‐1]中的各元素按照b0,bn-1,bn-2…b2,b1的顺序依次排列后分别输入至对应乘法器的第二输入端。生成输入模块14用于通过多个所述乘法器生成乘法结果并输入所述乘法结果至同一加法器中,所述乘法器均分别根据第一输入端和第二输入端的输入元素生成乘法结果。循环移位模块15用于每当所述加法器根据多个所述乘法器的乘法结果生成一个加法结果时,将数组b=[b0,b1,b2…bn‐1]中各元素的当前排列顺序后向循环移动一位后分别输入至对应乘法器的第二输入端,以供所述加法器生成下一加法结果,并直至所述加法器生成n个加法结果为止。

进一步地,该多项式乘法的加速装置还包括生成模块16。生成模块16用于通过所述加法器生成的n个加法结果生成第一多项式与第二多项式的相乘多项式。

本实施例提供的多项式乘法的加速方法及装置,设置有多个乘法器,通过移位变换的方式改进多项式环乘积计算模式,实现每级系数并行相乘并累加,其完成一次n次多项式乘法的耗时n*t远小于现有技术中完成一次n次多项式乘法的耗时n2*t,能够提升多项式乘法的运算速度。当将该多项式乘法的加速方法应用于ntru加解密过程时,能够进而提升ntru加解密过程的效率。

应当注意,尽管在附图中以特定顺序描述了本发明方法的操作,但是,这并非要求或者暗示必须按照该特定顺序来执行这些操作,或是必须执行全部所示的操作才能实现期望的结果。附加地或备选地,可以省略某些步骤,将多个步骤合并为一个步骤执行,和/或将一个步骤分解为多个步骤执行。

实施例三

本发明实施例三提供了一种ntru加解密加速方法,该ntru加解密加速方法包括:所述ntru加解密过程中的多项式乘法运算均通过实施例一或实施例二提供的多项式乘法的加速方法实现。

进一步地,乘法器的数量为n个,所述n为所述ntru加解密过程中所涉及的多个多项式中项数最大的多项式的项数。

ntru加解密过程中会涉及到多次多项式相乘运算,每次多项式相乘运算涉及到的多项式的最高项数各不相同,乘法器的数量n为其中所涉及到的项数最高的多项式的项数。

相应地,本发明实施例三还提供了一种ntru加解密加速装置,包括实施例一或实施例二提供的多项式乘法的加速装置。

本实施例提供的ntru加解密加速方法及装置,能够在提升多项式乘法的运算速度的基础上,实现ntru加解密过程的效率提升。

本领域内的技术人员应明白,本发明的实施例可提供为方法、系统、或计算机程序产品。因此,本发明可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、cd-rom、光学存储器等)上实施的计算机程序产品的形式。

本发明是参照根据本发明实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。

这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。

这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。

本发明中应用了具体实施例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想;同时,对于本领域的一般技术人员,依据本发明的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本发明的限制。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1