一種嵌入式安全芯片及其的蒙哥馬利模乘運(yùn)算方法
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及密碼學(xué)中非對(duì)稱密鑰算法領(lǐng)域,尤其涉及一種嵌入式安全芯片及其的蒙哥馬利模乘運(yùn)算方法。
【背景技術(shù)】
[0002]信息安全的安全保障基于安全算法,安全算法有一類是非對(duì)稱密鑰算法。非對(duì)稱密鑰算法的基本運(yùn)算是大數(shù)的模乘運(yùn)算,模乘運(yùn)算算法中效率高、便于實(shí)現(xiàn)的算法是蒙哥馬利模乘算法。蒙哥馬利模乘使用過(guò)程中需要把普通數(shù)轉(zhuǎn)換成蒙哥馬利數(shù),然后在根據(jù)系數(shù)進(jìn)行蒙哥馬利模乘運(yùn)算,那么轉(zhuǎn)換過(guò)程中需要用到轉(zhuǎn)換系數(shù),該轉(zhuǎn)換系數(shù)一般通過(guò)大數(shù)模冪算法計(jì)算得到,使得現(xiàn)有的嵌入式安全芯片中需要進(jìn)行復(fù)雜的大數(shù)運(yùn)算,那么嵌入式安全芯片中的算法需要花費(fèi)較多的運(yùn)行時(shí)間和資源。
【發(fā)明內(nèi)容】
[0003]本發(fā)明的目的旨在至少解決上述技術(shù)缺陷之一,提供一種嵌入式安全芯片及其的蒙哥馬利模乘運(yùn)算方法。
[0004]本發(fā)明提供一種嵌入式安全芯片的蒙哥馬利模乘運(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ù),次方計(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é)果。
從上述方法的方案可以看出,次方計(jì)算函數(shù)只與蒙哥馬利模乘函數(shù)有關(guān)系。不同的模數(shù)N,通過(guò)調(diào)用不同次數(shù)的蒙哥馬利模乘函數(shù),就能得到蒙哥馬利模乘的轉(zhuǎn)換系數(shù),從而避開(kāi)大數(shù)模冪方式的計(jì)算轉(zhuǎn)換系數(shù),而且不需要事先計(jì)算好系數(shù),可以節(jié)省存儲(chǔ)空間,另外在沒(méi)有復(fù)雜大數(shù)庫(kù)基礎(chǔ)上,也能完成非對(duì)稱密鑰運(yùn)算,以及可用于檢查一個(gè)大數(shù)是否為素?cái)?shù)的必要條件和可用于檢查蒙哥馬利模乘算法正確性。如果計(jì)算的數(shù)越來(lái)越長(zhǎng),素?cái)?shù)域多個(gè)情況下,該算法的優(yōu)勢(shì)會(huì)更明顯。
[0005]本發(fā)明提供還一種嵌入式安全芯片,所述嵌入式安全芯片包括:
獲取模塊,用于獲取兩個(gè)第一預(yù)設(shè)參數(shù),和第二預(yù)設(shè)參數(shù),其中第一預(yù)設(shè)參數(shù)為常數(shù)
I;
蒙哥馬利模乘模塊,用于根據(jù)兩個(gè)第一預(yù)設(shè)參數(shù),得到第一運(yùn)算結(jié)果A ; 次方計(jì)算模塊,用于根據(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ù),次方計(jì)算函數(shù)為計(jì)算IT1數(shù)的多少次方的函數(shù),R與R4關(guān)于模數(shù)N互逆;
所述蒙哥馬利模乘模塊,還用于根據(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é)果。
[0006]從上述芯片的方案可以看出,次方計(jì)算函數(shù)只與蒙哥馬利模乘函數(shù)有關(guān)系。不同的模數(shù)N,通過(guò)調(diào)用不同次數(shù)的蒙哥馬利模乘函數(shù),就能得到蒙哥馬利模乘的轉(zhuǎn)換系數(shù),從而避開(kāi)大數(shù)模冪方式的計(jì)算轉(zhuǎn)換系數(shù),而且不需要事先計(jì)算好系數(shù),可以節(jié)省存儲(chǔ)空間,另外在沒(méi)有復(fù)雜大數(shù)庫(kù)基礎(chǔ)上,也能完成非對(duì)稱密鑰運(yùn)算,以及可用于檢查一個(gè)大數(shù)是否為素?cái)?shù)的必要條件和可用于檢查蒙哥馬利模乘算法正確性。如果計(jì)算的數(shù)越來(lái)越長(zhǎng),素?cái)?shù)域多個(gè)情況下,該算法的優(yōu)勢(shì)會(huì)更明顯。
【附圖說(shuō)明】
[0007]圖1為本發(fā)明蒙哥馬利模乘運(yùn)算方法一種實(shí)施例的流程圖;
圖2為本發(fā)明蒙哥馬利模乘的系數(shù)中次方計(jì)算方法一種實(shí)施例的流程圖;
圖3為本發(fā)明蒙哥馬利模乘的系數(shù)中編碼計(jì)算方法一種實(shí)施例的流程圖;
圖4為本發(fā)明蒙哥馬利模乘的系數(shù)中編碼計(jì)算方法另一種實(shí)施例的流程圖;
圖5為本發(fā)明蒙哥馬利模乘的普通模乘運(yùn)算第一種實(shí)施例的流程圖;
圖6為本發(fā)明蒙哥馬利模乘的普通模乘運(yùn)算第二種實(shí)施例的流程圖;
圖7為本發(fā)明蒙哥馬利模乘的普通模乘運(yùn)算第三種實(shí)施例的流程圖;
圖8為本發(fā)明嵌入式安全芯片一種實(shí)施例的結(jié)構(gòu)示意圖。
【具體實(shí)施方式】
[0008]為了使本發(fā)明所解決的技術(shù)問(wèn)題、技術(shù)方案及有益效果更加清楚明白,以下結(jié)合附圖及實(shí)施例,對(duì)本發(fā)明進(jìn)行進(jìn)一步詳細(xì)說(shuō)明。應(yīng)當(dāng)理解,此處所描述的具體實(shí)施例僅僅用以解釋本發(fā)明,并不用于限定本發(fā)明。
[0009]本發(fā)明提供一種實(shí)施例嵌入式安全芯片的蒙哥馬利模乘運(yùn)算方法,如圖1所示,所述運(yùn)算方法包括以下步驟:
步驟S01,獲取兩個(gè)第一預(yù)設(shè)參數(shù),和第二預(yù)設(shè)參數(shù),其中第一預(yù)設(shè)參數(shù)為常數(shù)I ;
步驟S02,根據(jù)兩個(gè)第一預(yù)設(shè)參數(shù)和蒙哥馬利模乘函數(shù),得到第一運(yùn)算結(jié)果Α,第一運(yùn)算結(jié)果 A = MontF (I, I);
步驟S03,根據(jù)第一運(yùn)算結(jié)果Α、第一預(yù)設(shè)參數(shù)、第二預(yù)設(shè)參數(shù)和次方計(jì)算函數(shù),得到第二運(yùn)算結(jié)果B,其中,第二預(yù)設(shè)參數(shù)為W-4,W =Φ (N),Φ是歐拉函數(shù),N是蒙哥馬利模乘中模數(shù),模數(shù)位長(zhǎng)通常取值為192、239、521、1024、2048,第二預(yù)設(shè)參數(shù)只與模數(shù)N有關(guān),次方計(jì)算函數(shù)CoeffEx為計(jì)算IT1數(shù)的多少次方的函數(shù),第二運(yùn)算結(jié)果B= CoeffEx (A, ff-4),R與R4關(guān)于模數(shù)N互逆;
步驟S04,根據(jù)第一運(yùn)算結(jié)果A、第二運(yùn)算結(jié)果B和所述蒙哥馬利模乘函數(shù),得到蒙哥馬利模乘轉(zhuǎn)換系數(shù)D,D=MontF(A, B),即D= R2;
步驟S05,根據(jù)第一輸入?yún)?shù)NA、第二輸入?yún)?shù)NB、蒙哥馬利模乘轉(zhuǎn)換系數(shù)和所述蒙哥馬利模乘函數(shù),得到最終模乘結(jié)果RE,RE是第一輸入?yún)?shù)NA和第二輸入?yún)?shù)NB關(guān)于模數(shù)N的模乘結(jié)果。
[0010]從上述方法的方案可以看出,次方計(jì)算函數(shù)只與蒙哥馬利模乘函數(shù)有關(guān)系。不同的模數(shù)N,通過(guò)調(diào)用不同次數(shù)的蒙哥馬利模乘函數(shù),就能得到蒙哥馬利模乘的轉(zhuǎn)換系數(shù),從而避開(kāi)大數(shù)模冪方式的計(jì)算轉(zhuǎn)換系數(shù),而且不需要事先計(jì)算好系數(shù),可以節(jié)省存儲(chǔ)空間,另外在沒(méi)有復(fù)雜大數(shù)庫(kù)基礎(chǔ)上,也能完成非對(duì)稱密鑰運(yùn)算,以及可用于檢查一個(gè)大數(shù)是否為素?cái)?shù)的必要條件和可用于檢查蒙哥馬利模乘算法正確性。如果計(jì)算的數(shù)越來(lái)越長(zhǎng),素?cái)?shù)域多個(gè)情況下,該算法的優(yōu)勢(shì)會(huì)更明顯。
[0011]在具體實(shí)施中,如圖2所示,所述步驟S03具體包括以下步驟:
步驟S031,根據(jù)所述第二預(yù)設(shè)參數(shù)E轉(zhuǎn)換成計(jì)算過(guò)程的編碼,得到運(yùn)算標(biāo)志數(shù)T和運(yùn)算標(biāo)志數(shù)T的位長(zhǎng)度len,進(jìn)入步驟S032 ;
步驟S032,將第一運(yùn)算結(jié)果A賦值給中間結(jié)果S,即S = A,A值等于IT1數(shù),進(jìn)入步驟S033;
步驟S033,對(duì)循環(huán)量i初始化,并將Ien-1值賦值給循環(huán)量i,即i=len_l進(jìn)入步驟S034 ;
步驟S034,判斷循環(huán)量i是否大于等于零值,如果是,步驟S035,如果否,步驟S036 ;步驟S035,當(dāng)循環(huán)量i大于等于零值時(shí),T[i]的值是否滿足邏輯真,如果是,進(jìn)入步驟S038,如果否,進(jìn)入步驟S037 ;
步驟S036,當(dāng)循環(huán)量i小于零值時(shí),輸出第二運(yùn)算結(jié)果B,第二運(yùn)算結(jié)果B等于所述中間結(jié)果S,即S等于Ae;
步驟S037,當(dāng)T[i]的值不滿足邏輯真時(shí),根據(jù)所述中間結(jié)果S、第一預(yù)設(shè)參數(shù)和蒙哥