应用蒙哥马利算法的幂剩余运算器的制作方法

文档序号:6571006阅读:279来源:国知局
专利名称:应用蒙哥马利算法的幂剩余运算器的制作方法
技术领域
本发明涉及在信息通信网络、交通、金融、医疗、流通等领域中使用的信息的加密技术和解密技术中使用的幂剩余运算器,特别是涉及使用了蒙哥马利(Montgomery)算法的幂剩余运算器。
背景技术
伴随信息通信技术的发展,越来越重视确保信息网络上的安全性(防止数据的盗用或破坏)。因此,大多采用信息的加密技术和解密技术,其应用领域不单停留于信息通信领域,而是正在扩展到交通、金融、医疗、流通等的身边的领域。对于这种加密技术和解密技术,要求能根据简单的原理来实现高度的安全性。
为了使这种技术的理解变得容易,首先说明信息的加密、解密的概念。在密码的世界中,“非对称密码算法”从本质上来说,是优良的。所谓非对称密码算法,是指用于加密密钥与解密密钥的算法不同、不能从其某一方“容易地计算”另一方的密码。利用幂剩余运算(对某个数X进行几次乘法运算并用N除后的余数的计算)的RSA(Rivest-Shamir-Adleman方案)密码是典型的非对称密码算法。
用幂剩余运算基本上按下式(1)生成RSA密码。式(1)意即XY除以N所得的余数。此外,在式(1)中,X是加密(解密)对象的明文,Y和N是加密(解密)用的密钥。
XYmodN …(1)用该幂剩余运算,使信息的加密和解密简便,而且,只要加长运算对象X、Y、N的位长,就可以使各密钥的解读变得困难。
但是,加长运算对象的位长,幂剩余运算需要的时间也长。因此,减少运算对象的位长较长的幂剩余运算的时间成为关键。
其次,以RSA密码为例,说明用幂剩余运算的加密和解密的步骤。(1)RSA密码的加密用下式(2)
C=MemodN …(2)解密用下式(3)M=CdmodN …(3)以上式中,M是成为加密对象的明文,C是已被加密的明文即密码文。此外,式(2)中的e和N是加密密钥,式(3)中的d和N是解密密钥。以下的式(4)和式(5)之间有预定的关系N=p·q…(4)1≡e·dmod{LCM(p-1,q-1)}…(5)式中,「≡」表示左边与右边互为同余,「 LCM 」是最小公倍数,p和q是互为素数的整数,e和N是公开密钥,d、p和q是秘密密钥。
式(4)和式(5)都定义了密码算法中的幂剩余运算的数值的条件。式(4)表示N是互为素数的大的素数p和q的积,由于p和q都是奇数,当然,N就必须是奇数。式(5)表示用式(4)的p和q分别减1后的最小公倍数去除e和d的积e·d所得的余数为1。
在式(4)和式(5)的指定条件下,用式(2)对明文M进行加密,用式(3)对已被加密的明文(密码文C)进行解密。其次,说明在加密、解密中使用的幂剩余运算方法。使整数e的二进制数展开为e=ek-1…e1e0,通过使用在以下的流程1中示出的迭代平方乘积法执行A=MemodN的幂剩余运算。
(流程1)
beginA=1for i=k-1 to 0beginA=A2modN…(6)If ei=1 then A=A·MmodN…(7)endend在A中存储的值为打算求出的幂剩余运算的解。
如上所述,如式(6)和式(7)中所示,其运算是以乘法运算和除法运算(mod计算)为基础。乘法运算是对A×A或A×M的A赋以初始值为1。除法运算是用各自的乘法运算得到的值对modN(求出用N除所得的余数的运算)赋值。将该“乘法运算和除法运算”(A×AmodN、A×MmodN)作为一对运算,按照“e”的位值,进行重复的运算。即,从“e”的最高位开始到最低位的各位的内容,进行“乘法运算和除法运算”。
关于幂剩余运算,如上所示,反复进行基本的求余运算(mod计算)可以得到解,但其反复运算的次数多至几百~几千次,用软件也能很好地进行处理。但是,用硬件来实现该求余数运算本身、即除法运算,必须有大规模的运算电路和复杂的处理程序。为此,希望有所改善。通常,由于e、d、M、N等使用了约1024位的大的整数,故即使使用高速指数计算法,在1次的RSA运算中,也必须进行平均约1500次的多重精度乘法运算和余数计算。特别是,关于求余计算,提出了近似法、余数表方式、蒙哥马利算法等多种高速化方法。
为了高速地处理以这样的RSA密码为代表的多种公开密钥密码中利用的幂剩余运算,要求每一次的求余计算的高速化。蒙哥马利算法是高速地进行求余计算的算法。特别是,在乘法余数运算中,由于能用移位来简化除法运算,故具有能高速地处理在公开密钥密码(RSA密码等)中使用的幂剩余数运算的特征。
另一方面,根据中国剩余定理(又称“孙子定理”),可以用复合数为模的求余运算来计算出以该复合数的互为素数的各素因数为模的余数。如果将其应用于1024位长RSA密码处理,则作为实际上必须的硬件,不是1024位长的模N的幂剩余运算电路,而只是以512位长的整数(在此,相当于p和q)为模的运算电路。因此,可与硬件的小型化联系在一起。
由于执行作为幂剩余运算的基础的求余运算(mod计算)的程序非常复杂,故如上所述,其运算电路变得大规模化。因此,蒙哥马利提出了不用前面那样的一般的方法来进行求余运算(mod计算)、而是通过进行“乘法运算”和简单的位串处理来得到解的解决方案。以下,简单地说明蒙哥马利提出的方法。说明作为实现求余运算高速化的一种方法的蒙哥马利算法。
蒙哥马利算法是基于这样的事实模N(N>1)和与模N互素的基数R(R>N)的用法容许仅当T为被除数,基数R为除数时进行TR-1modN的计算,其中,N、R、和T是整数。被除数T是满足0≤T<R·N的数。R-1是基数R关于模N的倒数。还可以考虑满足R·R-1-N·N’=1的整数N’(0≤R-1<N、0≤N’<R)。再者,对于基数R,若用2的幂,基数R的除法运算就可以用移位操作代替。因此,可实现T→TR-1mod(在被除数为T的TR-1mod)的计算的高速处理。
T→TR-1mod的算法MR(T)由下面的算法1给出。注意在算法1中已证明(T+m·N)/R必定整除。
(算法1)T→TR-1modN的算法Y=MR(T)由以下的方程给出M=(TmodR)·N′modR…(8)Y=(T+m·N)/R …(9)if Y≥N then Y=Y-NY<N then return Y对于单一的MR,只进行TR-1modN计算,而不求出余数TmodN。于是,为了求出余数TmodN,如以下所示那样用MR(T)与预先求出的R2modN的积再次进行MR运算即可。
MR(MR(T)·(R2modN))=(TR-1modN)·(R2modN)·R-1modN=TR-1·R2·R-1modN=TmodN这样,可求出余数TmodN。
按利用上述幂剩余运算的迭代平方乘积法(迭代平方法)的蒙哥马利算法执行的乘法余数运算方法,如下所示。从密钥e高位开始进行检索,在密钥位的值为1的情况下,进行MR(X·Y)的蒙哥马利乘法余数运算。
Y=Rr(Rr=R2modN(R=2k+2))X=MX=MR(X,Y)…(10)Y=MR(1·Y)…(11)for j=k to 1if ej==1 then Y=MR(X·Y)…(12)if j>1 then Y=MR(X·Y)…(13)endY=MR(1·Y)…(14)Y=YmodN…(15)式中,MR(X·Y)与MR(Y·X)相等,ej表示密钥e的第j位(比特)。在512位长的整数的情况下,k=512,512位的幂剩余运算可利用514位的蒙哥马利乘法余数运算和512位余数运算来实现。
用硬件实现的最佳基数W的逐次计算,可以求出蒙哥马利乘法余数运算的结果P=MR(B·A),其方法如下。
W=2dN0′=N′modWP=0for j=0 to kM=(PmodW)·N0′…(16)P=((P+(AmodW)·B·W+M·N)/W)mod2k…(17)A=A/W…(18)end式中,d是依赖于硬件的正数数。因此,可以求出蒙哥马利乘法余数运算结果P。用d=1的基数2的逐次计算来求出514位蒙哥马利乘法余数运算结果P=MR(B·A),其方法如下。
N0′=N′mod2P=0for j=0 to 514M=(P mod 2)·N0′ …(19)P=((P+(Amod2)·B·2+M·N)/2)mod2154…(20)A=A/2…(21)end如上所述,为了实现幂剩余运算,以往采用了下述的方法在硬件方面,对于512位长的幂剩余运算使用蒙哥马利法;在软件方面,用中国剩余定理处理,用硬件实现的方法很多,实际上采用了各种各样的方式。
但是,在现有的电路中,用图8中示出的那样的程序进行了处理。即,采用安装了在512位长的幂剩余运算中使用蒙哥马利法的电路的硬件,按原样执行了式(10)~(18)。例如,在ej==0时,跳过式(12)。另一方面,在式(17)中执行了每次全部的计算。因此,需要复杂的处理程序,期望实现进一步的高速化。此外,由于希望有可减小电路规模、适合于LSI(大规模集成)化的电路,故必须尽可能简化运算处理、削减整体的计算量,可谋求提高处理速度。

