密码方法及系统 相关申请案交叉参考
本发明请求对2007年3月12日提出申请且标题为“用于密码系统的基于中国剩余定理的计算方法(CHINESE REMAINDER THEORUM-BASED COMPUTATIONMETHOD FOR CRYPTOSYSTEMS)”的美国专利申请案第11/684,842号的优先权权益,所述专利申请案以全文引用的方式并入本文中。
【技术领域】
本发明係关于在具有相关联软件的电子处理硬件中实施的密码方法及系统。
背景技术
【发明内容】
【附图说明】
图1是根据本发明的某些实施例用于执行密码术方法(包括基于CRT的模幂运算)的处理器硬件的实施例的示意性平面图;及
图2是图解说明根据本发明的例示性实施例用于模幂运算的一般步骤的流程图。
【具体实施方式】
许多密码算法基于类型m≡cd(mod n)的模幂计算,其中c及m可对应于各种种类的数据(明文及密文消息、签名、消息摘要、验证代码等)且其中d及n可对应于用于处理所述数据的公用或秘密密钥的元素。模数n通常是保持为秘密的两个非常大的素数p及q的乘积。RSA算法是使用模幂运算的加密系统(及相关数字签名方案)的一个实例。迪菲-赫尔曼(Diffie-Hellman)密钥一致协议是另一实例。
在RSA算法中,提供公用密钥{e,n}及对应的秘密密钥{d,p,q}用于加密及解密,其中d·e≡1(modφ(n)),n=p·q,φ(n)=(p-1)(q-1),且其中整数e与φ(n)是互素的。或者,经常使用函数λ(n)=LCM(p-1,q-1)来替代原始φ(n)。(RSA PKCS#1 v.2.1)对于加密来说,可根据关系c=me(mod n)使用公用密钥{e,n}来从明文消息m获得密文c。公用密钥指数e通常是出于加密的方便性及速度而选择的小值(例如,3、5、35或216+1=65537)。对于解密来说,可根据关系m≡cd(mod(p·q))使用秘密密钥{d,p,q}来从密文c恢复明文消息m。
经常使用中国剩余定理(CRT)来加速解密中所涉及的模幂计算,因为用户知道另外秘密的素因子p及q。所述定理通常表述:给出一组联立同余式x=ai(mod ni),其中i=1到r,且其中模数ni是两两互素,解是x≡[∑i ai·bi(N/ni)](mod N),其中N=n1·n2·...nr且根据bi(N/ni)≡1(mod ni)确定bi。对于两个互素的正整数p及q以及两个整数a及b(即,r=2的情况)来说,存在按p·q的模唯一地确定的整数m,使得m≡a(mod p)≡b(mod q)。也就是说,对于GCD(p,q)=1,每一对模p及q剩余类对应于简单的模p·q剩余类。所述解求得m≡[a·(q-1mod p)·q+b·(p-1 mod q)·p](mod p·q)。(界定整数x-1模z的模逆,使得x·x-1≡1(mod z)。对于素模数,不是所述模数的倍数的每一非零整数具有逆。)
RSA算法的CRT实施方案如下计算模幂m:=cd(mod(p·q))。首先界定一对秘密密钥导出的指数为d1:=d(mod(p-1))及d2:=d(mod(q-1))。然后,计算m1:=cd1(modp)]]>及m2:=cd2(modq).]]>最终,m=CRT(m1,m2):=m1+p·{[(m2-m1)·R](mod q)},其中R=p-1(mod q)。
CRT实施方案的最后公式(即m=CRT(m1,m2))具有许多变体。这些变体中的三个实例是:
CRT2(m1,m2):=(m1·R1·q+m2·R2·p)(mod p·q),其中R1≡q-1(mod p)且R2≡p-1(modq);
CRT3(m1,m2):={[(m1·R1)(mod p)]·q+[(m2·R2)(mod q)]·p]}(mod p·q),其中也是R1=q-1(mod p)且R2≡p-1(mod q);及
CRT4(m1,m2):=(q·{[(m1-m2)·R4](mod p)}+m2)(mod p·q),其中R4=p-1(mod q)。
变体CRT实施方案以经设计以阻止密码分析的方式执行模幂计算,尤其是在其中攻击者可以存取实施所述密码计算的硬件的票证(例如,智能卡)的背景下。攻击者可在计算过程期间采用对装置的电磁发射、功率消耗或其它可存取参数的非侵入性测量及计时分析以抽取关于秘密密钥的有用信息。所述变体实施方案通常在密码算法的各个阶段采用伪随机变量以掩盖基础数学运算而不影响最终结果。
举例来说,在模幂运算的CRT实施方案中,某些变体通过在计算过程中的某个较早阶段使消息变量m或其CRT成分m1及m2乘以随机值来变换所述消息变量m或其CRT成分m1及m2,然后在稍后的阶段使所述消息变量除以所述同一随机值或除以从所述随机值导出的相关值以获得真正的结果。其它变体可通过使秘密密钥指数d或其CRT成分d1及d2加上(p-1)或(q-1)的随机倍数来变换所述秘密密钥指数d或其CRT成分d1及d2,以获得所述秘密密钥成分的同余类的另一(随机)元。使用分别是(p-1)及(q-1)的对应随机倍数的模数同样可将所述秘密密钥指数d约化为经变换的CRT成分d1′及d2′。在所有这些情况下,变换的设计经选择以获得真正的最终结果,同时以利用同余算术中的等价性的方式来随机改变中间计算。遗憾的是,这些变体中的许多可能是相当复杂且计算密集的。
参照图1,本发明地实施例的密码方法可在各种各样的数字处理系统、逻辑电路或电子硬件中实施或通过在数据处理器或计算机中执行等效固件或软件程序来执行。根据本发明的实施例的计算处理器硬件可包括算术-逻辑单元(ALU)10或含有硬件乘法器以用于对所提供的数据执行数字运算(包括模幂运算)的类似计算电路。ALU 10通常可以存取存储器(RAM)12及各种工作寄存器14。运算定序器16包含用于根据用于密码算法的运算集合的固件或软件指令来控制ALU(包括向及从存储器12及寄存器14的数据传送)的逻辑电路。运算定序器16可存取存储在寄存器18中呈指针形式的运算参数,所述运算参数使得运算定序器16能够定位RAM 12内的操作数以及其它控制信息及中间结果的目的地地址。所述硬件还可包括执行计算并输出随机数值的伪随机数产生器(PRNG)电路20。ALU 10可如所述运算定序器根据密码算法且尤其是其模幂运算步骤所引导的那样存取此随机产生器20。
参照图2,通过前述硬件且根据本发明实施例的例示性基于CRT的模幂计算M:=cd(mod(p·q))通常通过将秘密密钥值{d,p,q}加载到处理硬件可存取的数据存储装置中(例如,加载到图1中的RAM 12中)来开始(步骤10)。此后,可如需地将所述值传送到工作寄存器14中供ALU 10使用。随机产生器(例如,图1中的PRNG电路20)产生变换因子s的随机值(步骤11),然后使用所述随机值来通过乘法变换的方式将秘密密钥模数值p及q随机化(步骤12):
p′:=p·s;
q′:=q·s。
处理硬件以类似于现有版本的基于CRT的模幂运算中已知的逆R:=p-1(mod q)的计算的方式计算逆值R′:=(p′)-1mod q(步骤14)。
将在稍后的步骤中使用这些经变换的值p′及q′以及逆R′。使用秘密密钥值{d,p,q}的每一解密会话将涉及不同的随机值s,且因此涉及模数p′及q′以及逆R′的不同随机化值,从而保护涉及模幂运算的密码运算免遭密码分析。(注意,随机值s与原始模数p及q必须是互素的,以使得针对互素性的标准整除性测试应是随机产生步骤11的一部分,以清除任何不合适的随机值。)如果需要,可将随机值s的大小选择为在所规定的范围内,以使得值p′、q′、d1及d2将是大致相同大小。
或者,变换因子s可以是来自有限预选固定值集合的随机选择,而不是从每一会话的痕迹中随机产生。此可节约大量处理时间,尤其是在也针对所述集合中s的每一可能选择预计算p′、q′及R′的情况下。如果因为任何原因,密码安全肯定不会是给定环境中的问题,那么因子s的选择且因此p′、q′及R′的选择可以是固定值。
以与现有版本的基于CRT的模幂运算中已知的相同方式来从秘密密钥指数d中计算CRT指数d1及d2(步骤14),即:
d1:=d(mod(p-1));
d2:=d(mod(q-1))。
如果需要,也可方便地将此步骤放置在p及q的随机化之前,即在步骤12之前。事实上,由于CRT指数d1及d2仅直接与秘密密钥值d、p及q相关,因此可预计算所述CRT指数d1及d2且将其加载到硬件数据存储装置中来代替秘密密钥指数d(在步骤10中),从而从会话计算中去除步骤16。
将用于模幂运算的变量C加载(步骤18)到处理硬件可存取的数据存储装置中,例如,加载到图1的RAM 12中。此后,可如需地将其(通常)作为根据密码程序的已知大小的块传送到工作寄存器14供ALU 10使用。变量C通常表示将要解密的密文消息,但也可表示其它密码数据,例如数字签名。至于CRT指数d1及d2的计算,此步骤在其中发生的程序序列中的特定位置可改变,只要其到在步骤20中需要其的时间时可用。
应用使用经变换的模数p′及q′以及经变换的逆R′的CRT步骤(步骤20及22),以便获得中间消息结果M′。特定来说,在步骤20中,处理硬件以与来自现有的基于CRT的模幂运算的方式类似的方式但使用p′及q′作为模数代替原始秘密密钥模数值p及q来计算CRT消息成分M1′及M2′。也就是说,
M1′:=Cd1(modp′);]]>及
M2′:=Cd2(modq′).]]>
然后,处理硬件使用中国剩余定理从CRT消息成分M1′及M2′中计算(在步骤22中)中间消息结果M′:
M′:=M1′+p′·{[(M2′-M1′)·R′](mod q′)}。
注意,由于针对每一解密会话将p′及q′随机化,因此同样在每一会话中将值M1′、M2′及M′随机化,从而阻止通过已知文本攻击(例如,攻击者重复使用已知值C)及可依赖于对硬件发射的参数(EM发射、时间相依功率消耗等)的偷听的其它密码分析技术的密码分析。所述计算每次以随机的方式而不同,此外计算并不比基于CRT的模幂运算的直接应用更密集。
已通过应用CRT(M1′,M2′)的适应CRT公式获得了中间结果M′。如果适应适当的变换,那么可改为应用其它变体CRT公式(例如,在背景技术部分中给出的三个实例)。为变换初始CRT公式,一般规则是总是设定p′:=p·s及q′:=q·s。对于所述公式的所有部分,像R1:=q-1(mod p)及R2:=p-1(mod q),我们变换为R1′:=(q′)-1(mod p)及R2′:=(p′)-1(mod q)。如果p或q作为所述公式中的倍增因子出现,那么分别将其改变为p′或q′。如果p或q并非作为模数((mod p)或(mod q))出现,那么我们将其改变为(modp′)或(mod q′)。举例来说,CRT指数d1及d2总是d1:=d(mod(p-1))及d2:=d(mod q-1)。然而,根据本发明的某些实施例,总是使用p′及s′作为模数来变换CRT消息成分M1′及M2′,如上文所说明。因此,对于所述三个例示性变体,我们获得:
M′=CRT2′(m1′,m2′):=(m1′·R1′·q′+m2′·R2′·p′)(mod p′·q′),
M′=CRT3′(m1′,m2′):={[(m1′·R1′)(mod p′)]·q′
+[(m2′·R2′)(mod q′)]·p′}(mod p′·q′),
M′=CRT4′(m1′,m2′):=q′·{[(m1′-m2′)·R4′(mod p′)}+m2′.
一旦获得中间消息结果M′,那么可容易地通过基本模约化运算将其约化为最终消息M(步骤24):
M:=M′(mod(p·q)):=M′(mod n)。
此最终约化模p·q适用于所有变体。注意,乘积p·q先前被作为密钥产生的部分来计算,且仅仅是所有方可用的公用密钥模数n。因此,在n也已被加载到硬件处理器可用的数据存储装置中(例如,与先前步骤10相关联)的情况下不需要对其进行重新计算。此外,由于公用密钥模数n的使用不显露关于秘密密钥的任何东西,因此可在没有随机变换的情况下计算最终约化且其仍安全地防止密码分析。最终消息M是相同的,即使p′、q′、M′等是随机的,因为使用作为原始模数的随机倍数s的经变换模数产生尽管是随机的但仍是与通过使用未经变换的模数求得的相同同余类的中间结果。
总结
本发明的实施例涉及使用中国剩余定理(CRT)实施的模运算的计算机硬件实施的密码术方法,其中变换用于计算的模数以隐蔽对中间结果的密码观察。特定来说,对于模幂运算,m=cd(mod p·q),使用变换因子s来将互素因子p及q变换为p1=s·p及q′=s·q。应用使用经变换的模数p′及q′的CRT步骤。在获得中间结果m′之后,通过最终约化模p·q来恢复最终结果m。所述变换因子s可以是随机值、来自有限预选固定值集合的随机选择,或如果安全在给定环境中不成问题,那么其甚至可以是固定值。与许多其它变体相比,所述方法相对简单且计算较不密集,此外仍是大致安全的而免遭密码分析。因此,其适用于智能卡及其它密码票证应用中。其可与依赖于使用CRT实施方案的模幂运算的任一密码算法一同使用。
可将所述方法的实施例实施为包含密码处理器单元、所述处理器单元可存取的数据存储装置及提供所述随机因子的伪随机数产生电路的数据处理硬件(例如,智能卡或其它票证)中的密码术程序。