專利名稱:模乘方法及裝置及模乘計算單元的制作方法
技術領域:
本發明系關于一種執行模乘的方法及裝置,及例如關于GF(2n)橢圓曲線的模乘。
密碼學為模算術基本應用的其中一,依模數N的形式而定,兩個密碼學方法被基本上區分,若該模數為整數,我們說是Z/NZ算術,該參數N代表一質數或組合的質數,參數Z代表整數。RSA方程式為模數由兩個質數所組成的情況之實例C=MEmod(N)如已知,C為經加密數據,M為未經加密或一般訊息,E為公鑰及N為模數。
相反的,該GF(2n)算術特征在于該模數N(x)為變量x的多項式,該多項式包括x的個別次方的和,一系數伴隨著每一x次方,x最高次方的指數被稱為多項式的次數。若該系數系來自GF(2)的范圍,我們說是GF(2n)模數,或更一般而言,為個別為GF(2n)算術。該GF(2n)算術為如被用于橢圓曲線的密碼學。
一種f(x)∈次數n-1的GF(2)[x]由n個系數an-1,...,a0,其中a1s必須來自GF(2)組且其中根據定義an-1為1f(x)=1*xn-1+an-2*xn-2+...+a1*x1+a0*x0GF(2n)的范圍由次數n的不可約分多項式及次數少于或等于n-1的GF(2n)的多項式所提供。
在GF(2n),兩個成份(為多項式)的加成系由XORing它們的具長度n的系數向量而得到。
在GF(2n),兩個成份(為多項式)的相乘系由將GF(2n)多項式相乘及接著減少所得到的積modulo次數n的不可約分多項式N(x),其定義相對應范圍。
如此,積多項式,其為得自第一多項式f(x)乘以第二個多項式g(x)而得到,必須進行以模數多項式N(x)做為除數的多項式除法。F(x)*g(x)mod N(x)的結果為得自多項式除法的余數多項式。
在有效執行于Z/NZ及GF(2n)的模乘之不會方法被處理前,應注意以Z/NZ及GF(2n)的模指數運算可藉由已知的平方及相乘算法被分為乘法。如此,下列方程式要被解出C(x)=(M(x))Emod N(x)。
平方及相乘算法系基于指數E被分為2次方的和E=ΣiE[i]*2i]]>下列實例系用以說明此。在二進制制表示中,下列被應用E=1011因而,下列關系可被應用C(x)=M(x)∧(1*23+0*22+1*21+1*20)mod N(x)因而,下列可被應用C(x)=(M(x)8*(M(x))0*(M(x))2*(M(x))0mod N(x)對Z/NZ算術,以上所敘述的方程式一致具差別為不使用M(x),而是必須以M取代寫入,及不使用N(x),而是必須以N取代寫入。
在已知有效及常常使用的可能性以計算模乘的技藝中,已知為Montgomery乘法及如敘述于應用密碼學手冊”,Menezes,vanOorschot,Vanstone,CRC Press,600至603頁。該Montgomery減法為一種技術,其允許有效的進行模乘而不需顯明進行的傳統模減步驟。一般在Montgomery減法,除法運算以簡單的位移運算表示。
同時,Montgomery乘法至GF(2n)的有限場的延伸亦為已知,此延伸敘述于”在GF(2k)的Montgomery乘法”,Koc,Azar,設計、編碼及密碼學,14卷,1988,57至69頁,此延伸亦敘述于”一種Z/NZ及GF(2n)的有限場的可縮放及一致的乘數結構”Erkay Savas,等,密碼硬件及植入系統(CHESS 2000),281至289頁,Springer Lecture Notes。
在Z/NZ或GF(2n)的Montgomery乘法之缺點為即使模減的除法運算(其不易在硬件上執行)由位移運算而被規避,沒有先行方法可被使用以加速在硬件上的模乘。
DE 3631992 C2揭示一種方法,其中在Z/NZ的模乘可使用乘法先行方法及使用減法先行方法而被加速,敘述于DE 3631992 C2的方法亦稱為ZDN方法且參考第9圖被詳細敘述,在起始算法的步驟900后,通用變量M、C及N起始。此為計算下列模乘的目的Z=M*C mod NM被稱為乘數,C被稱為被乘數,Z為模乘的結果,N為模數。
之后,各種局部變量(其目前不需被處理)被起始化,兩個先行方法被施用。在乘法先行方法GEN_MULT_LA中,一種乘法位移值sZ及乘法先行參數a使用各種先行規則被計算(910)。z緩存器的目前內容再以sZ數字進行左移操作。
基本上平行于此的減法先行方法GEN_Mod_LA(930)被執行以計算減法位移值sN及減法參數b。在步驟940,該模數緩存器的目前內容由sN數字移位以產生經移位的模數值N’。ZDN方法的中央三元運算域操作在步驟950發生。在步驟920后,該中間結果z’被加至乘以乘法先行參數a的被乘數C及加至乘以減法先行參數b的經移位模數N’。根據當時情況,先行參數a及b可具值+1、0或-1。
一情況為該乘法先行參數a為+1且減法先行參數b為-1以使被乘數C被加至經移位的中間結果Z’且經移位模數N’被由此減去。在其它情況下,a可具值0,若該乘法先行方法允許超過一個別左移的預先設定數,亦即,若sτ大于sZ的最大允許值,此值亦被稱為k。對a等于0且Z’因前一模數減少(亦即經移位模數的前一減法)仍為非常小及特別是小于經移位模數N’的情況,不需進行任何減法以使參數b等于0。
步驟910至950被執行直到所有被乘數的數字已被處理,亦即,直到m等于0及直到參數n亦等于0,其顯示經移位模數N’是否仍大于原先模數N及是否進一步減法步驟必須由自Z減去模數而被進行,僅管所有被乘數的數字已被處理。
最后,決定Z是否小于0,若Z小于0,則模數N必須加至Z以得到最后減少以使在最后得到模乘的正數結果Z。在步驟960,模乘藉由ZDN方法而被完成。
在步驟910由乘法先行方法所計算的乘法位移值sZ及乘法參數a起源于乘數的拓樸及起源于敘述于DE 3631992 C2的插入先行規則。
算減法位移值sN及減法參數b由比較Z緩存器的現有內容與2/3乘以N的值而被決定,且亦被敘述于DE 3631992 C2,此是因為此比較ZDN方法具其名稱(ZDN=Zwei Drittel N=三分之二N)。
如第9圖所說明,敘述于DE 3631992 C2的該ZDN方法僅用于Z/NZ算術,然而,其不適合用于GF(2n)算術。因此,目前沒有任何計算時間有效的先前方法可被用于GF(2n)算術以加速GF(2n)的模乘。
本發明目的為提供一種快速執行GF(2n)的模乘的觀念。
本發明系由根據申請專利范圍第1項的模乘,根據申請專利范圍第7項的進行模乘之裝置或根據申請專利范圍第11項的計算單元。
本發明系基于在GF(2n)的模乘之加速可由使用乘法先行方法及減法先行方法而得到的了解。在乘法先行方法中,乘法位移值被計算。在減法先行方法中,其較佳為與該乘法先行方法平行操作,減法位移值被計算,該減法位移值等于由該乘法位移值位移的中間結果多項式之次數與目前模數多項式之次數的差,且該中間結果多項式乘以被增加至該乘法位移值的次方之變量,該模數多項式乘以被增加至該減法位移值的次方之變量,如此,三元運算域加法亦可為該GF(2n)算術而被公式化以使新的中間結果多項式可由加上由該乘法位移值位移的最新中間結果多項式及被乘數與接著由自此減去由該減法位移值位移的模數多項式以得到更新的中間結果多項式。然而,使用經更新的中間結果多項式及在最后步驟位移的模數多項式重復所有步驟以成功地相加所有部份乘積,亦即,直到所有乘數的次方已被處理。
對該GF(2n)算術的情況,該三元運算域加法被特別簡化,因變量x次方的系數具值”0”或”1”,如此,加法及減法變為簡單的XORing,故對僅用于該GF(2n)加法做為算術位的計算單元不僅是加法器,亦是該三元運算域的位般互斥或。
在雙計算單元的情況下,亦即,在Z/NZ及在GF(2n)進行模乘的計算單元,因ZDN方法已存在的三元運算域加法器僅由使之不作動而被修正以用于GF(2n)操作,亦即,不計入該加法器每一位所進位的內容。
應注意計算在GF(2n)模乘的本發明方法具一種串聯-并聯結構,該三元運算域加法較佳為總是平行發生,亦即對加數(其典型上包括150至1100位的寬度)的所有位,一種新的部份乘積在本發明方法的下一串聯重復被計算及在后續平行三元運算域加法被加至已存在的中間結果。
與GF(2n)的Montgomery乘法相較,計算模乘的本發明觀念之優點在于其藉由在值2大小次方的因子而進行的最大加速。
本發明觀念的進一步優點為現在計算在GF(2n)模乘的有效方法被提供以使如在GF(2n)的BCDSA算法(ECDSA=橢圓曲線數碼簽署算法)可被計算。該算法被敘述于”財物服務業公鑰密碼學橢圓曲線D.S.A.”,ANSI X9.62-1998。
與基于關于整數的模算術之密碼學相較,橢圓曲線密碼學為較佳的在于可以相當小的數目得到安全性的類似標準,且對具1024位寬度的數字的在Z/NZ的RSA方法,安全性的良好標準被得到,在GF(2n)的多項式(其次數系在變量x的150至300次方范圍)已足夠用于此。
本發明的進一步優點為計算模乘的本發明觀念可容易地被整合至ZDN方法的已現存的計算單元,因實際長數目的計算單元,亦即三元運算域加法器,可由使位載體不作動而簡單地被用于GF(2n)。即使用于GF(2n)減法先行算法及用于乘法先行算法的算術單元與用于Z/NZ的相對應裝置不同,此對計算單元的整體性能不為決定性的,因在此情況下,具小數目的加法、位移或減法發生,其具8或16位的寬度,以使與長數目的計算單元(亦即三元運算域加法器,其非常容易具超過2048位的寬度(在Z/NZ及GF(2n)的雙實施中))相較,這些算術單元(其亦被稱為控制單元)的芯片面積不具主要影響。
于GF(2n)模乘的本發明觀念的進一步優點為與僅用于Z/NZ算術的ZDN方法相較,許多運算可被簡化,如此,在本發明GF(2n)模乘中不需執行與2/3倍模數的比較。在GF(2n),此比較可僅以中間結果多項式之次數與模數多項式之次數的比較取代。因乘法位移值的期望值及減法位移值的期望值為相同的,該兩個先前方法彼此被去耦合以使該兩個先前方法彼此獨立工作,此產生計算時間的優點。
在下文本發明較佳具體實施例參考所揭示圖式詳細敘述,其中第1圖為說明GF(2n)的模指數運算之流程圖;第2圖為本發明方法的高位準流程圖;第3圖為計算乘法位移值的乘法先前方法的流程圖;第4圖為計算減法位移值的減法先前方法的流程圖;第5圖為GF(2n)算術或Z/NZ算術的三元運算域相加單元的一部份;第6圖為進位取消功能的詳細說明;第7圖為Z/NZ/GF(2n)計算單元的方塊第8a至8c圖為說明減法位移值的計算之示意說明;及第9圖為ZDN方法的一般圖標以執行在Z/NZ的模乘。
第1圖為一般流程圖以分割模指數運算C(x)=(M(x))Emod N(x)為一系列乘法。M(x)及N(x)為變量x的多項式,E為在具位長度L(E)的二進制制表示的指數。
此算法基本上包括檢查指數E的位(亦即E(e))是否等于1,若其等于1,則結果緩存器的目前內容乘以M(x),具模數多項式N(x)的模減在這之后立即執行。然而,若指數位等于0,沒有任何乘以M(x)的乘法被執行。在這兩種情況緩存器C(x)的目前內容乘以其本身,亦即,被平方,而后模減發生。指數表示(亦即e)的數字指數再被增加1,此回路再次被經過,其被執行直到所有指數E的數字已被處理,亦即,直到e等于L(E),之后此算法完成且在C(x)的緩存器有模乘的結果。因而模指數運算的中央操作為被乘數C(x)乘以乘數M(x)的模乘。
第2圖顯示本發明方法將被乘數乘以乘數的模乘之高位準流程圖。該方法起始于起始方塊200,在方塊202,通用變量M、C及N,其為變量x的多項式,被起始化。在方塊204,中間結果多項式Z接著被起始化為0。在方塊206,控制變量m被起始化為L(M)。L(M)以位顯示乘數M的長度,因而L(M)對應于乘數多項式的次數。在方塊208,控制變量n被起始化為0,控制變量n的功能會于稍后解釋。接著,乘法先行方法210及減法先行方法212被較佳地平行執行,該乘法先行方法系用做計算乘法位移值sZ及較佳為亦計算乘法先行參數a。
該減法先行方法系用做計算減法位移值sN及較佳為亦計算減法先行參數b。
在方塊214,經移位的中間結果多項式Z’由將目前的中間結果多項式Z乘以被增加至該乘法位移值sZ的次方之變量x而被計算。
在方塊216,經移位的模數多項式N’較佳為由同時將目前的模數多項式N乘以被增加至該減法位移值sN的次方之變量x而被計算。
在方塊218,一般稱的三元運算域加法(其為本發明模乘方法的中央操作)被進行。在方塊218,經更新的中間結果多項式Z被計算,其由該中間結果多項式Z’及已乘以乘法先行參數a的被乘數C及已乘以減法先行參數b的經移位模數多項式N’的相加而得到。
在方塊220,檢查控制變量m是否等于0及控制變量n是否同時等于0。若該控制變量m等于0,此表示乘數M(x)的所有位已被處理,若該控制變量n等于0,此表示經移位的模數多項式N’再次對應于方塊202的原始多項式N。
若此兩個條件符合,方塊220會由此響應YES以使模乘的結果,亦極Z(x),在于方塊222被輸出。該模乘方法再于方塊224完成。
然而,若方塊220以”NO”響應,此表示仍有乘數的位未被處理或者留在模數多項式緩存器的模數多項式N’仍大于在方塊202所定義的原始模數多項式。不同地表示,此表示留在模數多項式緩存器的目前多項式的次數大于已定義于方塊202的原始模數多項式N的次數。若為此情況,送回會被執行,如由第2圖的饋送226所示,以再次進行乘法先行方法及減法先行方法。相對于第一步驟,其中該Z緩存器,因在方塊204的起始化,已被設定為0,現在先前方法的三元運算域操作218的結果為在該Z緩存器。
以相同方式,在模數緩存器N的不再是定義于方塊202的原始模數N,而是已由減法位移值sN位移的模數多項式N’。因而已定義于方塊202的原始模數多項式N(x)僅當第一重復步驟期間存在于該N緩存器,雖然在重復(重復回路226)期間,常為在模數緩存器的經移位模數多項式,亦即已乘以被增加至減法位移值sN的次方之變量x的模數多項式。
現在參考第3圖,其說明一乘法先行方法(亦即第2圖的方塊210)的更詳細說明。該乘法先行方法起始于起始方塊300,其接收第2圖的參數m做為通用變量、進一步的控制變量curk(其會于稍后解釋)、及乘數M,此由第3圖的方塊302說明。在方塊304,乘法位移值sZ被起始化為0,而且,乘法先行參數a(其會于稍后解釋)被起始化為值1(方塊306)。
再于方塊308檢查實際位或是x的目前處理次方之系數是否分別為0,若在方塊308決定乘數的目前處理位不等于0,亦即若方塊308的決定以YES響應,則控制變量m在方塊310增加1。而且,該乘法位移值sZ在方塊312亦增加1,在方塊314,該乘法先行方法的所得參數,亦即乘法先行參數a及乘法位移值sZ,為輸出。
若在方塊308的問題以NO響應,則會執行跳至進一步的決定方塊316,其于此處決定是否該控制變量m仍小于該長度,亦即乘數M的次數。此外,其檢查目前的乘法位移值sZ是否分別小于或等于參數curk,若兩個問題皆以YES響應,則會執行跳至方塊318以將參數增量1。而且,在方塊320,該乘法位移值sZ在方塊312亦增加1。接著,乘數M的下一位被檢查,其由饋送分支322于第3圖說明。
然而,若在方塊316決定在方塊316的兩個問題的其中一以NO響應,則會執行跳至方塊324,于此乘法先行參數a被設定為0,由此可見為方塊314輸出的乘法先行參數a可為0或1。該乘法先行方法接著于方塊326結束。
在下文中,乘法先行參數的操作模式被解釋。根據本發明使用的該乘法先行方法為一種乘以超過零的可變位移的GF(2n)的先行算法,其中可變位移的數目無法為任意大的值,而是至多等于值CURk,”CURk”表示”目前的k”,亦即”參數k的目前值”。
在下文中,具系數”10001”的乘數多項式可被示例地解釋。首先,其最顯著的位被檢查,此位具值”1”以使方塊308以YES響應,其使得變量m被增量1及使得乘法位移值sZ亦被增量1。該乘法先行算法已完成,因乘數的經檢查位具值”1”,以此方式,在三元運算域加法被乘數C必須被加上。
在該乘法先行算法的下一路徑,第二個位被檢查,此位具值0以使在方塊308以NO響應。若經檢查的位僅為被乘數的第二個位且若乘法位移值sZ,因在方塊304的起始化,而為0,則方塊316以YES響應以使得該控制變量m被增量1(318)及該乘法位移值亦被增量1(320)。經由分支322,方塊308再被進入,因下一亦具值”0”,此方塊被重復以NO響應且方塊316仍為目前的這個,m仍小于L(M)故此問題被正向地響應,sZ僅具值1。當其假設CURk具值2,此問題亦被正向地響應以使在方塊318及320,m及sZ的增量再度發生。在方塊320通過后,sZ具值2。經由分支322至方塊308的轉移再被執行以決定目前的下一位是否為1或0。對本實例,方塊308再次以NO響應因在此情況下,序列中零值的第三個位被檢查,然而,方塊316現在以NO響應因sZ為2且變量CURk亦為2,此表示乘法先行方法因而可以說被取消即使第三個0亦可被使用以作動一位移,然而,sZ必須被限制于最高值,因否則一無限長的Z緩存器必須被提供以能夠儲存經移位的中間結果多項式Z’,其于第2圖的步驟214計算。CURk因而依據Z緩存器的目前移動而被設定以允許最大可能的位移值sZ,其貢獻在于速度上的增益,及一方面同時處理經移位的中間結果多項式Z’的有限緩存器長度。在第2圖方塊218的三元運算域操作由此成為二元運算域操作因在第3圖方塊324的參數a已被設定為0。
如可由第3圖所見,在方塊324的分支沒有m的進一步增量發生故在乘法先行算法的更新路徑,現在于方塊308所檢查的為序列的第三個0位。因此位具值0,方塊308再次以NO響應以使得該乘法位移值sZ被增量1且在方塊318的控制變量亦被增量。乘數的最后一位,亦即”1”,現在被檢查,因此位不等于0,方塊308以YES響應,該控制變量最后一次被增量且該乘法位移值sZ亦被增量直到此重復的該乘法先行算法完成(方塊326)。現在所有被乘數位已被檢查以使第2圖的重復回路226被完成因其在方塊220被檢查是否m等于0,其現在應用于本實例。
在下文中,參考第4圖以敘述減法先行方法,在第2圖,其以參考數字212指定。在方塊400,該減法先行方法開始,在方塊402,其中的各種通用變量,特別是N及Z被強調及定義。N為前一步驟的模數多項式之緩存器值,且Z為前一步驟的經更新中間結果多項式,k為Z的最大位移值,CURk為Z的目前位移值且MAX為溢流緩沖器的長度,亦即位數,其用于儲存左移多項式N及Z。當第2圖的方塊216被考慮時,可了解若任意大的減法位移值sN被提供,N的任意大的緩存器須被提供,如同在乘法先行方法的類似情況,然而,因空間及效率原因,此為不欲的,故藉由參數MAX,可考慮該模數多項式僅能由特定數目位位移至左側,亦即頂點。
在方塊404,稍后會被敘述的參數si被起始化為0,而后在方塊406決定顯示在溢流緩沖器的N的位數目的參數n是否等于0,或者是否si等于k。若方塊406以YES響應,則會執行跳至方塊408,于此該減法先行參數b被設定為0,然而,若方塊406的問題以NO響應,則參數n被增量1(方塊410)。同時,參數si被增量1,如方塊412所說明。接著,中央比較在方塊414進行,由此要決定多少模數多項式要被位移以使在該三元運算域操作(第2圖的方塊218)中,中間結果多項式的模減發生。為進行此,輔助位移值si被決定以使得自x(x被增加至si的次方)乘以前一步驟的經更新中問結果多項式的相乘的多項式的次數等于目前模數多項式的次數。此如由重復回路416所示的一步驟接著一步驟進行直到YES-結果在方塊406得到或是YES-結果在方塊414得到。若方塊414以YES響應,則在方塊418該減法先行參數b被設定為1。在方塊420,一新的參數n再自該乘法位移值sZ及目前值n的差被計算,真實的減法位移值sN再于方塊422以形成該乘法位移值sZ及該輔助位移值si的差被計算。
已指出該乘法位移值sZ系由實際平行通過乘法先行算法被提供,如在第2圖由箭頭230所示。若無輔助參數si的引入,僅乘法先行法的一系列實施及之后為減法先行法的一系列實施為可行,其基于效率原因為不欲的。所以,輔助參數si被使用,藉由此減法位移值sN_的實際計算可被預備且延伸的重復回路(第4圖的分支416)可實際上以平行于乘法先行算法的方式被處理,且減法位移值sN_的實際計算可藉由兩個短數字sZ及si的差之快速形成而被執行。因而順序如下,sZ及si被并行計算,sZ再自該乘法先行算法經由第2圖的分支230(其亦可由第4圖了解)被傳送減法先行算法以使減法位移值sN_被直接提供于下一循環,此會參考第8a至8c圖于稍后解釋。
在方塊422后,在方塊424決定n是否大于MAX減k,若此問題響應為YES,則新的CURk會于方塊426計算,若在方塊424的此問題響應為NO,則于方塊428CURk會與k相等。在方塊430,減法先行法的結果值(亦即b及sN)被輸出以使減法先行法結束于方塊432。
參考乘法先行參數a及減法先行參數b與儲存管理參數n、MAX、k及CURk的詳細說明,系以DE 3631992 C2為參考。不像Z/NZ的ZDN方法,其中參數a及b可取值+1、0及-1,在本發明方法的相對應參數a及b僅可取值0及1。先行參數a及b系僅選擇性地需要于根據本發明的模乘,就是在沒有任意大的儲存位置可提供給N及Z的情況。然而,一般,本發明方法可在任意大的緩存器可被提供的情況下被容易地進行,在此情況下,該乘法先行不會被消除而是總是被執行直到”1”被發現于該乘數,直到那時,參照第2圖的方塊214,sZ具某可能最大值以使該經移位的中間結果多項式Z’可能地采較大的值,因1已被發現于該乘數,于方塊218,被乘數再被加至該經移位的中間結果多項式Z’。
然而,一基本特性為模減亦同時與每一乘法步驟發生以使就整體而言數值可被保持于一可容忍范圍。
為進行此,根據本發明的該減法位移值sN_以一種經位移的模數多項式之次數等于目前的中間結果多項式之次數方式被選擇,若之后該經位移的模數多項式被自Z’(x)及C(x)的和減去,該更新的中間結果Z典型上總是小于Z’以使減法已被得到,如此,可了解該更新的中間結果多項式Z,其由第2圖的步驟218計算,不必要關于方塊202的原始模數多項式而被減少,而是在整個重復期間僅關于左移模數多項式(其為具較高次數的模數多項式)而被減少,然而不必要都像這樣。然而若為要增加的情況,其可由步驟220達到,在此步驟決定n是否等于0,亦即是否N具在溢流緩沖器的位,自該更新的中間結果進一步減去模數發生以使Z可再日益增多地被減少為原先的余數等級。若n等于0,此表示在溢流緩沖器不再有N的位,其表示最后得到的經位移的模數多項式等于方塊202的原始模數多項式。
如此,可了解本發明模乘方法基本上亦可不需先行參數a及b而被執行,然而,在此情況下,理論上地無限Z及N的緩存器是必要的-若任意乘數被假設。
若對Z及N具儲存限制,亦即若先行參數a及b可為0,乘法先行參數a等于0表示沒有任何被乘數被加至經位移的Z’,類似于此,減法先行參數b等于0表示該經位移的模數多項式大于經位移的中間結果多項式Z’,基于此原因沒有任何減法是必要的故模減亦可被省略。在此種情況,該三元運算域操作會完全減退。
在此階段,亦指出在緩存器Z及N的有限緩沖器之情況下,必須注意只要變量m未達到值0,則N被保持距其Home MSB至少k位。
更進一步指出在GF(2n)算術的情況下,亦即若多項式的系數可僅為0或1,則該加法運算對應于該減法運算且一般可以XORing進行。然而,若多項式的系數被允許為不同數字系統,例如為八進制數制或十進制數制,當然,該減法不對應于該加法。
在下文中,參考第8a至8c圖以說明使用該輔助位移值si的該減法位移值sZ的計算。在第8a圖中,一種中間結果多項式Z及模數多項式N被說明,僅做為實例,該中間結果多項式具次數為4,亦即4位,且該模數多項式具次數為9,亦即9位。更進一步假設在第2圖的方塊214,經位移的中間結果多項式Z’被計算,其可由乘以被增加至sZ的次方之變量x而得到,假設在乘數有8個零,其造成該乘法位移值sZ為8。為得到模減,該模數N必須達到該經位移的中間結果多項式Z’的大小次方。根據本發明,該模數多項式N要被位移以使該經位移的中間結果多項式Z’之次數及該經位移的模數多項式N之次數為相等的。如可由第8b圖所了解,減法位移值sN等于3為此所必須。
亦可由第8b圖所了解,發現sN實際上僅能當sZ已被計算時執行,其表示第2圖的方塊210及212的平行執行,如為本發明較佳的,是不可能的。基于此原因,輔助位移值si被引入,如可由第8a圖所了解,該輔助位移參數si等于該中間結果多項式Z的次數及該模數多項式N的次數的差。si的優點為此值可被計算而不需在目前步驟知道sZ。
可由第8c圖所了解,sZ總是等于si_及sN的和。因而sN總是與sZ及si相依,相依方式為應用下列式子sN=sZ-si。
決定sN的耗時重復方法可因而被分割為決定si的耗時重復方法(回路416)及快速減法運算(第4圖的方塊422),由此,兩個先行方法的幾乎平行執行為可能的,僅串聯的成份為在計算方塊422前(第4圖),sZ的實際值已由乘法先行算法被計算及提供(第2圖的箭頭230)。
如已經解釋,計算GF(2n)的模乘之本發明觀念之基本優點系基于其可被整合至ZDN方法的已現存的長數目的計算單元,第5圖顯示為執行與Z、aC及bN的三元運算域加法單元的發明采用的三元運算域計算單元之一部份。
在第5圖,與另一連接的三個位切片[i]、[i-1]、[i-2]被說明,每一位切片包括一三位計數器500及全加器510已在輸出側分別得到經更新的中間結果多項式的位Z[i]、Z[i-1]及Z[i-2]。該全加器進一步具下一較高全加器的進位輸入之進位輸出。若例如具次數200的多項式被處理,第5圖的200三位計數器必須平行連接。
為改良第5圖的GF(2n)的位切片,如第5圖所示,一AND閘520必須插入于三位計數器的上方輸出及下一較高階段的全加器的第二最低輸入。若0被饋入起動輸入530,值x總是為0。而后全加器510的功能總是減退至y及0的加成。在Z/NZ的情況下,然而,該AND閘的起動輸入被以”1”提供故該AND閘沒有進一步效用。
在GF(2n),該AND閘的輸出因而為0。然而,在Z/NZ,x是需要的,其中該AND閘的輸出可不等于0,該起動因而由AND閘實現。然而,對GF(2n)的情況,在全加器的加成變得無足輕重的,其在起動輸入530為0。
第6圖顯示在AND閘520的情況,部份說明于第5圖計算單元具正常加法器的作用,若起始訊號SC=1。然而,若起始訊號SC=0,其會具XOR電路的作用。
第7圖顯示Z/NZ及GF(2n)計算單元的示意方塊圖,該計算單元被沿該長數目算術單元700分類,長數目算術單元700執行已對Z/NZ或GF(2n)敘述的三元運算域操作。
該計算單元進一步包括一種Z/NZ控制單元710及一種GF(2n)控制單元720及一種模式選擇裝置730,若該計算單元系以整數計算運算模,該模式選擇裝置730會以真加法運算被執行的方式控制該算術單元700,該算術單元在輸入側及輸出側被連接至Z/NZ控制單元710。然而,若該計算單元要運算GF(2n)算術,則該模式選擇730會以使用XOR運算取代加法而被執行的方式來活化該算術單元700且算術單元的輸入及輸出被連接至GF(2n)控制單元。
如此,不再需要分開算術單元以容納整數模算術及多項式模算術于一計算單元。
已指出因為三元運算域操作對所有位平行執行,大部份芯片空間由該算術單元700消耗,且要在控制單元710及720進行的更小的計算可以更小數字處理,以使只要芯片面積為被注重的,此幾乎不會有差別。
相對于整數算術及多項式算術需要個別計算單元的計算單元,計算模乘的本發明觀念因而允許芯片面積減少幾乎50,特別是對智能卡,此在芯片面積的顯著節省使得具相當的競爭優勢。
參考數字清單200起始模乘方法202通用變量204起始化中間結果多項式206起始化m208起始化n210乘法先行方法212減法先行方法214產生中間結果多項式216產生經移位的模數多項式218三元運算域加法220檢查算法是否已完成222輸出Z224停止模乘方法226重復回路230sZ轉移300起始乘法先行方法302通用變量304起始化sZ306起始化a308決定是否經處理位等于0或1310增量m312增量sZ314輸出a及sZ316決定是否進一步位移可被執行318增量m320增量sZ322重復回路324設定a326停止乘法先行方法400起始減法先行方法
402通用變量404起始化si406決定是否減法可被執行408設定b410增量n412增量si414檢查經移位的中間結果多項式的次數416重復回路418設定b420設定n422計算SN424檢查n426設定CURk428設定CURk430輸出b、SN432結束減法先行方法500三元加法器510全加器520開關530控制700三元運算域計算單元710Z/NZ控制單元720GF(2n)控制單元730模式選擇900起始ZDN方法910ZDN算法的乘法先行方法920向左位移Z930ZDN算法的減法先行方法940向左或向右位移該模數950ZDN算法的三元運算域加法960ZDN算法的結束
權利要求
1.一種于密碼計算中使用模數(N)將被乘數(C)模乘乘數(M)的方法,該被乘數(C)、該乘數(M)及該模數(N)既為變量(x)的多項式,又為該密碼計算之參數,該方法包括下列步驟(a)執行(210)一乘法先行方法以得到乘法位移值(sZ),該乘法位移值(sZ)以該乘數的次方被增量,其未存在于該乘數多項式;(b)將被增加至該乘法位移值(sZ)的次方之該變量(x)乘以(214)中間結果多項式(Z)以得到一經移位的中間結果多項式(Z’);(c)執行一減法先行方法(212)以得到減法位移值(sN),該減法位移值(sN)等于經移位的該中間結果多項式(Z)的次數及該模數多項式(N)的次數的差;(d)將被增加至該減法位移值(sN)的次方之該變量(x)乘以(216)該模數多項式(N)以得到一經移位的模數多項式(N’);(e)相加(218)該經移位的中間結果多項式(Z’)及該被乘數(C)及減去該經移位的模數多項式(N’)以得到一經更新的中間結果多項式(Z);及(f)重復(226)步驟(a)至(e)直到所有該乘數(M)的次方已被處理,其中在步驟(a)至(e)的重復中,于步驟(d)中,前一步驟(e)的該經更新的中間結果多項式(Z)被用做該中間結果多項式(Z),及于步驟(c)中,前一步驟(d)的該經移位多項式被用做模數多項式(N)。
2.根據申請專利范圍第1項的方法,其中在步驟(d)的該相乘(210)系藉由以許多等于該乘法位移值(sZ)的數字位移該中間結果多項式(Z)而被進行,及其中在步驟(d)的該相乘(210)系藉由以許多等于該減法位移值(sN)的數字位移該模數多項式(M)而被進行。
3.根據申請專利范圍第1或2項的方法,其中該多項式的系數僅能取值”0”或”1”,及其中在步驟(e)的該相加及相減(218)由位般互斥或該中間結果多項式(Z’)、該被乘數(C)及該經移位的模數多項式(N’)而進行。
4.根據先前申請專利范圍其中一項的方法,其中該減法先行方法(212)以得到減法位移值(sN)的步驟包括下列步驟決定(414)一輔助位移值(si)以使得該模數多項式(N)的次數及乘上已被增加至該輔助位移值(si)的次方的變量的前一步驟(e)的該經更新中間結果多項式(Z)的次數相等,及形成(422)該乘法位移值(sZ)及該輔助位移值(si)的差以得到該減法位移值(sN)。
5.根據申請專利范圍第4項的方法,其中執行該乘法先行方法(210)的該步驟及決定(414)該輔助位移值(si)的該步驟系并行進行。
6.根據先前申請專利范圍其中一項的方法,其中該乘法位移值(sZ)被限制于最大乘法位移值(k),其中執行(210)該乘法位移方法的每一步驟包括下列步驟如該乘法位移值等于該最大乘法位移值(k),使該乘法位移值(sZ)等于該最大位移值(k),產生(306、324)一種具預先決定值的乘法先行參數(a),及其中該相加步驟包括下列步驟如該乘法先行參數(a)具該預先決定值,僅相加該預先決定的中間結果多項式(Z’)及該經移位的模數多項式(N’)。
7.一種于密碼計算中使用模數(N)進行將被乘數(C)模乘乘數(M)的裝置,該被乘數(C)、該乘數(M)及該模數(N)為變量(x)的多項式,又為該密碼計算之參數,該裝置包括(a)執行(210)一乘法先行方法以得到乘法位移值(sZ)的裝置,該乘法位移值(sZ)以該乘數的次方被增量,其未存在于該乘數多項式;(b)將被增加至該乘法位移值(sZ)的次方之該變量(x)乘以(214)中間結果多項式(Z)以得到一經移位的中間結果多項式(Z’)的裝置;(c)執行一減法先行方法(212)以得到減法位移值(sN),該減法位移值(sN)等于該經移位的該中間結果多項式(Z)的次數及該模數多項式(N)的次數的差的裝置;(d)將被增加至該減法位移值(sN)的次方之該變量(x)乘以(216)該模數多項式(N)以得到一經移位的模數多項式(N’)的裝置;(e)相加(218)該經移位的中間結果多項式(Z’)及該被乘數(C)及減去該經移位的模數多項式(N’)以得到一經更新的中間結果多項式(Z)的裝置;及(f)重復地控制(226)該裝置(a)至(e)直到所有該乘數(M)的次方已被處理的裝置,其中在該裝置(a)至(e)的重復控制中,相乘(214)以得到經移位的該中間結果多項式的該裝置被設置以使用相加(218)的該裝置的前一控制的該經更新的中間結果多項式(Z)做為該中間結果多項式(Z),及執行一減法先行方法(212)的該裝置被設置以重復控制的方式以使用相乘(216)的該裝置的前一控制的該經移位模數多項式被用做模數多項式(N)以得到經移位的模數多項式。
8.根據申請專利范圍第7項的裝置,其中該用于相乘(214)以得到經移位的中間結果多項式(Z’)的裝置及該用于相乘(216)以得到經移位的模數多項式(N’)的裝置被實施做為可控制的位移緩存器以依據該乘法位移值(sZ)或依據該減法位移值(sN)而由相對應數字位移該緩存器內容。
9.根據申請專利范圍第7或8項的裝置,其中用于相加及用于相減的該裝置(218)由位般互斥或該中間結果多項式(Z’)、該被乘數(C)及該經移位的模數多項式(N’)而進行。
10.根據申請專利范圍第7或8項的裝置,用于相加及相減的該裝置(218)包括一具三個輸入線路及二個輸出線路的計數器(500),其中該中間結果多項式(Z)的一位可被供應至第一輸入線路,其中該被乘數(C)的一位可被供應至第二輸入線路,及其中該經移位的模數多項式(N’)的一位可被供應至第三輸入線路;一具三個輸入及一輸出的全加器(510),該計數器(500)的低次輸出系連接至該全加器(510)的高次輸入線路;一在該計數器(500)的較高次輸出線路及該全加器(510)的中間輸入間連接的開關(520)以用于較高次位;及一控制單元(530)以當多項式要被處理時,開啟該開關(520)。
11.根據申請專利范圍第7項所述之裝置,系作為一種計算單元以使用該模數將該被乘數乘以該乘數,該計算單元選擇性地使用模數整數將被乘數整數乘以乘數整數,該相加裝置系形成為三元運算域加法器重(700),共包括一具進位取消裝置(730)以合并該整數運算域或是多項式中間結果,該經移位的模數多項式及該被乘數;及一控制裝置(730)以控制該進位取消裝置以使當多項式運算域被處理時,該進位被去活化及以使當整數運算域被處理時,該進位被活化。
12.根據申請專利范圍第11項的計算單元,具進位取消裝置的該三元運算域加法器包括;一具三個輸入線路及二個輸出線路的計數器(500),其中該中間結果多項式的一位可被供應至第一輸入線路,其中該被乘數(C)的一位可被供應至第二輸入線路,及其中該經移位模數的一位可被供應至第三輸入線路;一具三個輸入及一輸出的全加器(510),該計數器(500)的低次輸出系連接至該全加器(510)的高次輸入線路;一在該計數器(500)的較高次輸出線路及該全加器(510)的中間輸入間連接的開關(520)以用于下一較高次位;及一控制單元(530)以當多項式要被處理時,開啟該開關(520)。
13.根據申請專利范圍第12項的計算單元,其中許多三元運算域加法器存在,三元運算域加法器存在的數目大于或該模數或多項式整數的數字的數目。
全文摘要
在一種使用模數(N)將被乘數(C)模乘乘數(M)的方法中,該被乘數、該乘數及該模數為變量的多項式,一種乘法先行方法以得到乘法位移值(S
文檔編號G06F7/60GK1489726SQ02804491
公開日2004年4月14日 申請日期2002年1月24日 優先權日2001年2月16日
發明者A·埃爾貝, H·塞德拉克, N·詹森, J·-P·塞弗特, A 埃爾貝, と ヌ, 呂 申請人:因芬尼昂技術股份公司