CN1258710C - 用于高效模数归约和模数乘法的电路和方法 - Google Patents
用于高效模数归约和模数乘法的电路和方法 Download PDFInfo
- Publication number
- CN1258710C CN1258710C CNB031563201A CN03156320A CN1258710C CN 1258710 C CN1258710 C CN 1258710C CN B031563201 A CNB031563201 A CN B031563201A CN 03156320 A CN03156320 A CN 03156320A CN 1258710 C CN1258710 C CN 1258710C
- Authority
- CN
- China
- Prior art keywords
- register
- piece
- totalizer
- unconditional
- addition
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Expired - Fee Related
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F7/00—Methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F7/60—Methods or arrangements for performing computations using a digital non-denominational number representation, i.e. number representation without radix; Computing devices using combinations of denominational and non-denominational quantity representations, e.g. using difunction pulse trains, STEELE computers, phase computers
- G06F7/72—Methods or arrangements for performing computations using a digital non-denominational number representation, i.e. number representation without radix; Computing devices using combinations of denominational and non-denominational quantity representations, e.g. using difunction pulse trains, STEELE computers, phase computers using residue arithmetic
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F7/00—Methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F7/60—Methods or arrangements for performing computations using a digital non-denominational number representation, i.e. number representation without radix; Computing devices using combinations of denominational and non-denominational quantity representations, e.g. using difunction pulse trains, STEELE computers, phase computers
- G06F7/72—Methods or arrangements for performing computations using a digital non-denominational number representation, i.e. number representation without radix; Computing devices using combinations of denominational and non-denominational quantity representations, e.g. using difunction pulse trains, STEELE computers, phase computers using residue arithmetic
- G06F7/722—Modular multiplication
Landscapes
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Engineering & Computer Science (AREA)
- Computational Mathematics (AREA)
- Mathematical Analysis (AREA)
- Mathematical Optimization (AREA)
- Pure & Applied Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Computing Systems (AREA)
- Mathematical Physics (AREA)
- General Engineering & Computer Science (AREA)
- Complex Calculations (AREA)
Abstract
公开密钥密码系统的运算需要大数模数归约和模数乘法。此外,这两个运算的高效执行对于在加密引擎和过程中达到高性能水平至关重要。本发明使用乘法和加法,而不是除法和减法来执行模数运算。通过从高阶位开始的处理,加上有关产生加法运算的进位输出信号的情况的明智观察,本发明还实现其某些优点。这些进位输出信号被用来提供校正和效率,所述校正允许使用高阶位,而高阶位的这种使用带来了效率。另外,不同于其它方法,本发明避免了预处理和后处理运算的负担。
Description
技术领域
本发明通常涉及用于公开密钥密码系统的电路和方法。因此,本发明涉及包括模数运算,即以整数N为模的运算(其中N的数值通常非常大,并且结果是按常规除法除以N之后的余数)的计算。更具体地,本发明涉及以除法形式执行模数归约的电路和方法。更具体地,本发明涉及执行模N乘法的电路和方法。
背景技术
模数归约和模数乘法是多数公开密钥密码系统中执行的两种基本运算。已知有若干技术用于执行这些运算。例如,为了计算A以N为模的模数归约,即确定A除以N时的余数,基本上有2个方案:常规方法和Montgomery(蒙哥马利)方法。这两个方法均是在顺序过程中减少A modN的有效位的数量。常规方法是通过除法和减法运算从最高有效位开始减少A mod N的有效位的数量。另一方面,Montgomery方法在减少有效位数量时是从最低有效位开始使用乘法和随后的加法运算。在常规方法中,首先得到A除以N的最高有效位的商。接着从A减去商和模数N的乘积。如果所得到的数值小于模数,则该数值是答案。如果结果数值不小于模数,则继续除法和减法运算。在Montgomery方法中,A被加到N和根据A的最低有效位计算的单位的乘积上。这个加法运算的和的最低有效位为零。于是,和数被向右偏移一位以清除最低有效位。在Montgomery方法中,这些步骤被重复m次,其中m是N中有效位的数量。在运算结束时,结果数值是(A/Rm)mod N,其中R是单位可以表示的数值。在Montgomery方法中不需要除法的复杂运算。然而Montgomery方法产生了转换结果。在Montgomery方法中需要预处理和后处理以得到最终结果。
发明内容
根据本发明的优选实施例,提供了用于模数归约的方法和电路。还提供了用于模数乘法的第一方法和电路,以及其改进的方法和电路。
在这里用于模数归约的运算中,在不损失通过填充高阶零位位置容易得到的一般性的情况下,可以认为将计算其模数的数值被分割成n个块,其中每个块中有k位。每个k位块变成以R为底的数字,即被选定为2k的形式。同样地,在不损失任何一般性的情况下,并且由于相同的原因,模数N被假定分成m个块,其中每个块具有k个位。在开始电路的处理或运算之前,产生数值RN=Rm+1 mod N,或者从预定存储器源提供或加载。对于n>m的实际情况,或者对于相反的情况,很容易找到结果。这里使用的模数归约方法从中间结果寄存器中存储的操作数A的高阶(mk+2k)位开始处理,并且利用通过左移k位可容易地实现R的乘法这一事实。中间结果寄存器的高阶k位被乘以RN,并且结果被加到中间结果寄存器的低阶(mk+k)位上。如果这个运算产生(高阶位位置的)进位,则在其被返回到中间结果寄存器的低阶(mk+k)位位置之前,数值RN被加到结果上。这个寄存器的内容接着被向左偏移k位,并且操作数A的下一个低阶位块被载入这个寄存器的低阶k位位置。这个过程继续执行,直到操作数A的最后k位块被处理,结果A mod N变成中间结果寄存器中的最终数值。
在这里用于模数乘法的过程中,数值RN=Rm+1 mod N或者被预先计算,或者从存储器或寄存器中检索。如上所述,假定被乘数A被分成m个块,每个块具有k位。对于乘数B也是如此。结果Z是A×B mod N,可以具有(m+1)位。注意,这是不同于通常返回(2m-1)位的普通乘法的模数乘法。最好在中间存储寄存器Z中累积结果。过程从产生Z+ABi开始,其中Bi是B的第i个k位块,从而由高阶位置开始(即B0是低阶k位)。如果加法运算产生进位,则数值RN与Z相加;如果没有进位,则没有任何数值相加(即加零)。在迭代过程的第二个主要部分中,Z的高阶k位被乘以RN,并且与前面加法(或多次加法,取决于是否发生进位)的结果的低阶(mk+k)位相加,但是在所有位均为零的k位加法之前,Z的高阶k位被附加到第二被加数上,于是有效提供了R的乘法。如果这个第二加法产生了进位,则使用如上所述的相同″校正″步骤,即将RN与第二加法的结果相加。结果被存储在中间寄存器(或存储器中的结果位置)中,并且过程继续处理乘数B的下一个低阶k位。于是可以发现,这个过程使用了2个乘数和4个加数,其中2个加数是经过调节的加数,″通常″将零加到结果上,除非紧接在前面的加法存在进位。这个过程非常易于通过电路实现,所述电路包括被连接起来以执行过程的加法器、乘法器和移位寄存器。
这里还提供上述过程和电路的变化形式。其工作方式与如上所述的方式基本上相同,但是使用中间结果寄存器Z作为过程中用于R的有效乘法的计算点(即:通过附加零),以及用于针对RN的乘法选择Zm的高阶位的过程的计算点。所述过程和电路的这个变型使用的加法和加数的数量与如上所述的相同,并且使用的乘数的数量和长度也与如上所述的相同。然而通过在Z寄存器(如上所述,充当累加器和/或中间存储寄存器)点上引入上述变化,提供了以更大的时间重叠执行2个乘法运算的机会,于是减少了信号吞吐的关键路径,并且因此产生了速度更高的电路运算。
因此,本发明的目的是构造用于执行模数归约和模数乘法,尤其是涉及大数的模数归约和模数乘法的运算的电路。
本发明的另一个目的是提供用于执行模数算术运算的方法,其中避免了当前可用方案中存在的缺点。
本发明的另一个目的是改进公开密钥密码系统中的现有技术。
最终但不限于此地,本发明的目的是产生用于公开密钥密码系统的电路,所述电路不太复杂,并且可以快速和高效地执行模数归约和模数乘法。
这里列出的通过本发明的各种实施例满足的期望目的不意味着任何或所有这些目的被提供成本发明的最通用实施例或任何其具体实施例的必要特征,无论是单独地或共同地。
附图说明
在说明书结束部分的权利要求书中特别指出了涉及制定本发明的主题内容,并且对上述内容明确提出了权利要求。参照下面结合附图对优选实施例进行的描述可以更好地理解本发明及其目的和方法(从组织和实践方法方面),其中:
图1是本发明用于执行模数归约运算的电路的模块图;
图2是本发明第一实施例的用于执行模数乘法的电路的模块图;而
图3是本发明第二实施例的用于执行模数乘法的电路的模块图。
具体实施方式
在本申请中,提供了计算A mod N的新方案。象在常规方法中那样,本发明从最高有效位开始顺序产生A mod N。然而本发明使用乘法和加法,而不是除法和减法。然而与Montgomery方法相反,不存在涉及预处理或后处理的″负担″。
首先描述本发明的模数归约方法。在下面的描述中,提供了有关如何将该方法应用于模数乘法的描述。描述了2个用于模数乘法的方案。
模数归约
加密应用中涉及的数值通常非常大。例如,模数N的数值可以有上千位。因此,为了描述和运算的效率,这里将某些数值表示成R的多项式,其中R=2k。具体地,将A表示成An-1Rn-1+...+A1R+A0,将N表示成Nm-1Rm-1+...+N1R+N0,其中多项式系数的数值在0和2k-1之间,An-1和Nm-1非零,并且n通常大于m。
以下标记也被用在本说明书中,以便观察这里的方法和电路为何和如何执行期望的功能。A除以N的余数被称作Z,其中Z=A mod N。标准全等关系A≡B mod N表示A和B在被N除时同余。这里的一个目的是得到数值Z=A mod N,其中Z是如上所述A除以N的余数。本方案将高效地得到具有m+1位的Z′,使得Z′除以N的余数等于Z,即Z=Z′modN并且Z′≡A mod N。为了根据Z′得到Z,可以使用常规方法的任何变化形式。这里的优选方法预先计算和存储常数RN=Rm+1 mod N。注意N小于Rm并且RN小于N。于是RN<Rm-1。
考虑多项式C=Cm+1Rm+1+CmRm+...+C1R+C0,它表示(m+2)位数值。寻找表示(m+1)位数值并且恒等于C mod N的多项式的过程如下所述。
假定C′=CmRm+...+C1R+C0,C′是清除了最高有效位的C,即C=Cm+1Rm+1+C′。由于RN=Rm+1 mod N,因此C″=Cm+1RN+C′≡C mod N。此外,C′<Rm+1,Cm+1<R并且RN<Rm-1,于是C″<2Rm+1。也就是说,2个(m+1)位数值Cm+1RN和C′的相加可以具有不超过1的数值进位。如果进位为零,则C″是恒等于C mod N的(m+1)位数值。如果进位为1,则设置C=(C″-Rm+1)+RN。于是C≡C mod N。现在C是(m+1)位数值。我们发现:
C″=Cm+1RN+C′≤(R-1)(Rm-2)+Rm+1-1,并且
C=(C″-Rm+1)+RN≤(R-1)(Rm-2)+Rm+1-1-Rm+1+Rm-2。
于是,C≤Rm+1-2R-1。因此如上所述,(C″-Rm+1)和C的RN的相加没有产生进位,并且C具有(m+1)位。
可以一步执行该过程:假定C=Ci+1Ri+1+CiRi+...+C1R+C0是(i+2)位数值,则C′=CiRi+...+C1R+C0,C″=Ci+1RNRi-m+C′。于是C″≡Cmod N。另外,C″小于2Ri+1。如果C″小于Ri+1,则C″是(i+1)位数值。如果C″大于Ri+1-1,则C=C″-Ri+1+RNRi-m≡C mod N,并且C是(i+1)位数值。重复使用这个模数位归约过程以得到具有(m+1)位、恒等于Cmod N的数值。
因此,根据上述过程和结果,发现以下算法可用于实现模数归约:
模数归约算法:Z=A mod N
以下是该过程的输入:
A=An-1Rn-1+...+A1R+A0
N=Nm-1Rm-1+...+N1R+N0
R=2k;通常n>m(否则按正常过程得到结果)。
RN=Rm+1 mod N,RN<N
1.Z=A
=Zn-1Rn-1+...+Z1R+Z0
2.对于i=n-1到m+1,执行
Z=Z-ZiRi+Z1RNRi-m-1
如果Zi≠0,Z=Z-Ri+RNRi-m-1
3.将Z顺序模数归约到一个数值,使得Z<N。
图1的模块图提供了上述模数归约算法的步骤1和2的硬件实现。RN的数值被存储在RN寄存器100中。Z寄存器101是移位寄存器,其低阶(m+1)位保存临时结果。当在(n-m-1)次迭代的一次迭代中将Z寄存器向左(高阶位置)移位时,Z寄存器101的低阶位被填充以A的次高阶位。乘法器102将RN乘以来自Z寄存器101的最左k位的单位数值Zi,以产生(m+1)位输出。加法器103接着被用来产生乘法器102的输出与Z寄存器101的低阶(m+1)位的和数。仅在来自加法器103的进位输出信号为″1″时(也就是说,当且仅当发生进位时),通过加法器105将RN加到加法器103的输出上。因此,RN寄存器100的输出被提供给″与″门104,″与″门104的其它输入是上述来自加法器103的进位信号。接着将来自加法器105的结果放回到Z寄存器101以结束一个迭代。重复该过程,直到Z寄存器101的内容小于或等于N。
模数乘法
本发明提供了用于计算A×B mod N的2个方法和2个电路。图2描述和图解的过程和方法这里被称作算法1。图3描述和图解的过程和方法这里被称作算法2。现在从算法1开始详细描述它们。
通过首先得到A和B的乘积,并且接着应用一个将乘积模数归约到小于N的数值的过程,可以执行A×B mod N的计算。然而这并不是优选方案,因为这个方案的修改方案可以合并乘法和模数归约的运算以产生更加高效的过程和更加简单的电路。为了更好地理解本发明,这里假定A、B和N全部是m位数值。A和B的乘积通常为具有2m位的数值。为了降低用于保存乘积的寄存器的尺寸,每当A被乘以B的单位时,以取模的方式缩减乘积。注意,乘以″B的位″表示k位的块,表示为Bi。这个方案将寄存器的尺寸缩减了接近1/2。
为了更好地理解这个方案,假定A=Am-1Rm-1+...+A1R+A0,B=Bm-1Rm-1+...+B1R+B0。接着根据A×B=((...(ABm-1R+ABm-2)R+...)R+B0)顺序得到A×B。在迭代的每个步骤中,部分乘积ABi与临时乘积相加。如代数表达式所示,接着将和数乘以R。然而应当注意,由于对R的选择,通过移位操作执行R的乘法,并且R的乘法不需要特殊的乘法电路。在这点上,涉及到加法器206,其中提供k位的零以作为加法器206的输出的低阶k位,从而有效执行期望乘法。任何附加硬件成本均是最小的。如上所述,接着执行模数归约过程以产生期望结果,即:A×B mod N。以下是对所使用的过程的描述。
模数乘法(算法1):Z=A×B mod N
过程的输入:
A=Am-1Rm-1+...+A1R+A0
B=Bm-1Rm-1+...+B1R+B0
Z=ZmRm+...+Z1R+Z0
RN=Rm+1 mod N,RN<N
过程为:
步骤1.Z=0
步骤2.对于i=m-1到1,执行
Z=Z+ABi
如果进位=1,则Z=Z+RN,否则Z=Z+0=Z.
Z=(Z-ZmRm)R+ZmRN
如果进位=1,则Z=Z+RN,否则Z=Z+0=Z.
步骤3.Z=Z+AB0
步骤4.将Z模数归约到小于或等于N的数值。
图2示出了一个电路的模块图,该电路执行上述用于模数乘法的算法1的步骤1-3的过程。Z寄存器201保存临时结果。在过程开始时,寄存器201的内容被设置成零。同样地,在过程开始时,RN寄存器200保存数值Rm+1 mod N,该数值在整个过程期间恒定。被乘数寄存器202含有A的二进制表示,如上所述,该表示被分成m个″块″,每个块具有k位。同样地,乘数B被分成m个″块″,每个块具有k位,其中以每次k位的速率,即在过程的每次迭代时将乘数B的高阶位提供给乘法器203。显然,Bm-1首先被提供到乘法器203,接着是Bm-2等等,直到B1。乘法器203的输出ABi被提供给加法器204,其中如前面在步骤2中所记载的,将ABi与Z寄存器201中的当前数值相加以形成Z+ABi。如果加法器204中的相加产生进位信号输出,则在从加法器204接收进位信号的″与″门205的控制下,如前面在步骤2中所描述的,加上RN以执行运算Z=Z+RN。由加法器206执行后者的运算。此外,为了产生与R的乘法相同的效果,提供k位(均为零),就象它们是来自加法器206的输出的最右k位那样。就象在步骤2中示出的那样,来自加法器206的输出的高阶或最左k位(表示Z中的最左k位的位置,即Zm)被提供给乘法器207,以形成乘积ZmRm,再次注意RN=Rm+1 mod N=R Rm mod N。尤其应当注意,在k位(均为零)被附加到加法器206的输出的最右位位置之后,只有最右(m+1)k位(目前总共(m+2)k位中)被提供给加法器208。这有效地清除Z的高阶k位;更抽象地说,象在步骤2中规定的那样,加法器206的被提供给加法器208的输出为(Z-ZmRm)R。当加法器208中的加法运算产生进位指示时,″与″门209接收进位指示并且使用它控制在加法器210中是否将RN加到加法器208的输出上。加法器210的输出被返回到寄存器201,寄存器201含有过程的部分结果。当B的″各个位″的新数值(即Bi数值)被从B的移位寄存器(未示出)提供到乘法器203时,该过程继续(m-1)次迭代。在总共m个步骤的最后,数值B0,即B的最低有效位被提供到乘法器203,并且电路计算Z=A×B mod N的最终值。
模数乘法(算法2):Z=A×B mod N
下述过程是算法1的变形。
过程的输入:
A=Am-1Rm-1+...+A1R+A0
B=Bm-1Rm-1+...+B1R+B0
Z=ZmRm+...+Z1R+Z0
预先计算:RN=Rm+1 mod N,RN<N
过程:
步骤1.令Z=0
步骤2.对于i=m-1到0,执行
Z=(Z-ZmRm)R+ZmRN
如果进位=1,则Z=Z+RN,否则Z=Z+0=Z。
Z=Z+ABi
如果进位=1,则Z=Z+RN,否则Z=Z+0=Z。
步骤3.将Z顺序模数归约到小于N的数值。
图3示出的电路的运算类似于图2示出的电路。为了便于理解,可以将算法2中执行的运算映射到图3中的具体电路部件。例如,在形成(Z-ZmRm)R+ZmRN时,在加法器307中执行加法,并且由乘法器306执行ZmRN的乘法。通过引入k位的零以作为Z寄存器301的低阶输出位(Z寄存器301被用来存储迭代之间的中间结果),并且通过选择Z寄存器301的最左k位,产生表达式(Z-ZmRm)R。(这类似于图2中的加法器206执行的运算。)如果存在来自加法器307的进位输出,则在″与″门308的控制下,加法器309形成结果Z+RN,其中仅在存在来自加法器307的进位时才相加来自寄存器300的数值RN。使用乘法器303和来自寄存器302的输入A与Bi,产生乘积ABi,其中通过加法器304将乘积ABi加到Z的当前中间数值上产生表达式Z+ABi。再次地,如果存在加法器304的加法所产生的进位,象由加法器305执行的那样,进位信号和″与″门310提供在上述算法2的步骤2的最后部分中执行RN的条件加法的机制。加法器305的输出作为反馈被提供到Z寄存器301,于是过程继续m次迭代的下一次迭代,其中B次低阶位(即下一个Bi)被提供给乘法器303。
图3示出的电路表示本发明的优选实施例,因为它允许2个计算强度更高的乘法运算在被乘法器306和303执行时具有更大的时间重叠。于是,图3中的电路也具有关键路径短于图2的电路的特点。概括地说,图3的电路提供更快速的运算。注意,这里提供的电路也可以被实现成流水线的方式。
应当注意,虽然m、n和k的数值被示出为有限数值,然而这不是真实的情况,因为可以始终用零填充最左或高阶位位置,直到期望实现合理和有效的数值的范围。具体地,根据电路设计,k=32是对现有技术方便的选择。mk的数值是类似1,024;2,048或4,096的数值,或者是与上述数值中的一个接近的数值。通常,为了设计的方便,并且根据人们希望在密码系统系统(使用本发明的方法和电路)中实现的安全程度的函数选择m和k的数值。注意,本发明也可容易地适应A和B中的位或k位块的数量不相同的情况。在这个方面,本发明的方法和系统比Montgomery算法更加通用。通常,如果是这样,通过Bi输入提供较短的系数以得到更高的速度,由于这缩减了迭代数量。然而如果A寄存器(202或302)的尺寸受到限制,则通过向系统输送较长系数以作为Bi输入,可以在寄存器尺寸和速度之间得到折衷。
这里根据本发明的某些最优实施例详细描述了本发明,本领域的技术人员可以对其作出许多修改和改变。所附权利要求书试图把所有这种修改和改变覆盖在本发明的真实宗旨和范围内。
Claims (10)
1.一种用于产生A mod N的方法,其中A是具有n个块并且每个块具有k位的二进制数,N是具有m个块并且每个块具有k位的二进制数,所述方法包括如下步骤:
向第一寄存器加载数值RN=Rm+1mod N,其中R=2k;
向变量Z的第二寄存器加载A的高阶m块;和
对于i的范围为n-1到m+1的数值,用数值Z-ZiRi+ZiRNRi-m-1替换所述第二寄存器中的数值,但是如果加法运算产生进位指示,则用数值Z-ZiRi+ZiRNRi-m-1-Ri+RNRi-m-1替换所述第二寄存器中的数值,其中Z是所述第二寄存器中的当前数值,Zi是所述第二寄存器中的高阶k位,并且将所述第二寄存器向左移位,在其右侧移入A的下一个k位块。
2.如权利要求1所述的方法,其中通过k位移位执行R的乘法。
3.如权利要求1所述的方法,其中所述第一寄存器具有mk位。
4.如权利要求1所述的方法,其中所述第二寄存器具有(m+2)k位。
5.一种用于产生A mod N的电路,其中A是具有n个块并且每个块具有k位的二进制数,N是具有m个块并且每个块具有k位的二进制数,所述电路包括:
具有按照k位块排列的mk+2k位的移位寄存器,用于初始保存A的m个最高阶块,并且接收A的移入所述移位寄存器的最低阶k位块的各后续k位块;
存储寄存器,用于保存表示数值Rm+1mod N的mk个位,其中R=2k;
乘法器电路,用于将所述存储寄存器的内容乘以所述移位寄存器中最高阶位置的k位;
第一加法电路,用于将来自所述乘法器的输出加到所述移位寄存器中低阶mk+k位上;和
第二加法器,用于当所述第一加法电路产生进位信号时将所述存储寄存器的内容加到所述第一加法器的输出上,否则加上零。
6.如权利要求5所述的电路,其中所述第一加法器产生被提供给″与″门的进位信号,″与″门控制是否在所述第二加法器中相加所述存储寄存器的内容。
7.一种用于产生AxB mod N的方法,其中A和B是二进制数,其至少一个具有m个块并且每个块具有k位,N是二进制数,所述方法包括如下步骤:
向第一寄存器加载数值Rm-1mod N,其中R=2k;
向被乘数寄存器加载A;
设置中间结果寄存器为零;
对于i的范围为m-1到1的数值,执行以下步骤(a)到(g):
(a)形成A和Bi的第一乘积,其中Bi是B的第i个k位块,B0是低阶块;
(b)在第一无条件加法中将所述中间结果寄存器的内容加到所述第一乘积上;
(c)当所述第一加法产生进位时,在第一条件加法中将所述第一寄存器的内容加到所述第一无条件加法的结果上,否则加上零;
(d)形成所述第一寄存器的内容和来自所述第一条件加法的输出的高阶k位的第二乘积;
(e)在第二无条件加法中将所述第一条件加法的低阶mk位与所述第二乘积相加,其中为零的k位被附加到所述mk位的最右端;
(f)当所述第二无条件加法产生进位时,在第二条件加法中将所述第一寄存器的内容加到所述第二无条件加法的结果上,否则加上零;
(g)将所述第二无条件加法运算的结果加载到所述中间结果寄存器。
8.一种用于产生AxB mod N的电路,其中A和B是二进制数,其至少一个具有m个块并且每个块具有k位,N是二进制数,所述电路包括:
中间存储寄存器;
被乘数寄存器,用于存储A的数值;
常数寄存器,用于存储数值Rm+1mod N,其中R=2k;
用于形成A和Bi的乘积的第一乘法器,其中Bi是B的第i个k位块,B0是低阶块;
第一无条件加法器,用于产生所述第一乘法器的乘积与所述中间存储寄存器的内容的和数,所述第一无条件加法器还产生第一进位信号;
第一条件加法器,用于当所述第一进位信号指示来自所述第一无条件加法器的最左位位置的进位时,产生所述常数寄存器的内容与所述第一无条件加法器的和数的和数;
第二乘法器,用于产生所述常数寄存器的内容与所述第一条件加法器产生的所述和数中最左k位的乘积;
第二无条件加法器,用于产生所述第二乘法器的乘积与来自第一条件加法器的最右mk位的和数,其中为零的k位被附加在所述最右mk位的最右端,并且所述第二无条件加法器还产生第二进位信号;
第二条件加法器,用于当所述第二进位信号指示来自所述第二无条件加法器的最左位位置的进位时,产生所述常数寄存器的内容与所述第二无条件加法器的和数的和数;和
反馈连接,用于从所述第二条件加法器向所述中间存储寄存器提供和数。
9.一种用于产生AxB mod N的方法,其中A和B是二进制数,其至少一个具有m个块并且每个块具有k位,N是二进制数,所述方法包括以下步骤:
向第一寄存器加载数值Rm+1mod N,其中R=2k;
向被乘数寄存器加载A;
设置中间结果寄存器为零;
对于i的范围为m-1到0的数值,执行以下步骤(a)到(g):
(a)形成所述第一寄存器的内容与所述中间结果寄存器中最左k位的第一乘积;
(b)在第一无条件加法中将所述第一乘积与所述中间结果寄存器的低阶mk位相加,其中为零的k位被附加到所述mk位的最右端;
(c)当所述第一无条件加法产生进位时,在第一条件加法中将所述第一无条件加法的输出与所述第一寄存器的内容相加,否则加上零;
(d)形成所述被乘数寄存器的内容与Bi的第二乘积,其中Bi是B的第i个k位块,B0是低阶块;
(e)在第二无条件加法中将所述第二乘积和所述第一条件加法的输出相加;
(f)当所述第二无条件加法产生进位时,在第二条件加法中将所述第二无条件加法的输出与所述第一寄存器的内容相加,否则加上零;和
(g)将所述第二条件加法的结果加载到所述中间结果寄存器。
10.一种用于产生AxB mod N的电路,其中A和B是二进制数,其至少一个具有m个块并且每个块具有k位,N是二进制数,所述电路包括:
中间存储寄存器;
被乘数寄存器,用于存储A的数值;
常数寄存器,用于存储数值Rm+1mod N,其中R=2k;
用于形成A和Bi的乘积的第一乘法器,其中Bi是B的第i个k位块,B0是低阶块;
第二乘法器,用于产生所述常数寄存器的内容与所述中间存储寄存器的最左k位的乘积;
第一无条件加法器,用于产生所述第二乘法器的乘积与来自中间存储寄存器的最右mk位的和数,其中为零的k位被附加在所述最右mk位的最右端,并且所述第一无条件加法器还产生第一进位信号;
第一条件加法器,用于当所述第一进位信号指示来自所述第一无条件加法器的最左位位置的进位时,产生所述常数寄存器的内容与所述第一无条件加法器的和数的和数;
第二无条件加法器,用于产生所述第一乘法器的乘积与所述第一条件加法器的和数的和数,所述第二无条件加法器还产生第二进位信号;
第二条件加法器,用于当所述第二进位信号指示来自所述第二无条件加法器的最左位位置的进位时,产生所述常数寄存器的内容与所述第二无条件加法器的和数的和数;和
反馈连接,用于从所述第二条件加法器向所述中间存储寄存器提供和数。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US10/263,032 US7627114B2 (en) | 2002-10-02 | 2002-10-02 | Efficient modular reduction and modular multiplication |
US10/263,032 | 2002-10-02 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN1490714A CN1490714A (zh) | 2004-04-21 |
CN1258710C true CN1258710C (zh) | 2006-06-07 |
Family
ID=32041920
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CNB031563201A Expired - Fee Related CN1258710C (zh) | 2002-10-02 | 2003-09-01 | 用于高效模数归约和模数乘法的电路和方法 |
Country Status (2)
Country | Link |
---|---|
US (1) | US7627114B2 (zh) |
CN (1) | CN1258710C (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
TWI784406B (zh) * | 2020-06-04 | 2022-11-21 | 熵碼科技股份有限公司 | 採用迭代計算的模數運算電路 |
US11662978B2 (en) | 2020-06-04 | 2023-05-30 | PUFsecurity Corporation | Modular operation circuit adopting iterative calculations |
Families Citing this family (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6973470B2 (en) * | 2001-06-13 | 2005-12-06 | Corrent Corporation | Circuit and method for performing multiple modulo mathematic operations |
FR2862454A1 (fr) * | 2003-11-18 | 2005-05-20 | Atmel Corp | Methode de reduction modulaire aleatoire et equipement associe |
FR2885711B1 (fr) * | 2005-05-12 | 2007-07-06 | Atmel Corp | Procede et materiel modulaire et aleatoire pour la reduction polynomiale |
US8024391B2 (en) * | 2006-11-06 | 2011-09-20 | Atmel Rousset S.A.S. | Modular multiplication method with precomputation using one known operand |
CN100378654C (zh) * | 2006-12-07 | 2008-04-02 | 中国科学院计算技术研究所 | 使用乘加加指令实现长数据乘法的装置及方法 |
US7755766B1 (en) | 2007-03-27 | 2010-07-13 | Itt Manufacturing Enterprises, Inc. | Telescope interferometric maintenance evaluation tool |
US8438208B2 (en) * | 2009-06-19 | 2013-05-07 | Oracle America, Inc. | Processor and method for implementing instruction support for multiplication of large operands |
US8555038B2 (en) | 2010-05-28 | 2013-10-08 | Oracle International Corporation | Processor and method providing instruction support for instructions that utilize multiple register windows |
KR101925868B1 (ko) | 2012-05-17 | 2018-12-06 | 삼성전자주식회사 | 모듈러 계산 유닛 및 그것을 포함하는 보안 시스템 |
CN103699358B (zh) * | 2013-12-05 | 2016-11-23 | 西安交通大学 | 一种适用于大数的快速模平方运算电路 |
US10635397B2 (en) * | 2018-03-08 | 2020-04-28 | Gsi Technology Inc. | System and method for long addition and long multiplication in associative memory |
TWI802095B (zh) * | 2021-11-22 | 2023-05-11 | 財團法人工業技術研究院 | 模數乘法電路與對應之計算模數乘法之方法 |
Family Cites Families (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
ATE183315T1 (de) * | 1991-09-05 | 1999-08-15 | Canon Kk | Verfahren und gerät zum verschlüsseln und entschlüsseln von kommunikationsdaten |
US5513133A (en) * | 1992-11-30 | 1996-04-30 | Fortress U&T Ltd. | Compact microelectronic device for performing modular multiplication and exponentiation over large numbers |
DE69727796T2 (de) * | 1996-10-31 | 2004-12-30 | Atmel Research | Koprozessor zum Ausführen von modularer Multiplikation |
US5828590A (en) * | 1996-11-27 | 1998-10-27 | United Microelectronics Corp. | Multiplier based on a variable radix multiplier coding |
KR100304693B1 (ko) * | 1998-07-22 | 2001-09-29 | 윤종용 | 모듈러연산장치및모듈러연산기능을갖는ic카드 |
US6925563B1 (en) * | 1999-09-22 | 2005-08-02 | Raytheon Company | Multiplication of modular numbers |
US6662201B1 (en) * | 1999-11-01 | 2003-12-09 | Kabushiki Kaisha Toshiba | Modular arithmetic apparatus and method having high-speed base conversion function |
KR100848412B1 (ko) * | 2000-05-15 | 2008-07-28 | 엠-시스템스 플래쉬 디스크 파이오니어스 리미티드 | 정수연산필드의 범위를 확장하는 장치 및 방법 |
US7167885B2 (en) * | 2002-03-22 | 2007-01-23 | Intel Corporation | Emod a fast modulus calculation for computer systems |
US7346159B2 (en) * | 2002-05-01 | 2008-03-18 | Sun Microsystems, Inc. | Generic modular multiplier using partial reduction |
US7043515B2 (en) * | 2002-12-10 | 2006-05-09 | Isic Corporation | Methods and apparatus for modular reduction circuits |
-
2002
- 2002-10-02 US US10/263,032 patent/US7627114B2/en not_active Expired - Fee Related
-
2003
- 2003-09-01 CN CNB031563201A patent/CN1258710C/zh not_active Expired - Fee Related
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
TWI784406B (zh) * | 2020-06-04 | 2022-11-21 | 熵碼科技股份有限公司 | 採用迭代計算的模數運算電路 |
US11662978B2 (en) | 2020-06-04 | 2023-05-30 | PUFsecurity Corporation | Modular operation circuit adopting iterative calculations |
Also Published As
Publication number | Publication date |
---|---|
US20040066934A1 (en) | 2004-04-08 |
US7627114B2 (en) | 2009-12-01 |
CN1490714A (zh) | 2004-04-21 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
Mohan et al. | Residue Number Systems | |
CN1258710C (zh) | 用于高效模数归约和模数乘法的电路和方法 | |
US8229109B2 (en) | Modular reduction using folding | |
US10768898B2 (en) | Efficient modulo calculation | |
CN1735881A (zh) | 用于执行计算操作的方法和系统以及一种设备 | |
JPH0773019A (ja) | キャリ先見ツリー | |
US9928037B2 (en) | Modulo calculation using polynomials | |
JPH0969040A (ja) | 推測的演算を有する3つのオーバーラップしたステージにより基数2の平方根演算/除算を行う回路 | |
Sousa et al. | On the Design of RNS Reverse Converters for the Four-Moduli Set ${\bf\{2^{\mmb n}+ 1, 2^{\mmb n}-1, 2^{\mmb n}, 2^{{\mmb n}+ 1}+ 1\}} $ | |
CN110244932B (zh) | 用于关联存储器中的长加法和长乘法的系统和方法 | |
CN115348002B (zh) | 一种基于多字长乘法指令的Montgomery模乘快速计算方法 | |
CN110858137A (zh) | 除以整数常数的浮点除法 | |
CN1652075A (zh) | 用于有限域的有效vlsi结构的系统和方法 | |
Kaivani et al. | Improving the speed of decimal division | |
Matutino et al. | An efficient scalable RNS architecture for large dynamic ranges | |
EP1573510A2 (en) | Multiplier with look up tables | |
Al-Khaleel et al. | Fast binary/decimal adder/subtractor with a novel correction-free BCD addition | |
US7167885B2 (en) | Emod a fast modulus calculation for computer systems | |
JP4177125B2 (ja) | 演算装置及び演算装置の演算方法 | |
Itabashi et al. | Efficient modular polynomial multiplier for NTT accelerator of Crystals-Kyber | |
CN1258883C (zh) | 将一个数的二进制表示变换成一个带符号的二进制表示的方法 | |
Amaricai et al. | SRT radix-2 dividers with (5, 4) redundant representation of partial remainder | |
CN214409954U (zh) | 一种ssd主控芯片中乘法运算电路 | |
Pinckney et al. | Parallelized Booth-encoded radix-4 Montgomery multipliers | |
Das et al. | Design of a Parallel Adder Circuit for a Heavy Computing Environment and the Performance Analysis of Multiplication Algorithm |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20060607 Termination date: 20150901 |
|
EXPY | Termination of patent right or utility model |