專利名稱:模數(shù)增值方法及裝置的制作方法
技術(shù)領(lǐng)域:
本發(fā)明系關(guān)于密碼算法及實(shí)施此種密碼算法之裝置,尤指一種使用增值預(yù)測(cè)(multiplication look-ahead)處理及縮減預(yù)測(cè)(reduction look-ahead)處理之模數(shù)(modular)增值之方法及裝置。
密碼翻譯術(shù)系模數(shù)計(jì)算的必要應(yīng)用。RSA系一種已知之密碼翻譯術(shù)之必要的算法。RSA算法系基于一模數(shù)乘方(exponentiation),其可被表示如下C=Mdmod(N),其中C代表一加密訊息,M系未加密訊息,d為秘密鑰匙而N為模數(shù)。模數(shù)N通常由二主要數(shù)字p及q之增值所產(chǎn)生。模數(shù)乘方藉由已知的平方及乘數(shù)(square-and-multiply)算法而被展開為乘法運(yùn)算。因此,指數(shù)d被展開為2的冪次,因此模數(shù)乘方可被展開為數(shù)個(gè)模數(shù)乘法運(yùn)算。為了能有效率地在計(jì)算方面實(shí)施模數(shù)乘方,模數(shù)乘方因此被展開為模數(shù)乘法運(yùn)算,模數(shù)乘法運(yùn)算之后可被展開為模數(shù)加法運(yùn)算。
DE 3631992 C2號(hào)文件揭露一種密碼處理,其中的模數(shù)乘法可使用增值預(yù)測(cè)(look-ahead)處理及縮減預(yù)測(cè)處理之模數(shù)(modular)乘法而被加速。DE 3631992 C2所描述之處理也關(guān)于一種ZDN方法,并藉由圖九做更詳細(xì)的描述。在算法的啟始步驟900之后,整體變量M,C及N被重置。目的在于計(jì)算以下的模數(shù)乘法Z=M*C mod N.
M是乘數(shù),其中C是被乘數(shù)。Z是此模數(shù)乘法之乘積,其中N是模數(shù)。
然后,有許多暫時(shí)不需要被處理的被重置的區(qū)域變量(localvariables)。之后使用二預(yù)測(cè)處理。在增值預(yù)測(cè)處理GEN_MULT_LA中,一乘法位移(shift)值Sz以及增值預(yù)測(cè)參數(shù)a使用不同的預(yù)測(cè)規(guī)則而被計(jì)算(910)。接著,Z緩存器目前的內(nèi)容接受Sz次的左位移運(yùn)算(920)。
實(shí)際上與之平行處理的是執(zhí)行一縮減預(yù)測(cè)處理GEN_Mod_LA(930)用以計(jì)算一縮減位移值SN以及一縮減參數(shù)b。于步驟940,模數(shù)緩存器目前的內(nèi)容,亦即N,分別被向左或向右位移SN次,以便產(chǎn)生一已位移的模數(shù)值N’。ZDN方法之中央三操作數(shù)(operand)操作發(fā)生于步驟950。于此步驟中,步驟920之后的中間乘積Z’被加到已被乘上增值預(yù)測(cè)參數(shù)a的被乘數(shù)C以及已被乘上縮減預(yù)測(cè)參數(shù)b之已位移的模數(shù)N’。依據(jù)目前的情況而定,預(yù)測(cè)參數(shù)a及b的值可能為+1,0,或-1。
一種典型的情況是增值預(yù)測(cè)參數(shù)a是+1,而縮減預(yù)測(cè)參數(shù)b是-1,因此被乘數(shù)C被加到已位移的中間乘積Z’,而已位移之模數(shù)N’則被減去。如果增值預(yù)測(cè)處理允許大于一預(yù)設(shè)數(shù)目之個(gè)別左移,亦即,如果Sz大于Sz的最大可接受值,其也被稱為k,則a的值將是0。在a的值為0的情況下,而Z’,由于已位移模數(shù)之前的縮減,將依然十分地小,尤其是小于已位移的模數(shù)N’,b為0的時(shí)候不產(chǎn)生縮減。
步驟910至950被執(zhí)行直到所有被乘數(shù)的數(shù)字已被消除或處理,亦即,直到m為0且直到一參數(shù)n等于0為止;此參數(shù)指示位移的模數(shù)N’是否依然大于原始的模數(shù)N,或是是否盡管所有被乘數(shù)的數(shù)字已被消除,仍然有許多從Z減去之模數(shù)減法的進(jìn)一步縮減步驟需要被執(zhí)行。
最后,決定Z是否小于0。如果是,則需要達(dá)成模數(shù)N被加到Z的最終縮減,所以在此獲得模數(shù)乘法的正確乘積Z。在步驟960,藉由ZDN方法之模數(shù)乘法于此終止。
乘法位移值Sz以及在步驟910藉由增值預(yù)測(cè)算法所計(jì)算的乘法參數(shù)a系從乘法器拓樸(topology)以及DE3631992 C2所描述之預(yù)測(cè)規(guī)則所產(chǎn)生。
縮減位移值Sn以及在DE3631992 C2所描述之縮減參數(shù)b系由比較Z緩存器目前的內(nèi)容與2/3乘以N的值所決定。此比較給予ZDN方法的名稱(ZDN=Zwei Drittel N(=3分之2N))。
如圖九所示之ZDN方法轉(zhuǎn)變模數(shù)乘法為三個(gè)操作數(shù)加法(圖九的方塊950),其中增值預(yù)測(cè)處理以及同時(shí)發(fā)生的縮減預(yù)測(cè)處理被用以增加計(jì)算時(shí)間效率。因此,與蒙哥馬利縮減(Montgomery reduction)相較之下可達(dá)成計(jì)算時(shí)間方面的益處。
在下文,于方塊930中所執(zhí)行的縮減預(yù)測(cè)處理將藉由圖十而被詳細(xì)描述。首先,在方塊1000,為區(qū)域變量,亦即縮減預(yù)測(cè)參數(shù)b及縮減位移值SN,執(zhí)行一個(gè)保留。在方塊1010,縮減位移值SN被重置為0。然后,數(shù)值ZDN在方塊1020中被計(jì)算,其等于模數(shù)N的2/3。在方塊1020中所決定的這個(gè)值被儲(chǔ)存于密碼協(xié)處理器(cryptocoprocessor)中其本身之緩存器,稱為ZDN緩存器。
之后在方塊1030中決定變量n是否為1或是位移值SN是否為-k。k是定義硬件所預(yù)設(shè)之最大位移值。于第一次運(yùn)作中,方塊1030被回答”否”,因此在方塊1040,參數(shù)n被減少且于方塊1060中,縮減位移值被減少1。在方塊1080中,變量ZDN隨后被重新配置,即其值的一半,其可輕易地藉由包含于ZDN緩存器中的一個(gè)右位移緩存器而達(dá)成。隨后在方塊1100中決定目前的中間乘積的絕對(duì)值是否大于ZDN緩存器中所包含的值。
方塊1100中的比較運(yùn)算是縮減預(yù)測(cè)處理的中央運(yùn)算。如果此問題的答案為”是”,此疊代(iteration)停止,且縮減預(yù)測(cè)處理參數(shù)b將被配置如方塊1120所示。如果,與之相反,在方塊1100將被回答的問題的答案為”否”,此疊代往回跳以便檢查方塊1030中的目前述值n及SN。如果在疊代的任何時(shí)間中方塊被回答”是”,流程跳回縮減參數(shù)被設(shè)定為0的方塊1140。在方塊950所示之三操作數(shù)運(yùn)算,這具有無模數(shù)被加或減的效用,其表示中間乘積Z很小以致于不需要模數(shù)縮減。在方塊1160,變量n隨后被重新配置,且最后于方塊1180此縮減位移值SN被計(jì)算,其于圖九的方塊940中是需要的以便執(zhí)行模數(shù)的左位移而獲得一位移的模數(shù)。
在方塊1200,1220及1240,n及k的目前的值最后為了檢查N緩存器目前的配置而相對(duì)于下一步的變量MAX及cur_k被檢查,為確定沒有發(fā)生超出緩存器的情況。此結(jié)束的細(xì)節(jié)與本發(fā)明無關(guān),但于DE3631992 C2中有詳細(xì)描述。
圖九及十所示之算法可以圖七所示之硬件實(shí)施。對(duì)于方塊950中所執(zhí)行的三個(gè)操作數(shù)的運(yùn)算,需要一個(gè)算術(shù)單元700,圖七中標(biāo)示為AU。之后被耦合至被乘數(shù)的緩存器C710,模數(shù)用的緩存器N720以及模數(shù)乘法之目前中間乘積用之緩存器Z730。此外,圖七揭露,三操作數(shù)的運(yùn)算,經(jīng)由回饋箭頭740,系被饋入Z緩存器730。此外,圖七表示這些緩存器的相互連接關(guān)系。在圖十的方塊1020中所計(jì)算的ZDN的值必須被儲(chǔ)存于其本身的ZDN緩存器750。此外,ZDN比較,即圖十所示之疊代循環(huán)(loop),藉由其本身之ZDN比較用之一控制邏輯760而于其進(jìn)度中被控制。
計(jì)算Z=M×C mod N之ZDN算法的主要工作因此包含以下二運(yùn)算1.計(jì)算緩存器Z及N之位移值Sz及Si以便滿足以下的程序2/3N×2-Si<|z|≤4/3N×2-Si以及2.計(jì)算三操作數(shù)的總合Z=2SZZ+Ac+b×2SZ-SiN此增值預(yù)測(cè)參數(shù)a及縮減預(yù)測(cè)參數(shù)b可如已知般被假設(shè)為數(shù)值-1,0及+1。
必須指出的是中間乘積Z,被乘數(shù)C以及模數(shù)N是長(zhǎng)的數(shù)字,亦即其位數(shù)或位的計(jì)數(shù)實(shí)際上可能大于512,且其也可能達(dá)到大于2048位數(shù)。
然而,在方塊1100中所執(zhí)行的目前中間乘積Z與數(shù)值ZDN的比較為了計(jì)算時(shí)間的緣故,并不會(huì)對(duì)Z的所有位進(jìn)行,而只對(duì)Z的最大有效位(most significant bits)進(jìn)行;在此情況下,32位的數(shù)目被移除以便足以獲得比較結(jié)果的高度精確度。
對(duì)于此必較所需之2/3N之32個(gè)最大有效位,需要其本身的緩存器,其于圖七中以參考標(biāo)號(hào)750指示并被指定為一ZDN緩存器。
此外,其本身也需要一個(gè)計(jì)算Z緩存器中之目前數(shù)值以及ZDN緩存器中之目前數(shù)值的正確Si值以便滿足以下方程式的硬件比較器2/3N×2-SiN<|z|≤4/3×2-SiN因此,此方法的缺點(diǎn)在于一方面二個(gè)額外的ZDN緩存器及硬件比較器都需要額外的芯片區(qū)域。另一方面,2/3N的計(jì)算及圖十所示之由疊代循環(huán)所執(zhí)行的ZDN算法中的輔助的位移值Si的計(jì)算對(duì)整體算法而言是時(shí)間的關(guān)鍵,并且可能實(shí)際上對(duì)算法整體的運(yùn)算時(shí)間有決定性。
本發(fā)明之一目的在于提供一種模數(shù)增值的概念,其一方面可以用節(jié)省空間的方式被實(shí)施,且另一方面需要較少的計(jì)算時(shí)間。
此目的藉由申請(qǐng)專利范圍第1項(xiàng)之模數(shù)增值方法或申請(qǐng)專利范圍第14項(xiàng)之模數(shù)增值裝置而達(dá)成。
本發(fā)明系基于更新的中間乘積與ZDN數(shù)值,即2/3乘以模數(shù)N,的比較的發(fā)現(xiàn),該比較包括計(jì)算時(shí)間中的高消耗時(shí)間可于模數(shù)N首次被轉(zhuǎn)換(transform)為轉(zhuǎn)換的模數(shù)NT的時(shí)候被利用,且整個(gè)模數(shù)增值以轉(zhuǎn)換的模數(shù)NT取代特定的模數(shù)而被執(zhí)行。依據(jù)本發(fā)明,此模數(shù)被轉(zhuǎn)換,因此被轉(zhuǎn)換模數(shù)之預(yù)定的分?jǐn)?shù)(fraction),亦即,于一較佳實(shí)施例中為2/3乘以轉(zhuǎn)換的模數(shù),變成一特定的數(shù),此數(shù)被選擇為使得2/3NT與中間成積Z的比較變?yōu)槲⒉蛔愕赖?。依?jù)本發(fā)明,此轉(zhuǎn)換被執(zhí)行因此預(yù)定的轉(zhuǎn)換模數(shù)的一部份具有第一預(yù)定值之較高階數(shù)的位數(shù),其后接續(xù)具有一第二預(yù)定值之至少一低階數(shù)的位數(shù)。在數(shù)字的表示及二的補(bǔ)碼規(guī)定中,最大有效位代表符號(hào),模數(shù)至被轉(zhuǎn)換模數(shù)的轉(zhuǎn)換被執(zhí)行因此2/3NT的第二最大有效位系一二進(jìn)制值,然而第三最大有效位及次一小的有效位是0。
于此種情況下,此比較是微不足道的,因此其僅需計(jì)算轉(zhuǎn)換模數(shù)之預(yù)定部份的最大有效位數(shù)與模數(shù)代表之更新的中間乘積Z以便獲得位移值Si,隨后從該值可輕易地藉由從平行發(fā)生的增值預(yù)測(cè)處理之乘法位移值減去從ZDN比較所得之所謂的輔助值Si而決定縮減位移值SN。
全部的ZDN運(yùn)算如同習(xí)知情況般被消除。然而,取代模數(shù)N,轉(zhuǎn)換的模數(shù)NT被使用,因此最后達(dá)成模數(shù)增值之”轉(zhuǎn)換的結(jié)果”,其系于轉(zhuǎn)換模數(shù)NT之余項(xiàng)集(reminder class)中。最終的重新轉(zhuǎn)換,因此模數(shù)增值以模數(shù)的方式被降低,使用原始的模數(shù)N,將隨后產(chǎn)生使用模數(shù)N以被乘數(shù)C乘以乘數(shù)M之模數(shù)乘法的適合乘積。
本發(fā)明之較佳實(shí)施例將于以下參照所附圖
式而被詳細(xì)解釋,其中第一圖系依據(jù)本發(fā)明之模數(shù)增值之概念的流程圖;第二圖系分離模數(shù)N為第一部份位NT及第二部份位NR;
第三圖系分離模數(shù)N為具有長(zhǎng)度L(NT)及剩余位之第一部份位NT第四圖系2/3乘以轉(zhuǎn)換模數(shù)NT之位表示;第五圖系隨機(jī)化轉(zhuǎn)換模數(shù)之位表示;第六圖系依據(jù)本發(fā)明執(zhí)行模數(shù)增值之算術(shù)邏輯單元圖式;第七圖系已知ZDN方法之算術(shù)邏輯單元圖式;第8a-8c圖系增值位移值Sz與輔助位移值Si及縮減位移值SN之關(guān)系的表示;第九圖系已知ZDN方法之流程圖;第十圖系已知縮減預(yù)測(cè)處理之流程圖。
第一圖表示依據(jù)本發(fā)明使用模數(shù)N以乘數(shù)M乘以被乘數(shù)C之模數(shù)增值之方法的流程圖。首先,模數(shù)N在步驟10依據(jù)以下方程序被轉(zhuǎn)換為轉(zhuǎn)換模數(shù)NTNT=T×N在步驟12,模數(shù)乘法隨后使用轉(zhuǎn)換模數(shù)N以及在較佳實(shí)施例中預(yù)定為2/3的轉(zhuǎn)換模數(shù)的部份而被消除。相對(duì)于模數(shù)乘方,這表示以下形式的RSA方程式被計(jì)算CT=Mdmod NT因此,模數(shù)乘方C的積不在由模數(shù)N所定義的余項(xiàng)集中被計(jì)算,而是在轉(zhuǎn)換模數(shù)NT所定義的余項(xiàng)集中被計(jì)算,因此,CT,而非C,位于上述方程式的左方。依據(jù)本發(fā)明概念之區(qū)別在于,由于轉(zhuǎn)換模數(shù)NT的使用,對(duì)應(yīng)已之縮減預(yù)測(cè)處理之圖十的疊代循環(huán)的輔助縮減位移值Si被高度簡(jiǎn)化。
在最后的步驟14,NT至N的再轉(zhuǎn)換再次被執(zhí)行,藉由執(zhí)行對(duì)應(yīng)以下方程序的運(yùn)算C=CTmod N在此情況中,位于轉(zhuǎn)換模數(shù)NT之余項(xiàng)集中的轉(zhuǎn)換乘積CT藉由簡(jiǎn)單的位移/減法縮減而回到模數(shù)N的余項(xiàng)集,因此C為模數(shù)乘方的乘積使用步驟10的轉(zhuǎn)換子T轉(zhuǎn)換模數(shù)N為轉(zhuǎn)換的模數(shù)NT的轉(zhuǎn)換被執(zhí)行,因此轉(zhuǎn)換模數(shù)的預(yù)定部份,亦即于較佳實(shí)施例中為2/3乘以轉(zhuǎn)換模數(shù),具有含較一第一預(yù)定值之較高階位數(shù),其后跟隨至少一含一第二預(yù)定值之低階位數(shù)。具有2/3乘轉(zhuǎn)換模數(shù)之中間乘積Z的比較可因此被高度簡(jiǎn)化,亦即,Z的最高位,其具有預(yù)定值,尋找,且具有轉(zhuǎn)換模數(shù)之預(yù)定部份之第一預(yù)定值之較高階位數(shù)與具有第一預(yù)定值之中間乘積Z之最高位數(shù)的差異等于差異Si。
綜言之,這可如以下所示。N在32位CPU而非在密碼協(xié)處理中被轉(zhuǎn)換為轉(zhuǎn)換模數(shù)NT,因此適用以下NT=T×N其中T為自然數(shù)。
以下由NT所產(chǎn)生,如果所有的使用的數(shù)字為二進(jìn)制數(shù)NT=1100...0 XX...XX對(duì)2/3乘以轉(zhuǎn)換模數(shù)而言,則產(chǎn)生以下的結(jié)果2/3=100...0 X’X’...X’X’可以從NT及2/3NT看出二者皆具有例如16位的第一部份以及分別為位X及X’的L(N)部份。對(duì)于所謂的ZDN比較而言,只有2/3乘以轉(zhuǎn)換模數(shù)NT的最高16個(gè)位被使用,因?yàn)槠湟旬a(chǎn)生優(yōu)于大約2-10的誤差可能性。因此,對(duì)ZDN比較不需要使用2/3乘以轉(zhuǎn)換模數(shù)的所有512,1024或2048位,但其已足以執(zhí)行與轉(zhuǎn)換模數(shù)之最高16位的比較。當(dāng)然,也可能使用2/3乘以轉(zhuǎn)換模數(shù)的較少位來做比較,但誤差可能性逐漸增加。然而,因?yàn)榇苏`差是不重要的并且只產(chǎn)生在縮減預(yù)測(cè)處理的次最優(yōu)行為中,此方法實(shí)際上很容易執(zhí)行。
2/3乘以轉(zhuǎn)換模數(shù)NT因此具有含數(shù)值1的較高階位數(shù),其后跟隨具有一數(shù)值0的至少一低階位數(shù)及因此一第二預(yù)定值。于之前所述之實(shí)施例中低階位數(shù)的數(shù)目為15。此處也有可能使用較高或較少的數(shù),依據(jù)中間乘積Z與2/3乘以轉(zhuǎn)換模數(shù)NT之間所期望或處理的維度(dimensional)差異。對(duì)于模數(shù)乘積之中間乘積Z,亦即圖九方塊950中的三操作數(shù)的相加,產(chǎn)生以下的形式|Z|=00...01YY...Y輔助位移值Si依據(jù)以下方程序被計(jì)算2/3 NT×2-Si<|z|≤4/3NT×2-Si在2/3乘以轉(zhuǎn)換模數(shù)NT的拓樸下,數(shù)值Si永遠(yuǎn)是具有1的2/3乘以轉(zhuǎn)換模數(shù)NT最大有效位與中間乘積之值的最大有效1之間的距離。
依據(jù)本發(fā)明,位數(shù)或數(shù)值Si之間的差異可以在一般的方式中決定。因此不再需要疊代。
除了以上,儲(chǔ)存2/3乘以轉(zhuǎn)換模數(shù)NT的ZDN緩存器也不再被需要,因?yàn)?,就定義而言,2/3乘以轉(zhuǎn)換模數(shù)NT的至少較高的,例如16位,總是具有相同的形式。也不再需要位比較器。具有一個(gè)”1”的2/3乘以轉(zhuǎn)換模數(shù)NT的最高階位數(shù)與具有一個(gè)”1”的Z的最高階位數(shù)之間的有效差異可輕易地被建立,例如藉由轉(zhuǎn)換模數(shù)用的XOR運(yùn)算緩存器以及中間乘積Z的緩存器。Si隨后等于位數(shù)的有效差異,其中XOR運(yùn)算輸出一第一”1”且其中XOR運(yùn)算輸出一第二個(gè)”1”。
由于不需要ZDN緩存器及ZDN比較器的事實(shí),整體的算術(shù)邏輯單元可被容納于較少的芯片區(qū)域。
除了以上,密碼控制部,即ZDN比較的控制邏輯(圖七的760)較不復(fù)雜,因?yàn)椴恍枰獔?zhí)行圖十的復(fù)雜疊代。最后,此比較是較快的,因此輔助位移值Si的計(jì)算不再導(dǎo)致整個(gè)算法的時(shí)間問題。
在下文,依據(jù)本發(fā)明的轉(zhuǎn)換將藉由圖二至五被詳細(xì)描述。
如同已被指出之部份,ZDN算法的實(shí)質(zhì)部份包括滿足以下的方程式
2/32-SiN<|z|≤4/3 2-SiNSi系關(guān)于輔助位移值且為位移Z,在位數(shù)方面,至與N相同的位置所需之位移值。在習(xí)知技術(shù)中,Si的計(jì)算需要|Z|與2/3N的比較運(yùn)算。
依據(jù)本發(fā)明,在任何以N的模數(shù)運(yùn)算被執(zhí)行之前以大于N的轉(zhuǎn)換模數(shù)NT,與2/3N的比較簡(jiǎn)單地藉由轉(zhuǎn)換模數(shù)N至轉(zhuǎn)換模數(shù)NT。所有的計(jì)算模數(shù)NT于其后被執(zhí)行。然而,因?yàn)橛?jì)算的結(jié)果必須在余項(xiàng)集N之中,依據(jù)本發(fā)明執(zhí)行以N的最終縮減。
如圖二所示,N被表示為長(zhǎng)度為N位的整數(shù)。由于模數(shù)N總是為正整數(shù)的事實(shí),亦即在二的補(bǔ)碼表示中MSB=0,符號(hào)位等于0且模數(shù)N的最大有效位(MSB-1)總是為1。ZDN比較并不需要比較模數(shù)的所有位與中間乘積,相反地,ZDN的比較使用m位的數(shù)字即已足夠。模數(shù)N的最大m位定義模數(shù)的第一部份NT,其中模數(shù)的剩余N-m位定義模數(shù)的第二部份NR。在較佳實(shí)施例中,m等于16。較高或較低的m值,當(dāng)然也是可能的。
如于圖三所示,此轉(zhuǎn)換被執(zhí)行以便轉(zhuǎn)換模數(shù)NT比圖二的原始模數(shù)長(zhǎng)16位。
ZDN比較使用NT的前16位是足夠的,以本發(fā)明較佳實(shí)施例僅使用12位以為比較之用,而4個(gè)最小有效位構(gòu)成可能承載的緩沖,其可來自更少的有效位。
在此情況下,產(chǎn)生錯(cuò)誤結(jié)果的比較可能性小于2-12。如果此比較產(chǎn)生錯(cuò)誤的結(jié)果,其僅產(chǎn)生一次最佳位移值SN,然而,所產(chǎn)生的模數(shù)N依然正確。
如果此模數(shù)如圖二以二的補(bǔ)碼表示,模數(shù)N可被展開如下N=2n-mNT+NR現(xiàn)在N使用轉(zhuǎn)換子T被轉(zhuǎn)換為NT,為全等(congruence)的理由,T為適合的被選擇整數(shù)。NT應(yīng)具有圖三所示之形式,亦即,NT的最大有效位(MSB)必須為0,因?yàn)镹T應(yīng)為一正整數(shù)。如下文所解釋,NT的第二最大有效位及第三最大有效位必須為1,因此,轉(zhuǎn)換模數(shù)NT最高部份的有效位的其它部份,此部份為圖三的參考標(biāo)號(hào)33,的數(shù)值應(yīng)該為”0”。僅于此例中,2/3乘以NT的乘積,2/3乘以NT的最高部份,如圖四所示,僅有一位為”1”,因此于此最高部份44的所有位皆為”0”,因此已經(jīng)描述之決定Si之一般的比較可被執(zhí)行。
然而,使用轉(zhuǎn)換子T的轉(zhuǎn)換模數(shù)NT的計(jì)算將首先參照?qǐng)D三而討論。假設(shè)以下的定義NT=TN=T(2n-mNT+NR)以下維持轉(zhuǎn)換子TT=|2p-2+2p-3NT|]]>使用程序17,以下產(chǎn)生轉(zhuǎn)換模數(shù)NTNT=|2p-2+2p-3NT|(2n-mNT+NR)]]>NT=(2n+p-m-2+2n+p-m-3)NTNT+(2p-2+2p-3)NRNT]]>如果,以p及m的典型值為例,亦即當(dāng)p等于32位而m等于16位時(shí),NT有如下的結(jié)果NT=2n+14+2n+13+|2p-2+2p-3NT|]]>
將指出的是NT的計(jì)算最好在主控CPU中執(zhí)行而不是在密碼協(xié)處理器中執(zhí)行。此主控CPU包含一短數(shù)演算邏輯單元,其已足以計(jì)算NT。由于T必須為整數(shù)的事實(shí)且此計(jì)算必須于密碼協(xié)處理器模數(shù)NT,而不是模數(shù)N中進(jìn)行,以NT大于N,只有NT的第一個(gè)p-m等于16位與一般的ZDN比較相關(guān),以便計(jì)算輔助位移值Si。NT其它的n位可以是任何數(shù)字,它們與輔助位移值Si的計(jì)算無關(guān),亦即,對(duì)于與Z的比較。然而,轉(zhuǎn)換模數(shù)NT的所有位,當(dāng)然,對(duì)于三操作數(shù)的加法是需要的,其現(xiàn)在,取代位移模數(shù)的使用,使用位移轉(zhuǎn)換模數(shù)而被執(zhí)行。
如圖十七所示,轉(zhuǎn)換子T系為m與p所選擇之?dāng)?shù)值中之一16位整數(shù)。計(jì)算T及計(jì)算NT的除法,因此必須分別僅對(duì)最大有效32位執(zhí)行,且因此可以快速輕易地在主控CPU上被程序化。
圖四表示2/3乘以轉(zhuǎn)換模數(shù)NT。當(dāng)NT的MSB-1及MSB-2為”1”時(shí),如圖三所示,且因?yàn)橐韵逻m用(11)2=(3)10以及(2/3×3)2=(2)10=(10)22/3乘以轉(zhuǎn)換模數(shù)NT之一簡(jiǎn)單位形式,具有2/3乘以轉(zhuǎn)換模數(shù)NT之長(zhǎng)度為n-m+p。
由于2/3NT的特定形式,與|Z|的比較現(xiàn)在變得比較簡(jiǎn)單。已知2/3NT的最高階1為一模數(shù)運(yùn)算初始的位置n+p-m-2。在較佳實(shí)施例中之緩存器Z的指針(pointer)隨后在Z的MSM開始,并尋找Z的第一個(gè)”1”。如果Z的MSB為1,Z將是一個(gè)負(fù)數(shù),且相反地,將尋找Z的第一個(gè)0。
緩存器N及緩存器Z中的第一個(gè)1的位位置的差異將決定輔助位移值Si。
由于模數(shù)運(yùn)算的結(jié)果必須在余項(xiàng)集N之中,最后縮減模數(shù)N依據(jù)本發(fā)明而被執(zhí)行,其表示再次的轉(zhuǎn)換必須被執(zhí)行(圖一的步驟14)。
N至NT的轉(zhuǎn)換與已知的ZDN相較之下有以下的優(yōu)點(diǎn)取代密碼協(xié)處理器中的2/3N的計(jì)算,簡(jiǎn)單的N至NT的轉(zhuǎn)換可于主控CPU中被執(zhí)行。
在芯片上不需要ZDN緩存器也不需要比較器邏輯,因此芯片尺寸被降低且協(xié)處理器的復(fù)雜度被降低。
最后,N至NT的轉(zhuǎn)換可與模數(shù)N的隨機(jī)化結(jié)合,如圖五所示。
當(dāng)R為一長(zhǎng)度s為位的隨機(jī)數(shù)(random number)時(shí),隨機(jī)的轉(zhuǎn)換模數(shù)NT具有圖五所示的形式。由于隨機(jī)數(shù)N,此被隨機(jī)化的轉(zhuǎn)換模數(shù),當(dāng)與未執(zhí)行隨機(jī)化的情況(圖三)相較之下,較其長(zhǎng)s位,亦即,藉由R的數(shù)字的數(shù)目。
于一方程式的形式中,這可被表示如下NT=TN=T(2n-mNT+NR)隨后,此隨機(jī)化的T如下T=|2p-2-2p-3+RNT|]]>因此,產(chǎn)生以下的隨機(jī)轉(zhuǎn)換模數(shù)NT=|2p-2-2p-3+RNT|(2n-mNT+NR)]]>NT=(2n+p-m-2+2n+p-m-3+R2n-m)NTNT+(2p-2+2p-3+R)NRNT]]>當(dāng)選擇p具有144位,m具有16位且s具有112位,包含隨機(jī)化的轉(zhuǎn)換模數(shù)NT之?dāng)?shù)值結(jié)果如下
NT=2n+126+2n+125+R2n-16+NR2144+2143+RNT]]>NT的位長(zhǎng)度為L(zhǎng)(N)=n+p-m=n+m+s=n+16+112=n+128位圖六表示依據(jù)本發(fā)明之一算術(shù)邏輯單元,其與圖七相較之下,不再需要一ZDN緩存器,而僅為一算術(shù)單元700,一C緩存器710,一N緩存器720以及一Z緩存器730,以N緩存器720不再儲(chǔ)存模數(shù)或一位移的模數(shù),而是轉(zhuǎn)換的模數(shù)或一位移轉(zhuǎn)換模數(shù),或一隨機(jī)轉(zhuǎn)換模數(shù)或一位移隨機(jī)轉(zhuǎn)換模數(shù)。
在下文,圖8a至8c將被描述以說明使用輔助縮減位移值Si計(jì)算縮減位移值Sz的計(jì)算。圖8a表示中間乘積Z以及模數(shù)N。僅由范例,此中間乘積具有4位,而模數(shù)具有9位?,F(xiàn)在假設(shè)圖二的方塊214計(jì)算一位移的中間乘積Z’,其可藉由乘上Sz而達(dá)成。假設(shè)乘數(shù)具有8個(gè)0,其乘法位移值Sz為8。為獲得模數(shù)縮減,模數(shù)N必須被位移到位移的中間乘積多項(xiàng)式Z’的最高位等于位移的模數(shù)N的最高位的程度。如由圖8b可見,在此情況中需要一個(gè)為3的縮減位移值SN。
如從圖8b所示,SN的決定實(shí)際上可僅于Sz已被計(jì)算后被執(zhí)行,亦即,圖二之方塊210與方塊212的平行實(shí)施,如本發(fā)明之較佳實(shí)施,是不可能的。為此理由輔助位移參數(shù)Si被導(dǎo)入。Si的益處在于此數(shù)值可被計(jì)算而不需要已知之目前步驟的Sz。
從圖8b中可見,在所有時(shí)間Sz等于Si與SN的總合。因此SN總是與Si相關(guān),因此適用下方程式SN=Sz-Si因此,決定SN用之消耗時(shí)間的疊代處理可被展開為決定Si用之一耗時(shí)的疊代步驟(循環(huán)416)以及一快速差額運(yùn)算(圖四的循環(huán)422)。因此,二預(yù)測(cè)處理的平行實(shí)施是可能的,以單一串行組件,存在于,在計(jì)算方塊422(圖四)之前Sz的實(shí)際數(shù)值已經(jīng)被增值預(yù)測(cè)算法所計(jì)算及傳遞(圖二的箭號(hào)230)。
綜上所述,與已知的ZDN相比較之下,本發(fā)明簡(jiǎn)化2/3N與Z值之間的比較。對(duì)照目前所知的方法,其中2/3N的最高32位在密馬協(xié)處理器中被計(jì)算并被放置于一分離的32位緩存器,此ZDN緩存器,經(jīng)由構(gòu)成密碼協(xié)處理器之控制部之組成部份的比較器,以2/3N與具有已經(jīng)依據(jù)習(xí)知ZDN方法在硬件中被執(zhí)行的Z值的比較,此方法的進(jìn)行如下。此模數(shù)N被主控CPU轉(zhuǎn)換為大于N的轉(zhuǎn)換NT,具有NT的第一位為一常數(shù),此常數(shù)被選擇以便讓2/3NT與Z值的比較是微小的。為改進(jìn)信息滲漏侵害方面的安全性,如SPA,DPA,時(shí)間侵害,...,N至NT的轉(zhuǎn)換可與模數(shù)的隨機(jī)化結(jié)合,如前所述。
因此在密碼協(xié)處理器中的2/3N的計(jì)算可以被免除。ZDN緩存器及比較邏輯也可被省略,因此提供較小的芯片區(qū)域并藉由省略比較器邏輯而降低密碼協(xié)處理器中之控制部的復(fù)雜度。
參考標(biāo)號(hào)表10模數(shù)轉(zhuǎn)換12模數(shù)增值之疊代消除14轉(zhuǎn)換乘積之再轉(zhuǎn)換33轉(zhuǎn)換模數(shù)之上區(qū)段442/3乘以轉(zhuǎn)換模數(shù)之上區(qū)段700 算術(shù)單元710 C緩存器720 N緩存器730 Z緩存器740 疊代循環(huán)750 ZDN緩存器760 ZDN比較的控制邏輯900 ZDN方法的開始910 ZDN算法的增值預(yù)測(cè)處理920 Z的向左或向右位移930 ZDN算法的縮減預(yù)測(cè)處理940 模數(shù)的向左位移950 ZDN算法的三個(gè)操作數(shù)運(yùn)算960 ZDN算法的終止1000 整體變量1010 縮減位移值的重置1020 ZDN的計(jì)算1030 n及SN的檢查1040 n的縮減1060 縮減位移值的縮減1080 ZDN/2的計(jì)算1100 中間乘積與ZDN的比較1120 決定縮減預(yù)測(cè)參數(shù)1140 決定縮減預(yù)測(cè)參數(shù)1160 n的計(jì)算
1180 縮減預(yù)測(cè)參數(shù)的計(jì)算1200 n的檢查1220 cur_k的計(jì)算1240 cur_k的計(jì)算
權(quán)利要求
1.一種被一乘數(shù)(M)乘之被乘數(shù)(C)之模數(shù)增值方法,其中一模數(shù)(N)被使用,使用一增值預(yù)測(cè)(multiplication look-ahead)處理以及一縮減預(yù)測(cè)(reduction look-ahead)處理,該方法包括步驟以一轉(zhuǎn)換模數(shù)之一預(yù)定分?jǐn)?shù)(2/3)(fraction)轉(zhuǎn)換(10)該模數(shù)(N)為大于該模數(shù)(N)之該轉(zhuǎn)換模數(shù)(NT),該預(yù)定分?jǐn)?shù)具有包含一第一預(yù)定值之較高階位數(shù)以及跟隨其后之至少一包含一第二預(yù)定值之較低階位數(shù);模數(shù)增值的疊代(iterative)消除(12),使用該增值預(yù)測(cè)處理以及該縮減預(yù)測(cè)處理并使用該轉(zhuǎn)換模數(shù)(NT),以便在該疊代的終了獲得該模數(shù)增值之一轉(zhuǎn)換的乘積;使用模數(shù)(N)藉該轉(zhuǎn)換乘積之模數(shù)縮減重新轉(zhuǎn)換(14)該轉(zhuǎn)換的乘積。
2.如申請(qǐng)專利范圍第1項(xiàng)之方法,其中該疊代消除步驟(12)包括復(fù)數(shù)疊代步驟,具有于該等疊代步驟中之一步驟決定之一乘法中間乘積以及一縮減位移值(SN),具有使用含該被轉(zhuǎn)換模數(shù)(NT)之第一預(yù)定值之該較高階位數(shù)與含該第一預(yù)定值之中間乘積(Z)之該最高階位數(shù)之間之位數(shù)的數(shù)目(Si)的決定而被計(jì)算之該縮減位移值(SN)。
3.如申請(qǐng)專利范圍第1項(xiàng)之方法,其中于該增值預(yù)測(cè)處理中決定一乘法位移值(Sz),且其中該縮減預(yù)測(cè)處理之縮減位移值(SN)系藉由從該乘法位移值(Sz)減去該位數(shù)之預(yù)定數(shù)目(Si)而被計(jì)算。
4.如前述申請(qǐng)專利范圍之任一項(xiàng)之方法,其中該疊代消除步驟包括以下步驟于一第一疊代步驟(a)執(zhí)行一增值預(yù)測(cè)處理以獲得一乘法位移值(Sz);(b)以一目前中間乘積(Z)乘上被提高至該乘法位移值之冪次(power)之基數(shù)(base)以獲得一位移中間乘積(Z’);(c)執(zhí)行一縮減預(yù)測(cè)處理以便藉由決定一輔助位移值(Si)等于含該被轉(zhuǎn)換模數(shù)(NT)之該預(yù)定分?jǐn)?shù)之第一預(yù)定值之該較高階位數(shù)與含該第一預(yù)定值之中間乘積之該最高級(jí)位數(shù)間的位數(shù)數(shù)目而獲得一縮減位移值(SN),并藉由使用該輔助位移值及該乘法位移值(Sz)計(jì)算該縮減位移值;(d)以被提高至該縮減位移值之冪次的基數(shù)乘上該轉(zhuǎn)換模數(shù)(NT)以獲得一位移轉(zhuǎn)換模數(shù)(NT);以及(e)加總該中間乘積(Z’)與該被乘數(shù)(C)并減去該位移的轉(zhuǎn)換模數(shù)(NT)以獲得一更新的中間乘積(Z)。
5.如前述申請(qǐng)專利范圍之任一項(xiàng)之方法,其中該模數(shù)之預(yù)定分?jǐn)?shù)為2/3。
6.如申請(qǐng)專利范圍第5項(xiàng)之方法,其中該被乘數(shù)(C),該乘數(shù)(M)及該模數(shù)(N)為二進(jìn)制數(shù),具有基數(shù)2,且其中該轉(zhuǎn)換模數(shù)(NT)之該預(yù)定分?jǐn)?shù)之較高階位數(shù)具有一第一預(yù)定值1以及至少一具有一第二預(yù)定值0之低階位數(shù)。
7.如申請(qǐng)專利范圍第6項(xiàng)之方法,其中該轉(zhuǎn)換模數(shù)之最大有效位系一符號(hào)位,而該模數(shù)之該預(yù)定分?jǐn)?shù)之一較高階區(qū)段內(nèi)含如下01000 xx...xx其中被標(biāo)示為xx的位具有任意值。
8.如申請(qǐng)專利范圍第7項(xiàng)之方法,其中該轉(zhuǎn)換模數(shù)(NT)之較高階區(qū)段內(nèi)含如下01100...00。
9.如申請(qǐng)專利范圍第1至8項(xiàng)之任一項(xiàng),其中該轉(zhuǎn)換模數(shù)之步驟(10)包括模數(shù)之隨機(jī)化,因此該轉(zhuǎn)換模數(shù)是隨機(jī)的。
10.一種處理器,用于以一乘數(shù)(M)乘以一被乘數(shù)(C)之模數(shù)增值,其中一模數(shù)(N)被使用,使用一增值預(yù)測(cè)(multiplicationlook-ahead)處理以及一縮減預(yù)測(cè)(reduction look-ahead)處理,包括一裝置,用來轉(zhuǎn)換(10)該模數(shù)(N)為大于該模數(shù)(N)之該轉(zhuǎn)換模數(shù)(NT),該模數(shù)之預(yù)定分?jǐn)?shù)具有包含一第一預(yù)定值之較高階位數(shù)以及跟隨其后之至少一包含一第二預(yù)定值之較低階位數(shù);;一裝置,用以模數(shù)增值的疊代(iterative)消除(12),使用該增值預(yù)測(cè)處理以及該縮減預(yù)測(cè)處理并使用該轉(zhuǎn)換模數(shù)(NT),以便在該疊代的終了獲得該模數(shù)增值之一轉(zhuǎn)換的乘積;一裝置,用以使用模數(shù)(N)藉該轉(zhuǎn)換乘積之模數(shù)縮減重新轉(zhuǎn)換(14)該轉(zhuǎn)換的乘積。
11.如申請(qǐng)專利范圍第10項(xiàng)之處理器,包括一主控CPU以及一協(xié)處理器,該轉(zhuǎn)換(10)該模數(shù)用之裝置被設(shè)置于該主控CPU,而該用于模數(shù)增值之疊代消除的裝置系被設(shè)置于該協(xié)處理器中。
12.如申請(qǐng)專利范圍第11項(xiàng)之處理器,其中該主控CPU系一位數(shù)數(shù)目小于或等于64之短數(shù)算術(shù)邏輯單元,而其中該協(xié)處理器系一位數(shù)數(shù)目大于或等于512之長(zhǎng)數(shù)算術(shù)邏輯單元。
13.如申請(qǐng)專利范圍第10至12項(xiàng)之任一項(xiàng)之處理器,其中該用于模數(shù)增值之疊代消除的裝置包括用以轉(zhuǎn)換該模數(shù)之一緩存器以及該模數(shù)增值之中間乘積用之一緩存器。
全文摘要
于一模數(shù)增值方法中,使用計(jì)算一乘法位移值之一增值預(yù)測(cè)處理以及計(jì)算一縮減位移值之一縮減預(yù)測(cè)處理,一模數(shù)首先被轉(zhuǎn)換(10)為大于該模數(shù)之一轉(zhuǎn)換模數(shù)。該轉(zhuǎn)換被執(zhí)行使得該轉(zhuǎn)換模數(shù)之一預(yù)定分?jǐn)?shù)具有被一包含一第二預(yù)定值之至少一低階位數(shù)所跟隨而包含一第一預(yù)定值之一高階位數(shù)。于使用增值預(yù)測(cè)處理及縮減預(yù)測(cè)處理之疊代消除(12)期間,轉(zhuǎn)換模數(shù)被使用以便在疊代終了時(shí)獲得該模數(shù)增值之一轉(zhuǎn)換乘積。最后,該轉(zhuǎn)換乘積使用該原始模數(shù)藉由模數(shù)縮減而被再次轉(zhuǎn)換(14)。藉由依據(jù)本發(fā)明之轉(zhuǎn)換,模數(shù)增值之疊代消除被簡(jiǎn)化,所以模數(shù)增值可被較快的執(zhí)行。
文檔編號(hào)G06F7/60GK1539103SQ02806396
公開日2004年10月20日 申請(qǐng)日期2002年1月24日 優(yōu)先權(quán)日2001年3月13日
發(fā)明者A·埃爾貝, H·塞德拉克, N·詹斯森, J·-P·塞弗特, A 埃爾貝, と ヌ, 呂, 股 申請(qǐng)人:因芬尼昂技術(shù)股份公司