專利名稱:用于檢測一個鍵對和用于產生rsa鍵的方法和裝置的制作方法
技術領域:
本發明涉及RSA密碼算法,尤其是涉及RSA鍵(key)的產生。RSA密碼系統,于其發明人R.Rivest,A.Shamir以及L.Adleman之后被命名,是流行的公眾鍵密碼系統的一種。它可被用于獲得保密以及產生數字簽字。其安全性是基于所謂整數因子(factor)分解問題目前尚不能以有效的算法方式得到解決的事實。
背景技術:
在詳細處理RSA密碼系統之前,首先應說明密碼系統的一些基本項目。通常,在兩個對稱密碼系統之間形成一差別,該兩個系統也稱為機密鍵加密系統和公眾鍵加密系統。
具有使用兩個對稱鍵進行加密的雙方的通信系統可被描述如下。第一方經由一機密信道傳遞其加密鍵至該第二方。第一方隨后通過該鍵對該安全消息加密并經由一公眾或無安全防護的信道傳輸該被加密的消息至該第二方。第二方隨后通過使用經由該機密信道被傳遞至該第二方的對稱鍵而對該被加密的消息解加密。此種加密系統的基本問題在于提供交換機密鍵的有效方式,例如,尋找一個機密信道的方式。
對應地,非對稱加密法的執行如下。希望接收機密消息的一方傳遞其公眾鍵至另外一方,即希望自其接收一個機密消息的一方。該公眾鍵經一個非機密信道傳遞,亦即,經一個“公眾(public)”信道傳遞。
希望傳送一機密消息的一方接收另一方的公眾鍵,使用該公眾鍵對該消息加密,并再次經由一非機密信道,且因此,一個公眾信道傳輸該被加密的消息至傳送該公眾鍵的一方。只有產生該公眾鍵的一方能夠具有對該被加密消息進行解加密的私人鍵。即使使用該公眾鍵對消息加密的一方也不可能對該消息進行解加密。此方法的優點包括雙方之間不需要機密信道,且因此沒有鍵的機密交換。解加密消息的一方不需要也不必要知道消息接收的私人鍵。
非對稱加密概念或公眾鍵加密概念的物理模擬方式可描述如下。考慮一個帶有經一個結合鎖而保護的蓋的金屬盒。這種組合僅有希望接收一加密消息的對象知道。如果該鎖維持開啟且可讓公眾取用,任何希望傳遞一機密消息的人可以將其消息放置于該金屬盒內并關閉其蓋。只有后者的那方能夠對該消息進行解加密,亦即,重新開啟該金屬盒。即使是放置該消息至該盒內的一方再也不能取得相同的消息。
非對稱或公眾鍵加密概念的本質是基礎的數學問題,其解答幾乎不可能使用解加密用的公眾鍵,但其解答可輕易地知道私人鍵。最一般的公眾鍵密碼系統是RSA密碼系統。RSA密碼系統在Menezes,van Oorschot,Vanstone的由CRC出版社在1997年出版的“Handbook of AppliedCryptography”的第285-291頁中描述。
第一個工作包含產生RSA密碼系統的鍵。因此,請參考圖3。接收一個加密消息的實體在步驟300中首先必須產生二個大質數p及q,其最好具有大約相等的量。之后,在步驟310,計算二質數的乘積,也稱為模數(modulus)N。此外,計算歐勒(Euler)的φ函數,其等于(p-1)與(q-1)的乘積。在步驟320,選擇一隨機整數e,然后在e與φ的最大公約數(greast commondivisor)gcd為1的考慮下,使e大于1但小于φ,亦即,e與φ為相對的質數。之后,在步驟330,計算一數d使其符合以下程序e×d=1modφd也被稱為相對于模數φ的倍數逆數(multiplicative inverse),通常使用展開的歐幾里得算法計算,在“Handbook of Applied Cryptography”的第67頁中也有描述。d因此為一個大于1但小于φ的獨特整數,并因此符合預定的程序。
在步驟340,隨后輸出公眾鍵,該公眾鍵包含模數N及數字e。相反地,私人鍵并未被輸出,但在步驟350中儲存,以便于鍵產生實體已接收使用步驟340輸出的公眾鍵加密的消息時被用以解加密。
以下請參考圖2以說明RSA算法。初始的情況是一通信方對一個必須由其它通信方解加密的消息M進行加密。加密實體首先必須在步驟200接收公眾鍵(N,e)以便能夠完全傳送一加密的消息至該另一方。依此,在步驟210,加密方必須以整數M的形式描述將被加密的消息,M必須為從0至N-1的整數。在步驟220,其主要為加密步驟,此加密實體必須計算以下的程序C=Memod NC為加密的消息。此消息隨后在步驟230被輸出并經由一公眾信道傳輸至此加密消息的接收端,圖2指示的240。接收端在步驟250接收該加密的消息并在步驟260執行以下的計算,其主要為解加密步驟M=Cdmod N從圖2可見只有公眾鍵(N,e)是加密所需,而不是私人鍵d,而解加密需要私人鍵d。
現在的問題在于侵害者可以中斷RSA密碼系統。他知道私人鍵,亦即N及e。在與圖3所示相同的方式中,他現在可能將模數N分解為二質數的乘積,而隨后以相同的方式計算器密鍵d,如同其由鍵產生授權方所做。因此,該入侵者將必須嘗試所有可能的質數對p’與q’,以便盡快或稍后獲得在e的考慮下的私人鍵d。以小的質數p及q,此問題很容易地通過嘗試法而被解答。然而,如果p及q,亦即p與q乘積的模數N,逐漸變大,模數N的分解的各種可能性增加至很大的程度。這是RSA系統安全性的基礎。由此可見機密密碼系統必須使用極長的數字,其長度可能為,例如,512,1024或甚至于2048位。
然而,隨著質數p及q增加的長度,倍數逆數的計算,即如圖3的步驟330中的私人鍵d,在時間上變得重要。因此,展開的歐幾里德算法被使用,其所需的計算時間可能也以相關數字增加的長度而承受相當大小的級數。
發明內容
本發明的一個目的在于提供一種決定私人鍵的更有效率的方法。
此目的通過依據權利要求1的方法決定一個鍵對(key pair)、依據權利要求4的方法產生RSA加密鍵、依據權利要求5決定一個鍵對的裝置、以及依據權利要求6產生一個RSA加密流程的鍵而達成。
本發明是基于在使用歐勒(Euler)的φ函數計算倍數逆數時,歐勒的φ函數的兩個因子,即,(p-1)與(q-1),并非互質的發現。
這可以從質數皆為奇數得事實得知。如果從一個質數減去“1”,則產生一個偶數,因此這兩個因子(p-1)與(q-1)因此不再互質,因為它們現在至少有一個共同的除數“2”。歐勒的算法因此必須相對于現有技術如圖3所示地計算,使用數字(p-1)(q-1)的完整位長度,因此,此步驟在時間上變得重要。
依據本發明,倍數逆數不再使用歐勒的φ函數計算,而是使用Carmichael的λ函數。
Carmichaelλ函數的使用具有使計算倍數逆數的程序的右側的兩個因子為互質的效果,因此可使用中國余數理論(Chinese reminder theorem),也稱為CRT(CRT=Chinese reminder theorem)。中國余數理論及Garner的算法在例如“Handbook of Applied Cryptography”的第68頁及第612,613頁有描述。然而,中國余數理論僅能于互質因子出現時使用。
在計算私人鍵時,亦即,倍數逆數,中國余數理論允許,取代具有完全位長度的計算,需要執行二個一半位長度的計算以及具有一半位長度的二計算的乘積的快速結合。
此程序的效用在于私人鍵的計算可以比現有技術的歐勒φ函數的使用的快上四倍。
本發明的優點包括,以相同的計算時間,現在可以使用較長的質數且RSA密碼系統的安全性因此大幅增加。
相比之下,維持相同的安全性,現有技術中的標準,可在重要的時候獲得相對于計算時間效率4的因子的加速,稱為倍數逆數的計算。依據本發明所實施的密碼處理器因此可造成效率上極大的貢獻,例如,TMP模塊(TPM=Trust Platform Module)或安全ICs。在另一實施例中,依據本發明的方法可被使用于智能卡中,其中,由于智能卡上受限的計算能力,通常在質數長度上做出妥協,因此對安全性妥協。以本發明的協助,安全性的標準可以大幅增加,而為持相同的計算時間。
由于二CRT項目可以被分開計算,此二CRT項目也可在二分離的算數單元中被并行計算且最后被結合在一起,因此,計算時間的進一步節省可通過平行實施而達成。
本發明的優選實施例將參照附圖而加以說明,其中圖1表示依據本發明的一個優選實施例的方塊圖;圖2表示RSA算法的概述;以及圖3表示RSA鍵產生的流程圖。
具體實施例方式
圖1表示依據本發明決定一個鍵對e,d的方法的一個優選實施例,其中首先產生兩個質數p及q,依照慣例,二者被相乘,產生模數N。在步驟100選擇第一鍵e。然而,對照現有技術,第二鍵不再使用歐勒的φ函數計算,而是使用Carmichael的λ函數。Carmichael的λ函數如下所述λ(N)=(p-1)(q-1)/ged(p-1,q-1)以下的關系維持Carmichael的λ函數Mλ(N)=1 mod N
第二鍵,亦即機密鍵d,隨后基于已知的數據e,p及q而被計算e×d=1modλ(N)為解答以上程序,亦即為計算倍數逆數d,現在可以使用中國余數定理(CRT),因為這些因子(p-1)/gcd(p-1,q-1) 以及(q-1)現在互質。
通過中國余數定理,計算倍數逆數d的問題現在可被分離為二計算倍數逆數dp及dp的計算以及一結合步驟。
因此,dp首先被計算以便符合以下定義的方程式e×dp=1mod[(p-1)/gcd(p-1,q-1)]類似以上,可使用以下定義的程序計算dqe×dq=1mod(q-1)另一方式為互質因子也可在相反的方式中獲得,稱為(p-1)以及(q-1)/gcd(p-1,q-1)要指出的是,從CRT中所知,兩個子鍵dp及dp是一半只要第二鍵d適合。
同時要指出的是圖1的步驟110及120使用兩個不同的子模數(sub-moduli)。步驟110中的第一子模數讀取(p-1)/gcd(p-1,q-1)步驟120中的子模數僅讀取(q-1)可以看見由于gcd函數因使兩個子模數是相對的質數,所以CRT將成功。此兩個子鍵dp及dp隨后在步驟130中使用中國余數定理(CRT)被結合,以便因而產生第二或私人鍵d。
因此,首先計算一輔助的量xp,其由以下的程序定義xp=(dp-dp)×[(q-1)-1mod(p-1)/gcd(p-q,q-1)]mod(p-1)/gcd(p-1,q-1)以上引號中的倍數逆數及gcd計算使用一半長度被執行,其具有使這些步驟較少時間重要性的效果。
第二鍵或私人鍵d隨后產生如下d=dp+xp×(q-1)modλ(N)要指出的是以上程序中的以模數λ(N)的模數下降不需要再被執行,因為d已經在余數類別中而不需要縮減。
當本發明為RSA鍵產生而被使用時,后者改善時間的復雜度,因為倍數逆數的計算,通過展開的歐幾里德算法,只在關于模數N時需要以一半位長度而被執行。通過中國余數定理的機密鍵d的計算相較于不使用中國余數定理的情況快因子4,因為,取代計算鍵對e及d的歐勒φ函數的使用,Carmichael的λ函數被使用,同樣可代表兩個互質因子的乘積,其隨后建立中國余數定理的兩個子模數。
應指出的是依據本發明的概念不能僅為RSA鍵產生而使用,但使用于所有達到一個數量的倍數逆數的計算,具有包含不互質的兩個或更多因子的模數的情況中。Carmichael的λ函數在所有時間將具有相對于一個模數的倍數逆數可使用中國余數定理而被獲得的效果,當現在出現可被當成子模數使用的互質因子。
參考標號表100選擇e110計算dp120計算dp130決定d200接收公眾鍵210將消息表示為數字220計算C230輸出C240信道250接收C260計算M300產生p,q310計算N320選擇e330計算d340輸出公眾鍵350儲存私人鍵
權利要求
1.一種決定一個數字對的方法,該數字對包括一個第一數(e)和一個第二數(d),該第二數(d)為相對于該第一數(e)的一個模數(N)的倍數逆數,該模數(N)等于一個第一質數(p)與一個第二質數(q)的乘積,該方法包括以下步驟選擇該第一數(e);計算該第二數(d)的一個第一子數(dp)做為該第一數(e)的相對于一個第二子模數的一個倍數逆數,該第二子模數等于該第一質數(p)減去1之后再除以該第一質數(p)減1與該第二質數(q)減1的最大公約數;計算該第二數的一個第二子數(dq)做為該第一數(e)的相對于一個第一子模數的一個倍數逆數,該第一子模數等于該第二質數減1,該第一子模數與該第二子模數互質;以及通過中國余數定理使用該第一子數(dp)和該第二子數(dp)決定該第二數(d)。
2.按照權利要求1所述的方法,其特征在于該第一數(e)及該第二數(d)為一個鍵對,一個鍵(e)做為一個非對稱加密系統的一個公眾鍵,而一個第二鍵(d)做為該系統的一個私人鍵。
3.按照權利要求1或2所述的方法,其特征在于計算該第一子數(dp)的步驟和計算該第二子數(dq)的步驟使用展開的歐幾里德算法。
4.按照前述權利要求的任一項所述的方法,其特征在于決定步驟(130)使用以下程序xp=(dp-dp)×[(q-1)-1mod(p-1)/gcd(p-q,q-1)]mod(p-1)/gcd(p-1,q-1)d=dp+xp×(q-1)modλ(N)其中,dp為第一子數;dq為第二子數;q為第一質數;p為第二質數;gcd表示“最大公約數”的運算;mod表示模數運算;xp為輔助量。
5.一種產生RSA加密系統的鍵的方法,包括步驟選擇兩個質數(p,q);計算該兩個質數的乘積(N);依據權利要求1決定一個數字對;輸出所述質數的乘積及該數字對的第一數以做為公眾鍵;以及儲存該第二數(d)做為私人鍵。
6.一種決定一個數字對的裝置,該數字對包括一個第一數(e)和一個第二數(d),該第二數(d)為相對于該第一數(e)的一個模數(N)的倍數逆數,該模數(N)等于一個第一質數(p)與一個第二質數(q)的乘積,該裝置包括一個裝置,用以選擇該第一數(e);一個裝置,用以計算該第二數(d)的一個第一子數(dp)做為該第一數(e)的相對于一個第一子模數的一個倍數逆數,該第一子模數等于該第一質數(p)減去1之后再除以該第一質數(p)減1與該第二質數(q)減1的最大公約數;一個裝置,用以計算該第二數的一個第二子數(dq)做為該第一數(e)的相對于一個第二子模數的一倍數逆數,該第二子模數等于該第二質數減1,該第一子模數與該第二子模數互質;以及一個裝置,采用中國余數定理使用該第一子數(dp)及該第二子數(dp)決定該第二數(d)。
7.一種產生RSA加密系統的鍵的裝置,包括一個裝置,用以選擇兩個質數(p,q);一個裝置,用以計算該兩個質數的乘積(N);一裝置,用以依據權利要求6決定一個數字對;一裝置,用以輸出該乘積及該數字對的第一數以做為公眾鍵;以及一裝置,用以儲存該第二數(d)做為私人鍵。
全文摘要
本發明涉及用于檢測一個鍵對和用于產生RSA鍵的方法和裝置。本發明的方法用于檢測一個數字對,其中包括一個第一數和一個第二數。根據本發明的方法,該第一數被選擇(100)為一個加密系統的第一鍵,該第二數為該系統的第二鍵,且該第二數為相對于該第一數的一個模數的倍數逆數,該模數等于一個第一質數與一個第二質數的乘積。計算該第二數(d)的一個第一子數(d
文檔編號G09C1/00GK1483260SQ01819912
公開日2004年3月17日 申請日期2001年12月6日 優先權日2000年12月12日
發明者J·-P·塞費特, J -P 塞費特 申請人:因芬尼昂技術股份公司