專利名稱:使用離散對數函數產生不對稱加密系統的加密單元的方法
技術領域:
本發明涉及加密的技術領域,尤其涉及所謂不對稱的或公開密鑰的加密。
在這種加密類型中,每個用戶為了給定的用途而保留一對密鑰,包括保密密鑰和相關的公開密鑰。
例如,如果正在處理專用于機密性的密鑰對,則使用公開密鑰對數據進行加密,而使用保密密鑰對它們解密,即對這些數據進行譯碼。如果正在處理專用于數據真實性的密鑰對,則使用保密密鑰對數據進行數字簽名,而使用公開密鑰來校驗數字簽名。其他用途(實體驗證、密鑰交換等等)也是可行的。
與保密密鑰加密不同,公開密鑰加密非常有用,因為它不要求涉及的用戶分享秘密,以便建立安全的通信。然而,這種安全性的優點伴隨以性能的缺點,因為對于相等的資源,公開密鑰加密方法(也稱為“公開密鑰方案”)通常比所謂的保密密鑰加密方法(也稱為“保密密鑰方案”)慢一百或一千倍。因此,為了獲得合理的計算次數,實現這些算法的電路成本通常很高。
這對于所謂RSA數字加密和簽名方案(見R.L.Rivest,A.Shamir和L.M.Adleman撰寫的“A Method for Obtaining Digital Signatures and Public-KeyCryptosystems”,登載于“Communications of the ACM”,第21冊,第2號,120-126頁,1978年2月)來說尤其成立。該方案依賴于整數因式分解問題的難點假定一個大整數(一般在以2為基數的表示中大于1000比特)等于兩個或多個大小可比的質因數的乘積,不存在用于重現這些質因數的有效過程。因此,這個方案中執行的計算涉及很大的數字。它們不能在芯片卡上少于1秒的時間內被執行,除非后者配備了專用加密協處理器,這大大增加了它的成本。此外,由于因式分解過程的效率隨時間相當快速地增長,因此需要向上修改密鑰長度,損害了性能。
因此產生降低實現公開密鑰方案的芯片成本的問題。
對付這個問題主要有兩種方法。第一種方法在于最好(但不必要)根據因式分解以外的其他問題指定新的加密方案,這可能大大加速計算時間。該途徑已被多次探索,且產生了多種結果。然而,在絕大部分情況下,或者與RSA相比的改進不足以設想其中的替代,或者尚未充分好地建立安全性。
第二種方法在于以大量制造芯片使得其成本能大大降低。如果國際銀行組織確認該方案用于將來基于芯片的銀行卡,這就是可能發生在RSA上的情況。然而,起初RSA芯片的成本太高,無論制造多少芯片,其費用仍會是可觀的。
應該注意的是,許多公開密鑰加密方案共同地把整數運算用作基本運算,比如模數乘法(ab(模n))、模數除法(a/b(模n))或者模數取冪(ab(模n)),其中a、b和n是整數。然而,這些運算不會完全相同。因而,每次修改加密方案時,都有必要改變執行加密計算的安全裝置的程序或電路。
本發明的一個目的是通過結合上述兩種方法而降低公開密鑰加密單元的成本。
因此,本發明提出了一種在不對稱加密系統中用于產生與整數保密密鑰s相關聯的加密單元的方法,其中所述加密單元配備了一個組件,該組件獨立于加密系統而產生,并且適用于在幾個整數運算數之間的組合來給出整數y,所述幾個整數運算數包括隨機數r、保密密鑰s和至少一個進一步的運算數(a,b)。通過把一公開密鑰與保密密鑰s相關聯而選擇了加密系統以后,加密單元配備了加密數據序列的發生器,其中所述公開密鑰包括進行乘法運算的集合G的第一元素g,每個加密數據序列都包括作為所述組件的運算數的隨機數r、以及取決于集合G的元素gr的值x,由單元與整數y一起給出。
組件可以由一個或多個電路部分或一個或多個軟件模塊所組成,該組件應用非常快速執行的基本加密項,這對于大量不同的加密方案都是共同有利的驗證、簽名、密鑰交換機制等等,它們使用了分集數學對象(可能定義多種離散對數函數的集合G和乘法運算)。
因為該組件對于大量機制是共同的,因此能更好地降低工業研發和制造成本。適用于該組件的基本單元(例如芯片卡)可以大量有利地生產,只要這些單元適用于有關族的所有方案,并且它們通常能實現這些或這種應用所需求的性能。
更具體地說,公開密鑰還包括集合G的元素v,使得v=gs或v=g-s。該方法使加密單元能根據廣義的離散對數問題而應用整個方案族。這個問題廣義上如下規定令G是進行乘法運算(即根據兩個元素a和b,聯系成表示為“a.b”的元素,或簡單為“ab”的函數,稱為a和b的乘積)的集合,g是G的一個元素,u是一個(大)整數,而w是G的元素,定義為w=gu(即根據g的出現u次的乘積gg…g);在實踐中不可能從g和w中重現u。
歐洲專利號0666664描述了這種類型的一個示例性電子簽名方案,其中G是大于等于0且小于n的一組整數,乘法元素是整數的普通乘積,模n。
根據本發明的方法,如果它發生,則對于給定的集合G和某一乘法運算而言,發現了比已知算法更為有效的離散對數計算算法,它足以改變其中執行計算的集合以及/或者乘法運算,以便重現期望的安全性級別。
離散對數問題可以在進行運算的任何集合內先驗地規定。然而,為了使它能在短時間內執行指數計算并且提供小尺寸的結果,需要某些屬性,譬如目前最適合的集合是組。除了其它屬性以外,組總是包含一個中性元素,即表示為ε(或簡單為1)的元素,使得乘積ε.a和a.ε都等于a,對于任何元素a都一樣。此外,每個元素在組中有一個倒數,表示為a-1,即使乘積a-1.a和a.a-1都等于ε的元素。加密中所使用的組的一般示例為整數和橢圓曲線的圈或范圍。
因此可能定義一個加密組件,該組件不以任何方式依賴于有關的組,或者依賴于考慮中的集合G。這首先意味著這個組件不作用于集合自身的元素。這還意味著它不依賴于組的特性,也不依賴于考慮中的元素g,尤其是在G內g的數量級上,即滿足gq=ε的最小非零整數q(如果存在)。
在本發明的優選實施例中,組件所作用的組合僅由少量的整數間加法、減法和乘法所組成,沒有一個與G和g的特性有任何聯系。特別是,這個組合的形式可以是y=ar+bs的形式,其中a和b是兩個進一步的整數運算數。進一步的簡化使得a=1或b=1。
選擇這個組件的一個優點是它的速度如果僅僅要執行少量乘法(1或2),則組件會有高速度(幾微秒),并且可以被結合在任何環境中,尤其結合在低成本的微處理器卡中。
通過把一隨機數與一模數相關聯來計算集合G上的指數,可以構造加密數據序列的發生器。
然而,在本方法的優選實施例中,加密數據序列的發生器包括一可編程存儲器,用于接收預先計算的對{r,x}或{r,gr}。這樣,加密單元可以完全獨立于集合G以及所采用的乘法元素而被完整地制造。僅僅需要把保密密鑰s和預先計算的對{r,x}或{r,gr}的某些數寫入可編程存儲器。在運算中,共同的組件會執行在加密單元級所需的唯一計算。
可以自主地使用該單元能進一步改進研發和制造成本的降低,這是由于在各種目標應用中可以使用相同的電路(而不僅僅是電路的相同部分)。此外,組件執行得很快能將其安裝在非常低成本的電路中,因此在自主模式中,被接觸或不接觸地安裝在非常廉價的單元中,比如常規的微處理器卡。
這種自主性的還有一個優點是也許能夠改變加密方案,例如由于后者已經損壞(即由于已經發現大大降低它所提供的安全性級別的攻擊),而無須研發并制造另一電路,從而節約了生產力。
此外,如果單元使用值x,其長度不會隨時間而改變(例如由于它從gr的計算因此涉及預定義的哈希函數),則在保留相同的方案時,可能無須研發并制造另一電路而改變所使用的其他密鑰的長度。
此外,在最后兩種情況下,不僅沒有理由研發并制造另一電路,但如果適當地設計了后者,則甚至無須改變包含它們的安全性裝置(例如芯片卡),即使在采用了這些裝置以后。由于在已經運轉的安全性裝置(或安全性裝置自身)中改變電路或電路的程序總是非常昂貴的操作,因此這個優點是非常顯著的。
本發明可被以下組織有利地使用生產安全芯片的半導體制造商、從這些芯片制造安全性裝置的工業,比如芯片嵌入(有接觸或無接觸的芯片卡)、以及采用這種設備的組織(銀行、電信業、貨車司機等),對這些組織而言,加密單元的替換會造成高研發、制造、管理或維護成本。
總之,本發明用離散對數問題產生了一族公開密鑰加密方案,其中一個實體執行最多由少量整數加法、減法和乘法組成的計算,該計算對于該族的所有方案是共同的。該計算最好表示出要由該實體執行的大多數計算,由于大多數其他計算可以預先執行。
從參照附圖的非限制性示例性實施例的下列描述中,本發明的其他特性和優點將變得更為明顯,附圖中
圖1和4是按照本發明生產的加密單元的示意圖。
下面考慮實體驗證協議族,擴展為消息驗證和消息的數字簽名,以及用于交換密鑰的協議族,全部實現一共同的組件。假定由另一實體B所使用的實體A的公開密鑰真實性已經在前面由該實體B所確認。
令G是進行乘法運算的集合,g是G的一個元素。實體A的保密密鑰是整數s。應該注意到,這個整數s的大小(它的基2分解的比特數)獨立于G和g。與實體A的s相關聯的公開密鑰是對{g,v},其中v=gs。
在本發明的示例性實施例中,實體B對實體A的驗證如下進行1.A隨機地選取一整數r,計算x=gr,并把x發送至B;2.B隨機地選取兩個整數運算數a和b,并把它們發送至A;3.A計算y=ar+bs,并把y發送至B;
4.B校驗gy=xavb。
這個基本協議的許多變體是可行的,由于它適用于消息驗證和數字消息簽名-a或b可以預先固定在一非零值(例如a=1),該情況中這個運算數無須被發送,且組合y=ar+bs現在僅涉及乘法;-y=ar+bs可以用y=ar-bs代替,校驗公式為gyvb=xa;-y=ar+bs可以用y=bs-ar代替,校驗公式為gyxa=vb;-y=ar+bs可以用y=-ar-bs代替,校驗公式為gyxavb=1-如果G是一個組,則保密密鑰s的符號可以被反轉,即取v=g-s=(gs)-1,其中校驗公式變為gyvb=xa;這個選擇當然可以與任一上述變化相結合;-在校驗公式形式為gyvb=x的每種情況下,假定a=1,x=gr可以用x=f(gr)來代替,其中f是函數,例如等于(或包括)加密哈希函數;校驗公式于是變為f(gyvb)=x;-同樣在校驗公式形式為gyvb=x的每種情況下,假定a=1,如果M是要由A證實的消息,則x=gr可以用x=f(gr,M)來代替,其中f是函數,例如等于(或包括)加密哈希函數;校驗公式于是變為f(gyvb,M)=x;所獲得的協議為消息驗證協議;-同樣在校驗公式形式為gyvb=x的每種情況下,假定a=1,如果M是要由A證實的消息,則x=gr可以用x=f(gr,M)來代替,其中f是函數,例如等于(或包括)加密哈希函數,于是計算b=h(x),其中h是沒有特殊加密屬性的函數,例如恒等式;在這種情況下,步驟2不再涉及實體A;校驗公式變為f(gyvh(x),M)=x;所獲得的協議為數字消息簽名協議(在G是小于n的非負整數集合且運算為乘法模n的特定情況下,再現歐洲專利號0666664中描述的獲得電子簽名方案)。
注意到在步驟3中,實體A僅需執行一次整數加法以及一次或兩次整數乘法。還注意到該組合獨立于所選的集合G。最后注意到,可以預先執行A需要執行的其它計算(x=gr或f(gr))。因此可能預先計算某些數量的gr值(應用或不應用函數f),然后把它們與相應的隨機數r一起存儲在可編程存儲器中。
根據相同的參數,補充實體B的私有密鑰s’和相關的公開密鑰g’,v’,按照與實體A相同的規則獲得,g’=gv’=gs’,密鑰交換協議可以定義如下1.A隨機地選取整數r,計算x=gr并把x發送至B;A計算共有密鑰K=v’r(=gs’r);2.B隨機地選取兩個整數運算數a和b并把它們發送至A;3.A計算y=ar+bs并把y發送至B。
4.B校驗gy=xavb。B計算共有密鑰K=xs’(=grs’)
該協議一方面能按照Diffie-Hellman方案交換密鑰,另一方面密鑰交換在任一側被驗證。共有密鑰K也可以被計算為v’r的預定函數。
又注意到在步驟3中,實體A僅需執行一次整數加法以及一次或兩次整數乘法。還注意到,該組合獨立于所選的集合G。最后注意到,必須預先執行A需執行的其他計算。因此可能預先計算某些數量的x值和K值,然后把它們存儲在可編程存儲器中。
因此,通過開發實現單獨函數y=ar+bs(或者上述替代之一)的程序或電路,獲得了基本的軟件或硬件程序塊,它們可用于不同的加密方案中,實現諸如驗證、密鑰交換等不同的任務。實現給定任務的方案甚至可以在安全性設備的壽命期間被修改,所述安全性裝置包括該程序或者該電路。例如,可能用另一個方案來代替該驗證方案,或者保持相同的方案但改變其中執行計算的集合或組G。實際上,這些修改僅會影響預先計算的值,而不影響組件自身。
圖1圖解地示出按照本發明生產的示例性加密單元A。該單元由具有區域10的芯片所組成,到區域10的訪問受到本領域技術人員公知的技術所保護。
被保護的區域10包括可編程存儲器11,用于一方面接收單元A的保密密鑰s(區域12),另一方面一旦定義了集合G及其乘法運算(區域13),接收獨立于s確定的對{r,gr}。被保護的區域10還包括組件15,用于計算整數y=ar+bs,作為以下幾者的函數從存儲器區域13接收的隨機數r、從存儲器區域12接收的保密密鑰s以及由控制模塊16提供的兩個進一步運算數a、b。
在區域13內存儲幾個對{r,gr}的各種方式是可行的。每個r值和每個gr值都可以被全部存儲在一表格中,該表在相同對的r值和gr值之間相關匹配。在具有受限存儲器尺寸的微型電路中有利的是,一個簡單的索引與每個gr值相關聯,以便節約存儲幾個r值所需的存儲器空間,該空間一般很大。各個r值是通過偽隨機發生器從初始值r0以及從相應的索引而被預先計算的,以便預先計算并存儲該索引的gr值。于是,可編程存儲器11包括偽隨機發生器和最初的初始值r0,以便通過激活偽隨機發生器而無須全部存儲每個r值而從相應的索引接收每個r值,以便通過索引的優點而使它與gr值相關聯。
響應于遠程實體B所發布的驗證請求,控制模塊16命令存儲器區域13給出被定址到組件15的整數r、以及集合G的相關元素gr,后者構成被發送到實體B的值x。此外由控制模塊16向組件15給出從實體B接收到的進一步運算數a、b,然后由控制模塊16把組件所返回的整數y傳遞給實體B。獲悉公開密鑰g、v的實體B將能夠通過校驗公式gy=xavb的幫助來驗證A。
在圖2的變體中,單元A用于驗證消息M。被保護的區域10和控制模塊16基本上與圖1的示例相同,固定a=1。被保護的區域10增補一哈希模塊18,該模塊應用了預定的加密哈希函數f。該函數f的變元是來自存儲器區域13的元素gr以及由控制模塊16提供的要被驗證的消息M。結果x被定址到控制模塊16,控制模塊16將其傳遞至實體B。
哈希模塊18也可以存在于按照圖1的實施例中,而沒有變元M(或者有該變元的缺省值),以便產生一密鑰值x,該值具有獨立于集合G而規定的大小。
因此可見,相同的電路適用于兩種應用。
對于按照圖3的單元是相同的,該單元用于對消息M的簽名,即獨立于可能檢查該簽名的實體。如果哈希模塊18給出的結果x采用整數形式,則它可以被提供給組件15作為運算數b。還可能預先對其應用函數h,如前所述。
在按照圖4的實施例中,存儲器區域13還把保密會話密鑰K與每個隨機數r相關聯,保密會話密鑰K被確定為實體B的公開密鑰g、v’(因此必須預先知道)的函數K=v’r。這個會話密鑰K被定址到一保密密鑰加密單元20,該單元20按照對稱加密算法以常規方式工作,以便可用于與實體B通信。后者通過校驗公式gy=xavb或者前述變體之一的幫助確保了保密密鑰K的完整性。
權利要求
1.不對稱加密系統中一種產生與整數保密密鑰s相關聯的加密單元的方法,其特征在于,所述加密單元帶有一組件(15),該組件(15)獨立于加密系統被生成并且適用于通過幾個整數運算數間的組合而給出整數y,幾個整數運算數包括隨機數r、保密密鑰s以及至少一個進一步的運算數(a,b),其中在通過把一公開密鑰與保密密鑰s相關聯而選擇了加密系統以后,加密單元配備了加密數據序列的發生器(13),其中所述公開密鑰包括進行乘法運算的集合G的第一元素g,每個加密數據序列都包括作為所述組件的運算數的隨機數r、以及取決于集合G的元素gr的值x,由單元與整數y一起給出。
2.如權利要求1所述的方法,其特征在于,所述公開密鑰包括集合G的第二元素v,使得v=gs或v=g-s。
3.如權利要求1或2所述的方法,其特征在于,所述加密數據序列發生器包括一可編程存儲器(13),用于接收預先計算的對{r,x}或{r,gr}。
4.如任一前述權利要求所述的方法,其特征在于,由所述組件(15)執行的組合的形式為y=ar+bs,其中a和b是兩個進一步的運算數。
5.如權利要求4所述的方法,其特征在于,所述進一步的運算數a和b是從核實單元接收的,所述值x和整數y被發送到該校驗單元。
6.如權利要求4所述的方法,其特征在于,所述進一步運算數之一(a)等于1。
7.如權利要求6所述的方法,其特征在于,所述進行乘法元素的集合G擁有一個組結構。
8.如權利要求7所述的方法,其特征在于,所述組件(15)這樣安排,使得從值x和整數y被發送至的校驗單元接收另一個進一步運算數(b),且其中獲得值x作為元素gr的函數包括應用哈希函數。
9.如權利要求7或8所述的方法,用于生產實現消息驗證協議的加密單元,其中所述組件(15)這樣安排,使得從值x和整數y被發送至的校驗單元接收另一個進一步運算數(b),且其中值x是元素gr以及消息(M)的內容的函數,消息(M)要被結合加密單元的裝置所驗證。
10.如任一權利要求7到9所述的方法,用于生產實現數字消息簽名協議的加密單元,其中進一步的運算數b作為值x的函數被計算,且值x是元素gr以及消息(M)的內容的函數,消息(M)要被結合加密單元的裝置所驗證。
11.如任一前述權利要求所述的方法,用于生產實現密鑰交換協議的加密單元,其中所述加密單元帶有與另一加密單元進行通信的裝置,值x和整數y被發送至所述另一加密單元,所述另一加密單元與另一整數保密密鑰s’相關聯,且加密系統的選擇包括把一公開密鑰與保密密鑰s’相關聯,所述公開密鑰包括元素g和集合G的另一元素v’,使v’=gs’,其中由所述發生器(13)產生的每個加密數據序列包括除了隨機數r和所述值x以外,還包括依賴于集合G的元素v’r的共有密鑰K,該密鑰未被發送至所述另一加密單元。
12.如權利要求11所述的方法,其特征在于,所述加密數據序列的發生器包括一可編程存儲器(13),用于接收預先計算的三元組{r,x,K}或{r,gr,v’r}。
全文摘要
本發明涉及一組公開密鑰加密方案,它們為了降低研發、生成并維護加密單元的成本而使用離散對數問題。實體(10)之一執行一計算,該計算最多包括少量的整數加法、加法和乘法,所述計算是組中所有方案所共有的。上述計算最好是要被所述實體執行的主要計算,而大多數其它計算可以預先被執行。特別是,所述計算屬于y=ar+bs類型,其中r是隨機數,s是對于實體(10)特定的保密密鑰。所述計算是用于實體驗證、消息驗證、數字簽名和密鑰交換的一組方案所共有的。
文檔編號H04L9/10GK1543725SQ02816198
公開日2004年11月3日 申請日期2002年8月16日 優先權日2001年8月20日
發明者M·杰羅特, M 杰羅特 申請人:法國電信局