密码翻译术系模数计算的必要应用。RSA系一种已知之密码翻译
术之必要的算法。RSA算法系基于一模数乘方(exponentiation),其
可被表示如下:
C=Md mod(N),
其中C代表一加密讯息,M系未加密讯息,d为秘密钥匙而N为模数。
模数N通常由二主要数字p及q之增值所产生。模数乘方藉由已知的
平方及乘数(square-and-multiply)算法而被展开为乘法运算。因
此,指数d被展开为2的幂次,因此模数乘方可被展开为数个模数乘
法运算。为了能有效率地在计算方面实施模数乘方,模数乘方因此被
展开为模数乘法运算,模数乘法运算之后可被展开为模数加法运算。
DE 3631992 C2号文件揭露一种密码处理,其中的模数乘法可使
用增值预测(look-ahead)处理及缩减预测处理之模数(modular)乘法
而被加速。DE 3631992 C2所描述之处理也关于一种ZDN方法,并藉
由图九做更详细的描述。在算法的启始步骤900之后,整体变量M,C
及N被重置。目的在于计算以下的模数乘法:
Z=M*C mod N.
M是乘数,其中C是被乘数。Z是此模数乘法之乘积,其中N是模数。
然后,有许多暂时不需要被处理的被重置的区域变量(local
variables)。之后使用二预测处理。在增值预测处理GEN_MULT_LA
中,一乘法位移(shift)值Sz以及增值预测参数a使用不同的预测规
则而被计算(910)。接着,Z缓存器目前的内容接受Sz次的左位移运
算(920)。
实际上与之平行处理的是执行一缩减预测处理GEN_Mod_LA(930)
用以计算一缩减位移值SN以及一缩减参数b。于步骤940,模数缓存
器目前的内容,亦即N,分别被向左或向右位移SN次,以便产生一已
位移的模数值N’。ZDN方法之中央三操作数(operand)操作发生于步
骤950。于此步骤中,步骤920之后的中间乘积Z’被加到已被乘上增
值预测参数a的被乘数C以及已被乘上缩减预测参数b之已位移的模
数N’。依据目前的情况而定,预测参数a及b的值可能为+1,0,或
-1。
一种典型的情况是增值预测参数a是+1,而缩减预测参数b是-
1,因此被乘数C被加到已位移的中间乘积Z’,而已位移之模数N’则
被减去。如果增值预测处理允许大于一预设数目之个别左移,亦即,
如果Sz大于Sz的最大可接受值,其也被称为k,则a的值将是0。
在a的值为0的情况下,而Z’,由于已位移模数之前的缩减,将依然
十分地小,尤其是小于已位移的模数N’,b为0的时候不产生缩减。
步骤910至950被执行直到所有被乘数的数字已被消除或处理,
亦即,直到m为0且直到一参数n等于0为止;此参数指示位移的模
数N’是否依然大于原始的模数N,或是是否尽管所有被乘数的数字已
被消除,仍然有许多从Z减去之模数减法的进一步缩减步骤需要被执
行。
最后,决定Z是否小于0。如果是,则需要达成模数N被加到Z
的最终缩减,所以在此获得模数乘法的正确乘积Z。在步骤960,藉
由ZDN方法之模数乘法于此终止。
乘法位移值Sz以及在步骤910藉由增值预测算法所计算的乘法
参数a系从乘法器拓朴(topology)以及DE3631992 C2所描述之预测
规则所产生。
缩减位移值Sn以及在DE3631992 C2所描述之缩减参数b系由比
较Z缓存器目前的内容与2/3乘以N的值所决定。此比较给予ZDN
方法的名称(ZDN=Zwei Drittel N(=3分之2N))。
如图九所示之ZDN方法转变模数乘法为三个操作数加法(图九的
方块950),其中增值预测处理以及同时发生的缩减预测处理被用以增
加计算时间效率。因此,与蒙哥马利缩减(Montgomery reduction)
相较之下可达成计算时间方面的益处。
在下文,于方块930中所执行的缩减预测处理将藉由图十而被详
细描述。首先,在方块1000,为区域变量,亦即缩减预测参数b及缩
减位移值SN,执行一个保留。在方块1010,缩减位移值SN被重置为
0。然后,数值ZDN在方块1020中被计算,其等于模数N的2/3。在
方块1020中所决定的这个值被储存于密码协处理器(crypto
coprocessor)中其本身之缓存器,称为ZDN缓存器。
之后在方块1030中决定变量n是否为1或是位移值SN是否为-
k。k是定义硬件所预设之最大位移值。于第一次运作中,方块1030
被回答”否”,因此在方块1040,参数n被减少且于方块1060中,缩
减位移值被减少1。在方块1080中,变量ZDN随后被重新配置,即其
值的一半,其可轻易地藉由包含于ZDN缓存器中的一个右位移缓存器
而达成。随后在方块1100中决定目前的中间乘积的绝对值是否大于
ZDN缓存器中所包含的值。
方块1100中的比较运算是缩减预测处理的中央运算。如果此问
题的答案为”是”,此叠代(iteration)停止,且缩减预测处理参数b
将被配置如方块1120所示。如果,与之相反,在方块1100将被回答
的问题的答案为”否”,此叠代往回跳以便检查方块1030中的目前述
值n及SN。如果在叠代的任何时间中方块被回答”是”,流程跳回缩减
参数被设定为0的方块1140。在方块950所示之三操作数运算,这具
有无模数被加或减的效用,其表示中间乘积Z很小以致于不需要模数
缩减。在方块1160,变量n随后被重新配置,且最后于方块1180此
缩减位移值SN被计算,其于图九的方块940中是需要的以便执行模
数的左位移而获得一位移的模数。
在方块1200,1220及1240,n及k的目前的值最后为了检查N缓
存器目前的配置而相对于下一步的变量MAX及cur_k被检查,为确定
没有发生超出缓存器的情况。此结束的细节与本发明无关,但于
DE3631992 C2中有详细描述。
图九及十所示之算法可以图七所示之硬件实施。对于方块950中
所执行的三个操作数的运算,需要一个算术单元700,图七中标示为
AU。之后被耦合至被乘数的缓存器C710,模数用的缓存器N720以
及模数乘法之目前中间乘积用之缓存器Z730。此外,图七揭露,三
操作数的运算,经由回馈箭头740,系被馈入Z缓存器730。此外,
图七表示这些缓存器的相互连接关系。在图十的方块1020中所计算
的ZDN的值必须被储存于其本身的ZDN缓存器750。此外,ZDN比较,
即图十所示之叠代循环(loop),藉由其本身之ZDN比较用之一控制逻
辑760而于其进度中被控制。
计算Z:=M×C mod N之ZDN算法的主要工作因此包含以下
二运算:
1.计算缓存器Z及N之位移值Sz及Si以便满足以下的程序:
2/3N×2-Si<|z|≤4/3N×2-Si以及
2.计算三操作数的总合:
Z:=2SZZ+Ac+b×2SZ-SiN
此增值预测参数a及缩减预测参数b可如已知般被假设为数值-
1,0及+1。
必须指出的是中间乘积Z,被乘数C以及模数N是长的数字,亦
即其位数或位的计数实际上可能大于512,且其也可能达到大于2048
位数。
然而,在方块1100中所执行的目前中间乘积Z与数值ZDN的比
较为了计算时间的缘故,并不会对Z的所有位进行,而只对Z的最大
有效位(most significant bits)进行;在此情况下,32位的数目被
移除以便足以获得比较结果的高度精确度。
对于此必较所需之2/3N之32个最大有效位,需要其本身的缓
存器,其于图七中以参考标号750指示并被指定为一ZDN缓存器。
此外,其本身也需要一个计算Z缓存器中之目前数值以及ZDN缓
存器中之目前数值的正确Si值以便满足以下方程式的硬件比较器:
2/3N×2-SiN<|z|≤4/3×2-SiN
因此,此方法的缺点在于一方面二个额外的ZDN缓存器及硬件比
较器都需要额外的芯片区域。另一方面,2/3N的计算及图十所示之
由叠代循环所执行的ZDN算法中的辅助的位移值Si的计算对整体算
法而言是时间的关键,并且可能实际上对算法整体的运算时间有决定
性。
第一图表示依据本发明使用模数N以乘数M乘以被乘数C之模数
增值之方法的流程图。首先,模数N在步骤10依据以下方程序被转
换为转换模数NT:
NT=T×N
在步骤12,模数乘法随后使用转换模数N以及在较佳实施例中预
定为2/3的转换模数的部份而被消除。相对于模数乘方,这表示以下
形式的RSA方程式被计算:
CT:=Md mod NT
因此,模数乘方C的积不在由模数N所定义的余项集中被计算,
而是在转换模数NT所定义的余项集中被计算,因此,CT,而非C,位
于上述方程式的左方。依据本发明概念之区别在于,由于转换模数NT
的使用,对应已之缩减预测处理之图十的叠代循环的辅助缩减位移值
Si被高度简化。
在最后的步骤14,NT至N的再转换再次被执行,藉由执行对应
以下方程序的运算:
C:=CT mod N
在此情况中,位于转换模数NT之余项集中的转换乘积CT藉由简
单的位移/减法缩减而回到模数N的余项集,因此C为模数乘方的乘
积
使用步骤10的转换子T转换模数N为转换的模数NT的转换被执
行,因此转换模数的预定部份,亦即于较佳实施例中为2/3乘以转换
模数,具有含较一第一预定值之较高阶位数,其后跟随至少一含一第
二预定值之低阶位数。具有2/3乘转换模数之中间乘积Z的比较可因
此被高度简化,亦即,Z的最高位,其具有预定值,寻找,且具有转
换模数之预定部份之第一预定值之较高阶位数与具有第一预定值之
中间乘积Z之最高位数的差异等于差异Si。
综言之,这可如以下所示。N在32位CPU而非在密码协处理中被
转换为转换模数NT,因此适用以下:
NT=T×N
其中T为自然数。
以下由NT所产生,如果所有的使用的数字为二进制数:
NT=1100...0 XX...XX
对2/3乘以转换模数而言,则产生以下的结果:
2/3=100...0 X’X’...X’X’
可以从NT及2/3NT看出二者皆具有例如16位的第一部份以及
分别为位X及X’的L(N)部份。对于所谓的ZDN比较而言,只有2/3
乘以转换模数NT的最高16个位被使用,因为其已产生优于大约2-10
的误差可能性。因此,对ZDN比较不需要使用2/3乘以转换模数的所
有512,1024或2048位,但其已足以执行与转换模数之最高16位的
比较。当然,也可能使用2/3乘以转换模数的较少位来做比较,但误
差可能性逐渐增加。然而,因为此误差是不重要的并且只产生在缩减
预测处理的次最优行为中,此方法实际上很容易执行。
2/3乘以转换模数NT因此具有含数值1的较高阶位数,其后跟随
具有一数值0的至少一低阶位数及因此一第二预定值。于之前所述之
实施例中低阶位数的数目为15。此处也有可能使用较高或较少的数,
依据中间乘积Z与2/3乘以转换模数NT之间所期望或处理的维度
(dimensional)差异。对于模数乘积之中间乘积Z,亦即图九方块950
中的三操作数的相加,产生以下的形式:
|Z|=00...01YY...Y
辅助位移值Si依据以下方程序被计算:
2/3 NT×2-Si<|z|≤4/3NT×2-Si
在2/3乘以转换模数NT的拓朴下,数值Si永远是具有1的2/3
乘以转换模数NT最大有效位与中间乘积之值的最大有效1之间的距
离。
依据本发明,位数或数值Si之间的差异可以在一般的方式中决
定。因此不再需要叠代。
除了以上,储存2/3乘以转换模数NT的ZDN缓存器也不再被需
要,因为,就定义而言,2/3乘以转换模数NT的至少较高的,例如
16位,总是具有相同的形式。也不再需要位比较器。具有一个”1”的
2/3乘以转换模数NT的最高阶位数与具有一个”1”的Z的最高阶位数
之间的有效差异可轻易地被建立,例如藉由转换模数用的XOR运算缓
存器以及中间乘积Z的缓存器。Si随后等于位数的有效差异,其中
XOR运算输出一第一”1”且其中XOR运算输出一第二个”1”。
由于不需要ZDN缓存器及ZDN比较器的事实,整体的算术逻辑单
元可被容纳于较少的芯片区域。
除了以上,密码控制部,即ZDN比较的控制逻辑(图七的760)较
不复杂,因为不需要执行图十的复杂叠代。最后,此比较是较快的,
因此辅助位移值Si的计算不再导致整个算法的时间问题。
在下文,依据本发明的转换将藉由图二至五被详细描述。
如同已被指出之部份,ZDN算法的实质部份包括满足以下的方程
式:
2/32-SiN<|z|≤4/3 2-SiN
Si系关于辅助位移值且为位移Z,在位数方面,至与N相同的位
置所需之位移值。在习知技术中,Si的计算需要|Z|与2/3N的比
较运算。
依据本发明,在任何以N的模数运算被执行之前以大于N的转换
模数NT,与2/3N的比较简单地藉由转换模数N至转换模数NT。所
有的计算模数NT于其后被执行。然而,因为计算的结果必须在余项
集N之中,依据本发明执行以N的最终缩减。
如图二所示,N被表示为长度为N位的整数。由于模数N总是为
正整数的事实,亦即在二的补码表示中MSB=0,符号位等于0且模
数N的最大有效位(MSB-1)总是为1。ZDN比较并不需要比较模数的所
有位与中间乘积,相反地,ZDN的比较使用m位的数字即已足够。模
数N的最大m位定义模数的第一部份NT,其中模数的剩余N-m位定义
模数的第二部份NR。在较佳实施例中,m等于16。较高或较低的m
值,当然也是可能的。
如于图三所示,此转换被执行以便转换模数NT比图二的原始模
数长16位。
ZDN比较使用NT的前16位是足够的,以本发明较佳实施例仅使
用12位以为比较之用,而4个最小有效位构成可能承载的缓冲,其
可来自更少的有效位。
在此情况下,产生错误结果的比较可能性小于2-12。如果此比较
产生错误的结果,其仅产生一次最佳位移值SN,然而,所产生的模数
N依然正确。
如果此模数如图二以二的补码表示,模数N可被展开如下:
N=2n-m NT+NR
现在N使用转换子T被转换为NT,为全等(congruence)的理由,
T为适合的被选择整数。NT应具有图三所示之形式,亦即,NT的最
大有效位(MSB)必须为0,因为NT应为一正整数。如下文所解释,NT
的第二最大有效位及第三最大有效位必须为1,因此,转换模数NT最
高部份的有效位的其它部份,此部份为图三的参考标号33,的数值应
该为”0”。仅于此例中,2/3乘以NT的乘积,2/3乘以NT的最高部份,
如图四所示,仅有一位为”1”,因此于此最高部份44的所有位皆
为”0”,因此已经描述之决定Si之一般的比较可被执行。
然而,使用转换子T的转换模数NT的计算将首先参照图三而讨
论。假设以下的定义:
NT=TN
=T(2n-m NT+NR)
以下维持转换子T:
T = | 2 p - 2 + 2 p - 3 N T | ]]>
使用程序17,以下产生转换模数NT:
N T = | 2 p - 2 + 2 p - 3 N T | ( 2 n - m NT + NR ) ]]>
N T = ( 2 n + p - m - 2 + 2 n + p - m - 3 ) NT NT + ( 2 p - 2 + 2 p - 3 ) NR NT ]]>
如果,以p及m的典型值为例,亦即当p等于32位而m等于16
位时,NT有如下的结果:
N T = 2 n + 14 + 2 n + 13 + | 2 p - 2 + 2 p - 3 N T | ]]>
将指出的是NT的计算最好在主控CPU中执行而不是在密码协处
理器中执行。此主控CPU包含一短数演算逻辑单元,其已足以计算
NT。由于T必须为整数的事实且此计算必须于密码协处理器模数NT,
而不是模数N中进行,以NT大于N,只有NT的第一个p-m等于16
位与一般的ZDN比较相关,以便计算辅助位移值Si。NT其它的n位
可以是任何数字,它们与辅助位移值Si的计算无关,亦即,对于与Z
的比较。然而,转换模数NT的所有位,当然,对于三操作数的加法
是需要的,其现在,取代位移模数的使用,使用位移转换模数而被执
行。
如图十七所示,转换子T系为m与p所选择之数值中之一16位整
数。计算T及计算NT的除法,因此必须分别仅对最大有效32位执行,
且因此可以快速轻易地在主控CPU上被程序化。
图四表示2/3乘以转换模数NT。当NT的MSB-1及MSB-2为”1”
时,如图三所示,且因为以下适用
(11)2=(3)10以及(2/3×3)2=(2)10=(10)2
2/3乘以转换模数NT之一简单位形式,具有2/3乘以转换模数NT之
长度为n-m+p。
由于2/3NT的特定形式,与|Z|的比较现在变得比较简单。
已知2/3NT的最高阶1为一模数运算初始的位置n+p-m-2。在较佳实
施例中之缓存器Z的指针(pointer)随后在Z的MSM开始,并寻找Z
的第一个”1”。如果Z的MSB为1,Z将是一个负数,且相反地,将寻
找Z的第一个0。
缓存器N及缓存器Z中的第一个1的位位置的差异将决定辅助位
移值Si。
由于模数运算的结果必须在余项集N之中,最后缩减模数N依据
本发明而被执行,其表示再次的转换必须被执行(图一的步骤14)。
N至NT的转换与已知的ZDN相较之下有以下的优点:
取代密码协处理器中的2/3N的计算,简单的N至NT的转换可于
主控CPU中被执行。
在芯片上不需要ZDN缓存器也不需要比较器逻辑,因此芯片尺寸
被降低且协处理器的复杂度被降低。
最后,N至NT的转换可与模数N的随机化结合,如图五所示。
当R为一长度s为位的随机数(random number)时,随机的转换
模数NT具有图五所示的形式。由于随机数N,此被随机化的转换模数,
当与未执行随机化的情况(图三)相较之下,较其长s位,亦即,藉由
R的数字的数目。
于一方程式的形式中,这可被表示如下:
NT=TN
=T(2n-m NT+NR)
随后,此随机化的T如下:
T = | 2 p - 2 - 2 p - 3 + R N T | ]]>
因此,产生以下的随机转换模数:
N T = | 2 p - 2 - 2 p - 3 + R N T | ( 2 n - m NT + NR ) ]]>
N T = ( 2 n + p - m - 2 + 2 n + p - m - 3 + R 2 n - m ) NT NT + ( 2 p - 2 + 2 p - 3 + R ) NR NT ]]>
当选择p具有144位,m具有16位且s具有112位,包含随机化
的转换模数NT之数值结果如下:
N T = 2 n + 126 + 2 n + 125 + R 2 n - 16 + NR 2 144 + 2 143 + R N T ]]>
NT的位长度为:
L(N)=n+p-m=n+m+s=n+16+112=n+128位
图六表示依据本发明之一算术逻辑单元,其与图七相较之下,不
再需要一ZDN缓存器,而仅为一算术单元700,一C缓存器710,一N
缓存器720以及一Z缓存器730,以N缓存器720不再储存模数或一
位移的模数,而是转换的模数或一位移转换模数,或一随机转换模数
或一位移随机转换模数。
在下文,图8a至8c将被描述以说明使用辅助缩减位移值Si计
算缩减位移值Sz的计算。图8a表示中间乘积Z以及模数N。仅由范
例,此中间乘积具有4位,而模数具有9位。现在假设图二的方块214
计算一位移的中间乘积Z’,其可藉由乘上Sz而达成。假设乘数具有8
个0,其乘法位移值Sz为8。为获得模数缩减,模数N必须被位移到
位移的中间乘积多项式Z’的最高位等于位移的模数N的最高位的程
度。如由图8b可见,在此情况中需要一个为3的缩减位移值SN。
如从图8b所示,SN的决定实际上可仅于Sz已被计算后被执行,
亦即,图二之方块210与方块212的平行实施,如本发明之较佳实施,
是不可能的。为此理由辅助位移参数Si被导入。Si的益处在于此数
值可被计算而不需要已知之目前步骤的Sz。
从图8b中可见,在所有时间Sz等于Si与SN的总合。因此SN
总是与Si相关,因此适用下方程式:
SN=Sz-Si
因此,决定SN用之消耗时间的叠代处理可被展开为决定Si用之
一耗时的叠代步骤(循环416)以及一快速差额运算(图四的循环
422)。因此,二预测处理的平行实施是可能的,以单一串行组件,存
在于,在计算方块422(图四)之前Sz的实际数值已经被增值预测算法
所计算及传递(图二的箭号230)。
综上所述,与已知的ZDN相比较之下,本发明简化2/3N与Z值
之间的比较。对照目前所知的方法,其中2/3N的最高32位在密马协
处理器中被计算并被放置于一分离的32位缓存器,此ZDN缓存器,
经由构成密码协处理器之控制部之组成部份的比较器,以2/3N与具
有已经依据习知ZDN方法在硬件中被执行的Z值的比较,此方法的进
行如下。此模数N被主控CPU转换为大于N的转换NT,具有NT的第
一位为一常数,此常数被选择以便让2/3NT与Z值的比较是微小的。
为改进信息渗漏侵害方面的安全性,如SPA,DPA,时间侵害,...,N
至NT的转换可与模数的随机化结合,如前所述。
因此在密码协处理器中的2/3N的计算可以被免除。ZDN缓存器及
比较逻辑也可被省略,因此提供较小的芯片区域并藉由省略比较器逻
辑而降低密码协处理器中之控制部的复杂度。