專利名稱:使用公共密鑰的加密方法
技術(shù)領(lǐng)域:
本發(fā)明旨在提供一各基于進行模P的量計算的離散算法的、使用公共密鑰的所謂加密方法。
它可應(yīng)用于產(chǎn)生信息數(shù)字帖碼、在兩個實體之間的認證期間或在數(shù)據(jù)編碼中。
在這類方法中,其安全性的基礎(chǔ)是必需對某些函數(shù)逆運算并尤其涉及離散算法的極其困難性。
如果給出數(shù)學(xué)關(guān)系式y(tǒng)=gxmodulop-以下寫為y=gxmodp(它表示y為gx被P除的余數(shù)),這個問題是,當(dāng)我們已知P、g及Y時求解X。一旦當(dāng)P的字長達到或超過512位及X的字長達到或超過128位,在當(dāng)前的學(xué)識狀態(tài)下該問題是不可能求解的。
在這類系統(tǒng)中,通常具有一個權(quán)威機構(gòu),由它提供構(gòu)成模的大字長數(shù)P。該權(quán)威機構(gòu)同樣選擇一個稱為基數(shù)的整數(shù),以便由g形成集,這就是說數(shù)gxmodp形成的集,其中x屬于區(qū)間〔0,p-1〕,或最長字長至少為2128的子集。
參數(shù)p及g稱為是“公共”的,這就是說,它們是由權(quán)威機構(gòu)提供給所有附屬該權(quán)威機構(gòu)的用戶的。
根據(jù)某些變型方案,這些參數(shù)是由每個用戶個別選擇的,并在此情況下作為其公共密鑰的組成部分。
實施這類加密系統(tǒng)的主要缺點是必需具有相當(dāng)大的計算和存儲手段,因為要實現(xiàn)復(fù)雜的計算。
事實上,量gxmodp的計算在于實現(xiàn)模的乘法運算,這是很花費時間和存儲空間的。在僅使用標(biāo)準(zhǔn)微處理機的簡單電子裝置上這類運算操作不大可能實現(xiàn)。
對于具有專用于這類計算的處理機的電子裝置,盡管能合乎要求,但在計算時間及用于中間結(jié)果所需的存儲空間方面有限制。
事實上,通過傳統(tǒng)的“平方相乘”方法(以英語縮寫SQM(Square·Multiply)公知),通常,量gxmodp的計算是相當(dāng)花成本的,因為它平均等同于3/2 Log2(P)次乘法運算。
根據(jù)該方法,當(dāng)K為n位字長時,我們計算g的所有次冪,這就是說,所有次方g0,g1,g2……gn,然后在這些冪之間進行所需乘法運算(例如g17=g1·g16)。
根據(jù)該“平方相乘”方法,單gk就需要n/2次乘法及n個乘方。
在一次需要提供N個幀碼的情況下,我們將產(chǎn)生Ngk,那么就要進行并列計算。
并列“平方相乘”法需要N×n/2次乘法及n個乘方。
由E.BRICKELL等人提出的一種縮寫名稱為BGKW的方法能減小平方相乘方法情況中的乘法次數(shù),但導(dǎo)致需要存儲大量預(yù)先計算的常數(shù),而由此需要設(shè)置大量的存儲器是非常不利的。
在該方法中導(dǎo)入N個值的并列計算意味著使用多個寄存器來存儲中間結(jié)果。
因此在涉及非常短時間中產(chǎn)生大量帖碼的情況下該方法變得更加受限制,因為在此情況下要導(dǎo)入并列計算。
本發(fā)明的目的在于解除所有這些缺點。它能對于在所有加密系統(tǒng)并尤其是使用微處理機的智能卡類型的便攜裝置上實施加密算法提供一種靈活的解決方案,及計算時間和存儲空間方面的花費少。
根據(jù)本發(fā)明的第一目的,提供的加密方法能降低模的乘法次數(shù),以致根據(jù)所采用的加密方案(Schnorr或El Gamal)可獲得15%至40%的計算時間方面的增益。
根據(jù)本發(fā)明,提出了兩種方案來減少乘法次數(shù),一種方案在于產(chǎn)生具有很少為1的位數(shù)的“中空”指數(shù)K,但其位長足夠保持系統(tǒng)的整體安全性;另一方案在于并列地實現(xiàn)g的冪計算,同時它們之間組合指數(shù),以便對于給定指數(shù)不含二次地重復(fù)同一冪的計算。
更具體地,本發(fā)明旨在提供一種使用公共密鑰的加密方法,它基于進行量gkmodp計算的離散算法,式中p是稱為模的質(zhì)數(shù),K是通常長度為n位的隨機數(shù),及g是稱為基數(shù)的整數(shù),其中一個實體E實現(xiàn)認證和/或帖碼和/或編碼操作,并包括與另一實體的信號交換,在另一實體中將涉及這個量,其特征在于對于該實體包括以下的步驟-產(chǎn)生一個長度為N位的隨機指數(shù),N等于n+b位;-計算該指數(shù)的漢明(hamming)加權(quán)C并與一預(yù)先確定的值h相比較;-驗證該隨機值K是否滿足條件C≥h,
-在漢時加權(quán)小于h的情況下,放棄該隨機值K并重新開始產(chǎn)生新的指數(shù),直到獲得滿足該條件的一個指數(shù)為止,-或在相反情況下保存該值,-根據(jù)保存值計算表達式gkmodp,-在與另一實體交換電子信號時使用該表達式。
本發(fā)明還旨在一種使用公共密鑰的加密方法,它基于進行量gkmodp計算的離散算法,式中P是稱為模的質(zhì)數(shù),K是通常長度為n位的隨機數(shù),及g是稱為基數(shù)的整數(shù),其中一個實體E實現(xiàn)認證和/或帖碼和/或編碼操作,并包括與另一實體的信號交換,在另一實體中將涉及這個量,其特征在于對于該實體包括以下的步驟-產(chǎn)生一個加權(quán)為ai的n位隨機指數(shù)集kj,其由以下表達式表示kj=∑ai2i,-并列地計算g2i的冪,同時組合這些指數(shù),以使得對于一個指數(shù)計算出的g的冪用于另外其起作用的指數(shù),-對于每個給定kj,計算還未計算的g的冪,并將這些冪重組合以獲得所需的表達式gkjmodp,-在與另一實體交換信號時使用該表達式。
根據(jù)第一實施方式,并列計算及重組合的步驟包括下列操作-成對地組合指數(shù)以獲得反映它們公共部分的指數(shù)kc,并根據(jù)獲得的組合結(jié)果反復(fù)地進行這些組合,-對于每個kc值這樣地計算量Gkc=gkcmodp,用對于組合獲得的指數(shù)kc組合一個指數(shù)kj,該指數(shù)屬于該組合,以便消除公共部分并僅保留不同部分,確定反映給定指數(shù)kj及給定指數(shù)kc之間不同部分的指數(shù)k′j,-這樣地計算Gk′j∶Gk′j=gk′jmodp,-通過進行對每次信號交換獲得的各量Gkc之間的乘法運算確定表達式Gkjmodp。
在第二實施方式,并列計算及再組合的步驟包括以下的操作-在它們之間組合指數(shù)以形成具有公共部分的指數(shù)的可能組合子集,-確定反映每個組合子集公共部分的指數(shù)kc,使給定加權(quán)的非零位相應(yīng)于所考慮組合的相同加權(quán)的非零位。
-對于每個kc值這樣地計算量Gkc∶Gkc=gkcmodp,-對于指數(shù)kj所屬的每個組合子集使每個指數(shù)kj與獲得的所有指數(shù)相組合,以便消除公共部分并僅保留不同部分,-確定反映給定指數(shù)kj及給定指數(shù)kc之間不同部分的指數(shù)k′j,-這樣地計算量Gk′j=gk′jmodp,-通過對于每個kj進行量G′kj及GkD之間的一次乘法運算來確定表達式gkjmodp。
根據(jù)本發(fā)明的另一目的,允許獲得指數(shù)之間共同部分的組合是由邏輯功能“與”來實現(xiàn)的。
根據(jù)本發(fā)明的另一目的,允許獲得指數(shù)之間共同部分的組合是內(nèi)邏輯功能“異或”來實現(xiàn)的。
在閱讀以下由說明例及非限制性形式并參照附圖描述和給出的說明后將會對本發(fā)明的其它特點和優(yōu)點更加明白
圖1用于實施本發(fā)明的系統(tǒng)的原理圖;圖2表示第一應(yīng)用中方法的基本步驟的功能圖;圖3表示根據(jù)第一實施方式的第二應(yīng)用中方法的基本步驟的功能圖;圖4表示根據(jù)第二實施方式的第二應(yīng)用中方法的基本步驟的功能圖。
在圖1上我們看到實施本發(fā)明的加密方法的一個系統(tǒng)的原理圖。
該系統(tǒng)由一個希望執(zhí)行電子信號交換的實體E1和至少另一實體E2組成。這兩個實體分別設(shè)有一個處理單元(CPU)11、30,一個通信接口,一個隨機存取存儲器(RAM)13、32和/或只讀存儲器(ROM)14、34和/或非易失性可存入或可重存入存儲器(EPROM或EEPROM)15、33及一個地址母線、數(shù)據(jù)母線、控制母線16、35。
處理操作單元和/或ROM包括與涉及本發(fā)明方法的計算步驟執(zhí)行相對應(yīng)的程序或計算資源,這就是說,當(dāng)認證期間或當(dāng)電子帖碼發(fā)生時或當(dāng)待發(fā)送到其它實體的電子信號加密時的程序或計算資源。
處理單元或ROM具有模數(shù)乘法、加法及減法所需的資源。
同樣地處理單元和/或ROM包括適用于每種加密算法及參數(shù)g及p的加密功能。指數(shù)kj可預(yù)先被權(quán)威機構(gòu)存儲在可重存入存儲器中,或陸續(xù)地由一個隨機發(fā)生器及一個秘密隨機值源ko來產(chǎn)生。此外,實體E1具有一個密鑰X。
本發(fā)明尤其適用于設(shè)置在銀行業(yè)務(wù)領(lǐng)域中的加密系統(tǒng),在那里當(dāng)依據(jù)計算進行交易時需要高安全性。也適用于這樣的情況,即人們希望對信息發(fā)送進行認證,該信息是來自其它實體以電子信號形式發(fā)送的。還適用這樣的情況,即當(dāng)與其它實體交換信息時需要給信息加上帖碼。
實際上,要求實現(xiàn)交易的實體可能是,譬如一個帶有集成電路的卡、如智能卡,而目標(biāo)實體是銀行終端。
以下的說明將在對數(shù)字信息加帖碼的方法應(yīng)用領(lǐng)域中進行,當(dāng)然,本發(fā)明適用于基于離散算法的所有加密系統(tǒng)。
根據(jù)本發(fā)明的方法提供了用于減少大量乘法運算的第一方案,它尤其適用于存儲器位置少的環(huán)境情況。
在此情況下,其原理是在漢明(Hamming)加權(quán)選擇得盡可能小的方向上產(chǎn)生“中空”的指數(shù)kj,并一定保留具有這些指數(shù)的隨機特征。
為此,該方法在于按需要逐漸地或在任何交換前預(yù)先地產(chǎn)生指數(shù)kj。當(dāng)然在此情況下,這些指數(shù)將被存儲。產(chǎn)生的指數(shù)不是具有n位的長度,而是具有較多的n+b位的長度,并滿足以下規(guī)定的條件。
當(dāng)產(chǎn)生了n+b位的指數(shù)k時,該方法接著在于,計算該指數(shù)的漢明加權(quán)C,然后與一個預(yù)先規(guī)定的值h相比較。
如果比較結(jié)果為C≥h,則保留該指數(shù)并將被計算表達式gkmodp的實體使用,及在數(shù)字信號發(fā)送時使用該表達式,在數(shù)字信號中該表達式將用做譬如帖碼。
在參數(shù)c不能滿足所需條件的情況下,將相應(yīng)的指數(shù)k放棄,并產(chǎn)生一個新的指數(shù);重新開始驗證條件滿足的步驟,直到獲得能滿足該條件的一個指數(shù)k為止。
并且,這種方案允許能夠?qū)崿F(xiàn)較少的乘法運算,并能保持與使用更少位數(shù)的指數(shù)相同程度的安全性。
根據(jù)一個具體的例子,我們選擇c=h,可以減小乘法運算次數(shù)的最大值。
實際上,對于位數(shù)為n+b位的指數(shù)(其中n=log2P),其中漢明加權(quán)為h,為了與位數(shù)為n位的指數(shù)時有相同數(shù)目的組合,則應(yīng)驗證以下的關(guān)系式2n≤Chn+b
及(N+b)/2+h≤n(允許減少待執(zhí)行的計算次數(shù)的條件)這就是說,2n≤(N+b)!/(n+b-h)!h!及b+2h≤n由我們確定的數(shù)b及h是對于一個給定的n(例如n=160)解這兩個不等式獲得的。
作為說明,將根據(jù)本發(fā)明的方法獲得的結(jié)果與公知方法結(jié)果相比較。
在n=160位的Schnorr算法情況下,及在n=512位的El Gamal算法情況下,這些結(jié)果表示在下列表中。
在被n位指數(shù)覆蓋的帖碼空間上的限制依賴我們希望獲得的安全性程度可能減少一個系數(shù)α。
而參數(shù)n、h及b應(yīng)滿足條件(1)(1)2n-α≤(n+b)!/(n+b-h)!h!并同時要保持由位數(shù)(n+b)位的不同隨機變量產(chǎn)生出相同帖碼的可能性。
實際上,對于抵御各種可能的破譯280是足夠的,因此n-α=100是一個完全可接受的值。
該實施方案更加有利,由于通常平方計算的成本(計算時間)比模的乘法運算成本低。
一般我們得到
S/2≤m≤S,S是待計算的平方次數(shù),m是乘法次數(shù),兩個極端情況是m=s及m=2S。
在下列表中我們將看出這兩個極端情況的比較結(jié)果。
可以看出,當(dāng)將本方法用于Schnorr及El Gamal方案時相對于單純平方相乘的方法來說獲得了很大的增益,甚至當(dāng)我們認為平方計算的成本與乘法運算成本相同時也是如此。
根據(jù)另一實施方式,該方法尤其適用于在存儲位置方面無特殊限制的系統(tǒng)。
在該實施方式中,我們并列地計算g的不同冪,以便僅單次地計算平方,并同時組合指數(shù),以便不執(zhí)行多次同樣的計算。
為了更好地理解本發(fā)明,我們將描述執(zhí)行2的冪的計算例子。
假設(shè)kj=∑ai2i,kj是隨機的抽取的(這就是說,由一個隨機發(fā)生器產(chǎn)生的)。
假設(shè)Kk=kj=∑bi2i。
根據(jù)該方法,將組合指數(shù)kj及Kk,以致確定出如下的一個指數(shù)kc∶Kc=∑aibi2i,它反映kj及Kk之間的共有部分。系數(shù)ai或為1,或為0。
指數(shù)kc相應(yīng)于指數(shù)kj及Kk的公共部分,這就是說,如果kj=1×210+…+0+1×20及Kk=1×210+0+0……+1×20則Kc=1×210+0+…+1×20根據(jù)該方法,因此我們可同樣借助一個邏輯功能“與”來確定標(biāo)記為Kc的指數(shù)K。
接著,我們進行第二組合的處理,它在于確定指數(shù)kj及指數(shù)kc之間的不同部分。我們同樣搜索指數(shù)Kk及指數(shù)kc之間的不同部分。
我們將用于實現(xiàn)“異或”運算的這些組合表示為Kjkc或Kkkc。
我們并列地計算以下的量Gkj=gkjkcmodpGkk=gkkkcmodpGkc=gkcmodp為了獲得gkjmodp及Gkkmodp,執(zhí)行以下運算就夠了1)Gkj×Gkcmodp2)GKk×Gkcmodp當(dāng)具有了這些,如剛才給出的2的冪的例子那樣地,借助平均約3n/4乘法運算來代替n乘法運算,來執(zhí)行運算。其增益為25%。
根據(jù)本發(fā)明的方法可以被概括為大量的指數(shù)組合。并且這種普遍形式可根據(jù)圖3及4中所給功能圖示出的兩種實施方式來實施。
在此情況下,本發(fā)明尤其適用于需要產(chǎn)生大量帖碼的情況。
根據(jù)第一實施方式,將根據(jù)如下表所示的樹狀結(jié)構(gòu)兩個兩個地實現(xiàn)指數(shù)組合kja1a2a3a4kcb1=a1.a2b2=a3.a4c1=b1.b2這些組合如前述例子那樣,可以提供反映指數(shù)kj之間公共部分的指數(shù)kc。
為了簡化說明,這些指數(shù)kj被命名為a1,a2,a3,a4。
指數(shù)kc被命名為,樹的-1級是b1及b2,和樹的-2級是C1。
組合a1.a2,a3.a4是由一個邏輯功能“與”來實現(xiàn)的。
我們將反復(fù)地計算在這樣構(gòu)成的樹的每級上的各組合。乘法的次數(shù)將隨著向樹下方移動,由于位的簡單統(tǒng)計分配而逐漸地減少。待完成的計算工作量估計減少了n/3的乘法運算。
如前面已描述地,我們將確定每級上的量Gkc。
于是,將得到
Ga1=galb1modpGa2=ga2b1modpGb1=gb1modpGb1=gb1c1modp或Gb1=Gb1·Gc1modp]]>Gb2=gb2c1modp或Gb2=Gb2·Gc1modp]]>Gc1=gc1modpGa1modp=Ga1×Gb1modp=Ga1×Gb1×GC1modp]]>事實上,ga1modp將由乘積Ga1×Gb1modp來獲得,及ga2modp將由乘法Ga2×Gb1×Gc1modp來獲得。
根據(jù)第二實施方式,我們組合指數(shù)以形成所有可能組合的子集組合,假設(shè)如果具有這樣的指數(shù)kj∶a,b,c,我們則將形成組合ab,ac,bc,abc。
然后通過a及b,a及c,b及c,和a,b,c之間的一個邏輯功能運算,我們可實現(xiàn)允許確定關(guān)于這些子集的公共部分的各組合。這樣我們就確定出對于所獲得的每個子集的指數(shù)kc。
我們可以并列地計算所有的量Gkc=gkcmodp,由于對于開始的k,這些kc具有極少的為1的位,因此對于它們模的計算非常塊。
然后執(zhí)行其它類型的組合,這些組合在于消除一個指數(shù)及在先的組合之間的公共部分。
這些組合可借助于“異或”邏輯功能來實現(xiàn)。于是,根據(jù)給出的例子獲得了ka=a xor abc xor ac xor abkb=b xor abc xor ab xor bckc=c xor abc xor ac xor bc接著,我們可計算量Gk′j=gkjmodp,對此k′j具有比開始的kc還要少的為1的位,對于它們模的修正甚至更快。
最后由kj獲得表達式gkjmodp。
在通過第二種實施方式獲得的N個帖碼發(fā)生的情況下,計算工作量趨于n/N平方+n(2N-1)/N2N+(2N-1-1)乘法。
下表可以給出公知方法如平方相乘,并列平方相乘及本發(fā)明方法之間的比較結(jié)果。
在給出的第一實施方式應(yīng)用于發(fā)生N個帖碼(樹狀再組合)的情況下,存儲器空間方面的成本小。
對于具有4個指數(shù)的二進制樹,將需要8個位數(shù)為log2(p)位的寄存器來用于計算。
所給出的第二實施方式(N個再組合)具有非常小的計算時間方面的成本,因為它的乘法次數(shù)被優(yōu)化。對于3個指數(shù)將需要8個位數(shù)為log2(p)位的寄存器用于計算。
權(quán)利要求
1.使用公共密鑰的加密方法,它基于進行量gkmodp計算的離散算法,式中P是稱為模的質(zhì)數(shù),K是通常長度為n位的隨機數(shù),及g是稱為基數(shù)的整數(shù),其中一個實體E實現(xiàn)認證和/或帖碼和/或編碼操作,并包括與另一實體的信號交換,在另一實體中及這個量起作用,其特征在于對于該實體包括以下的步驟-產(chǎn)生一個長度為N位的隨機指數(shù),N等于n+b位,-計算該指數(shù)的漢明加權(quán)C并與一預(yù)先確定的值h相比較,-驗證該隨機值K是否滿足條件C≥h,-在漢明加權(quán)小于h的情況下,放棄該隨機值K并重新開始產(chǎn)生新的指數(shù),直到獲得滿足該條件的一個指數(shù)為止,-或在相反情況下保存該值,-根據(jù)保存值計算表達式gkmodp,-在與另一實體交換信號時使用該表達式。
2.根據(jù)權(quán)利要求1的方法,其特征在于待滿足的條件為c=h。
3.使用公共密鑰的加密方法,它基于進行量gkmodp計算的離散算法,式中P是稱為模的質(zhì)數(shù),K是通常長度為n位的隨機數(shù),及g是稱為基數(shù)的整數(shù),其中一個實體E實現(xiàn)認證和/或帖碼和/或編碼操作,并包括與另一實體的信號交換,在另一實體中這個量起作用,其特征在于,它包括以下步驟-產(chǎn)生一個加權(quán)為ai的n位隨機指數(shù)集kj,其由以下表達式表示kj=∑ai2i,-并列地計算g2i的冪,同時組合這些指數(shù),以使得對于一個指數(shù)計算出的g的冪用于另外其起作用的指數(shù)的計算,-對于每個給定kj,計算還未計算的g的冪,并將這些冪重組合以獲得所需的表達式gkjmodp,-在與另一實體交換信號時使用該表達式。
4.根據(jù)權(quán)利要求3的方法,其特征在于-并列計算及重組合的步驟包括下列操作-成對地組合指數(shù)以獲得反映它們公共部分的指數(shù)kc,并根據(jù)獲得的組合結(jié)果反復(fù)進行這些組合。-對于每個kc值這樣地計算量Gkc∶Gkc=gkcmodp,-用對于組合獲得的指數(shù)kc組合一個指數(shù)kj,該指數(shù)屬于該組合,以便消除公共部分并僅保留不同部分,-確定反映給定指數(shù)kj及給定指數(shù)kc之間不同部分的指數(shù)k′j,-這樣地計算量Gk′j∶Gk′j=gk′jmodp,-通過進行對每次信號交換獲得的各量Gkc之間的乘法運算確定表達式Gkjmodp。
5.根據(jù)權(quán)利要求3的方法,其特征在于并列計算及再組合的步驟包括以下的操作-組合指數(shù)在一起以形成具有公共部分的指數(shù)的可能組合的所有子集,-確定反映每個組合子集公共部分的指數(shù)kc,使給定加權(quán)的非零位相應(yīng)于所考慮組合的相同加權(quán)的非零位。-對于每個kc值這樣地計算量Gkc∶Gkc=gkcmodp,-對于指數(shù)kj所屬的每個組合子集使每個指數(shù)kj與獲得的所有指數(shù)kc相組合,以便消除公共部分并僅保留不同部分,-確定反映給定指數(shù)kj及給定指數(shù)kc之間不同部分的指數(shù)k′j,-這樣地計算量Gk′j=gk′jmodp,-通過對于每個kj進行量G′kj及Gkc之間的一次乘法運算來確定表達式gkjmodp。
全文摘要
本發(fā)明涉及基于進行量G
文檔編號G06F7/72GK1224555SQ9618039
公開日1999年7月28日 申請日期1996年6月5日 優(yōu)先權(quán)日1996年6月5日
發(fā)明者D·姆雷希, D·納卡徹 申請人:格姆普拉斯有限公司