驟S061,根據(jù)第二輸入?yún)?shù)NB、蒙哥馬利模乘轉(zhuǎn)換系數(shù)和所述蒙哥馬利模乘函數(shù),得到第二模乘結(jié)果NBR ;
步驟S062,根據(jù)第二輸入?yún)?shù)NA、第二模乘結(jié)果NBR和所述蒙哥馬利模乘函數(shù),得到最終模乘結(jié)果。
[0020]對(duì)于步驟S061,也就是說,調(diào)用一次蒙哥馬利模乘函數(shù),輸入兩個(gè)參數(shù)分別為NB、R2, NBR = MontF (NB, R2),BR 是一個(gè)變量。
[0021]對(duì)于步驟S062,也就是說,調(diào)用一次蒙哥馬利模乘函數(shù),輸入兩個(gè)參數(shù)分別為NA、NBR, RE = MontF (NA, NBR),RE是NA和NB關(guān)于模數(shù)N的模乘結(jié)果。
[0022]在具體實(shí)施中,如圖7所示,所述步驟S04具體包括以下步驟:
步驟S071,根據(jù)第一輸入?yún)?shù)NA、第二輸入?yún)?shù)NB和所述蒙哥馬利模乘函數(shù),得到第三模乘結(jié)果NANBr ;
步驟S072,根據(jù)第三模乘結(jié)果NANBr、蒙哥馬利模乘轉(zhuǎn)換系數(shù)和所述蒙哥馬利模乘函數(shù),得到最終模乘結(jié)果。
[0023]對(duì)于步驟S071,調(diào)用一次蒙哥馬利模乘函數(shù),輸入兩個(gè)參數(shù)分別為A、B,NANBr =MontF (NA, NB),NANBr 是一個(gè)變量。
[0024]對(duì)于步驟S072,調(diào)用一次蒙哥馬利模乘函數(shù),輸入兩個(gè)參數(shù)分別為NANBr、R2,RE=MontF (NANBr, R2),RE是NA和NB關(guān)于模數(shù)N的模乘結(jié)果。
[0025]在具體實(shí)施中,本發(fā)明還提供一種實(shí)施例的嵌入式安全芯片,如圖8所示,所述嵌入式安全芯片包括獲取模塊1,蒙哥馬利模乘模塊2和次方計(jì)算模塊3 ;
獲取模塊1,用于獲取兩個(gè)第一預(yù)設(shè)參數(shù),和第二預(yù)設(shè)參數(shù),其中第一預(yù)設(shè)參數(shù)為常數(shù)
I ;
蒙哥馬利模乘模塊2,用于根據(jù)兩個(gè)第一預(yù)設(shè)參數(shù),得到第一運(yùn)算結(jié)果A ;
次方計(jì)算模塊3,用于根據(jù)所述蒙哥馬利模乘模塊2輸出的第一運(yùn)算結(jié)果A、第一預(yù)設(shè)參數(shù)、第二預(yù)設(shè)參數(shù)和次方計(jì)算函數(shù),得到第二運(yùn)算結(jié)果B,其中,第二預(yù)設(shè)參數(shù)為W-4,W =Φ (N),Φ是歐拉函數(shù),N是蒙哥馬利模乘中模數(shù),模數(shù)位長通常取值為192、239、521、1024、2048,第二預(yù)設(shè)參數(shù)只與模數(shù)N有關(guān),次方計(jì)算函數(shù)為計(jì)算IT1數(shù)的多少次方的函數(shù),R與IT1關(guān)于模數(shù)N互逆;
所述蒙哥馬利模乘模塊2,還用于根據(jù)第一運(yùn)算結(jié)果A和第二運(yùn)算結(jié)果B,得到蒙哥馬利模乘轉(zhuǎn)換系數(shù),以及根據(jù)第一輸入?yún)?shù)NA、第二輸入?yún)?shù)NB和蒙哥馬利模乘轉(zhuǎn)換系數(shù),得到最終模乘結(jié)果。
[0026]從上述芯片的方案可以看出,次方計(jì)算函數(shù)只與蒙哥馬利模乘函數(shù)有關(guān)系。不同的模數(shù)N,通過調(diào)用不同次數(shù)的蒙哥馬利模乘函數(shù),就能得到蒙哥馬利模乘的轉(zhuǎn)換系數(shù),從而避開大數(shù)模冪方式的計(jì)算轉(zhuǎn)換系數(shù),而且不需要事先計(jì)算好系數(shù),可以節(jié)省存儲(chǔ)空間,另外在沒有復(fù)雜大數(shù)庫基礎(chǔ)上,也能完成非對(duì)稱密鑰運(yùn)算,以及可用于檢查一個(gè)大數(shù)是否為素?cái)?shù)的必要條件和可用于檢查蒙哥馬利模乘算法正確性。如果計(jì)算的數(shù)越來越長,素?cái)?shù)域多個(gè)情況下,該算法的優(yōu)勢會(huì)更明顯。
[0027]在具體實(shí)施中,所述次方計(jì)算模塊3還用于:
根據(jù)所述第二預(yù)設(shè)參數(shù)E轉(zhuǎn)換成計(jì)算過程的編碼,得到運(yùn)算標(biāo)志數(shù)T和運(yùn)算標(biāo)志數(shù)T的位長度Ien ;
將第一運(yùn)算結(jié)果A賦值給中間結(jié)果S,即S = A,A值等于IT1數(shù);
對(duì)循環(huán)量i初始化,并將Ien-1值賦值給循環(huán)量i,即i=len_l ;
判斷循環(huán)量i是否大于等于零值;
當(dāng)循環(huán)量i大于等于零值時(shí),運(yùn)算標(biāo)志數(shù)T [i]的值是否滿足邏輯真;
當(dāng)循環(huán)量i小于零值時(shí),第二運(yùn)算結(jié)果B等于所述中間結(jié)果S,即S等于Ae;
當(dāng)運(yùn)算標(biāo)志數(shù)T [i]的值不滿足邏輯真時(shí),根據(jù)所述中間結(jié)果S、第一預(yù)設(shè)參數(shù)和蒙哥馬利模乘函數(shù),對(duì)所述中間結(jié)果S進(jìn)行更新,即S= MontF(S,I);
當(dāng)運(yùn)算標(biāo)志數(shù)T [i]的值滿足邏輯真時(shí),根據(jù)兩個(gè)所述中間結(jié)果S和蒙哥馬利模乘函數(shù),對(duì)所述中間結(jié)果S進(jìn)行更新,即S= MontF(S,S);
當(dāng)所述中間結(jié)果S進(jìn)行更新后,循環(huán)量i值自減常數(shù)1,即i=i_l接著進(jìn)入判斷循環(huán)量i是否大于等于零值的步驟。
[0028]在具體實(shí)施中,當(dāng)計(jì)算得到蒙哥馬利模乘轉(zhuǎn)換系數(shù)D之后,通過現(xiàn)有的普通模乘運(yùn)算,需要執(zhí)行四次蒙哥馬利模乘實(shí)現(xiàn)來普通數(shù)模乘運(yùn)算,而改進(jìn)后方式只需要執(zhí)行二次蒙哥馬利模就實(shí)現(xiàn)普通數(shù)模乘運(yùn)算,因此改進(jìn)后方式的實(shí)現(xiàn)控制運(yùn)算的狀態(tài)簡化了一倍,也就是說,所述蒙哥馬利模乘模塊2,還用于根據(jù)第一輸入?yún)?shù)NA、蒙哥馬利模乘轉(zhuǎn)換系數(shù)D和所述蒙哥馬利模乘函數(shù),得到第一模乘結(jié)果NAR ;
第二輸入?yún)?shù)NB、第一模乘結(jié)果NAR和所述蒙哥馬利模乘函數(shù),得到最終模乘結(jié)果。
[0029]或者,所述蒙哥馬利模乘模塊2,還用于根據(jù)第二輸入?yún)?shù)NB、蒙哥馬利模乘轉(zhuǎn)換系數(shù)和所述蒙哥馬利模乘函數(shù),得到第二模乘結(jié)果NBR ;
根據(jù)第一輸入?yún)?shù)NA、第二模乘結(jié)果NBR和所述蒙哥馬利模乘函數(shù),得到最終模乘結(jié)果O
[0030]或者,所述蒙哥馬利模乘模塊2,還用于根據(jù)第一輸入?yún)?shù)NA、第二輸入?yún)?shù)NB和所述蒙哥馬利模乘函數(shù),得到第三模乘結(jié)果NANBr ;
根據(jù)第三NANBr模乘結(jié)果、蒙哥馬利模乘轉(zhuǎn)換系數(shù)和所述蒙哥馬利模乘函數(shù),得到最終模乘結(jié)果。
[0031]以上所述僅為本發(fā)明的較佳實(shí)施例而已,并不用以限制本發(fā)明,凡在本發(fā)明的精神和原則之內(nèi)所作的任何修改、等同替換和改進(jìn)等,均應(yīng)包含在本發(fā)明的保護(hù)范圍之內(nèi)。
【主權(quán)項(xiàng)】
1.一種嵌入式安全芯片的蒙哥馬利模乘運(yùn)算方法,其特征在于:所述運(yùn)算方法包括以下步驟: 獲取兩個(gè)第一預(yù)設(shè)參數(shù),和第二預(yù)設(shè)參數(shù),其中第一預(yù)設(shè)參數(shù)為常數(shù)I; 根據(jù)兩個(gè)第一預(yù)設(shè)參數(shù)和蒙哥馬利模乘函數(shù),得到第一運(yùn)算結(jié)果A ; 根據(jù)第一運(yùn)算結(jié)果A、第一預(yù)設(shè)參數(shù)、第二預(yù)設(shè)參數(shù)和次方計(jì)算函數(shù),得到第二運(yùn)算結(jié)果B,其中,第二預(yù)設(shè)參數(shù)為W-4,W =Φ(Ν),Φ是歐拉函數(shù),N是蒙哥馬利模乘中模數(shù),第二預(yù)設(shè)參數(shù)只與模數(shù)N有關(guān),次方計(jì)算函數(shù)為計(jì)算IT1數(shù)的多少次方的函數(shù),R與IT1關(guān)于模數(shù)N互逆; 根據(jù)第一運(yùn)算結(jié)果Α、第二運(yùn)算結(jié)果B和所述蒙哥馬利模乘函數(shù),得到蒙哥馬利模乘轉(zhuǎn)換系數(shù); 根據(jù)第一輸入?yún)?shù)NA、第二輸入?yún)?shù)NB、蒙哥馬利模乘轉(zhuǎn)換系數(shù)和所述蒙哥馬利模乘函數(shù),得到最終模乘結(jié)果。
2.如權(quán)利要求1所述的運(yùn)算方法,其特征在于:所述根據(jù)第一運(yùn)算結(jié)果、第二預(yù)設(shè)參數(shù)和次方計(jì)算函數(shù),得到第二運(yùn)算結(jié)果,具體包括以下步驟: 根據(jù)所述第二預(yù)設(shè)參數(shù)轉(zhuǎn)換成計(jì)算過程的編碼,得到運(yùn)算標(biāo)志數(shù)T和運(yùn)算標(biāo)志數(shù)T的位長度Ien ; 將第一運(yùn)算結(jié)果A賦值給中間結(jié)果S ; 對(duì)循環(huán)量i初始化,并將Ien-1值賦值給循環(huán)量i ; 判斷循環(huán)量i是否大于等于零值; 當(dāng)循環(huán)量i大于等于零值時(shí),運(yùn)算標(biāo)志數(shù)T [i]的值是否滿足邏輯真; 當(dāng)循環(huán)量i小于零值時(shí),輸出第二運(yùn)算結(jié)果B,第二運(yùn)算結(jié)果B等于所述中間結(jié)果S ;當(dāng)運(yùn)算標(biāo)志數(shù)T [i]的值不滿足邏輯真時(shí),根據(jù)所述中間結(jié)果S、第一預(yù)設(shè)參數(shù)和蒙哥馬利模乘函數(shù),對(duì)所述中間結(jié)果S進(jìn)行更新; 當(dāng)運(yùn)算標(biāo)志數(shù)T [i]的值滿足邏輯真時(shí),根據(jù)兩個(gè)所述中間結(jié)果S和蒙哥馬利模乘函數(shù),對(duì)所述中間結(jié)果S進(jìn)行更新; 當(dāng)所述中間結(jié)果S進(jìn)行更新后,循環(huán)量i的值自減常數(shù)1,接著進(jìn)入判斷循環(huán)量i是否大于等于零值的步驟。
3.如權(quán)利要求2所述的運(yùn)算方法,其特征在于:根據(jù)所述第二預(yù)設(shè)參數(shù)轉(zhuǎn)換成計(jì)算過程的編碼,得到運(yùn)算標(biāo)志數(shù)T和運(yùn)算標(biāo)志數(shù)T的位