随机化模数约简方法以及用于该方法的硬件的制作方法

文档序号:6499497阅读:366来源:国知局
专利名称:随机化模数约简方法以及用于该方法的硬件的制作方法
技术领域
本发明涉及算法处理和计算,特别是用于密码术应用。本发明尤其涉及包括模数约简的剩余算术,特别是从巴雷特约简方法(Barrent reduction method)导出的计算。
背景技术
许多加密算法使用大整数乘法(或取幂)以及将乘积约简成与密钥相关的特定模数同余的余数值。此种计算易受幂分析和定时的攻击。因此重要的是需要保护这一计算的安全以防止关于密钥的信息被获取。同时,使这些计算快速和精确也是重要的。通常,大整数乘法和约简是加密算法中计算量最大的部分。业已开发了几个不同的计算技术用于进行有效的模数约简,包括周知的Quisquater方法、Barrett方法和Montgomery方法,以及包括预先计算和表格查询的修改。在现有技术中对这些周知的技术进行描述和比较。例如可以参见(1)A.Bosselaers等人,″Comparison of three modular reduction functions″,Advances in Cryptology/Crypto′93,LNCS 773,Springer-Verlag,1994,第175-186页。(2)Jean Francis Dhem,″Design of anefficient public-key cryptographic library for RISC-based smart cards″,博士论文,Université catholique de Louvain,Louvain-la-Neuve,Belgium,1998年5月。(3)C.H.Lim等人,″Fast Modular Reduction With Precomputation″,1999年预印(从CiteSeerScientific Literature Digital Library,citeseer.nj.nec.com/109504.html处可得)。(4)Hollmann等人,″Method and Device for Executing a Decrypting Mechanism throughCalculating a Standardized Modular Exponentiation for Thwarting Timing Attacks″,2002年4月2号的美国专利No.6,366,673B1(基于1998年9月15日提交的申请)。
本发明的一个目标在于提供一种改进的巴雷特模数约简方法以及用于该方法的计算装置,它们能够更为安全地抵抗密码分析攻击并同时提供快速精确的结果。本发明的另一个目标在于提供加速商估计的前述改进方法和装置。

发明内容
这些目标可通过计算机执行的模数约简方法实现,在所述方法中用于计算的商被系统地用一个少数几位(例如少于半个字)的随机误差低估。所得的余数总是与相应于特定模数的中间乘积同余,但是要大于剩余值并与用于每次执行的随机方式不同。因为商仅需是近似的,所以对它的估计更快。因为有意随机化所述估计误差,所以本方法能够更为安全地抵抗密码分析。而且中间结果在数学上是等价的(与真实结果同余),并且最终结果(在最后的一组减去模数后)完全相同,因而达到了加密操作的可逆性所需的精确性。
用于执行本发明所述方法步骤的硬件包括将随机误差注入商估计的随机数发生器。带有存储器访问及携带注入(carry injection)的计算单元执行固件的在操作序列发生器的控制下操作以完成大整数乘法和模数约简的一字宽的乘-累加步骤。


