改进的归约计算的制作方法

文档序号:6487267阅读:172来源:国知局
专利名称:改进的归约计算的制作方法
技术领域
本发明涉及一种用于执行归约运算的方法和用于执行归约运算的设备。
椭圆曲线密码学涉及使用对GF(p)上的椭圆曲线关系的计算,并且要求例如在密码处理器中实现公开密钥算法期间重复地执行长整数乘法。
典型情况下,必须执行乘法运算数百次以便完成加密或解密运算,因此重要的是,用于执行这些运算的密码装置使用高速乘法器来迅速地执行长整型乘法。
这种密码算法日益用于例如智能卡之类的电子装置中,并且在这些应用中严重地限制了处理能力和功率消耗。
一个常规的计算方法是Quisquater系统,其使用下列运算来对最高有效字进行运算R’=R+(-N’*MSW),其中N’是N的特定倍数。实际上,-N’用于其2的补码表示。
归约运算是低效的,并且结果可能太大,需要把(-N)与R’相加。
另一常规的计算方法是Mongomery系统,其使用下列运算来对最低有效字进行运算R’=R+N*Q其中Q=LSW*M mod 2n。
归约运算同样是低效的并且可能太大而多出一位,这要求通过减去N来还原。
因此本发明的目的是提供更高效的归约运算。
本发明的另一目的是向归约运算提供较低数量的乘法运算。
本发明的另一目的是提供一种在计算操作中只提供很少的溢出的归约运算。
本发明的另一目的是提供一种归约运算,在所述归约运算中可以更快地完成所述归约运算。
依照一个方面,本发明提供了一种依照密码计算来执行归约运算的方法,所述方法包括选择模数,其中所述模数的第一段具有多个“1”最高有效字状态,而第二段包括多个“1”或“0”状态,借此由这两个段形成的数是模数或模数的倍数,并且对所述模数/倍数进行归约运算。
通过选择特定形式的模数/倍数用于计算,归约运算只涉及很少的乘法运算。
从而,由本发明所提供的显著益处在于降低了用于完成整个计算操作所花费的时间。
此外,与常规的加密方法相比,保持了由本发明方法所提供的安全度。
优选地是,所述方法包括监视前导“1”的数目以便确定该数目是否小于(k-2)。有益地是,当前导“1”的数目小于(k-2)时,开始下一计算。
从而,本发明的进一步优点在于可以同时处理多个乘法运算,借此降低了为完成计算操作所花费的时间。
在本发明192位ECC和64位字长的一个实施例中,模数包括138位的第一段和54位的第二段。
在本发明的128位ECC和64位字长的另一实施例中,模数包括74位的第一段和54位的第二段。
在本发明的256位ECC和64位字长的另一实施例中,模数包括202位的第一段和54位的第二段。
本发明还可以对多个模数起作用,所述模数具有比字长的倍数更少的有效位。在该情况下,系统对模数的倍数起作用,所述模数具有所要求的前导1的数目。仅在最后,必须把结果还原为原始的(较小的)模数。
在一个优选方案中,本发明的方法利用由m个字组成的模数,除最低有效字(LSW)之外的所有字由“1”组成,并且所述LSW例如具有十个前导“1”。其可以是任何数目,记住如果它越大,那么常常要求附加的归约越少。
依照另一方面,本发明提供了可直接装入数字计算机内部存储器的计算机程序产品,包括用于当所述产品在计算机上运行时执行本发明方法的软件代码部分。
依照另一方面,本发明提供了可直接装入数字计算机内部存储器的计算机程序,包括用于当所述程序在计算机上运行时执行本发明方法的软件代码部分。
依照另一方面,本发明为使本发明具体化的计算机程序提供了一种载体,所述载体可以包括电子信号。
依照另一方面,本发明提供了计算机程序产品或计算机程序或本发明的载体的电子分布。
依照另一方面,本发明提供了一种依照密码计算来执行归约运算的设备,所述设备包括用于选择模数或模数的倍数的装置,其中所述模数的第一段具有多个“1”状态,而第二段具有多个“1”或“0”状态,借此由这两个段形成的数是模数或模数的倍数。
为了可以更容易地理解本发明,现在仅以举例形式参考附图给出了描述,其中