发明内容本发明是为了解决上述的课题而进行的,其目的在于提供能实现高速处理的幂剩余运算器。
按照本发明的某个方面的幂剩余运算器包含寄存器,保持对使进行蒙哥马利乘法余数运算时的一方的自变量为2倍的值与余数的模进行了加法运算的值;蒙哥马利乘法余数运算执行部,与寄存器连接,参照在寄存器中已被保持的值,执行蒙哥马利乘法余数运算;以及幂剩余运算执行部,与蒙哥马利乘法余数运算执行部连接,在与蒙哥马利乘法余数运算执行部之间进行数据的输入输出,执行幂剩余运算。
通过在寄存器中保持在蒙哥马利乘法余数运算中频繁地使用的值,可高速地执行蒙哥马利乘法余数运算。
较为理想的是,幂剩余运算执行部与用二进制数表示的幂指数的各位的值无关地在蒙哥马利乘法余数运算执行部中执行蒙哥马利乘法余数运算并执行幂剩余运算。
与幂指数的各位的值无关地始终执行蒙哥马利乘法余数运算。因此,即使在将幂剩余运算器用于加密装置和解密装置的情况下,可确保抗时序攻击的性能。
更为理想的是,幂剩余运算器还包含保持幂剩余运算执行部中的运算模式的模式寄存器,幂剩余运算执行部根据在模式寄存器中已被保持的值,判断是否执行基于用二进制数表示的幂指数的各位的值的蒙哥马利乘法余数运算,并执行蒙哥马利乘法余数运算。
根据在模式寄存器中已被保持的值,判断是否执行基于用二进制数表示的幂指数的各位的值的蒙哥马利乘法余数运算。因此,如果在测试时执行基于用二进制数表示的幂指数的各位的值的蒙哥马利乘法余数运算,在实际使用时与幂指数的各位的值无关地始终执行蒙哥马利乘法余数运算,则可缩短测试时间,而且可确保抗时序攻击的性能。
更为理想的是,幂剩余运算执行部根据用二进制数表示的幂指数的各位的值,判断是否执行蒙哥马利乘法余数运算,并执行蒙哥马利乘法余数运算。
根据用二进制数表示的幂指数的各位的值,判断是否执行蒙哥马利乘法余数运算,并执行蒙哥马利乘法余数运算。因此,有在出现1作为位的值之前的期间中预先知道蒙哥马利乘法余数运算的结果的情况。通过在这样的情况下跳过处理,可高速地进行处理。
更为理想的是,幂剩余运算执行部包含对二进制数的位串进行加法运算的加法运算器,加法运算器包含将二进制数的位串分割为各个规定的位、在分割后的位串相互间进行加法运算的多个子加法运算器。
通过将加法运算器分割为子加法运算器来执行流水线处理,可高速地进行加法运算。因此,可高速地执行幂剩余运算。
更为理想的是,幂剩余运算器还包含与蒙哥马利乘法余数运算执行部和幂剩余运算执行部连接的、供取出运算的一部分并执行的电路。
通过取出在幂剩余运算时进行的各种运算并执行,可实现多种加密处理。
通过参照附图的后述的本发明的详细的说明,本发明的上述和其它的目的、特征、方面和优点会变得更加明白。
(四)附图的简单说明