图1是根据本发明并用于执行本发明的模数约简方法的计算硬件(包括随机数发生器单元)的示意性平面图。
图2是示出了本发明模数约简方法的一般步骤的流程图。
具体实施例方式
参考图1,计算硬件包括计算单元10,该单元能够在从存储器随机(RAM)12中检索出的操作数上执行一字宽度的乘法和乘-累加步骤并携带来自寄存器14的项。操作序列发生器16包括根据用于操作设置的固件或软件指令来控制计算单元10的逻辑电路以执行大整数乘法(或取幂)和模数约简。存储在寄存器18并可由操作序列发生器16访问的操作参数包括使操作序列发生器能定位RAM 12内一操作数的指针,以及关于操作数长度(字数)的信息、携带注入控制信息和中间结果的目的地地址。至此,该装置大致类似于适于大整数算术操作的其他可用硬件。除了如下将详述的约简步骤的细节,固件或软件指令也类似于在一字宽度的字段内执行有效大整数乘法或取幂的现有程序。
不同于现有的该类硬件,图1中的硬件还包括随机数发生器20,例如可以是已知的伪随机数发生器电路。该随机数发生器执行一计算并输出在本发明的方法中使用的随机数。在此,操作序列发生器16根据实行本发明方法的程序指令来控制计算单元10以使其访问随机数发生器20,从而如下所述将随机误差量注入商估计。
参见图2,本发明的方法是提供更快商估计和对密码分析攻击有更高抵抗能力的改进的巴雷特模数约简技术。本方法可由图1中的硬件执行。
模数约简通常求解 其中R是找到的剩余值,它是X对模数M的同余,并且符号 表示地板函数(≤a的最大整数),所以 对应于一整数除法。要被约简的数字X通常是两个大整数(通常为素数)的乘积,即X=A.B,其中整数A和B的一个或两者是多字字长(例如A和B都可以是1024位,即32个32位的字长)。在任何情况下,在任何模数约简方法中的基本问题都是以有效的方法估计关于大(多字)数X和M的商 在本发明中,额外的问题是需要以在加密应用中安全防止来自幂分析攻击的方式来执行约简。
巴雷特方法包括预计算并存储模数倒数的按比例的估计U,并且使用乘法和字移位(除以b)来代替长除法用以估计该商。通过对参数的适当选择,商估计中的误差最多为2。本发明对巴雷特方法的改进仅是通过用精度较低但更快的估计来近似商,以及通过在计算余数之前有意将随机误差注入商而实现的。所得的余数将略微大于剩余值,但与其同余。
假设w表示字长(例如,用于32位处理器w=32),b=2w表示基数,n是模数M的字的数,其中M=Σi=0n-1mibi,]]>0<mn-1<b,0≤mi<b,其中i=0至n-2,bn-1≤M≤bn,并且X是字数为2n+1的将要约简的数,其中X=Σi=02nxibi,]]>0≤xX<b,其中i=0至2n,0≤X<b2n+1(或者在某些情况下M≤X<b2n+1)我们从预计算和存储(图2中的步骤30)表示按比例的模数M倒数的常数U开始 随后在对该特定模数M的所有约简操作中使用这一存储值。U对于每个不是b的幂的模数M来说,其字数总为n+1。为了对X执行模数约简,则使用存储值U估计商q(步骤32) 对于该计算这仅要求乘法和字长移位。虽然可能发生商估计完全正确的情况,但地板函数旨在确保商q始终被低估(从未被高估)。如果要求低估,则还可包括额外减一。常数U和商估计两者与Barrett方法的不同之处在于对每一个字额外的移位(Barrett方法使用 和 被估计的商q≥0将是n+1字长的最大值。
在此阶段,最好将随机误差E注入算出的商(步骤36)以获取随机化的商,q′=q-E。在此情况下,我们必须使得M·2w/2≤X≤b2n+1以避免带有负数。
可以通过任何已知的随机或伪随机数发生器(硬件或软件)来生成随机误差E(步骤34)。唯一的限制是该误差必须落在指定的范围内,诸如0≤E<(2w/2-1)除了由商估计本身引起的任何误差之外,这就将由随机发生器产生的潜在误差限制到指定位数(例如半个字)。
接下来,计算与剩余值R同余(模数M)的余数R′R′=X-q′M因为商q被低估并且引入了随机误差E,所以余数R′≥R,即算出的余数将大于剩余值有模数M的某些较小随机倍数或等于剩余值。
可在进一步的计算中使用随机化的余数R′(步骤48),诸如与为了一致性可被再次约简(回到步骤32)的另一个余数R″(随机化或未随机化)的乘法或加法。(误差仍然有界。)此外,如果不要求随机化,就可选择保持接近的商q(步骤44)。在此情况下,我们可以使0≤X≤b2n+1。保持接近该商就能获取真正的余数(步骤46和40)。
最后,依赖于特定应用的需要,可以通过多次从余数R′中减去模数M(步骤40)直到该数字小于M的方法来计算剩余数R。在最后一次减法之后等于R′的剩余值R随后可被返回用作加密系统的余数(步骤42)。
模数约简的随机化为抵抗各种依赖在幂使用中一致性以确定模数的密码分析攻击提供了安全保障。在这里,X模M的约简从一次执行到下一次执行中随机变化,同时还产生同余的中间余数R′。在最终生成最后剩余值R的减法的次数也随着一次执行到下一次执行随机变化。以此方式约简的数X可从各种不同的算术操作中获取,包括乘法、平方、求幂和加法等等。同样地,使用的模数M可从各种方式导出(最通常在加密中从密钥导出)。本发明的随机化模数约简方法可用于依赖这一约简的许多加密算法,包括大素数(例如RSA)和基于椭圆曲线的公钥加密系统。
权利要求
1.一种密码安全的计算机硬件实现的模数约简方法,包括预计算表示模数M按比例位数的倒数的常数U并将其存储在存储器中;为要按模数M约简的数X估计一个近似的商q,其中所述估计是通过在计算单元内乘以所述常数U并通过X的移位以及通过所述乘积的移位来对X执行的;在随机数发生器内生成随机误差值E,并将所述误差值应用于所述近似的商以获取随机化的商q′=q-E;以及在所述计算单元内计算余数R′=X-q′M,所述余数大于所述模数M但对X模M同余。
2.如权利要求1所述的方法,其特征在于,预计算所述常数U是根据等式U=b2+1/M执行的,其中b=2w,而w是所述计算单元中的字长,以位为单位。
3.如权利要求2所述的方法,其特征在于,估计近似的商q是由计算单元根据等式q=(X/bn·U)/bn+2执行的。
4.如权利要求3所述的方法,其特征在于,在所述商估计中还包括另外减1。
5.如权利要求1所述的方法,其特征在于,X的所述模数约简是计算机硬件实现的加密程序的一部分。
6.如权利要求1所述的方法,其特征在于,提供了另选的计算路径,其中可以选择性地省略生成误差值并将其应用于近似商的步骤。
7.如权利要求1所述的方法,其特征在于,所述随机数发生器具有半个字的指定误差极限,因此0≤E<(2w/2-1)。
8.一种用于执行密码安全的模数约简方法的计算硬件,所述硬件包括适于对从存储器中检索出的操作数执行一字宽度乘法和累加步骤并携带来自一寄存器组的项的计算单元;生成随机误差值E的随机数发生器;操作序列发生器,它包括根据程序指令控制所述计算单元和随机数发生器的逻辑电路,以对数X执行关于模数M的模数约简,其中所执行的操作至少包括从表示模数的按比例位数的倒数的预存储常数U中估计近似的商q;用所述随机误差值E对所述近似的商进行随机化以获取随机化的商q′=q-E;以及计算余数值R′=X-q′M。
9.如权利要求8所述的计算硬件,其特征在于,还包括可由所述操作序列发生器访问的操作参数寄存器,所述寄存器包括如下的任何一个或多个(a)用于定位所述存储器内操作数的指针;(b)关于操作数长度的信息;(c)用于携带项寄存器的携带注入控制信息;以及(d)操作步骤中间结果的目的地地址信息。
10.如权利要求8所述的计算硬件,其特征在于,在所述存储器内预存储的所述常数U是从根据等式U=b2n+1/M的预计算中获取的,其中b=2w,而w是所述计算单元中的字长,以位为单位。
11.如权利要求10所述的计算硬件,其特征在于,在执行程序指令的所述操作序列发生器的控制下由所述计算单元执行的对所述近似商q的估计是根据等式q=(X/bn·U)/bn+2执行的。
12.如权利要求11所述的计算硬件,其特征在于,由所述计算单元执行的所述商估计包括另外减1。
13.如权利要求8所述的计算硬件,其特征在于,所述随机数发生器具有半个字的指定误差极限,因此0≤E<(2w/2-1)。
全文摘要
一种密码安全的计算机硬件实现的模数约简方法系统性地低估(q)并随机化用于余数(R′)计算的近似商(q′)。将随机化误差(E)注入近似商限于少数几位,例如少于半个字。计算的余数(R′)与剩余数(R)的较小随机倍数同余,其中剩余数(R)可通过减去最后一组模数(M)而获取。除了计算单元(10)和操作序列发生器(16)之外,计算硬件还包括用于产生随机误差的随机或伪随机数发生器(20)。于是,模数约简方法就能抵抗诸如定时和幂分析攻击的硬件密码分析攻击。
文档编号G06F3/00GK1883155SQ200480033595
公开日2006年12月20日 申请日期2004年11月5日 优先权日2003年11月18日
发明者V·杜帕丘斯, M·道古特 申请人:爱特梅尔股份有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1