签名或验证的检验方法

文档序号:2394947阅读:210来源:国知局

专利名称::签名或验证的检验方法
技术领域
:本发明涉及的是一种在所需的RAM和ROM中在计算时可以更为有效的检验签名或非对称验证,这要求多个模n(quelquesmultiplieationmodulon)或几个大数(desgrandsnombres)的乘积。RSA和Rabin验证或签名算法都是本方法的例子。本方法特别适用于计算机的情况下实施,例如用PC表示的个人计算机。计算机用密钥方式生成一个签名或一个验证,其后应用带有微型计算器的卡来进行检验。这个微型计算器用公用密钥的方法进行检验。微型计算器较PC相比其能力就相对太小。“微型计算器卡”意味着一个带有接入存储器的标准单片微型控制器。当今世界上所用的绝大多数公用密钥的算法都是都是用模大数的运算进行的,所谓“大数”是指至少为320比特的正整数。因为安全上的缘故科技协会现在甚至建议至少使用512比特,对于大多数算法甚至为1024比特,例如RSA算法或Rabin算法。现在是将微型计算器卡引导到与较它自己的计算能力强得多的计算机进行对话。另外,由于造价的缘故,经常使用带微型计算器的卡没有算术协处理器,所用的存储器(ROM,RAM及EEPROM)资源也非常有限。实现用公用密钥的签名检验或验证检验通常所要求的计算都要进行模大数的运算,因此,这种计算经常是太长,如使用密码算法的传统描述,则甚至不可能有足够的存储器容量。在后面的描述中,使用·“验证器(prouveur)”来表示意欲验证的实体或生成一个签名的实体,为此,这个实体进行的计算对使用的非对称算法的密钥起作用。例如这是一个PC型的计算机。·“检验器”,用来表示检验验证的实体或检验一个签名的有效性的实体,为此,这个实体仅对使用的非对称密码的算法的公用密钥起作用。例如这是一个微型计算器卡。本发明的目的在于实施一种检验签名和验证的方法,这种方法能够除去前述的因为由一个微型计算器卡所构成的检验器的计算能力有限而引起的弊端,所说的能力有限是相对于一个验证器而言的,例如一个个人计算机,或是别的带有读卡装置的实体。因此,本发明另一目的在于借助于验证器的附加计算来简化检验器的某些运算,于是在整体的理论安全性没有削弱的情况下使检证器的工作得以简化。用专用钥和公用密钥的非对称密码的计算处理方法来对签名或验证的检验的这种方法亦即本发明的目的,这种方法是将“验证器”与“检验器”之间接通。为了实现一个签名的计算或是一个监定的值,验证器从专用钥开始进行密码计算,而为了进行这个签名的检验或进行这个验证,检验器根据这个传输的值进行根据这个公用密钥的密码的计算,密码计算的进行是模n或是大数的乘积计算。这个方法的值得注意之处在于,对于实施由公用指数(exposantpublice)和公用模数n所构成的一个公用密钥和实施由一个专用指数d所构成的专用钥的密码的计算过程,这种方法在于在验证器处计算至少一个先前已有效(prévalitité)的值,并将至少一个先前已有效的值从验证器传输到检验器,使得检验器在模的缩减(reductionmodulaire)计算中不用任何除法运算就能够实现至少一个这样模缩减。本方法,即本发明的目的,是在验证器,如个人计算机,和检验器,如微型计算器卡之间进行对话或交换消息的协议应用的,特别是在银行交易、存取控制或类似的方面应用的。阅读后面的说明并考察下列的图就会进一步弄懂本方法。-图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=admodn和预先有效值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=admodn而得到值b,或是在检验器和验证器的连接中出现的签名的值S=Sd(M)。下面根据用RSA算法和Rabin算法所表明的下一步算法,描述本发明的目的方法的个实施例。下一步的RSA算法和Rabin算法RSA算法是最著名的非对称密码算法,这是RIVEST、SHAMIR和ADLEMAN于1978年发明的,可以在下述文献中找到对这种算法的描述R.L.RIVEST,A.SHAMIR,L.M.ADLEMAN:AMethodforobtainingDigitalSignaturesandPublic-KeyCryptosystems(用于获得数字签名和公用密钥密码系统的方法),CommunicationsoftheACM,21,n°2,1978,PP.120-126.或在下列文献中·ISO/IEC9594-8/ITU-TX.509,InformationTechnology-OpenSystemsInterconnection-TheDirectory:AuthenticationFramework(消息技术-开放系统互连-目录验证框架);·ANSIX9.31-1,AmericanNationalStandard,Public-KeyCryptographyUsingReversibleAlgorithmsfortheFinancialServicesIndustry(美国国家标准,利用可逆算法用于金融服务业的密码技术),1993.作为参考,将这些文献引入本文中。RSA算法使用一个整数n,这个整数n是两个原始大数p和r的积,这种算法还用一个整数e使用原始的ppcm(p-1,r-1),以及e≠±1模ppcm(p-1,r-1)。整数n和e构成了所述的公用密钥。在公用密钥的计算中要求助于在由α(x)=xemodn所决定的Z/nZ中的Z/nZ的函数α。在密钥的计算中要求助于函数α-1(y)=ydmodn,此处d是密指数,亦称“密钥”或“专用钥”是由ed≡1modppcm(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这个值很感兴趣,因为这个值仅能使检验器做两个模数乘积(multiplicationsmodulaire)。此述的Rabin算法可以说是使用公指数e=2与RSA算法类似的算法。事实上,当e=2时,函数Xe不再是双射的(biinjective)模n,当是两个原始数的积>2时,便在Rabin算法的使用中引入相对于RSA算法稍做的修改。可以在下列文献中找到Rabin算法的描述M.O.Rabin,DigitizedSignatureandPublic-KeyFunctionsasintractableasFactorization,TechnicalReportLCS/TR-212,M.I.T.LaboratoryforComputerScience,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标准中描述的。归一化的公函数可以是将一个压缩函数(fonctiondecondensation)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,RSAEncryptionStandard,Version2,1998,可使用下列地址ftp://ftp.rsa.com/pub/pkcs/doc/pkcs-1v2.doc,将其出版版本引入本专利申请中是为了参考。于是,本发明在于向检验器提供一个附加数据,以便使其简化运算。为了事先计算这些数据,在这里是构成一个或多个事先有效的值的商,就不需要使用算法的密钥。这意味着和非对称算法的“传统“使用中的传输给卡的数值相比,这些数据完全是冗余的。事实上,在传统的版本中,卡自己本身知道找到这些商。于是在实施本方法,即前面描述的本发明的目标,在消息理论的意义上就没有任何提供给卡的附加消息。这说明本方法较这种算法的传统实施而言,其整体安全性一点也没有减弱。权利要求1.一种签名或验证的检验方法,这种方法是用专用钥和公用密钥的非对称密码计算处理的方式在一个“验证器”实体和一个“检验器”实体之间进行的,述及的验证器是为了实现一个签名计算或是一个验证的值而根据述及的专用钥进行密码计算,构成一个响应值;而述及的检验器实体为了进行对签名或验证的检验根据前述的响应值实现根据前述的公用密钥的计算,密码计算的操作实施模n或大数乘积的计算,这种方法的特征在于对于一个密码的计算处理,其所使用的公用密钥中有一个公用指数e和一个公用模n,其所使用的专用钥中有一个专用指数。在这个处理中有下列步骤-在验证器处计算至少一个事先有效的值;-将这个事先有效的值从验证器传送给检验器,使得这个检验器不进行任何用于模缩减的除法运算就能实现至少一个模缩减。2.根据权利要求1的方法,其特征在于对于公指数e=2,建立在Rabin算法上的密码计算处理,述及的至少一个事先有效的值中仅有一个值,即签名值或响应值的平方对公用模n的商Q=R*R/n,此处R表示签名或验证的响应值。3.根据权利要求2的方法,其特征在于在述及的检验器接收到验证的检验响应值或一个消息(M)的签名以及述及的至少一个事先有效的值(此中有述及的商)之后,本方法在检验器处有下列之步骤-计算响应值的平方R*R与商Q和公用模n的积Q*n之差(DAR,DSR)(DAR,DSR)=R*R-Q*n;-检验述及的差与这个答案值的一个函数的值是否相等,而没有任何模n运算的除法运算。4.根据权利要求1的方法,其特征在于对于公指数e=3的密码计算处理是建立在RSA算法上,述及的至少一个事先有效的值中有-第一个商Q1,这是述及的响应值R的平方R*R对公用模n的商;-第二个商Q2,这是所述响应值与该响应值的平方R*R和第一个商Q1与公用模n的乘积之差的乘积对公用模n的商Q2=R*(R*R-Q*n)/n。5.根据权利要求4的方法,其特征在于在接收到述及的响应值R及述及的至少一个包括述及的第一个商和第二个商Q1和Q2的事先有效的值后,,述及的方法在检验器处有下述之步骤-计算差值(DARSA,DSRSA),这是所述响应值R与该响应值R的平方R*R与第一商Q1和公用模n的乘积之差之乘积,述及的第二商Q2和公用模n乘积之差(DARSA-DSRSA)=R*(R*R-Q1*n)-Q2*n;-检验上述的差和响应值的一个函数值是否相等,而没有任何模n运算的除法运算。6.根据权利要求3或5的方法,其特征在于对于一个消息(M)的签名的检验运算,述及的函数中有这个消息(M)的标准化的公用函数f(M),它包括有下述步骤-将一个压缩函数作用到这个消息上以得到消息的压缩CM;-将这个消息压缩与一个常值并置。7.根据权利要求3或5中之一的方法,其特征在于对于一个验证的检验运算,这个方法中还有一个步骤是将一个激励的值从检验器实体传送到验证器实体。8.根据权利要求7的方法,其特征在于述及的激励值中有一个随机值A模n,述及的响应值R中有一个加密的值B,述及的响应值的函数中有述及的随机值A的一个函数f(A)。9.根据权利要求3和7中之一的方法,其特征在于述及的随机值A的函数f(A)有下述函数中的一个函数f(A)=A,f(A)=n-A,f(A)=C*A模n,f(A)=-C*A模n。10.根据权利要求9的方法,其特征在于在检验器实体处在述及的函数f(A)=C*A模n的计算中有值C*A的计算,还有如C*A<n则存储这个值,否则,则存储值C*A-n,特征还在于述及的函数f(A)=-C*A模n的计算中有值n-C*A的计算,还有如n-C*A≥0,则存储这个值,否则,则计算中间值C*n-C*A,如这个中间值大于或等于零,则计算并存储C*n-C*A的值,作为赋与-C*A模n的值,这使得检验述及的验证是否相等而在模缩减中没有任何除法。11.根据权利要求5或8的方法,其特征在于述及的随机值A的函数f(A)是函数f(A)=A,这使得就能在检验述及的差的等效性和验证的有效性时在缩减中不进行除法运算。12.根据权利要求1的方法,其特征在于述及的响应值,加密的值B及商的值Q在它们从验证器实体传送到检验器实体前被并置。13.根据权利要求1的方法的应用,检验器实体中有嵌入的一个系统,如一个微型计算器卡,而验证器中有一个嵌入系统的阅读系统。全文摘要本发明在于在验证器与检验器之间根据一种非对称密码算法来检验签名或验证的一种方法。验证器至少计算一个预先有效的值,即两个密码值a、b对公用模n的商q,并将这个q值传送给检验器(1),检验器计算积a文档编号G09C1/00GK1306713SQ0080092公开日2001年8月1日申请日期2000年4月20日优先权日1999年4月20日发明者杰奎斯·帕塔林,路易斯·高宾申请人:布尔Cp8公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1