图1是示出幂剩余运算电路的硬件结构的框图。
图2是示出执行在运算电路内设置的流水线处理的加法运算器的硬件结构的框图。
图3是幂剩余运算处理的流程图。
图4~图7是示出信号的时序的时序图。
图8是现有的幂剩余运算处理的流程图。
具体实施例方式参照图1,本发明的第1实施例的幂剩余运算电路包含作为与外部总线的接口的I/F(接口)电路101;保持密钥e的e寄存器102;保持进行蒙哥马利变换的乘数Y的Y寄存器103;保持密钥N的N寄存器104;保持蒙哥马利变换运算时进行的2B+N的值的B2N寄存器105;保持明文X的X寄存器106;进行加密和解密用的运算电路107;保持运算结果P的P寄存器108;以及起到作为幂剩余运算执行时的状态机作用的幂剩余控制电路109。
幂剩余运算电路还包含起到作为蒙哥马利乘法余数运算和余数运算的执行时的状态机作用的蒙哥马利乘法余数、余数控制电路110;进行加法运算和减法运算的运算控制的加法运算、减法运算控制电路111;保持各种模式的模式寄存器112;保持指令的指令寄存器113;保持状态的状态寄存器114;用来进行各种寄存器与运算电路107之间的数据输入输出的内部总线115。
在进行幂剩余运算时,为了实现高速化,使用了蒙哥马利法的乘法余数运算,但在进行该蒙哥马利法的运算[P=MR(B·A)]之前,进行[2B+N]的计算,将其结果存储在B2N寄存器105中。
说明蒙哥马利法的MR(B·A)的运算操作。在此,考虑B=X、A=Y的情况。首先,求[2B+N]。进行[2B+N]的计算如下所述。运算电路107将0与在N寄存器104中已被保持的值进行加法运算,存储在P寄存器108中。运算电路107使X寄存器106中保持的值为2倍,将该值与在P寄存器108中已被保持的值进行加法运算,写入到P寄存器108中。蒙哥马利乘法余数、余数控制电路110将P寄存器108中已被保持的值写入到B2N寄存器105中。其次,按式(19)、(20)和(21)的运算重复执行515次。
在计算蒙哥马利乘法余数运算中的式(20)时,在Amod2==1和M==1的情况下,从B2N寄存器105读出数据,用运算电路107对经内部总线115读出的数据与在P寄存器108中已被存储的值进行加法运算。此外,在Amod2==0和M==1的情况下,从N寄存器104读出数据,用运算电路107与在P寄存器108中已被存储的值进行加法运算。在Amod2==0和M==0的情况下,执行
的加法运算。通过使在内部总线115中流过的数据为0等来生成0。e寄存器102是保持密钥e的寄存器,Y寄存器103是保持密钥Y的寄存器,N寄存器104是保持模N的寄存器,X寄存器106是保持模X的寄存器,P寄存器108是保持在蒙哥马利乘法余数运算的式(19)和(20)中出来的值P的寄存器。
参照图2,说明在运算电路107中设置的执行流水线处理的加法运算器。
该加法运算器中,将进行蒙哥马利乘法余数运算的加法运算器的结构分割为多个子加法运算器,作成了减少加法运算器的进位的级数的结构。加法运算器包含子加法运算器内的进位电路(SubC电路)727~741;在子加法运算器内表示发生进位的可能性的进位电路(LookC电路)742~752;用来在子加法运算器间使进位传输的进位电路(MainC电路)720和726;用来得到加法运算结果的进位电路(SlaveC电路)716~719和721~725;以及实际上进行加法运算处理的加法电路(adder)701~715。
进位电路(LookC电路)742~752,假定在低位的子加法运算器中发生了进位,进行位相互间的加法运算,判断发生进位的可能性。
作为一例,说明执行15位的流水线处理的加法运算器。
在15位的情况下,从低位开始,定为4+5+6=15的级的数目是适当的。首先,在4级的子加法运算器内以普通的方式进行加法运算,检测出进位,可得到加法运算结果。在5级的子加法运算器中,利用SlaveC电路和加法电路可得到包含来自4级的子加法运算器的进位在内的5级的加法运算结果。此外,以另外的方式同时在SubC电路中检测出只在5级内的进位。此外,在LookC电路中,假定从低位开始发生了进位,检测出进位信号。
然后,MainC电路720根据来自4级的子加法运算器的进位信号选择来自SubC电路735和LookC电路745的信号的哪一个信号进位到下一个6级的子加法运算器上。同样地在6级的子加法运算器中也得到加法运算结果。
例如,设想在4级的子加法运算器中进行[1111+1110]的加法运算的情况。在各位中的运算如下所述。
0位0+1=1 没有进位1位1+1=0 有进位2位1+1+1(来自1位的进位)=1有进位3位1+1+1(来自2位的进位)=1有进位此时,从SubC电路730将「有进位」的信号供给MainC电路720。于是,此时MainC电路720将从低位的子加法运算器开始作为有进位而进行了加法运算的LookC电路742~746的进位作为5级的子加法运算器的进位输出给6级的子加法运算器。相反,如果从SubC电路730将「没有进位」的信号供给MainC电路720,则MainC电路720输出SubC电路735的进位。
在没有以这种方式作为子加法运算器来分割的情况下,由于14位的加法运算必须有来自0位的进位来进行加法运算,故需要14级的电路部分的时间,但如果分割为多个子加法运算器,则来自0位的进位用SubC电路727~730、MainC电路720、SlaveC电路721~725的10级部分的处理时间就可以。
例如,说明对

