專利名稱::簽名或驗證的檢驗方法
技術領域:
:本發明涉及的是一種在所需的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公司