模乘方法及装置及模乘计算单元的制作方法

文档序号:6592705阅读:263来源:国知局
专利名称:模乘方法及装置及模乘计算单元的制作方法
技术领域
本发明系关于一种执行模乘的方法及装置,及例如关于GF(2n)椭圆曲线的模乘。
密码学为模算术基本应用的其中一,依模数N的形式而定,两个密码学方法被基本上区分,若该模数为整数,我们说是Z/NZ算术,该参数N代表一质数或组合的质数,参数Z代表整数。RSA方程式为模数由两个质数所组成的情况之实例C=MEmod(N)如已知,C为经加密数据,M为未经加密或一般讯息,E为公钥及N为模数。
相反的,该GF(2n)算术特征在于该模数N(x)为变量x的多项式,该多项式包括x的个别次方的和,一系数伴随着每一x次方,x最高次方的指数被称为多项式的次数。若该系数系来自GF(2)的范围,我们说是GF(2n)模数,或更一般而言,为个别为GF(2n)算术。该GF(2n)算术为如被用于椭圆曲线的密码学。
一种f(x)∈次数n-1的GF(2)[x]由n个系数an-1,...,a0,其中a1s必须来自GF(2)组且其中根据定义an-1为1f(x)=1*xn-1+an-2*xn-2+...+a1*x1+a0*x0GF(2n)的范围由次数n的不可约分多项式及次数少于或等于n-1的GF(2n)的多项式所提供。
在GF(2n),两个成份(为多项式)的加成系由XORing它们的具长度n的系数向量而得到。
在GF(2n),两个成份(为多项式)的相乘系由将GF(2n)多项式相乘及接着减少所得到的积modulo次数n的不可约分多项式N(x),其定义相对应范围。
如此,积多项式,其为得自第一多项式f(x)乘以第二个多项式g(x)而得到,必须进行以模数多项式N(x)做为除数的多项式除法。F(x)*g(x)mod N(x)的结果为得自多项式除法的余数多项式。
在有效执行于Z/NZ及GF(2n)的模乘之不会方法被处理前,应注意以Z/NZ及GF(2n)的模指数运算可藉由已知的平方及相乘算法被分为乘法。如此,下列方程式要被解出C(x)=(M(x))Emod N(x)。
平方及相乘算法系基于指数E被分为2次方的和E=ΣiE[i]*2i]]>下列实例系用以说明此。在二进制制表示中,下列被应用E=1011因而,下列关系可被应用C(x)=M(x)∧(1*23+0*22+1*21+1*20)mod N(x)因而,下列可被应用C(x)=(M(x)8*(M(x))0*(M(x))2*(M(x))0mod N(x)对Z/NZ算术,以上所叙述的方程式一致具差别为不使用M(x),而是必须以M取代写入,及不使用N(x),而是必须以N取代写入。
在已知有效及常常使用的可能性以计算模乘的技艺中,已知为Montgomery乘法及如叙述于应用密码学手册”,Menezes,vanOorschot,Vanstone,CRC Press,600至603页。该Montgomery减法为一种技术,其允许有效的进行模乘而不需显明进行的传统模减步骤。一般在Montgomery减法,除法运算以简单的位移运算表示。
同时,Montgomery乘法至GF(2n)的有限场的延伸亦为已知,此延伸叙述于”在GF(2k)的Montgomery乘法”,Koc,Azar,设计、编码及密码学,14卷,1988,57至69页,此延伸亦叙述于”一种Z/NZ及GF(2n)的有限场的可缩放及一致的乘数结构”Erkay Savas,等,密码硬件及植入系统(CHESS 2000),281至289页,Springer Lecture Notes。
在Z/NZ或GF(2n)的Montgomery乘法之缺点为即使模减的除法运算(其不易在硬件上执行)由位移运算而被规避,没有先行方法可被使用以加速在硬件上的模乘。
DE 3631992 C2揭示一种方法,其中在Z/NZ的模乘可使用乘法先行方法及使用减法先行方法而被加速,叙述于DE 3631992 C2的方法亦称为ZDN方法且参考第9图被详细叙述,在起始算法的步骤900后,通用变量M、C及N起始。此为计算下列模乘的目的Z=M*C mod NM被称为乘数,C被称为被乘数,Z为模乘的结果,N为模数。
之后,各种局部变量(其目前不需被处理)被起始化,两个先行方法被施用。在乘法先行方法GEN_MULT_LA中,一种乘法位移值sZ及乘法先行参数a使用各种先行规则被计算(910)。z缓存器的目前内容再以sZ数字进行左移操作。
基本上平行于此的减法先行方法GEN_Mod_LA(930)被执行以计算减法位移值sN及减法参数b。在步骤940,该模数缓存器的目前内容由sN数字移位以产生经移位的模数值N’。ZDN方法的中央三元运算域操作在步骤950发生。在步骤920后,该中间结果z’被加至乘以乘法先行参数a的被乘数C及加至乘以减法先行参数b的经移位模数N’。根据当时情况,先行参数a及b可具值+1、0或-1。
一情况为该乘法先行参数a为+1且减法先行参数b为-1以使被乘数C被加至经移位的中间结果Z’且经移位模数N’被由此减去。在其它情况下,a可具值0,若该乘法先行方法允许超过一个别左移的预先设定数,亦即,若sτ大于sZ的最大允许值,此值亦被称为k。对a等于0且Z’因前一模数减少(亦即经移位模数的前一减法)仍为非常小及特别是小于经移位模数N’的情况,不需进行任何减法以使参数b等于0。
步骤910至950被执行直到所有被乘数的数字已被处理,亦即,直到m等于0及直到参数n亦等于0,其显示经移位模数N’是否仍大于原先模数N及是否进一步减法步骤必须由自Z减去模数而被进行,仅管所有被乘数的数字已被处理。
最后,决定Z是否小于0,若Z小于0,则模数N必须加至Z以得到最后减少以使在最后得到模乘的正数结果Z。在步骤960,模乘藉由ZDN方法而被完成。
在步骤910由乘法先行方法所计算的乘法位移值sZ及乘法参数a起源于乘数的拓朴及起源于叙述于DE 3631992 C2的插入先行规则。
算减法位移值sN及减法参数b由比较Z缓存器的现有内容与2/3乘以N的值而被决定,且亦被叙述于DE 3631992 C2,此是因为此比较ZDN方法具其名称(ZDN=Zwei Drittel N=三分之二N)。
如第9图所说明,叙述于DE 3631992 C2的该ZDN方法仅用于Z/NZ算术,然而,其不适合用于GF(2n)算术。因此,目前没有任何计算时间有效的先前方法可被用于GF(2n)算术以加速GF(2n)的模乘。
本发明目的为提供一种快速执行GF(2n)的模乘的观念。
本发明系由根据申请专利范围第1项的模乘,根据申请专利范围第7项的进行模乘之装置或根据申请专利范围第11项的计算单元。
本发明系基于在GF(2n)的模乘之加速可由使用乘法先行方法及减法先行方法而得到的了解。在乘法先行方法中,乘法位移值被计算。在减法先行方法中,其较佳为与该乘法先行方法平行操作,减法位移值被计算,该减法位移值等于由该乘法位移值位移的中间结果多项式之次数与目前模数多项式之次数的差,且该中间结果多项式乘以被增加至该乘法位移值的次方之变量,该模数多项式乘以被增加至该减法位移值的次方之变量,如此,三元运算域加法亦可为该GF(2n)算术而被公式化以使新的中间结果多项式可由加上由该乘法位移值位移的最新中间结果多项式及被乘数与接着由自此减去由该减法位移值位移的模数多项式以得到更新的中间结果多项式。然而,使用经更新的中间结果多项式及在最后步骤位移的模数多项式重复所有步骤以成功地相加所有部份乘积,亦即,直到所有乘数的次方已被处理。
对该GF(2n)算术的情况,该三元运算域加法被特别简化,因变量x次方的系数具值”0”或”1”,如此,加法及减法变为简单的XORing,故对仅用于该GF(2n)加法做为算术位的计算单元不仅是加法器,亦是该三元运算域的位般互斥或。
在双计算单元的情况下,亦即,在Z/NZ及在GF(2n)进行模乘的计算单元,因ZDN方法已存在的三元运算域加法器仅由使之不作动而被修正以用于GF(2n)操作,亦即,不计入该加法器每一位所进位的内容。
应注意计算在GF(2n)模乘的本发明方法具一种串联-并联结构,该三元运算域加法较佳为总是平行发生,亦即对加数(其典型上包括150至1100位的宽度)的所有位,一种新的部份乘积在本发明方法的下一串联重复被计算及在后续平行三元运算域加法被加至已存在的中间结果。
与GF(2n)的Montgomery乘法相较,计算模乘的本发明观念之优点在于其藉由在值2大小次方的因子而进行的最大加速。
本发明观念的进一步优点为现在计算在GF(2n)模乘的有效方法被提供以使如在GF(2n)的BCDSA算法(ECDSA=椭圆曲线数码签署算法)可被计算。该算法被叙述于”财物服务业公钥密码学椭圆曲线D.S.A.”,ANSI X9.62-1998。
与基于关于整数的模算术之密码学相较,椭圆曲线密码学为较佳的在于可以相当小的数目得到安全性的类似标准,且对具1024位宽度的数字的在Z/NZ的RSA方法,安全性的良好标准被得到,在GF(2n)的多项式(其次数系在变量x的150至300次方范围)已足够用于此。
本发明的进一步优点为计算模乘的本发明观念可容易地被整合至ZDN方法的已现存的计算单元,因实际长数目的计算单元,亦即三元运算域加法器,可由使位载体不作动而简单地被用于GF(2n)。即使用于GF(2n)减法先行算法及用于乘法先行算法的算术单元与用于Z/NZ的相对应装置不同,此对计算单元的整体性能不为决定性的,因在此情况下,具小数目的加法、位移或减法发生,其具8或16位的宽度,以使与长数目的计算单元(亦即三元运算域加法器,其非常容易具超过2048位的宽度(在Z/NZ及GF(2n)的双实施中))相较,这些算术单元(其亦被称为控制单元)的芯片面积不具主要影响。
于GF(2n)模乘的本发明观念的进一步优点为与仅用于Z/NZ算术的ZDN方法相较,许多运算可被简化,如此,在本发明GF(2n)模乘中不需执行与2/3倍模数的比较。在GF(2n),此比较可仅以中间结果多项式之次数与模数多项式之次数的比较取代。因乘法位移值的期望值及减法位移值的期望值为相同的,该两个先前方法彼此被去耦合以使该两个先前方法彼此独立工作,此产生计算时间的优点。
在下文本发明较佳具体实施例参考所揭示图式详细叙述,其中第1图为说明GF(2n)的模指数运算之流程图;第2图为本发明方法的高位准流程图;第3图为计算乘法位移值的乘法先前方法的流程图;第4图为计算减法位移值的减法先前方法的流程图;第5图为GF(2n)算术或Z/NZ算术的三元运算域相加单元的一部份;第6图为进位取消功能的详细说明;第7图为Z/NZ/GF(2n)计算单元的方块第8a至8c图为说明减法位移值的计算之示意说明;及第9图为ZDN方法的一般图标以执行在Z/NZ的模乘。
第1图为一般流程图以分割模指数运算C(x)=(M(x))Emod N(x)为一系列乘法。M(x)及N(x)为变量x的多项式,E为在具位长度L(E)的二进制制表示的指数。
此算法基本上包括检查指数E的位(亦即E(e))是否等于1,若其等于1,则结果缓存器的目前内容乘以M(x),具模数多项式N(x)的模减在这之后立即执行。然而,若指数位等于0,没有任何乘以M(x)的乘法被执行。在这两种情况缓存器C(x)的目前内容乘以其本身,亦即,被平方,而后模减发生。指数表示(亦即e)的数字指数再被增加1,此回路再次被经过,其被执行直到所有指数E的数字已被处理,亦即,直到e等于L(E),之后此算法完成且在C(x)的缓存器有模乘的结果。因而模指数运算的中央操作为被乘数C(x)乘以乘数M(x)的模乘。
第2图显示本发明方法将被乘数乘以乘数的模乘之高位准流程图。该方法起始于起始方块200,在方块202,通用变量M、C及N,其为变量x的多项式,被起始化。在方块204,中间结果多项式Z接着被起始化为0。在方块206,控制变量m被起始化为L(M)。L(M)以位显示乘数M的长度,因而L(M)对应于乘数多项式的次数。在方块208,控制变量n被起始化为0,控制变量n的功能会于稍后解释。接着,乘法先行方法210及减法先行方法212被较佳地平行执行,该乘法先行方法系用做计算乘法位移值sZ及较佳为亦计算乘法先行参数a。
该减法先行方法系用做计算减法位移值sN及较佳为亦计算减法先行参数b。
在方块214,经移位的中间结果多项式Z’由将目前的中间结果多项式Z乘以被增加至该乘法位移值sZ的次方之变量x而被计算。
在方块216,经移位的模数多项式N’较佳为由同时将目前的模数多项式N乘以被增加至该减法位移值sN的次方之变量x而被计算。
在方块218,一般称的三元运算域加法(其为本发明模乘方法的中央操作)被进行。在方块218,经更新的中间结果多项式Z被计算,其由该中间结果多项式Z’及已乘以乘法先行参数a的被乘数C及已乘以减法先行参数b的经移位模数多项式N’的相加而得到。
在方块220,检查控制变量m是否等于0及控制变量n是否同时等于0。若该控制变量m等于0,此表示乘数M(x)的所有位已被处理,若该控制变量n等于0,此表示经移位的模数多项式N’再次对应于方块202的原始多项式N。
若此两个条件符合,方块220会由此响应YES以使模乘的结果,亦极Z(x),在于方块222被输出。该模乘方法再于方块224完成。
然而,若方块220以”NO”响应,此表示仍有乘数的位未被处理或者留在模数多项式缓存器的模数多项式N’仍大于在方块202所定义的原始模数多项式。不同地表示,此表示留在模数多项式缓存器的目前多项式的次数大于已定义于方块202的原始模数多项式N的次数。若为此情况,送回会被执行,如由第2图的馈送226所示,以再次进行乘法先行方法及减法先行方法。相对于第一步骤,其中该Z缓存器,因在方块204的起始化,已被设定为0,现在先前方法的三元运算域操作218的结果为在该Z缓存器。
以相同方式,在模数缓存器N的不再是定义于方块202的原始模数N,而是已由减法位移值sN位移的模数多项式N’。因而已定义于方块202的原始模数多项式N(x)仅当第一重复步骤期间存在于该N缓存器,虽然在重复(重复回路226)期间,常为在模数缓存器的经移位模数多项式,亦即已乘以被增加至减法位移值sN的次方之变量x的模数多项式。
现在参考第3图,其说明一乘法先行方法(亦即第2图的方块210)的更详细说明。该乘法先行方法起始于起始方块300,其接收第2图的参数m做为通用变量、进一步的控制变量curk(其会于稍后解释)、及乘数M,此由第3图的方块302说明。在方块304,乘法位移值sZ被起始化为0,而且,乘法先行参数a(其会于稍后解释)被起始化为值1(方块306)。
再于方块308检查实际位或是x的目前处理次方之系数是否分别为0,若在方块308决定乘数的目前处理位不等于0,亦即若方块308的决定以YES响应,则控制变量m在方块310增加1。而且,该乘法位移值sZ在方块312亦增加1,在方块314,该乘法先行方法的所得参数,亦即乘法先行参数a及乘法位移值sZ,为输出。
若在方块308的问题以NO响应,则会执行跳至进一步的决定方块316,其于此处决定是否该控制变量m仍小于该长度,亦即乘数M的次数。此外,其检查目前的乘法位移值sZ是否分别小于或等于参数curk,若两个问题皆以YES响应,则会执行跳至方块318以将参数增量1。而且,在方块320,该乘法位移值sZ在方块312亦增加1。接着,乘数M的下一位被检查,其由馈送分支322于第3图说明。
然而,若在方块316决定在方块316的两个问题的其中一以NO响应,则会执行跳至方块324,于此乘法先行参数a被设定为0,由此可见为方块314输出的乘法先行参数a可为0或1。该乘法先行方法接着于方块326结束。
在下文中,乘法先行参数的操作模式被解释。根据本发明使用的该乘法先行方法为一种乘以超过零的可变位移的GF(2n)的先行算法,其中可变位移的数目无法为任意大的值,而是至多等于值CURk,”CURk”表示”目前的k”,亦即”参数k的目前值”。
在下文中,具系数”10001”的乘数多项式可被示例地解释。首先,其最显着的位被检查,此位具值”1”以使方块308以YES响应,其使得变量m被增量1及使得乘法位移值sZ亦被增量1。该乘法先行算法已完成,因乘数的经检查位具值”1”,以此方式,在三元运算域加法被乘数C必须被加上。
在该乘法先行算法的下一路径,第二个位被检查,此位具值0以使在方块308以NO响应。若经检查的位仅为被乘数的第二个位且若乘法位移值sZ,因在方块304的起始化,而为0,则方块316以YES响应以使得该控制变量m被增量1(318)及该乘法位移值亦被增量1(320)。经由分支322,方块308再被进入,因下一亦具值”0”,此方块被重复以NO响应且方块316仍为目前的这个,m仍小于L(M)故此问题被正向地响应,sZ仅具值1。当其假设CURk具值2,此问题亦被正向地响应以使在方块318及320,m及sZ的增量再度发生。在方块320通过后,sZ具值2。经由分支322至方块308的转移再被执行以决定目前的下一位是否为1或0。对本实例,方块308再次以NO响应因在此情况下,序列中零值的第三个位被检查,然而,方块316现在以NO响应因sZ为2且变量CURk亦为2,此表示乘法先行方法因而可以说被取消即使第三个0亦可被使用以作动一位移,然而,sZ必须被限制于最高值,因否则一无限长的Z缓存器必须被提供以能够储存经移位的中间结果多项式Z’,其于第2图的步骤214计算。CURk因而依据Z缓存器的目前移动而被设定以允许最大可能的位移值sZ,其贡献在于速度上的增益,及一方面同时处理经移位的中间结果多项式Z’的有限缓存器长度。在第2图方块218的三元运算域操作由此成为二元运算域操作因在第3图方块324的参数a已被设定为0。
如可由第3图所见,在方块324的分支没有m的进一步增量发生故在乘法先行算法的更新路径,现在于方块308所检查的为序列的第三个0位。因此位具值0,方块308再次以NO响应以使得该乘法位移值sZ被增量1且在方块318的控制变量亦被增量。乘数的最后一位,亦即”1”,现在被检查,因此位不等于0,方块308以YES响应,该控制变量最后一次被增量且该乘法位移值sZ亦被增量直到此重复的该乘法先行算法完成(方块326)。现在所有被乘数位已被检查以使第2图的重复回路226被完成因其在方块220被检查是否m等于0,其现在应用于本实例。
在下文中,参考第4图以叙述减法先行方法,在第2图,其以参考数字212指定。在方块400,该减法先行方法开始,在方块402,其中的各种通用变量,特别是N及Z被强调及定义。N为前一步骤的模数多项式之缓存器值,且Z为前一步骤的经更新中间结果多项式,k为Z的最大位移值,CURk为Z的目前位移值且MAX为溢流缓冲器的长度,亦即位数,其用于储存左移多项式N及Z。当第2图的方块216被考虑时,可了解若任意大的减法位移值sN被提供,N的任意大的缓存器须被提供,如同在乘法先行方法的类似情况,然而,因空间及效率原因,此为不欲的,故藉由参数MAX,可考虑该模数多项式仅能由特定数目位位移至左侧,亦即顶点。
在方块404,稍后会被叙述的参数si被起始化为0,而后在方块406决定显示在溢流缓冲器的N的位数目的参数n是否等于0,或者是否si等于k。若方块406以YES响应,则会执行跳至方块408,于此该减法先行参数b被设定为0,然而,若方块406的问题以NO响应,则参数n被增量1(方块410)。同时,参数si被增量1,如方块412所说明。接着,中央比较在方块414进行,由此要决定多少模数多项式要被位移以使在该三元运算域操作(第2图的方块218)中,中间结果多项式的模减发生。为进行此,辅助位移值si被决定以使得自x(x被增加至si的次方)乘以前一步骤的经更新中问结果多项式的相乘的多项式的次数等于目前模数多项式的次数。此如由重复回路416所示的一步骤接着一步骤进行直到YES-结果在方块406得到或是YES-结果在方块414得到。若方块414以YES响应,则在方块418该减法先行参数b被设定为1。在方块420,一新的参数n再自该乘法位移值sZ及目前值n的差被计算,真实的减法位移值sN再于方块422以形成该乘法位移值sZ及该辅助位移值si的差被计算。
已指出该乘法位移值sZ系由实际平行通过乘法先行算法被提供,如在第2图由箭头230所示。若无辅助参数si的引入,仅乘法先行法的一系列实施及之后为减法先行法的一系列实施为可行,其基于效率原因为不欲的。所以,辅助参数si被使用,藉由此减法位移值sN_的实际计算可被预备且延伸的重复回路(第4图的分支416)可实际上以平行于乘法先行算法的方式被处理,且减法位移值sN_的实际计算可藉由两个短数字sZ及si的差之快速形成而被执行。因而顺序如下,sZ及si被并行计算,sZ再自该乘法先行算法经由第2图的分支230(其亦可由第4图了解)被传送减法先行算法以使减法位移值sN_被直接提供于下一循环,此会参考第8a至8c图于稍后解释。
在方块422后,在方块424决定n是否大于MAX减k,若此问题响应为YES,则新的CURk会于方块426计算,若在方块424的此问题响应为NO,则于方块428CURk会与k相等。在方块430,减法先行法的结果值(亦即b及sN)被输出以使减法先行法结束于方块432。
参考乘法先行参数a及减法先行参数b与储存管理参数n、MAX、k及CURk的详细说明,系以DE 3631992 C2为参考。不像Z/NZ的ZDN方法,其中参数a及b可取值+1、0及-1,在本发明方法的相对应参数a及b仅可取值0及1。先行参数a及b系仅选择性地需要于根据本发明的模乘,就是在没有任意大的储存位置可提供给N及Z的情况。然而,一般,本发明方法可在任意大的缓存器可被提供的情况下被容易地进行,在此情况下,该乘法先行不会被消除而是总是被执行直到”1”被发现于该乘数,直到那时,参照第2图的方块214,sZ具某可能最大值以使该经移位的中间结果多项式Z’可能地采较大的值,因1已被发现于该乘数,于方块218,被乘数再被加至该经移位的中间结果多项式Z’。
然而,一基本特性为模减亦同时与每一乘法步骤发生以使就整体而言数值可被保持于一可容忍范围。
为进行此,根据本发明的该减法位移值sN_以一种经位移的模数多项式之次数等于目前的中间结果多项式之次数方式被选择,若之后该经位移的模数多项式被自Z’(x)及C(x)的和减去,该更新的中间结果Z典型上总是小于Z’以使减法已被得到,如此,可了解该更新的中间结果多项式Z,其由第2图的步骤218计算,不必要关于方块202的原始模数多项式而被减少,而是在整个重复期间仅关于左移模数多项式(其为具较高次数的模数多项式)而被减少,然而不必要都像这样。然而若为要增加的情况,其可由步骤220达到,在此步骤决定n是否等于0,亦即是否N具在溢流缓冲器的位,自该更新的中间结果进一步减去模数发生以使Z可再日益增多地被减少为原先的余数等级。若n等于0,此表示在溢流缓冲器不再有N的位,其表示最后得到的经位移的模数多项式等于方块202的原始模数多项式。
如此,可了解本发明模乘方法基本上亦可不需先行参数a及b而被执行,然而,在此情况下,理论上地无限Z及N的缓存器是必要的-若任意乘数被假设。
若对Z及N具储存限制,亦即若先行参数a及b可为0,乘法先行参数a等于0表示没有任何被乘数被加至经位移的Z’,类似于此,减法先行参数b等于0表示该经位移的模数多项式大于经位移的中间结果多项式Z’,基于此原因没有任何减法是必要的故模减亦可被省略。在此种情况,该三元运算域操作会完全减退。
在此阶段,亦指出在缓存器Z及N的有限缓冲器之情况下,必须注意只要变量m未达到值0,则N被保持距其Home MSB至少k位。
更进一步指出在GF(2n)算术的情况下,亦即若多项式的系数可仅为0或1,则该加法运算对应于该减法运算且一般可以XORing进行。然而,若多项式的系数被允许为不同数字系统,例如为八进制数制或十进制数制,当然,该减法不对应于该加法。
在下文中,参考第8a至8c图以说明使用该辅助位移值si的该减法位移值sZ的计算。在第8a图中,一种中间结果多项式Z及模数多项式N被说明,仅做为实例,该中间结果多项式具次数为4,亦即4位,且该模数多项式具次数为9,亦即9位。更进一步假设在第2图的方块214,经位移的中间结果多项式Z’被计算,其可由乘以被增加至sZ的次方之变量x而得到,假设在乘数有8个零,其造成该乘法位移值sZ为8。为得到模减,该模数N必须达到该经位移的中间结果多项式Z’的大小次方。根据本发明,该模数多项式N要被位移以使该经位移的中间结果多项式Z’之次数及该经位移的模数多项式N之次数为相等的。如可由第8b图所了解,减法位移值sN等于3为此所必须。
亦可由第8b图所了解,发现sN实际上仅能当sZ已被计算时执行,其表示第2图的方块210及212的平行执行,如为本发明较佳的,是不可能的。基于此原因,辅助位移值si被引入,如可由第8a图所了解,该辅助位移参数si等于该中间结果多项式Z的次数及该模数多项式N的次数的差。si的优点为此值可被计算而不需在目前步骤知道sZ。
可由第8c图所了解,sZ总是等于si_及sN的和。因而sN总是与sZ及si相依,相依方式为应用下列式子sN=sZ-si。
决定sN的耗时重复方法可因而被分割为决定si的耗时重复方法(回路416)及快速减法运算(第4图的方块422),由此,两个先行方法的几乎平行执行为可能的,仅串联的成份为在计算方块422前(第4图),sZ的实际值已由乘法先行算法被计算及提供(第2图的箭头230)。
如已经解释,计算GF(2n)的模乘之本发明观念之基本优点系基于其可被整合至ZDN方法的已现存的长数目的计算单元,第5图显示为执行与Z、aC及bN的三元运算域加法单元的发明采用的三元运算域计算单元之一部份。
在第5图,与另一连接的三个位切片[i]、[i-1]、[i-2]被说明,每一位切片包括一三位计数器500及全加器510已在输出侧分别得到经更新的中间结果多项式的位Z[i]、Z[i-1]及Z[i-2]。该全加器进一步具下一较高全加器的进位输入之进位输出。若例如具次数200的多项式被处理,第5图的200三位计数器必须平行连接。
为改良第5图的GF(2n)的位切片,如第5图所示,一AND闸520必须插入于三位计数器的上方输出及下一较高阶段的全加器的第二最低输入。若0被馈入起动输入530,值x总是为0。而后全加器510的功能总是减退至y及0的加成。在Z/NZ的情况下,然而,该AND闸的起动输入被以”1”提供故该AND闸没有进一步效用。
在GF(2n),该AND闸的输出因而为0。然而,在Z/NZ,x是需要的,其中该AND闸的输出可不等于0,该起动因而由AND闸实现。然而,对GF(2n)的情况,在全加器的加成变得无足轻重的,其在起动输入530为0。
第6图显示在AND闸520的情况,部份说明于第5图计算单元具正常加法器的作用,若起始讯号SC=1。然而,若起始讯号SC=0,其会具XOR电路的作用。
第7图显示Z/NZ及GF(2n)计算单元的示意方块图,该计算单元被沿该长数目算术单元700分类,长数目算术单元700执行已对Z/NZ或GF(2n)叙述的三元运算域操作。
该计算单元进一步包括一种Z/NZ控制单元710及一种GF(2n)控制单元720及一种模式选择装置730,若该计算单元系以整数计算运算模,该模式选择装置730会以真加法运算被执行的方式控制该算术单元700,该算术单元在输入侧及输出侧被连接至Z/NZ控制单元710。然而,若该计算单元要运算GF(2n)算术,则该模式选择730会以使用XOR运算取代加法而被执行的方式来活化该算术单元700且算术单元的输入及输出被连接至GF(2n)控制单元。
如此,不再需要分开算术单元以容纳整数模算术及多项式模算术于一计算单元。
已指出因为三元运算域操作对所有位平行执行,大部份芯片空间由该算术单元700消耗,且要在控制单元710及720进行的更小的计算可以更小数字处理,以使只要芯片面积为被注重的,此几乎不会有差别。
相对于整数算术及多项式算术需要个别计算单元的计算单元,计算模乘的本发明观念因而允许芯片面积减少几乎50,特别是对智能卡,此在芯片面积的显着节省使得具相当的竞争优势。
参考数字清单200起始模乘方法202通用变量204起始化中间结果多项式206起始化m208起始化n210乘法先行方法212减法先行方法214产生中间结果多项式216产生经移位的模数多项式218三元运算域加法220检查算法是否已完成222输出Z224停止模乘方法226重复回路230sZ转移300起始乘法先行方法302通用变量304起始化sZ306起始化a308决定是否经处理位等于0或1310增量m312增量sZ314输出a及sZ316决定是否进一步位移可被执行318增量m320增量sZ322重复回路324设定a326停止乘法先行方法400起始减法先行方法
402通用变量404起始化si406决定是否减法可被执行408设定b410增量n412增量si414检查经移位的中间结果多项式的次数416重复回路418设定b420设定n422计算SN424检查n426设定CURk428设定CURk430输出b、SN432结束减法先行方法500三元加法器510全加器520开关530控制700三元运算域计算单元710Z/NZ控制单元720GF(2n)控制单元730模式选择900起始ZDN方法910ZDN算法的乘法先行方法920向左位移Z930ZDN算法的减法先行方法940向左或向右位移该模数950ZDN算法的三元运算域加法960ZDN算法的结束
权利要求
1.一种于密码计算中使用模数(N)将被乘数(C)模乘乘数(M)的方法,该被乘数(C)、该乘数(M)及该模数(N)既为变量(x)的多项式,又为该密码计算之参数,该方法包括下列步骤(a)执行(210)一乘法先行方法以得到乘法位移值(sZ),该乘法位移值(sZ)以该乘数的次方被增量,其未存在于该乘数多项式;(b)将被增加至该乘法位移值(sZ)的次方之该变量(x)乘以(214)中间结果多项式(Z)以得到一经移位的中间结果多项式(Z’);(c)执行一减法先行方法(212)以得到减法位移值(sN),该减法位移值(sN)等于经移位的该中间结果多项式(Z)的次数及该模数多项式(N)的次数的差;(d)将被增加至该减法位移值(sN)的次方之该变量(x)乘以(216)该模数多项式(N)以得到一经移位的模数多项式(N’);(e)相加(218)该经移位的中间结果多项式(Z’)及该被乘数(C)及减去该经移位的模数多项式(N’)以得到一经更新的中间结果多项式(Z);及(f)重复(226)步骤(a)至(e)直到所有该乘数(M)的次方已被处理,其中在步骤(a)至(e)的重复中,于步骤(d)中,前一步骤(e)的该经更新的中间结果多项式(Z)被用做该中间结果多项式(Z),及于步骤(c)中,前一步骤(d)的该经移位多项式被用做模数多项式(N)。
2.根据申请专利范围第1项的方法,其中在步骤(d)的该相乘(210)系藉由以许多等于该乘法位移值(sZ)的数字位移该中间结果多项式(Z)而被进行,及其中在步骤(d)的该相乘(210)系藉由以许多等于该减法位移值(sN)的数字位移该模数多项式(M)而被进行。
3.根据申请专利范围第1或2项的方法,其中该多项式的系数仅能取值”0”或”1”,及其中在步骤(e)的该相加及相减(218)由位般互斥或该中间结果多项式(Z’)、该被乘数(C)及该经移位的模数多项式(N’)而进行。
4.根据先前申请专利范围其中一项的方法,其中该减法先行方法(212)以得到减法位移值(sN)的步骤包括下列步骤决定(414)一辅助位移值(si)以使得该模数多项式(N)的次数及乘上已被增加至该辅助位移值(si)的次方的变量的前一步骤(e)的该经更新中间结果多项式(Z)的次数相等,及形成(422)该乘法位移值(sZ)及该辅助位移值(si)的差以得到该减法位移值(sN)。
5.根据申请专利范围第4项的方法,其中执行该乘法先行方法(210)的该步骤及决定(414)该辅助位移值(si)的该步骤系并行进行。
6.根据先前申请专利范围其中一项的方法,其中该乘法位移值(sZ)被限制于最大乘法位移值(k),其中执行(210)该乘法位移方法的每一步骤包括下列步骤如该乘法位移值等于该最大乘法位移值(k),使该乘法位移值(sZ)等于该最大位移值(k),产生(306、324)一种具预先决定值的乘法先行参数(a),及其中该相加步骤包括下列步骤如该乘法先行参数(a)具该预先决定值,仅相加该预先决定的中间结果多项式(Z’)及该经移位的模数多项式(N’)。
7.一种于密码计算中使用模数(N)进行将被乘数(C)模乘乘数(M)的装置,该被乘数(C)、该乘数(M)及该模数(N)为变量(x)的多项式,又为该密码计算之参数,该装置包括(a)执行(210)一乘法先行方法以得到乘法位移值(sZ)的装置,该乘法位移值(sZ)以该乘数的次方被增量,其未存在于该乘数多项式;(b)将被增加至该乘法位移值(sZ)的次方之该变量(x)乘以(214)中间结果多项式(Z)以得到一经移位的中间结果多项式(Z’)的装置;(c)执行一减法先行方法(212)以得到减法位移值(sN),该减法位移值(sN)等于该经移位的该中间结果多项式(Z)的次数及该模数多项式(N)的次数的差的装置;(d)将被增加至该减法位移值(sN)的次方之该变量(x)乘以(216)该模数多项式(N)以得到一经移位的模数多项式(N’)的装置;(e)相加(218)该经移位的中间结果多项式(Z’)及该被乘数(C)及减去该经移位的模数多项式(N’)以得到一经更新的中间结果多项式(Z)的装置;及(f)重复地控制(226)该装置(a)至(e)直到所有该乘数(M)的次方已被处理的装置,其中在该装置(a)至(e)的重复控制中,相乘(214)以得到经移位的该中间结果多项式的该装置被设置以使用相加(218)的该装置的前一控制的该经更新的中间结果多项式(Z)做为该中间结果多项式(Z),及执行一减法先行方法(212)的该装置被设置以重复控制的方式以使用相乘(216)的该装置的前一控制的该经移位模数多项式被用做模数多项式(N)以得到经移位的模数多项式。
8.根据申请专利范围第7项的装置,其中该用于相乘(214)以得到经移位的中间结果多项式(Z’)的装置及该用于相乘(216)以得到经移位的模数多项式(N’)的装置被实施做为可控制的位移缓存器以依据该乘法位移值(sZ)或依据该减法位移值(sN)而由相对应数字位移该缓存器内容。
9.根据申请专利范围第7或8项的装置,其中用于相加及用于相减的该装置(218)由位般互斥或该中间结果多项式(Z’)、该被乘数(C)及该经移位的模数多项式(N’)而进行。
10.根据申请专利范围第7或8项的装置,用于相加及相减的该装置(218)包括一具三个输入线路及二个输出线路的计数器(500),其中该中间结果多项式(Z)的一位可被供应至第一输入线路,其中该被乘数(C)的一位可被供应至第二输入线路,及其中该经移位的模数多项式(N’)的一位可被供应至第三输入线路;一具三个输入及一输出的全加器(510),该计数器(500)的低次输出系连接至该全加器(510)的高次输入线路;一在该计数器(500)的较高次输出线路及该全加器(510)的中间输入间连接的开关(520)以用于较高次位;及一控制单元(530)以当多项式要被处理时,开启该开关(520)。
11.根据申请专利范围第7项所述之装置,系作为一种计算单元以使用该模数将该被乘数乘以该乘数,该计算单元选择性地使用模数整数将被乘数整数乘以乘数整数,该相加装置系形成为三元运算域加法器重(700),共包括一具进位取消装置(730)以合并该整数运算域或是多项式中间结果,该经移位的模数多项式及该被乘数;及一控制装置(730)以控制该进位取消装置以使当多项式运算域被处理时,该进位被去活化及以使当整数运算域被处理时,该进位被活化。
12.根据申请专利范围第11项的计算单元,具进位取消装置的该三元运算域加法器包括;一具三个输入线路及二个输出线路的计数器(500),其中该中间结果多项式的一位可被供应至第一输入线路,其中该被乘数(C)的一位可被供应至第二输入线路,及其中该经移位模数的一位可被供应至第三输入线路;一具三个输入及一输出的全加器(510),该计数器(500)的低次输出系连接至该全加器(510)的高次输入线路;一在该计数器(500)的较高次输出线路及该全加器(510)的中间输入间连接的开关(520)以用于下一较高次位;及一控制单元(530)以当多项式要被处理时,开启该开关(520)。
13.根据申请专利范围第12项的计算单元,其中许多三元运算域加法器存在,三元运算域加法器存在的数目大于或该模数或多项式整数的数字的数目。
全文摘要
在一种使用模数(N)将被乘数(C)模乘乘数(M)的方法中,该被乘数、该乘数及该模数为变量的多项式,一种乘法先行方法以得到乘法位移值(S
文档编号G06F7/60GK1489726SQ02804491
公开日2004年4月14日 申请日期2002年1月24日 优先权日2001年2月16日
发明者A·埃尔贝, H·塞德拉克, N·詹森, J·-P·塞弗特, A 埃尔贝, と ヌ, 吕 申请人:因芬尼昂技术股份公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1