签名或验证的检验方法 本发明涉及的是一种在所需的RAM和ROM中在计算时可以更为有效的检验签名或非对称验证,这要求多个模n(quelquesmultiplieation modulo n)或几个大数(des grands nombres)的乘积。RSA和Rabin验证或签名算法都是本方法的例子。
本方法特别适用于计算机的情况下实施,例如用PC表示的个人计算机。计算机用密钥方式生成一个签名或一个验证,其后应用带有微型计算器的卡来进行检验。这个微型计算器用公用密钥的方法进行检验。微型计算器较PC相比其能力就相对太小。
“微型计算器卡”意味着一个带有接入存储器的标准单片微型控制器。
当今世界上所用的绝大多数公用密钥的算法都是都是用模大数的运算进行的,所谓“大数”是指至少为320比特的正整数。因为安全上的缘故科技协会现在甚至建议至少使用512比特,对于大多数算法甚至为1024比特,例如RSA算法或Rabin算法。
现在是将微型计算器卡引导到与较它自己的计算能力强得多的计算机进行对话。另外,由于造价的缘故,经常使用带微型计算器的卡没有算术协处理器,所用的存储器(ROM,RAM及EEPROM)资源也非常有限。实现用公用密钥的签名检验或验证检验通常所要求的计算都要进行模大数的运算,因此,这种计算经常是太长,如使用密码算法地传统描述,则甚至不可能有足够的存储器容量。
在后面的描述中,使用:
·“验证器(prouveur)”来表示意欲验证的实体或生成一个签名的实体,为此,这个实体进行的计算对使用的非对称算法的密钥起作用。例如这是一个PC型的计算机。
·“检验器”,用来表示检验验证的实体或检验一个签名的有效性的实体,为此,这个实体仅对使用的非对称密码的算法的公用密钥起作用。例如这是一个微型计算器卡。
本发明的目的在于实施一种检验签名和验证的方法,这种方法能够除去前述的因为由一个微型计算器卡所构成的检验器的计算能力有限而引起的弊端,所说的能力有限是相对于一个验证器而言的,例如一个个人计算机,或是别的带有读卡装置的实体。
因此,本发明另一目的在于借助于验证器的附加计算来简化检验器的某些运算,于是在整体的理论安全性没有削弱的情况下使检证器的工作得以简化。
用专用钥和公用密钥的非对称密码的计算处理方法来对签名或验证的检验的这种方法亦即本发明的目的,这种方法是将“验证器”与“检验器”之间接通。为了实现一个签名的计算或是一个监定的值,验证器从专用钥开始进行密码计算,而为了进行这个签名的检验或进行这个验证,检验器根据这个传输的值进行根据这个公用密钥的密码的计算,密码计算的进行是模n或是大数的乘积计算。这个方法的值得注意之处在于,对于实施由公用指数(exposant public e)和公用模数n所构成的一个公用密钥和实施由一个专用指数d所构成的专用钥的密码的计算过程,这种方法在于在验证器处计算至少一个先前已有效(prévalitité)的值,并将至少一个先前已有效的值从验证器传输到检验器,使得检验器在模的缩减(reduction modulaire)计算中不用任何除法运算就能够实现至少一个这样模缩减。
本方法,即本发明的目的,是在验证器,如个人计算机,和检验器,如微型计算器卡之间进行对话或交换消息的协议应用的,特别是在银行交易、存取控制或类似的方面应用的。
阅读后面的说明并考察下列的图就会进一步弄懂本方法。
-图1是本方法,即本发明的目的的图解,本方法是在一个验证器实体和一个检验器实体间实施的;
-图2a是根据Rabin验证检验的算法实施本方法,即本发明的目的的图解;
-图2b是根据Rabin签名检验的算法实施本方法,即本发明的目的的图解;
-图3a是根据RSA验证检验的算法实施本方法,即本发明的目的的图解;
-图3b是根据RSA对签名检验的算法实施本方法,即本发明的目的的图解;
下面联系图1及其后各图,对本方法,即本发明的目的,做进一步详细的描述。
本发明的目的的方法在检验器处实施有公用密钥的算法,这个有公用密钥的算法要求模n或大数的乘积,并在外部,即在验证器处计算一个或多个商q以对前述的算法做小的修改,同时将这个或这些商提供给检验器。这样检验器就能较容易且较迅速地计算模缩减的某些乘积:不是计算a*b模n,恰是计算a*b,q*n及a*b-q*n,a、b表示签名或验证的检验计算值。有时,为安全起见,使用这最终值的方法是让这个最终值在1和n之间。这样当修改一种算法对某些商进行“事先计算”,将这种算法提供给检验器,以简化后者所执行的计算,称为“下一个”(“sous-jacent”)算法是要指明在做这个修改之前进行的那个事先的算法。这样,根据本发明的目的方法的一个值得指出的思想,前述的一个或多个检验关系q=a*b/n的商q构成一个或多个预先有效的值,将这个有效值传输给检验器实体,以使检验器进行至少一个模缩减计算时没有任何除法运算就能进行这个模缩减。参见图1指出,本发明的目的方法可以实施如下:在验证的检验中,在发送一个激励值(incitation),如一个随机数a(图中用0标出),之后,在验证器处,进行b=ad mod n和预先有效值q的内部计算(标号1),将b和q由验证器传送到检验器(标号2)、并由检验器根据量a*b、q*n及a*b-q*n进行计算(标号3),以进行对验证的检验;或是在一个消息M的签名检验中,在验证器处根据这个消息M计算一个签名S=Sd(M)及事先有效的值q(标号1)之后,将S和M从验证器传送到检验器(标号2),在检验器处计算(标号3)量a*b=S*S,q*n及a*b-q*n以便对签名进行检验。
在图1及其后的诸图中,一个直的箭号表示将前述的一个值从检验器向验证器传输或者相反,而在验证器处或在检验器处的一个带箭号的环表示在验证器处或在检验器处实施一个内部计算。最后,在后面的描述中,用响应R表示或是在验证的检验情况下对一个随机数a加密计算b=ad mod n而得到值b,或是在检验器和验证器的连接中出现的签名的值S=Sd(M)。
下面根据用RSA算法和Rabin算法所表明的下一步算法,描述本发明的目的方法的个实施例。
下一步的RSA算法和Rabin算法:
RSA算法是最著名的非对称密码算法,这是RIVEST、SHAMIR和ADLEMAN于1978年发明的,可以在下述文献中找到对这种算法的描述:
R.L.RIVEST,A.SHAMIR,L.M.ADLEMAN:A Method forobtaining Digital Signatures and Public-Key Cryptosystems(用于获得数字签名和公用密钥密码系统的方法),Communications of the ACM,21,n°2,1978,PP.120-126.
或在下列文献中:
·ISO/IEC 9594-8/ITU-T X.509,Information Technology-OpenSystems Interconnection-The Directory:Authentication Framework(消息技术-开放系统互连-目录:验证框架);
·ANSI X9.31-1,American National Standard,Public-KeyCryptography Using Reversible Algorithms for the Financial ServicesIndustry(美国国家标准,利用可逆算法用于金融服务业的密码技术),1993.
作为参考,将这些文献引入本文中。
RSA算法使用一个整数n,这个整数n是两个原始大数p和r的积,这种算法还用一个整数e使用原始的ppcm(p-1,r-1),以及e≠±1模ppcm(p-1,r-1)。整数n和e构成了所述的公用密钥。在公用密钥的计算中要求助于在由α(x)=xe mod n所决定的Z/nZ中的Z/nZ的函数α。在密钥的计算中要求助于函数α-1(y)=yd mod n,此处d是密指数,亦称“密钥”或“专用钥”是由ed≡1 mod ppcm(p-1,r-1)决定的。
用n表示RSA公用模数,d表示RSA密指数,e表示RSA公指数。
在验证的检验情况下,检验器生成一个随机数A模n,并将这个数发送给验证器,后者便计算B=Ad模n,并将B的值返回到检验器,在当且仅当Be模n=A时,检验器接收这个验证。
用来实施RSA算法的e的最小值是e=3。对于e=2,称为Rabin算法,后面描述这种算法。对于e=3这个值很感兴趣,因为这个值仅能使检验器做两个模数乘积(multiplications modulaire)。
此述的Rabin算法可以说是使用公指数e=2与RSA算法类似的算法。事实上,当e=2时,函数Xe不再是双射的(biinjective)模n,当是两个原始数的积>2时,便在Rabin算法的使用中引入相对于RSA算法稍做的修改。
可以在下列文献中找到Rabin算法的描述:
M.O.Rabin,Digitized Signature and Public-Key Functions asintractable as Factorization,Technical Report LCS/TR-212,M.I.T.Laboratory for Computer Science,1979,这篇文献引入本专的申请中是作为参考的。
根据Rabin算法和RSA算法的本发明目的方法的实施例
◆Rabin算法:
本方法,即本发明的目标,将首先是根据Rabin算法,即e=2,在一种非为限制性的特殊实施方式中描述的。
验证的检验
正如图2a所示,现在描述的是将Rabin算法用于验证的检验的一个可能的实施例。
将公用模数记作n,检验器生成一个随机数A模n,并将这个数传送给验证器(图中用0标出)。验证器便计算一个数B(用1标出),并将值B返回到检验器。当且仅当B*B模n等于下面四个可能值的某一个:A,或n-A或C*A模n,或-C*A模n,时,检验器才接收这个验证。C是由协议确定的一个数,最常取C=2。
根据本发明的目标方法,为了简化检验过程,验证器不只发送值B(用2标出):它发送B和Q,此处Q是B*B对公用模n的商,于是检验器就检验:DAR=B*B-Q*n是否恰恰等于下列四个值中的一个:A,n-A,(C*A)模n,或(-C*A)模n。另外,它可以计算(C*A)模n,通过计算C*A,当这个值<n时保持这个值,否则取C*A-n的值。还有,它可以计算(-C*A)模n,通过计算n-C*A,如这个值>=0,则保持这个值,否则取C*n-C*A的值。这样检验器则不再做任何除法。
签名的检验
正如图2b所示,并采用和上面同样的记号,将其签名S检验器希望检验的消息记做M,签名S是由专用钥d通过S=Sd(M)而得到的,Sd(M)表示消息M的签名的运算。如果S是M的一个Rabin签名,则检验器通常检验的是:S*S模n=f(M),或n-f(M),或(2*f(M)模n),或(-2*f(M)模n),此处f是标准化的消息M的公用函数。例如f是一个恒等函数,或是在签名的一个规范中描述;例如可以使用PKCS#1填充或并置运算,这个标准通常是为RSA而建立的。此后,在本描述中将根据这个标准中所描述的原则。
保持前面的记号不变,为了简化签名的检验过程,如图2b所示,在本发明的目标方法中,验证器不只发送值S(标记2):它发送S和Q,此处是Q是S*S对公用模n的商。于是检验器就检验:DSR=S*S-Q*n是否恰等于f(M),或n-f(M),或C*f(M)模n,或-C*f(M)模n,此处C是由协议所确定的一个数,可以取C等于2。由于这后两个值可以是通过执行零计算模n,或是一个与n的差,这样检验器就不再有任何除法要计算。
RSA算法
现在将对本方法,即本发明的目标,根据RSA算法在一种非限制性的特殊的实施方式中,例如e=3,描述。
验证的检验
正如图3a所示,为了简化检验过程,在本发明中,根据一个随机数A,验证器并非只发送一个值B(用2标出),它是发送B,Q1和Q2,此处Q1是B*B对公用模n的商,而Q2是B*(B*B-Q1*n)对公用模n的商。检验器就检验DARSA=B*((B*B-Q1*n)-Q2*n是否恰等于A。这样,检验器便没有任何除法要进行。
签名的检验
仍然保持和前面相同的记号,将检验器希望检验其签名S的消息记做M,S是M的RSA签名,于是检验器通常检验Se模n=f(M),此处f是标准化的消息M的公函数,例如f是恒等函数,亦或在RSA签名标准中,例如PKCS#1标准中描述的。归一化的公函数可以是将一个压缩函数(fonction de condensation)SHA-1作用于消息M上,以便得到消息的压缩(condense)CM,然后将这个消息的压缩与一个常值做并置运算。
正如图3b所示,并保持和前面相同的记号,为了简化在本方法中,即在本发明的目标中的签名检验的过程,验证器并非仅发送值S(标记2),它是发送S、Q1和Q2,这里,Q1是S*S对公用模n的商,而Q2是S*(S*S-Q1*n)对n的商。于是检验器便检验DSRSA=S*(S*S-Q1*n)-Q2*n是否恰等于f(M),于是检验器便不作任何除法。
前述的压缩函数SHA-1是公用“压缩”函数,其在输入处所取消息的大小从0字节直到n个吉字节,且在输出处给出一个160个比特的消息“压缩”,经常将这种函数用在标准中或带有签名的算法中,因为可以将这种函数视做是对碰撞的抵抗,就是说不会具体地找到两个具有相同压缩的不同的消息(这种消息是存在的,但是不知道怎样找到这样的一对消息)。这就允许宁肯标记消息的压缩,而不去标记消息本身。
前述的标准PKCS#1是一个RSA签名标准,这个标准描述了一个公用函数f。在启动RSA模数求幂运算之前便将这个函数f作用在RSA标记的消息M上。换言之,M的RSA签名为:
S=(f(M))d模n,此处n是RSA公用模,而d是RSA密指数(exposantsecret)。f使用一个压缩函数(例如SHA-1),后面跟着一个填充或与一个常数并置。
为了进行更详细的描述,可以考察:PKCS#1,RSA EncryptionStandard,Version2,1998,可使用下列地址:
ftp://ftp.rsa.com/pub/pkcs/doc/pkcs-1v2.doc,将其出版版本引入本专利申请中是为了参考。
于是,本发明在于向检验器提供一个附加数据,以便使其简化运算。为了事先计算这些数据,在这里是构成一个或多个事先有效的值的商,就不需要使用算法的密钥。这意味着和非对称算法的“传统“使用中的传输给卡的数值相比,这些数据完全是冗余的。事实上,在传统的版本中,卡自己本身知道找到这些商。于是在实施本方法,即前面描述的本发明的目标,在消息理论的意义上就没有任何提供给卡的附加消息。这说明本方法较这种算法的传统实施而言,其整体安全性一点也没有减弱。