專利名稱:改進(jìn)的求逆計(jì)算的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及一種用于執(zhí)行求逆運(yùn)算的方法和用于執(zhí)行求逆運(yùn)算的設(shè)備。
橢圓曲線密碼學(xué)(Elliptic Curve Cryptography ECC)包括在GF(P)或GF(2n)上橢圓曲線關(guān)系的計(jì)算的應(yīng)用,并且要求在例如密碼處理器中執(zhí)行公開密鑰算法期間重復(fù)地執(zhí)行長整數(shù)乘法。
典型情況下,必須執(zhí)行乘法運(yùn)算數(shù)百次以便完成加密或解密運(yùn)算,因此重要的是用于執(zhí)行這些運(yùn)算的密碼裝置使用高速乘法器來迅速地執(zhí)行長整型乘法。
ECC計(jì)算還要求求逆計(jì)算,即計(jì)算Z-1,以致積Z.Z-1=1 mod N。每個(gè)點(diǎn)相加和點(diǎn)復(fù)算要求這種計(jì)算。本算法在計(jì)算上是密集的。
另一種方式是在所謂的射影空間(Projective Space)中工作。這把求逆計(jì)算推遲到最后并且必須一次完成,但是作為權(quán)衡的是大量地增加了乘法的次數(shù)。
這種密碼算法日益用于例如智能卡之類的電子裝置中,并且在這些應(yīng)用中嚴(yán)重地限制了處理能力和功率消耗。
一種常規(guī)的計(jì)算方法是利用輔助變量對來工作的二進(jìn)制GCD系統(tǒng)。一個(gè)輔助變量對的大小通過當(dāng)是偶數(shù)時(shí)除以2或者當(dāng)是奇數(shù)時(shí)作減法來加以縮小。
然而,在GCD系統(tǒng)中常常有必要通過加上模的半數(shù)來校正另一對輔助變量上的運(yùn)算。
另一常規(guī)的計(jì)算方法是Kaliski系統(tǒng),所述系統(tǒng)同樣使用兩個(gè)輔助變量對,一對輔助變量通過當(dāng)是偶數(shù)時(shí)除以2或者當(dāng)是奇數(shù)時(shí)作減法來縮小。
然而在此系統(tǒng)中,所要求的所有校正都被延遲到了第二階段。
本發(fā)明的目的是提供更高效的求逆運(yùn)算。
本發(fā)明的目的還在于提供具有較少運(yùn)算的求逆過程。
本發(fā)明的目的還在于提供一種比在常規(guī)系統(tǒng)中更快完成的求逆運(yùn)算。
依照一個(gè)方面,本發(fā)明提供了一種用于在具有至少兩個(gè)輔助變量的密碼計(jì)算中執(zhí)行求逆運(yùn)算的方法,所述方法包括移位變量,然后通過把該變量從較大變量中減去來實(shí)現(xiàn)縮小。
本發(fā)明的一個(gè)優(yōu)點(diǎn)在于大多數(shù)運(yùn)算僅僅對輔助變量的最高有效字(Most Significant Words)進(jìn)行。在多次這種計(jì)算之后,對完全的輔助變量進(jìn)行多次乘法,這更為簡單。
這些優(yōu)點(diǎn)使得與常規(guī)方法相比減少了必要運(yùn)算的次數(shù),由此確??梢愿杆俚貙?shí)現(xiàn)計(jì)算。
因而由本發(fā)明所提供的顯著益處在于降低了用于完成整個(gè)計(jì)算操作所花費(fèi)的時(shí)間。
此外,與常規(guī)的加密方法相比,保持了由本發(fā)明方法所提供的安全度。
優(yōu)選地是,所述方法包括四個(gè)輔助變量U、V、R和S,它們滿足不變式|S.V-R.U|=NS.Y=U mod NR.Y=V mod N.
優(yōu)選地是,所述方法利用變量的最高有效字來進(jìn)行運(yùn)算。
因而本發(fā)明的優(yōu)點(diǎn)在于更快地實(shí)現(xiàn)計(jì)算操作。
依照另一方面,本發(fā)明提供了可直接裝入數(shù)字計(jì)算機(jī)內(nèi)部存儲器的計(jì)算機(jī)程序產(chǎn)品,包括用于當(dāng)所述產(chǎn)品在計(jì)算機(jī)上運(yùn)行時(shí)執(zhí)行本發(fā)明方法的軟件代碼部分。
依照另一方面,本發(fā)明提供了可直接裝入數(shù)字計(jì)算機(jī)內(nèi)部存儲器的計(jì)算機(jī)程序,包括用于當(dāng)所述程序在計(jì)算機(jī)上運(yùn)行時(shí)執(zhí)行本發(fā)明方法的軟件代碼部分。
依照另一方面,本發(fā)明提供了具體化本發(fā)明的計(jì)算機(jī)程序的載波,所述載波可以包括電子信號。
依照另一方面,本發(fā)明提供了計(jì)算機(jī)程序產(chǎn)品或計(jì)算機(jī)程序或本發(fā)明的載波的電子分發(fā)。
依照另一方面,本發(fā)明提供了一種用于在具有至少兩個(gè)輔助變量的密碼計(jì)算中執(zhí)行求逆運(yùn)算的設(shè)備,所述設(shè)備包括用于移位變量的裝置,和用于通過把該變量從較大變量中減去或加上來實(shí)現(xiàn)縮小的裝置。
本發(fā)明的方法和設(shè)備適用于在GF(P)、GF(2n)上的計(jì)算,也適用于長整數(shù)除法。
為了可以更容易地理解本發(fā)明,現(xiàn)在僅以舉例形式參考附圖給出了描述,其中
圖1是本發(fā)明應(yīng)用在智能卡中的框圖;圖2是使本發(fā)明具體化的求逆運(yùn)算的示意圖;圖3是本發(fā)明的硬件實(shí)現(xiàn)方式;圖4是本發(fā)明的進(jìn)一步詳細(xì)的硬件實(shí)現(xiàn)方式;圖5是本發(fā)明另一求逆運(yùn)算的示意圖;圖6是本發(fā)明再一求逆運(yùn)算的示意圖;圖7是本發(fā)明進(jìn)一步操作的示意圖。
圖1示出了本發(fā)明硬件實(shí)現(xiàn)方式的框圖,包括具有以下組件的智能卡50●微控制器51,用于總控制經(jīng)由接口與外界的通信。它設(shè)置RAM/ROM中數(shù)據(jù)的指針并且啟動(dòng)協(xié)處理器。
●到外界的接口,用于例如依照ISO-7816-3來與智能卡聯(lián)系。
○只讀存儲器(Read Only Memory ROM)52,用于存儲微控制器的程序。
○可編程只讀存儲器(閃存或EEPROM)53,用于非易失性存儲數(shù)據(jù)或程序。
○RAM 54,用于存儲易失性數(shù)據(jù),例如用于存儲在計(jì)算期間的中間結(jié)果。
○協(xié)處理器55,專用于執(zhí)行ECC或RSA計(jì)算的特殊高速任務(wù)。當(dāng)任務(wù)就緒時(shí),把控制返回給微控制器。
在一個(gè)變式中,采用軟件來實(shí)現(xiàn)本發(fā)明,其中微處理器、ALU提供加、減、移位運(yùn)算,對控制器編程以提供控制邏輯,以及由移位寄存器來檢測度。
在圖e中示出了本發(fā)明如下所述的求逆運(yùn)算。
因而這種在GF(p)上進(jìn)行的計(jì)算方法包括如下運(yùn)算R=Y(jié)-1mod N具有四個(gè)輔助變量U、V、S和R,其中U=Y(jié)
V=NS=1R=0,U和V總是正值。
輔助變量的度是用于表示它的相關(guān)位的數(shù)目。因而例如,如果U=111100,那么U的度=dU是6;并且如果V=001110,那么V的度=dV是4。
所述運(yùn)算包括對B取B=dU-dV(步驟S1);并且,如果b<0,那么執(zhí)行如下運(yùn)算(步驟S2,S3)(swap U,V)(swap R,S)(swap dU,dV)b=-b那么U=U-2b.VS=S-Sb.R并且如果(U<0)那么(步驟S4)U=-US=-S,如果(R<0),那么R=R+N如果(R>N),那么R=R-N。
因而,在每個(gè)循環(huán)迭代之后,以下不變式有效gcd(U,V)=gcd(Y,N)SY=U mod NRY=V mod N|SV-RU|=N。
在每個(gè)步驟中,減小U的度,或者減小V的度。因此U和V變得越來越小,直到在最后步驟中U變?yōu)?(U=2bV)。
由于U=0,不變式gcd(U,V)=gcd(Y,N)意味著V=gcd(Y,N)=1,這是因?yàn)閅和N是互質(zhì)的。
于是,RY=1 mod N,或者R=Y(jié)-1mod N。
當(dāng)U=0時(shí),-N<R<2N
給出至多一個(gè)校正步驟即加上或減去N。
在實(shí)踐中,R表現(xiàn)得總是小于N,因而使得減去N從不出現(xiàn)。
此外,|SV|<2N和|RU|<2N是暫時(shí)的。
由于它們都是整數(shù),所以|S|<2N;|V|<2N;|R|2N;|U|2N。
對于這些變量,只有大于N的一位要求表示它們。對于S和R,也需要符號位。
圖2示出了依照本發(fā)明方法的硬件實(shí)現(xiàn)方式。
寄存器10、11、12和13保持變量U、V、S、R。加法器14、15執(zhí)行加法、減法、求反和mod 2加法。V和R可以被在b位上移動(dòng)??刂七壿?6控制所述過程。存在兩個(gè)度檢測器17、18,一個(gè)用于U而一個(gè)用于V。d減法器(dSubtractor)19給出差(b)。
最初,把Y載入U(xiǎn),把N載入V,把S設(shè)置為1并且把R設(shè)置為0。
然后過程開始。
當(dāng)b<0時(shí),U和V交換它們的內(nèi)容,S和R亦如此,而b被求反。
兩個(gè)加法器都被設(shè)置為用于減法,并且移位器被設(shè)置為在b位上移動(dòng)。然后執(zhí)行減法。當(dāng)U是負(fù)的時(shí),加法器被設(shè)置為對U和S求反。
只要U≠0就進(jìn)行所述過程。
當(dāng)U=0并且R<0或R>N時(shí),把N裝入S。然后計(jì)算R+N或R-N。
通常,操作數(shù)由多個(gè)字組成。然而,在一個(gè)變式中,可以通過只使用兩個(gè)變量和4個(gè)輔助變量的、大小只有1個(gè)字的最高有效字來加速計(jì)算,同時(shí)保持不變式有效。這還節(jié)省了芯片面積和功率。結(jié)果被用作為用來對整個(gè)操作數(shù)進(jìn)行隨后計(jì)算的估計(jì)量。
圖3示出了更詳細(xì)的硬件實(shí)現(xiàn)方式。寄存器30到35,每個(gè)都具有1個(gè)字長的容量,保持UH、VH、uu、uv、vu和vv。
UH和VH最初被裝入U(xiǎn)和V的最高有效字。
U=uu.U0-uv.V0V=vu.U0-vv.V0
S=uu.S0-uv.R0P=vu.S0-vv.R0uu、uv、vu和vv是適當(dāng)大小的字。
操作從uu=1、vv=-1以及uv=vu=0開始,U0=Y(jié);V0=N;S0=1;R0=0。
假定在多個(gè)步驟之后,這些等式仍然是正確的。在下一計(jì)算之后,這些等式仍然是正確的。由于它們在開始時(shí)是正確的,所以它們保持正確。
當(dāng)計(jì)算U’=U-2bV和S’=S-2bR時(shí),那么選擇uu′=uu-2bvuuv′=uv-2bvvvu′=vuvv′=vv。
當(dāng)有必要計(jì)算U’=U+2bV并和S’=S+2bR時(shí),那么選擇uu′=uu+2bvuuv′=uv+2bvvvu′=vuvv′-vv。
當(dāng)要求時(shí),交換uu和vu,uv和vv。
這交換了U和V以及R和S。
為了更新操作數(shù),以把U的MSW加載到UH并且把V的MSW加載到VH開始。然后,uu=1,vv=-1并且uv=uv=0。
然后進(jìn)行多次計(jì)算,計(jì)算量取決于字的大小以及剩下多少有用的位。
由于VH被移位,所以用零來代替(未知的)右邊的位,這樣UH和VH變得越來越小。當(dāng)幾乎不剩下位時(shí)停止運(yùn)算。符號的確定也變得不正確。
然后借助于uu...vv和U0...S0來計(jì)算U、V、S和R。
這給出了新的縮小值U和V,其仍然遵守不變式。
然后把U0設(shè)置為U,V0設(shè)置為V并且對S0和R0也這樣做。再次設(shè)置uu=1,vv=-1并且uv=vu=0。
然后重復(fù)所述過程。每次U和V都變得越來越小,直到它們適于裝入U(xiǎn)H和VH寄存器。
然后計(jì)算不再是估算,而是確切的計(jì)算并且以正確結(jié)果結(jié)束。最后,只須重新計(jì)算R以便找到Y(jié)-1。
在圖1到4的方法的變式中,計(jì)算方法允許U和V為負(fù)值,并且當(dāng)U是負(fù)的時(shí)除去校正步驟(參見圖5)。
正數(shù)的度是在除去所有前導(dǎo)零之后位的數(shù)目,而負(fù)數(shù)的度是在除去所有前導(dǎo)一之后位的數(shù)目。
同樣,輔助變量是U=Y(jié);V=N;S=1;R=0;當(dāng)U≠0時(shí),并且如果(b<0)那么實(shí)現(xiàn){swap(U,V);swap(R,S)swap(dU,dV);b=-b};如果(Sign(U)=Sign(V))那么實(shí)現(xiàn){U=U-2b.V;S=S-2b.R;}否則{U=U+2b.V;S=S+2b.R;}dU=degree(U);如果(R<0),那么R=R+N;如果(R>N),那么R=R-N.
圖6示出了第二實(shí)施例,該實(shí)施例是在GF(2n)上的計(jì)算方法,主要區(qū)別在于α是多項(xiàng)式U、V、S和R的變量;N是不可約多項(xiàng)式;由于沒有負(fù)值并且只存在mod 2的加法,所以此算法更為簡單。
因而,在U=Y(jié);V=N;S=1;R=0;的情況下,當(dāng)(U>0)時(shí),b=dU-dV如果(b<0){swap(U,V);swap(R,S);swap(dU,dV);b=-b;}U=Uαb.V;S=Sαb.R;d=degree(U);如果(R>N),R=RN。
因而,最初把Y載入U(xiǎn),把N載入V,把S設(shè)置為1并且把R設(shè)置為0。
然后過程開始(步驟S10-S12)。
當(dāng)b<0時(shí),U和V交換它們的內(nèi)容,S和R亦如此,而b被求反。
兩個(gè)加法器總是被設(shè)置為加上mod 2。移位器被設(shè)置為在b位上移動(dòng)。然后執(zhí)行加法。
只要U≠0就進(jìn)行此過程。
當(dāng)U=0并且R=R>N時(shí),把N裝入S,然后計(jì)算RN。
圖7示出了第三實(shí)施例,其是用于長整數(shù)除法的計(jì)算方法,主要區(qū)別在于最初,把X載入U(xiǎn),把Y載入V,把S設(shè)置為0并且把R設(shè)置為1。
當(dāng)U>0時(shí),UV加法器被設(shè)置為用于減法,而RS加法器被設(shè)置為用于加法,或者相反,視情況而定。移位器被設(shè)置為在b位上移動(dòng)。然后執(zhí)行加法/減法操作。
只要U≠0并且b≥0就進(jìn)行此過程。
當(dāng)過程就緒并且U<0時(shí),那么b被設(shè)置為0。然后執(zhí)行一個(gè)加法/減法(U=U+V;S=S-R)。
然后U是余數(shù)R’,而S是商Q,X=Q.Y+R’,其中0≤R’<Y。
權(quán)利要求
1.一種用于在具有至少兩個(gè)輔助變量的密碼計(jì)算中執(zhí)行求逆運(yùn)算的方法,所述方法包括移位(S2)變量,然后通過把該變量從較大變量中減去來實(shí)現(xiàn)縮小(S3)。
2.如權(quán)利要求1所述的方法,其中所述變量具有相同的度。
3.如權(quán)利要求1或2所述的方法,包括更新多個(gè)附加變量以致不變式保持有效。
4.如前面權(quán)利要求中任何一個(gè)所述的方法,包括四個(gè)輔助變量U、V、R和S,它們滿足不變式|S.V-R.U|=NS.Y=U mod NR.Y=V mod N。
5.如權(quán)利要求4所述的方法,包括逐步地減小U和V直到U=1。
6.如權(quán)利要求5所述的方法,包括實(shí)現(xiàn)操作R.Y=1 mod N或R=Y(jié)-1mod N,視情況而定。
7.如前面權(quán)利要求中任何一個(gè)所述的方法,包括用所述變量的最高有效字來進(jìn)行計(jì)算。
8.如前面權(quán)利要求中任何一個(gè)所述的方法,包括在GF(P)上提供求逆(S1-S4)。
9.如前面權(quán)利要求中任何一個(gè)所述的方法,包括在GF(2n)上提供求逆(S10-S12)。
10.如前面權(quán)利要求中任何一個(gè)所述的方法,包括提供用于長整數(shù)除法操作的方法。
11.一種可直接裝入數(shù)字計(jì)算機(jī)內(nèi)部存儲器的計(jì)算機(jī)程序產(chǎn)品,包括用于當(dāng)所述產(chǎn)品在計(jì)算機(jī)上運(yùn)行時(shí)執(zhí)行如權(quán)利要求1到10中任何一個(gè)或多個(gè)所述的方法的軟件代碼部分。
12.一種可直接裝入數(shù)字計(jì)算機(jī)內(nèi)部存儲器的計(jì)算機(jī)程序,包括用于當(dāng)所述程序在計(jì)算機(jī)上運(yùn)行時(shí)執(zhí)行如權(quán)利要求1到10中任何一個(gè)所述的方法的軟件代碼部分。
13.一種用于權(quán)利要求12的計(jì)算機(jī)程序的載波,所述載波可以包括電子信號。
14.權(quán)利要求11的計(jì)算機(jī)程序產(chǎn)品或權(quán)利要求12的計(jì)算機(jī)程序或權(quán)利要求13的載波的電子分發(fā)。
15.一種用于在具有至少兩個(gè)輔助變量的密碼計(jì)算中執(zhí)行求逆運(yùn)算的設(shè)備,所述設(shè)備包括用于移位變量(V,R)的裝置,和用于通過把該變量從較大變量中減去或加上來實(shí)現(xiàn)縮小的裝置(10-17)。
16.如權(quán)利要求15所述的設(shè)備,其中變量(V,R)在不移位的情況下具有相同的度。
17.如權(quán)利要求15或16所述的設(shè)備,包括用于更新多個(gè)附加變量以致不變式保持有效的裝置。
18.如權(quán)利要求15到17中任何一個(gè)所述的設(shè)備,包括用于運(yùn)算四個(gè)輔助變量U、V、R和S的裝置(10-13),所述輔助變量滿足不變式|S.V-R.U|=NS.Y=U mod NR.Y=V mod N。
19.如權(quán)利要求18所述的設(shè)備,包括用于逐步地減小U和V的大小直到U=1的裝置(10,11)。
20.如權(quán)利要求19所述的設(shè)備,包括用于根據(jù)情況而實(shí)現(xiàn)操作R.Y=1 mod N或R=Y(jié)-1mod N的裝置。
21.如權(quán)利要求15到20中任何一個(gè)所述的設(shè)備,包括用于利用所述變量的最高有效字進(jìn)行運(yùn)算的裝置。
22.一種用于基本上參考附圖中的任何一個(gè)或多個(gè)附圖所述、和/或如在其中所圖示的密碼計(jì)算來執(zhí)行求逆運(yùn)算的設(shè)備。
23.一種用于基本上參考附圖中的任何一個(gè)或多個(gè)附圖所述、和/或如在其中所圖示的密碼計(jì)算來執(zhí)行求逆運(yùn)算的方法。
全文摘要
一種橢圓曲線密碼學(xué)求逆技術(shù),利用對滿足指定不變式的四個(gè)輔助變量U、V、R和S的MSW所進(jìn)行的操作。
文檔編號G06F7/72GK1809807SQ200480017310
公開日2006年7月26日 申請日期2004年6月10日 優(yōu)先權(quán)日2003年6月21日
發(fā)明者G·T·M·胡伯特, S·M·范里恩斯沃 申請人:皇家飛利浦電子股份有限公司