进行加法运算的情况。SubC电路727进行第0位相互间的加法运算(1+0)。将加法运算结果(1)供给加法电路701。此外,将进位(0)供给SubC电路728和加法电路702。加法电路701将从SubC电路727接受的值作为第0位的加法运算结果来输出。
SubC电路728进行第1位的值(0和1)与来自第0位的进位(0)的加法运算(0+1+0)。将加法运算结果供给加法电路702。此外,将进位(0)供给SubC电路729和加法电路703。加法电路702对第0位的进位(0)与第2位的加法运算结果(1)进行加法运算,输出第1位的加法运算结果(1)。同样,在加法电路703~715中,进行着眼于与前面的位的进位的位的加法运算结果的加法运算。
LookC电路742假定在4级的子加法运算器中发生了进位,进行第4位的进位的计算。即,执行第4位的值相互间的加法运算和与进位(1)的加法运算(0+1+1)。将运算的结果的进位供给LookC电路743。在LookC电路747中也进行同样的处理。
LookC电路743执行第5位的值与来自LookC电路742的进位的加法运算(0+1+1),将运算的结果的进位(1)供给LookC电路744。在LookC电路744~746和748~752中也进行同样的处理。将LookC电路746的输出供给MainC电路720。将LookC电路752的输出供给MainC电路726。
SubC电路731进行第5位相互间的加法运算(0+1)。将加法运算结果(1)供给加法电路705和SlaveC电路716。此外,将进位(0)供给SubC电路732。在SubC电路736中也进行同样的处理。
SubC电路732进行第6位相互间的加法运算和与第5位的进位(0)的加法运算(0+1+0)。将加法运算结果(1)供给加法电路706和SlaveC电路717。将进位(0)供给SubC电路733。同样,在SubC电路733~735中,进行着眼于与前面的位的进位的位的值的加法运算。再有,将SubC电路735中的加法运算结果只供给加法电路709。将SubC电路735中的进位供给MainC电路720。在SubC电路736~741中也进行同样的处理。
SlaveC电路716对第3位的进位(0)与第4位的加法运算结果(1)进行加法运算,将进位供给加法电路706和SlaveC电路717。在SlaveC电路717~719和721~725中也进行同样的处理。
MainC电路720在SubC电路730输出的前级的子加法运算器的进位为1的情况下,将LookC电路的输出供给SlaveC电路721,在进位为0的情况下,将SubC电路735输出的进位供给SlaveC电路721。在MainC电路726中也进行同样的处理。
如以上已说明的那样,进行15位的数据相互间的加法运算。即,在用SubC电路、LookC电路和MainC电路进行了计算后,用SlaveC电路和加法电路进行计算。这样,经过二阶段来执行加法运算处理。
在上例所举的15位中,没有发生太大的级数目的差,但在更大的位的加法运算器、例如130位中,在不分割的情况下,花费129级部分的处理时间,而在分割了的情况下,用30级部分的处理时间即可。此外,将用来求出来自到达6级的子加法运算器的进位的0位的进位的电路的级数定为5级(SubC电路727~730、MainC电路720的5级),将用来求出6级的子加法运算器内的进位的电路的级数定为6级(SubC电路736~741和LookC电路747~752这两者都有6级)。通过做成这样的结构,可做成即使在更大的位的加法运算器中也几乎没有级数目差别的结构。由此,对于时序等的电路设计变得容易,具有也可减小电路规模的效果。
再有,在130位的流水线的加法运算器中,利用4级、5级、6级、7级、8级、9级、10级、11级、12级、13级、14级、15级和16级的子加法运算器来构成加法运算器是适当的。