图1是本发明应用在智能卡中的框图;图2是为192位ECC和64位字来具体化本发明的归约运算的示意图;图3是用于128位ECC和64位字的本发明的另一归约运算的示意图;图4是用于256位ECC和64位字的本发明的另一归约运算的示意图;图5是本发明的硬件实现方式。
图1示出了本发明硬件实现方式的框图,包括具有以下组件的智能卡50·微控制器51,用于总控制经由接口与外界的通信。它设置RAM/ROM中数据的指针并且起动协处理器。
·到外界的接口,用于例如依照ISO-7816-3与智能卡联系。
·只读存储器(ROM)52,用于存储微控制器的程序。
·可编程只读存储器(闪存或EEPROM)53,用于非易失性存储数据或程序。
·RAM 54,用于存储易变数据,例如用于存储在计算期间的中间结果。
·协处理器55,专用于执行ECC或RSA计算的特定高速任务。当任务就绪时,把控制返回到微控制器。
在一个变式中,利用微处理器、ALU来提供加、减、移位运算,利用对控制器进行编程来提供控制逻辑,以及由移位寄存器来进行程度检测,从而以软件实现本发明。
在图2中示出了本发明的归约运算,利用总共包括192个位字的模数来执行所述归约运算,并且所述模数具有两个64位的字和10位都为“1”状态的第一段。如果总数是质数的话,模数的第二段是54位并且可以是任意数。数越大,通常所要求的附加归约越少。
通常,N可以被写为N=nm-1Bm+1+...n1B+n0(B=264)选择N的特殊要求是·n1...nm-1是固定的并且只包含1(n1=...nm-1=B-1)。
·n0除也是1的k个MSB外,通常剩下64-k位可自由选择。
然后N被写为N=Bm-B+n0=Bm-n0’,其中n0’=B-n0设R为结果,其必须被减少1个字。
R=rmBm+rm-1Bn-1+...r1B+r0如下通过从R中减去积rmN来归约结果R’=R-rm.N=rmBm+rm-1Bm-1+...r1B+r0-rm(Bm-B+n0)=rm-1Bm-1+...+r2B2+r1B+r0+rm.(B-n0)=(R-rmBm)+rm.n0’这意味着为了归约,省略字rm并且将积rm.n0’加到最低有效字r0。归约意味着只用一个乘法来代替通常的m个乘法。
由于n0<B,所以n0’总是正的。结果也总是正的。
代替n0,存储并使用n0’。
在一些情况下,结果大出1位。于是有必要再减去N。
R’=(Bm+rm-1Bm-1+...+r1B+r0)-(Bm-n0’)=rm-1Bm-1+...+r1B+(r0+n0’)=(R-Bm)+n0’。
这样,我们只要加上n0’并且丢弃溢出位Bm。
对于每乘以一个字,就进行这种归约。作为选择,首先完成所有乘法继而归约。这里描述了最后的方法。下面描述针对192位ECC和64位字长(m=3)。
N=B3-B+n0=B3-n0’;29≤n0<B (B=264)。
R是三个64位字乘以也是三个64位字的结果,这产生6个字(r0...r5)。
然后按如下进行归约·把n0’乘以r4并且加上r1(步骤S1);·把n0’乘以r5并且加上r2以及先前乘法的进位c。此外,把r3加到乘法的上半部。结果由被称作r2的下半部和上半部q组成(步骤S2);·把q乘以n0’并且加上r0,并且把新的r1加到上半部(步骤S3);·当上一次乘法溢出时,把所述溢出加到r2,例如把n0’乘以0(以便得到0),加上r1(把r作为下半部)并且把r2加到上半部(即溢出位)(步骤S4);·当这再次给出溢出时(即仅当r2都由1组成时(概率2-64)),加上n0’(步骤S5)。
·这可以通过将n0’乘以1并且把r0加到下半部,把r1加到上半部来完成。
第二乘法的进位(q)被用作下一乘法中的被乘数,并且可以被扩大1位。
当n0’q乘法的输入r1不具有8个前导1时(概率小于1/256),由于n0’q因n0’而具有至少8个前导0,所以不会有溢出。在该情况下,程序不等待溢出而继续进行。
处理溢出需要时间,因此必须尽可能地使其最小化。据此,n0具有多个前导1(k),这样n0’具有至少k-1个前导0。
从而,由于q可能会被扩大1位,所以积n0’c2具有至少k-2个前导0。
为了产生溢出,加法B.c0+r0必须具有至少k-2个前导1以及来自低位的进位c。
其发生的概率小于2-(k-2)。因此通过使k较高,溢出的可能性非常小。
由于r2必须完全由1组成,所以第二溢出的概率非常小(2-64)。
在实践中,流水线乘法器用来提供高效的计算操作,这样同时处理多个乘法。需要花费几个时钟周期来从乘法器获得结果。当有必要等待以便确定是否出现溢出时,下一乘法直到已经计算溢出才能开始。从而监视r1并且如果它没有k-2个前导“1”,那么在稍后几个周期都不会有溢出,所以可以开始下一乘法。
在图3中示出了一个用于128位ECC和64位字长的不同实施例,包括了具有128位的模数N。
在此实施例中,N=B2-B+n0=B2-n0’;29≤n0<B。
操作数必须处于正规空间。
然后如下进行归约·把n0’乘以r3并且加上r1。还把r2加到乘法的上半部(步骤S10);结果由称作r1的下半部和称作q的上半部组成。
·把q乘以n0’并且加上r0,并且把新的r1加到上半部(步骤S11);·当上一次乘法给出溢出时,那么例如通过乘法/加法n0’.1+B.r1+r0来加上n0’(步骤12)。
在图4中示出了256位ECC和64位字长的不同实施例,包括具有256位的质数。
在此实施例中,N=B4-B+n0+B4-n0’;29<n0<B。
操作数必须处于正规空间。
然后如下进行归约·把n0’乘以r5并且加上r1(步骤S20),产生新的结果,称为r1;·把n0’乘以r6并且加上r2和先前乘法的进位c(步骤S21),产生新的结果,称为r2。
·把n0’乘以r7并且加上r3以及先前乘法的进位c。
此外把r4加到乘法的上半部(步骤S22)。步骤由被称作r3的下半部和上半部q组成。
·把q乘以n0’并且加上r0,并且把新的r1加到上半部(步骤S23);·当上一次乘法给出溢出时,把所述溢出加到r2(步骤S24);·当这再次给出溢出时,把其加到r3(步骤S25);·当这再次给出溢出时,加上n0’(步骤S26)。
第三乘法的进位(q)被用作下一乘法中的被乘数,并且在下一乘法中可以被扩大1位。
图5是具有下列组件的本发明硬件实现方式的框图·用于分别存储输入操作数X、Y、U和R的X-、Y-、U-和Z-寄存器10到13;·用于存储输出C和R的C-和R-寄存器14、15;·用于存储中间结果的RAM 16;·用于执行运算B.C+R=X*Y+B*U+Z+c的乘法器17;·用于控制在RAM和寄存器之间或在寄存器之间的运算和传输的状态机18。
乘法器17计算X和Y的积并且如果需要的话,加上先前的进位c,所述先前的进位在内部存储。结果被分成两等份,把Z加到下半部而把U加到上半部。
C-寄存器14的输出还可以被直接用作y-输入(例如在图2中的q)。
在另一形式中,由在微处理器上运行的软件以及移位寄存器来实现本发明,所述微处理器具有适当的ALU以便提供加、减和移位运算。
权利要求
1.一种依照密码计算来执行归约运算的方法,所述方法包括选择模数,其中所述模数的第一段具有多个“1”最高有效字状态,而第二段包括多个“1”或“0”状态,借此由这两个段形成的数是模数或模数的倍数,并且对所述模数/倍数进行归约运算(S1-S5;S10-S12;S20-S26)。
2.如权利要求1所述的方法,包括实现多个乘法运算(S1)。
3.如权利要求2所述的方法,包括实现多个乘法运算,随后实现归约运算(S1,S2)。
4.如权利要求3所述的方法,包括重复组合的乘法运算和归约运算(S1,S2)。
5.如前面权利要求中任何一个所述的方法,包括使用模数/倍数的倍数。
6.如前面权利要求中任何一个所述的方法,其中当上一次乘法给出溢出时(S4),把所述溢出加到所选择的数的一部分。
7.如权利要求6所述的方法,其中当溢出加法步骤(S4)产生溢出时,那么把n0’(S5)加到所述溢出。
8.如前面权利要求中任何一个所述的方法,其中在两个相邻乘法之间的进位c被实现为下一乘法(S2)中的加数。
9.如前面权利要求中任何一个所述的方法,包括监视前导“1”的数目以便确定该数目是否小于(k-2)。
10.如权利要求6所述的方法,包括当前导“1”的数目小于(k-2)时开始下一计算。
11.如前面权利要求中任何一个所述的方法,包括运算192位ECC和64位字长,所述模数包括138位的第一段和54位的第二段。
12.如权利要求1到10中任何一个所述的方法,包括运算128位ECC和64位字长,所述模数包括74位的第一段和54位的第二段。
13.如权利要求1到10中任何一个所述的方法,包括运算256位ECC和64位字长,所述模数包括202位的第一段和54位的第二段。
14.一种可直接装入数字计算机内部存储器的计算机程序产品,包括用于当所述产品在计算机上运行时执行如权利要求1到13中任何一个或多个所述的方法的软件代码部分。
15.一种可直接装入数字计算机内部存储器的计算机程序,包括用于当所述程序在计算机上运行时执行如权利要求1到13中任何一个或多个所述的方法的软件代码部分。
16.一种载体,其可以包括用于权利要求15的计算机程序的电子信号。
17.权利要求14的计算机程序产品或权利要求15的计算机程序或权利要求16的载体的电子分布。
18.一种依照密码计算来执行归约运算的设备,所述设备包括用于选择模数或模数的倍数的装置,其中所述模数的第一段具有多个“1”状态,而第二段具有多个“1”或“0”状态,借此由这两个段形成的数是模数或模数的倍数,还包括用于对所述模数/倍数进行归约运算的装置(10-17)。
19.如权利要求18所述的设备,包括用于实现多个乘法运算的装置(10-17)。
20.如权利要求19所述的设备,包括用于实现多个乘法运算,随后实现归约运算的装置(10-17)。
21.如权利要求20所述的设备,包括用于重复组合的乘法运算和归约运算的装置(10-17)。
22.如权利要求18到21中任何一个所述的设备,包括用于使用模数/倍数的倍数的装置(10-17)。
23.如权利要求18到22中任何一个所述的设备,包括当上一次乘法给出溢出时,把所述溢出加到所选择的数的一部分的装置(10-17)。
24.如权利要求23所述的设备,包括当溢出加法步骤产生溢出时把n0’加到所述溢出的装置(10-17)。
25.如权利要求18到24中任何一个所述的设备,包括用于把在两个相邻乘法之间的进位c实现为下一乘法中加数的装置(10-17)。
26.如权利要求18到25中任何一个所述的设备,包括用于监视前导“1”的数目以便确定该数目是否小于(k-2)的装置(10-17)。
27.如权利要求18到26中任何一个所述的设备,包括用于当前导“1”的数目小于(k-2)时开始下一计算的装置(10-17)。
28.如权利要求18到27中任何一个所述的设备,包括用于192位ECC和64位字长的装置(10-17),所述模数包括74位的第一段和54位的第二段。
29.如权利要求18到27中任何一个所述的设备,包括用于128位ECC和64位字长的装置(10-17),所述模数包括74位的第一段和54位的第二段。
30.如权利要求18到27中任何一个所述的设备,包括用于256位ECC和64位字长的装置(10-17),所述模数包括202位的第一段和54位的第二段。
31.一种用于执行基本上如上所述并且参考附图1到5中任何一个或多个所示的归约运算的方法。
32.一种用于依照密码计算来执行归约运算的设备,所述设备基本上如上所述和/或如参考附图1到5中的任何一个或多个所说明。
33.一种用于依照密码计算来执行归约运算的方法,所述方法基本上如上所述并且参考附图1到5中任何一个或多个所说明。
全文摘要
椭圆曲线密码学归约技术利用质数,所述质数具有第一段为最高有效字“1”状态,N=n
文档编号G06F7/72GK1809806SQ200480017298
公开日2006年7月26日 申请日期2004年6月10日 优先权日2003年6月21日
发明者G·T·M·胡伯特 申请人:皇家飞利浦电子股份有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1