图3是幂剩余运算处理的流程图。图4是示出信号的时序的时序图。
以往,在使用蒙哥马利法的乘法余数运算进行幂剩余运算的情况下,在检索密钥e的位且ej==1的情况下,执行式(12)的[Y=MR(X·Y)],在ej==0的情况下,跳过即不执行式(12)[Y=MR(X·Y)]。在本实施例中,与ej的值无关地始终执行式(12)的[MR(X·Y)]。在使式(12)的运算结果存储在Y寄存器103中时,检验ej的值301,在ej==1的情况下,输出Y寄存器写入信号304,将运算结果写入到Y寄存器103中,在ej==0的情况下,不输出Y寄存器写入信号304,不将运算结果写入到Y寄存器103中。这样,通过始终执行式(12),可使幂剩余运算时间为恒定。MR(X·Y)运算信号302表示“H”时在运算中。Y寄存器写入信号303表示“H”时将数据写入到Y寄存器103中。
如上所述,由于始终执行式(12)的运算,故运算时间与密钥的值无关,是恒定的。因此,具有可确保抗时序攻击的性能的效果。再有,所谓抗时序攻击的性能,是指着眼于处理时间随密码文、密钥的长度而变化的情况来进行密码的解读。
在幂剩余运算器中包含幂剩余控制电路109、蒙哥马利乘法余数、余数控制电路110和加法运算、减法运算控制电路111。因此,通过单独或组合起来使用这些控制电路,可独立地执行蒙哥马利乘法余数运算、余数运算、存储运算、加法运算、减法运算、附加条件的加法运算、附加条件的减法运算等各种运算。
这样,通过能独立地执行构成幂剩余运算的各种运算,可进行RSA密码以外的各种密码的运算。此外,在幂剩余运算器因某种原因不工作的情况下,通过独立地执行各种运算,可查明不工作的原因。
如以上所说明的那样,在本实施例中,通过设置保持频繁地使用的[2B+N]的结果的B2N寄存器105,可谋求蒙哥马利乘法余数运算的高速化和运算电路的简化。
本发明的第2实施例的幂剩余运算器具有与第1实施例的幂剩余运算器同样的硬件结构。因此,在此不重复进行其详细的说明。
图5是示出第2实施例中的信号的时序的时序图。在本实施例中,通过在模式寄存器112中设定规定的值,可使幂剩余运算的执行方法不同。
在跳过模式信号401为“H”的情况下,在ej==0时,不运算式(12),只运算式(13)[Y=MR(Y·Y)]。在跳过模式信号401为“L”的情况下,进行与第1实施例同样的工作。
如上所述,由于能设定跳过式(12)的运算的模式,故可谋求缩短测试时间。
本发明的第3实施例的幂剩余运算器具有与第1实施例的幂剩余运算器同样的硬件结构。因此,在此不重复进行其详细的说明。
图6是示出第3实施例中的信号的时序的时序图。
如果用通常的方法进行幂剩余运算,则式(11)的运算结果为下式,Y=MR(1·Y)=1·R2·R-1modN=RmodN从最初的j=k开始到ej==0之间,如条件式那样,在式(12)中Y的值不变化。因此,如果只考虑式(13)的运算,则成为下式,Y=MR(Y·Y)=RmodN·RmodN·R-1modN=R·R·R-1modN=RmodN运算结果是相同的。如上所述,在ej==1下,对式(12)[Y=MR(X·Y)]进行运算,在Y的值发生变化之前,即使对式(13)[Y=MR(Y·Y)]进行运算,Y的值也不变化。于是可知,在ej==1之前,即使不执行式(12)和式(13)的运算也没有关系。
通常,为了使运算时间为恒定,执行了全部的运算。但通过在模式寄存器112中设定值,使搜索模式信号501为“H”,在重复运算(式(12)和式(13))中,在ej==1之前,可不执行式(12)和式(13)的运算而只执行[j-1]的运算。这样,设置了检验ej是否==1的模式。
如上所述,由于可设定跳过式(12)和式(13)的运算的模式,故具有可谋求根据密钥e的值而大幅度地缩短测试时间的效果。
本发明的第4实施例的幂剩余运算器具有与第1实施例的幂剩余运算器同样的硬件结构。因此,在此不重复进行其详细的说明。
图7是示出第4实施例中的信号时序的时序图。
在本实施例中,可在模式寄存器112中设定在第2实施例中已说明的跳过模式和在第3实施例中已说明的搜索模式这两者的模式。
例如,在设定了两者的模式的情况下,在ej==1之前,不执行式(12)和式(13)的运算。在一旦ej==1之后,对式(12)和式(13)都进行运算。其后,故根据ej的值,在ej==0时,跳过式(12),只执行式(13)。此外,在ej==1时,执行式(12)和式(13)两者的运算。
如以上所说明的那样,通过在模式寄存器112中设定跳过模式和搜索模式这两者的模式,可谋求比第2实施例或第3实施例更加缩短测试时间。
按照本发明,通过在寄存器中保持在蒙哥马利乘法余数运算中频繁地使用的值,可高速地执行蒙哥马利乘法余数运算。
以上,参照附图详细地说明了本发明,但这些说明始终是例示性的,而不是在任何意义上来限定本发明,本发明的要旨和范围只由后附的权利要求书来限定,包含与权利要求的范围均等的意义和范围内的全部的变更。
权利要求
1.一种幂剩余运算器,其特征在于,包含寄存器,保持对使进行蒙哥马利乘法余数运算时的一方的自变量为2倍的值与余数的模进行了加法运算的值;蒙哥马利乘法余数运算执行部,与上述寄存器连接,参照在上述寄存器中已被保持的值,执行蒙哥马利乘法余数运算;以及幂剩余运算执行部,与上述蒙哥马利乘法余数运算执行部连接,在与上述蒙哥马利乘法余数运算执行部之间进行数据的输入输出,执行幂剩余运算。
2.如权利要求1中所述的幂剩余运算器,其特征在于上述幂剩余运算执行部与用二进制数表示的幂指数的各位的值无关地在蒙哥马利乘法余数运算执行部中执行蒙哥马利乘法余数运算并执行幂剩余运算。
3.如权利要求2中所述的幂剩余运算器,其特征在于还包含保持幂剩余运算执行部中的运算模式的模式寄存器,上述幂剩余运算执行部根据在上述模式寄存器中已被保持的值,判断是否执行基于用二进制数表示的幂指数的各位的值的蒙哥马利乘法余数运算,并执行蒙哥马利乘法余数运算。
4.如权利要求2中所述的幂剩余运算器,其特征在于上述幂剩余运算执行部根据用二进制数表示的幂指数的各位的值,判断是否执行蒙哥马利乘法余数运算,并执行蒙哥马利乘法余数运算。
5.如权利要求2中所述的幂剩余运算器,其特征在于上述幂剩余运算执行部包含对二进制数的位串进行加法运算的加法运算器,上述加法运算器包含将二进制数的位串分割为各个规定的位、在分割后的位串相互间进行加法运算的多个子加法运算器。
6.如权利要求1中所述的幂剩余运算器,其特征在于还包含保持幂剩余运算执行部中的运算模式的模式寄存器,上述幂剩余运算执行部根据在上述模式寄存器中已被保持的值,判断是否执行基于用二进制数表示的幂指数的各位的值的蒙哥马利乘法余数运算,并执行蒙哥马利乘法余数运算。
7.如权利要求6中所述的幂剩余运算器,其特征在于上述幂剩余运算执行部根据用二进制数表示的幂指数的各位的值,判断是否执行蒙哥马利乘法余数运算,并执行蒙哥马利乘法余数运算。
8.如权利要求6中所述的幂剩余运算器,其特征在于上述幂剩余运算执行部包含对二进制数的位串进行加法运算的加法运算器,上述加法运算器包含将二进制数的位串分割为各个规定的位、在分割后的位串相互间进行加法运算的多个子加法运算器。
9.如权利要求6中所述的幂剩余运算器,其特征在于还包含与上述蒙哥马利乘法余数运算执行部和上述幂剩余运算执行部连接的、取出运算的一部分并执行的电路。
10.如权利要求1中所述的幂剩余运算器,其特征在于上述幂剩余运算执行部根据用二进制数表示的幂指数的各位的值,判断是否执行蒙哥马利乘法余数运算,并执行蒙哥马利乘法余数运算。
11.如权利要求10中所述的幂剩余运算器,其特征在于上述幂剩余运算执行部包含对二进制数的位串进行加法运算的加法运算器,上述加法运算器包含将二进制数的位串分割为各个规定的位、在分割后的位串相互间进行加法运算的多个子加法运算器。
12.如权利要求10中所述的幂剩余运算器,其特征在于还包含与上述蒙哥马利乘法余数运算执行部和上述幂剩余运算执行部连接的、取出运算的一部分并执行的电路。
13.如权利要求1中所述的幂剩余运算器,其特征在于上述幂剩余运算执行部包含对二进制数的位串进行加法运算的加法运算器,上述加法运算器包含将二进制数的位串分割为各个规定的位、在分割后的位串相互间进行加法运算的多个子加法运算器。
14.如权利要求13中所述的幂剩余运算器,其特征在于还包含与上述蒙哥马利乘法余数运算执行部和上述幂剩余运算执行部连接的、取出运算的一部分并执行的电路。
15.如权利要求1中所述的幂剩余运算器,其特征在于还包含与上述蒙哥马利乘法余数运算执行部和上述幂剩余运算执行部连接的、取出运算的一部分并执行的电路。
全文摘要
本发明的课题是一种幂剩余运算电路,它包含:作为与外部总线的接口的I/F(接口)电路101;保持密钥e的e寄存器102;保持进行蒙哥马利变换的乘数Y的Y寄存器103;保持密钥N的N寄存器104;保持蒙哥马利变换的运算时进行的2B+N的值的B2N寄存器105;保持明文X的X寄存器106;进行加密和解密运算的运算电路107;保持运算结果P的P寄存器108;起到作为幂剩余运算执行时的状态机的作用的幂剩余控制电路109;起到作为蒙哥马利乘法余数运算和余数运算的执行时的状态机的作用的蒙哥马利乘法余数、余数控制电路110;以及进行加法运算和减法运算的运算控制的加法运算、减法运算控制电路111。
文档编号G06F7/60GK1368674SQ0114085
公开日2002年9月11日 申请日期2001年9月21日 优先权日2001年1月30日
发明者朝见和生 申请人:三菱电机株式会社, 三菱电机系统Lsi设计株式会社
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1