一種超高速實現(xiàn)sm4算法的系統(tǒng)及其運行方法
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及一種超高速實現(xiàn)SM4算法的系統(tǒng)及其運行方法,屬于信息加密技術(shù)領(lǐng)域。
【背景技術(shù)】
[0002]2012年3月,國家密碼安全局正式確立SM4分組密碼算法作為行業(yè)標準,目前,SM4標準在我國部分領(lǐng)域已經(jīng)得到一定規(guī)模的商用推廣。未來十年,無線局域網(wǎng)、金融、國防、電子商務(wù)、視頻加密等領(lǐng)域?qū)⑿枰麵億個SM4算法的加解密系統(tǒng),因此,研制高性能的SM4算法加解密系統(tǒng)成為業(yè)內(nèi)普遍關(guān)注的熱點。
[0003]SM4算法是一個分組密碼算法,數(shù)據(jù)長度為128比特,密鑰長度也為128比特。密鑰經(jīng)過32次非線性迭代運算,生成32個32位輪密鑰。將明文分組為4組32位數(shù)據(jù)后,明文數(shù)據(jù)Xo、Xp Χ2、&與輪密鑰rk C1進行非線性迭代運算(簡稱一次F變換),得到X i+4 =F(Xi,Xi+1,Xi+2,Xi+3,rki),經(jīng)過如此32輪F變換后,將最后四輪生成的數(shù)據(jù)反序輸出,即得128比特的加密密文。為了實現(xiàn)密文的高安全性,每一加密運算都必須經(jīng)過32輪非線性迭代運算,每輪運算又包括異或、非線性變換τ (由四個S盒查找表構(gòu)成)、線性變換L (其中:L(B) = B ? (Β?<2)) ? (Β?<10) ? (Β?<18) ? (Β〈〈〈24))、再異或等許多步驟,從而得到 F(X。,X1, X2, X3, rki) = XO ? L(x (X1 ? X2? X3? rki))o 解密算法與加密算法的結(jié)構(gòu)相同,不同的只是輪密鑰的使用順序相反。密鑰擴展算法與加密算法類似,只需將其中的L變換變?yōu)長’變換,L’ (B) = B ? (B?<13)) ? (B〈〈〈23),故本發(fā)明中簡稱其完整的一輪變換為一次F’變換;同時,其F’變換的輸入變量要求為128位加密密鑰MK分為四組后分別與系統(tǒng)參數(shù)FKtl — FK3的異或,即MK Q? FK 0, MK1 ? FK1, MK2 ? FK2, MK3 ? FK3,以及每輪所需的固有參數(shù) CKi,從而得到 F,(MK0 ? FK O^MK1 ? FK1,MK2 ? FK2, MK3 ? FKpCKi) = (MK0 ? FK0) ? L,(τ ((MK1 ? FK1) ? (MK2 ? FK2) ? (MK3 ? FK3) ? CKi))。
[0004]SM4算法提供了卓越的安全性,但是其運算復雜度極高,過程冗長,非常不適應(yīng)于網(wǎng)絡(luò)傳輸和視頻加密等對速度要求較高的場合。由于軟件實現(xiàn)會受到處理器速度和串行運算方式的限制,很難達到高速數(shù)據(jù)流的實時加解密,因此,開發(fā)快速運行的硬件加速器,從而實現(xiàn)高速數(shù)據(jù)流的實時加解密功能,是當今SM4加解密系統(tǒng)設(shè)計中所亟需解決的重要問題。
[0005]中國專利文獻CN103812641A公開了一種實現(xiàn)SM4分組對稱密碼算法的系統(tǒng),包括:輸入密鑰處理及結(jié)果存儲器,用于對輸入密鑰進行處理,得到直接參與迭代運算的結(jié)果,并進行存儲;密鑰緩存器,用于根據(jù)控制模塊輸出的控制信號更新和存儲密鑰擴展運算的中間結(jié)果,并解密運算需要的輪密鑰;數(shù)據(jù)緩存器,用于根據(jù)控制模塊輸出的控制信號更新和存儲加解密迭代運算的中間結(jié)果;數(shù)據(jù)處理選擇模塊,用于根據(jù)控制模塊輸出的控制信號,選擇參與運算的數(shù)據(jù)為密鑰還是加解密的數(shù)據(jù);運算邏輯模塊,用于進行加解密運算和密鑰擴展運算;控制模塊,用于根據(jù)輸入的工作模式控制信號,輸出相應(yīng)的加解密控制信號和密鑰擴展控制信號。該專利存在以下缺陷:一次解密運算要經(jīng)過96輪迭代時間,嚴重降低了數(shù)據(jù)處理速度,不適用于一些對速度要求較高的場合。
[0006]中國專利文獻CN103746796A公開了一種實現(xiàn)智能卡SM4密碼算法的協(xié)處理器,該協(xié)處理器包括:接口模塊、有限狀態(tài)機模塊、寄存器文件模塊和邏輯功能模塊,其中,接口模塊用于實現(xiàn)與外部的控制模塊進行數(shù)據(jù)交互;有限狀態(tài)機模塊用于對寄存器文件模塊和邏輯功能模塊進行控制,并向接口模塊返回運行狀態(tài)信號;寄存器文件模塊用于對相應(yīng)寄存器進行讀/寫操作,及將數(shù)據(jù)送到邏輯功能模塊進行處理并取回相應(yīng)的結(jié)果;邏輯功能模塊用于對寄存器文件模塊發(fā)送來的數(shù)據(jù)輪流進行密鑰擴展的輪運算和加/解密的輪運算,直至32輪結(jié)束,并向寄存器文件模塊返回每次運算的結(jié)果。
[0007]上述兩項專利都是致力于降低系統(tǒng)的面積和冗余度,將密鑰擴展模塊與加/解密模塊合并,但是其由于密鑰擴展和數(shù)據(jù)加/解密不能同步進行,一次加密運算必須經(jīng)過32輪密鑰擴展和32輪加密總共64輪迭代時間,嚴重降低了數(shù)據(jù)處理速度,不適用于一些對速度要求較高的場合。
[0008]在傳統(tǒng)設(shè)計中,密鑰擴展模塊、加密模塊和解密模塊分立,通常都采用等待32個輪密鑰計算完畢后再啟動加密模塊的方法,顯然不能滿足網(wǎng)絡(luò)傳輸、視頻加密等高速領(lǐng)域的要求。同時,由于同一用戶的密鑰在大多時候都比較固定,同一輪密鑰可以連續(xù)加/解密多組數(shù)據(jù),這時傳統(tǒng)設(shè)計中仍需額外的密鑰擴展,不僅會降低運算的處理速度,也帶來不必要的動態(tài)功耗;而且,由于一組要處理的數(shù)據(jù)往往遠超128比特,多數(shù)應(yīng)用場合會有連續(xù)的加密或解密任務(wù),從而導致加密模塊連續(xù)運行但解密模塊長期閑置,或者解密模塊連續(xù)運行加密模塊長期閑置,降低了系統(tǒng)的利用率,嚴重影響了數(shù)據(jù)的運算速度。
【發(fā)明內(nèi)容】
[0009]針對現(xiàn)有技術(shù)的不足,本發(fā)明公開了一種超高速實現(xiàn)SM4算法的系統(tǒng);
[0010]本發(fā)明還公開了上述系統(tǒng)的運行方法;
[0011]本發(fā)明所述系統(tǒng)充分利用有限的面積資源,使得對高速數(shù)據(jù)流采用SM4加解密的過程十分簡單高效,所述系統(tǒng)作為微處理器外圍電路或作為IP核嵌入到片上系統(tǒng)中完成數(shù)據(jù)的實時加解密功能,適合于采用SM4算法作為加密標準的安全應(yīng)用領(lǐng)域,尤其適用于網(wǎng)絡(luò)傳輸和視頻加密等對速度要求較高的領(lǐng)域。
[0012]本發(fā)明的技術(shù)方案為:
[0013]一種超高速實現(xiàn)SM4算法的系統(tǒng),包括:控制模塊、密擴/加/解密模塊、加/解密模塊、解/加密模塊、數(shù)據(jù)分路器、密擴/加解密選擇器、輪密/結(jié)果分路器、結(jié)果選擇器,所述控制模塊包括微處理器接口、啟動模塊、數(shù)據(jù)通路模塊、數(shù)據(jù)緩存區(qū)、比較器、異或運算模塊和新/舊輪密選擇器,所述數(shù)據(jù)緩存區(qū)包括舊密鑰存儲區(qū)、新密鑰存儲區(qū)、系統(tǒng)參數(shù)存儲區(qū)、固有參數(shù)存儲區(qū)、原始數(shù)據(jù)存儲區(qū)、舊輪密存儲區(qū)、新輪密存儲區(qū)和結(jié)果數(shù)據(jù)存儲區(qū);
[0014]所述微處理器接口連接微處理器;所述啟動模塊的三組迭代次數(shù)輸入分別連接所述密擴/加/解密模塊、所述加/解密模塊、所述解/加密模塊的迭代次數(shù)輸出,所述啟動模塊的三個啟動指令輸出分別連接所述密擴/加/解密模塊、所述加/解密模塊、所述解/加密模塊的啟動指令輸入;所述數(shù)據(jù)通路模塊的三組迭代次數(shù)輸入分別連接所述密擴/加/解密模塊、所述加/解密模塊、所述解/加密模塊的迭代次數(shù)輸出,所述數(shù)據(jù)通路模塊的三個通路設(shè)好信號輸出分別連接所述密擴/加/解密模塊、所述加/解密模塊、所述解/加密模塊的通路設(shè)好信號輸入;所述數(shù)據(jù)通路模塊通過其第3、4、5、6組地址輸出連接所述數(shù)據(jù)分路器、所述密擴/加解密選擇器、所述輪密/結(jié)果分路器、所述結(jié)果選擇器的地址輸入;所述數(shù)據(jù)分路器的數(shù)據(jù)輸入連接所述原始數(shù)據(jù)存儲區(qū)的輸出和所述新/舊輪密選擇器的輸出;所述數(shù)據(jù)分路器的輸出連接所述密擴/加解密選擇器、所述加/解密模塊、所述解/加密模塊的數(shù)據(jù)輸入;所述密擴/加解密選擇器的數(shù)據(jù)輸入連接所述異或運算模塊、所述固有參數(shù)存儲區(qū)的輸出和所述數(shù)據(jù)分路器的輸出;所述密擴/加解密選擇器的輸出連接所述密擴/加/解密模塊的數(shù)據(jù)輸入;所述密擴/加/解密模塊的數(shù)據(jù)輸出連接所述輪密/結(jié)果分路器的數(shù)據(jù)輸入;所述輪密/結(jié)果分路器的輸出連接所述新輪密存儲區(qū)的輸入、所述結(jié)果選擇器的輸入;所述結(jié)果選擇器的數(shù)據(jù)輸入連接所述輪密/結(jié)果分路器的輸出、所述加/解密模塊的輸出、所述解/加密模塊的輸出;所述結(jié)果選擇器的輸出連接所述結(jié)果數(shù)據(jù)存儲區(qū);
[0015]所述密擴/加/解密模塊根據(jù)接收的所述控制模塊的指令,選擇自身的工作模式為密鑰擴展或者加密/解密,選擇自身的工作模式首選為密鑰擴展;所述加/解密模塊根據(jù)所述控制模塊輸出的數(shù)據(jù)選擇自身的工作模式為加密或者解密,選擇自身的工作模式首選為加密;所述解/加密模塊根據(jù)控制模塊輸出的數(shù)據(jù)選擇自身的工作模式為解密或者加密,選擇自身的工作模式首選為解密;所述微處理器接口用于接收微處理器傳送的指令和數(shù)據(jù),并將最終加解密結(jié)果返回;所述啟動模塊用于接收所述微處理器接口輸出的系統(tǒng)指令及所述密擴/加/解密模塊、所述加/解密模塊、所述解/加密模塊輸出的迭代次數(shù)信號,根據(jù)所述比較器傳送的密鑰是否變化信號,綜合分析確定當前的工作模塊及其工作模式,并輸出各模塊的工作模式、數(shù)據(jù)號、所需密鑰編號和系統(tǒng)的密鑰擴展編號發(fā)送給所述數(shù)據(jù)通路模塊,輸出啟動指令給所選模塊,啟動相應(yīng)模塊運行;所述數(shù)據(jù)通路模塊用于接收所述啟動模塊輸出的各模塊的工作模式、數(shù)據(jù)號、所需密鑰編號和系統(tǒng)的密鑰擴展編號,根據(jù)接收的所述密擴/加/解密模塊、所述加/解密模塊、所述解/加密模塊的迭代次數(shù)信號的變化,綜合分析,及時判定滿足新一輪運算條件的模塊,確定當前要設(shè)置的數(shù)據(jù)通路,輸出地址信號給所述固有參數(shù)存儲區(qū)、所述舊輪密存儲區(qū)、所述新輪密存儲區(qū)、所述新/舊輪密選擇器、所述數(shù)據(jù)分路器、所述密擴/加解密選擇器、所述輪密/結(jié)果分路器及所述結(jié)果選擇器,將數(shù)據(jù)順利送達所需模塊,最后輸出通路設(shè)好信號給需要通路的模塊。
[0016]根據(jù)本發(fā)明優(yōu)選的,所述密擴/加/解密模塊包括雙向移位寄存器組、帶保持的D觸發(fā)器組、狀態(tài)機模塊、F/F’變換模塊、帶使能可選入的D觸發(fā)器組,所述雙向移位寄存器組為四輸入32位雙向移位寄存器U0_3,所述四輸入32位雙向移位寄存器U0_3包括四個32位寄存器,即UO—U3,所述帶保持的D觸發(fā)器組為帶保持功能的32位D觸發(fā)器U4,所述帶使能可選入的D觸發(fā)器組為帶輸出使能可選輸入的32位D觸發(fā)器Yd ;
[0017]所述密擴/加/解密模塊的數(shù)據(jù)輸入模塊包括所述四輸入32位雙向移位寄存器U0_3及所述帶保持功能的32位D觸發(fā)器U4,所述密擴/加/解密模塊的數(shù)據(jù)輸出模塊為帶輸出使能可選輸入的32位D觸發(fā)器Yd,所述密擴/加/解密模塊的數(shù)據(jù)輸入模塊的數(shù)據(jù)輸出連接所述F/F’變換模塊的數(shù)據(jù)輸入,所述帶輸出使能可選輸入的32位D觸發(fā)器Yd的兩路數(shù)據(jù)輸入分別連接所述F/F’變換模塊的數(shù)據(jù)輸出、所述四輸入32位雙向移位寄存器U0_3的右移輸出Q3 ;所述四輸入32位雙向移位寄存器U0_3的左移輸入端DL與F/F’變換模塊的數(shù)據(jù)輸出相連接;
[0018]所述F/F’變換模塊用于根據(jù)接收的類型輸入信號將數(shù)據(jù)完成一次F變換或F’變換后輸出;所述狀態(tài)機模塊接收控制模塊的啟動指令和通路已設(shè)好指令,將迭代次數(shù)信號輸出給控制模塊,產(chǎn)生地址信號a2、al和a0,地址信號a2、al控制所述四輸入32位雙向移位寄存器U0_3的工作模式,地址信號a0控制所述帶保持功能的32位D觸發(fā)器U4的工作模式,產(chǎn)生地址信號a2al控制所述帶輸出使能可選輸入的32位D觸發(fā)器Yd,當所述四輸入32位雙向移位寄存器U0_3右移時選擇其右移輸出Q3作為數(shù)據(jù)輸入,否則,選擇F/F’變換模塊的數(shù)據(jù)輸出作為數(shù)據(jù)輸入,同時,還產(chǎn)生使能信號控制所述帶輸出使能可選輸入的32位D觸發(fā)器Yd是否輸出數(shù)據(jù);所述四輸入32位雙向移位寄存器U0_3的工作模式包括保持、右移、輸入、左移;所述帶保持功能的32位D觸發(fā)器U4工作模式為輸入或保持。
[0019]根據(jù)本發(fā)明優(yōu)選的,所述微處理器接口的指令輸出、密鑰輸出、數(shù)據(jù)輸出分別連接所述啟動模塊的指令輸入、新密鑰存儲區(qū)和比較器的輸入、原始數(shù)據(jù)存儲區(qū)的輸入;所述比較器的輸入連接所述微處理器接口的密鑰輸出和舊輪密存儲區(qū)的輸出;所述比較器的輸出連接所述啟動模塊的比較信號輸入;所述啟動模塊的使能信號輸出enl、enO分別連接所述新輪密存儲區(qū)賦值到I日輪密存儲區(qū)的使能輸入、新密鑰存儲區(qū)賦值到I日密鑰存儲區(qū)的使能輸入;所述啟動模塊的三個模塊數(shù)據(jù)號輸出、三個工作模式輸出、兩個所需密鑰編號輸出、一個密鑰擴展編號輸出分別連接所述數(shù)據(jù)通路模塊的三個模塊數(shù)據(jù)號輸入、三個工作模式輸入、兩個所需密鑰編號輸入、一個密鑰擴展編號輸入;所述數(shù)據(jù)通路模塊的數(shù)據(jù)號輸出連接所述微處理器接口的數(shù)據(jù)號輸入;所述數(shù)據(jù)通路模塊的第0、1、2組地址輸出分別連接所述固有參數(shù)存儲區(qū)、舊輪密存儲區(qū)和新輪密存儲區(qū)、新/舊輪密選擇器的地址輸入;所述異或運算模塊的輸入同時連接所述新密鑰存儲區(qū)的輸出和系統(tǒng)參數(shù)存儲區(qū)的輸出;所述新/舊輪密選擇器的數(shù)據(jù)輸入同時連接所述舊輪密存儲區(qū)的輸出和新輪密存儲區(qū)的輸出;所述舊密鑰存儲區(qū)的數(shù)據(jù)輸入連接所述新密鑰存儲區(qū)的輸出;所述舊輪密存儲區(qū)的數(shù)據(jù)輸入連接所述新輪密存儲區(qū)的輸出;所述結(jié)果數(shù)據(jù)存儲區(qū)的輸出連接所述微處理器接口的結(jié)果數(shù)據(jù)輸入。
[0020]所述的加/解密模塊和解/加密模塊的硬件結(jié)構(gòu)與密擴/加/解密模塊的硬件結(jié)構(gòu)一致,只需保留其F/F’變換模塊的F變換部分,并將類型輸入端口去掉即可。
[0021]上述系統(tǒng)均米用硬件描述語言VHDL(VHSICHardware Descript1n Language)或Verilog HDL設(shè)計成超大規(guī)模集成電路實現(xiàn)。
[0022]根據(jù)本發(fā)明優(yōu)選的,所述啟動模塊的運行方法,其中,內(nèi)部變量i表示工作模塊,i = 0,即模塊0,表示密擴/加/解密模塊;i = 1,即模塊1,表示加/解密模塊;i = 2,即模塊2,表不解/加密模塊;內(nèi)部變量nows jhao表不最新數(shù)據(jù)的編號;輸入信號ins表不加/解密指令;輸入信號cmp表示新密鑰和舊密鑰是否相同的比較結(jié)果;輸出信號enl表示新輪密存儲區(qū)賦值到舊輪密存儲區(qū)的使能信號;輸出信號enO表示新密鑰存儲區(qū)賦值到舊密鑰存儲區(qū)的使能信號;輸出信號mkh表示最新密鑰擴展的編號;輸出信號sjhao[i]表示模塊i所處理數(shù)據(jù)的編號,輸出信號sjhao [2:0]包括sjhao[2]、s jhao [I]和sjhao[0];moshi [i]表示模塊i的工作模式,moshi [i] = O表示密鑰擴展模式,moshi [i] = I表示加密模式,moshi [i] = 2表示解密模式,輸出信號moshi [2:0]包括moshi [2]、moshi [I]和moshi [0];輸出信號xmh[i]表示模塊i所需密鑰的編號,輸出信號xmh[2:l]包括xmh[2]和xmh[l];輸入信號ddai表示迭代次數(shù)信號,ddai [i] = j表示:當O < j < 32時,表示模塊i已完成j次迭代,當j = 33時,表示模塊i已經(jīng)完全空閑;輸出信號st [i]表示模塊i的啟動信號;步驟如下:
[0023]S1、系統(tǒng)初始化,將最新數(shù)據(jù)的編號和最新密鑰擴展的編號清零,即mows jhao =O,mkh = O ;
[0024]S2、若接收到微處理器接口傳來的加/解密指令ins,則進入S3,否則,停留在S2 ;
[0025]S3、存儲接收的加/解密指令ins,同時將最新數(shù)據(jù)的編號加1,即nows jhao++ ;
[0026]S4、根據(jù)比較器傳送來的新密鑰和舊密鑰是否相同的比較結(jié)果cmp,若新密鑰和舊密鑰相同,則進入S5 ;否則,進入S14 ;
[0027]S5、若接收的加/解密指令ins是加密指令,則進入S6,否則,進入SlO ;
[0028]S6、當加/解密模塊輸出的迭代次數(shù)信號ddai [I] = 33,判定加/解密模塊的運行狀態(tài)為空閑,進入S7 ;當加/解密模塊輸出的迭代次數(shù)信號ddai [I] ^ 33且解/加密模塊輸出的迭代次數(shù)信號ddai [2] = 33,判定解/加密模塊的運行狀態(tài)為空閑,進入S8 ;當加/解密模塊輸出的迭代次數(shù)信號ddai [I] ^ 33且解/加密模塊輸出的迭代次數(shù)信號ddai [2] ^ 33且密擴/加/解密模塊輸出的迭代次數(shù)信號ddai [O] = 33,判定密擴/加/解密模塊的運行狀態(tài)為空閑,進入S9 ;否則,停留在S6 ;
[0029]S7、選定當前數(shù)據(jù)工作模塊為加/解密模塊、工作模式為加密,即sjhao[l]=nows jhao, moshi [I] = 1,xmh[l] = mkh,通過指令接口輸出啟動信號st[l]給加/解密模塊,加/解密模塊啟動運行,返回S2 ;
[0030]S8、選定當前數(shù)據(jù)工作模塊為解/加密模塊、工作模式為加密,即sjhao[2]=nows jhao, moshi [2] = 1,xmh [2] = mkh,通過指令接口輸出啟動信號st[2]給解/加密模塊,解/加密模塊啟動運行,返回S2 ;
[0031]S9、選定當前數(shù)據(jù)工作模塊為密擴/加/解密模塊、工作模式為加密,即sjhao[0]=nows jhao, moshi [0] = 1,通過指令接口輸出啟動信號st[0]給密擴/加/解密模塊,密擴/加/解密模塊啟動運行,并運行在F變化下,返回S2 ;
[0032]S10、當解/加密模塊輸出的迭代次數(shù)信號ddai [2] = 33,判定解/加密模塊的運行狀態(tài)為空閑,進入Sll ;當解/加密模塊輸出的迭代次數(shù)信號ddai[2] ^ 33且加/解密模塊輸出的迭代次數(shù)信號ddai [I] = 33,判定加/解密模塊的運行狀態(tài)為空閑,進入S12 ;當解/加密模塊輸出的迭代次數(shù)信號ddai [2] ^ 33且加/解密模塊輸出的迭代次數(shù)信號ddai [I] ^ 33且密擴/加/解密模塊輸出的迭代次數(shù)信號ddai [0] = 33,判定密擴/加/解密模塊的運行狀態(tài)為空閑,進入S13 ;否則,停留在SlO ;
[0033]S11、選定當前數(shù)據(jù)工作模塊為解/加密模塊、工作模式為解密,即sjhao[2]=nowsjhao、moshi [2] = 2,xmh [2] = mkh,通過指令接口輸出啟動信號st[2]給解/加密模塊,解/加密模塊啟動運行,返回S2 ;
[0034]S12、選定當前數(shù)據(jù)工作模塊為加/解密模塊、工作模式為解密,即sjhao[l]=nowsjhao、moshi [I] = 2,xmh [I] = mkh,通過指令接口輸出啟動信號st[l]給加/解密模塊,加/解密模塊啟動運行,返回S2 ;
[0035]S13、選定當前數(shù)據(jù)工作模塊為密擴/加/解密模塊、工作模式為解密,即sjhao[0]=nowsjhao、moshi [0] = 2,通過指令接口輸出啟動信號st[0]給密擴/加/解密模塊,密擴/加/解密模塊啟動運行,并運行在F變化下,返回S2 ;
[0036]S14、當密擴/加/解密模塊輸出的迭代次數(shù)信號ddai為33,即ddai [O] = 33,判定密擴/加/解密模塊的運行狀態(tài)為空閑,進入S15 ;否則,停留在S14 ;
[0037]S15、選定當前的工作模塊為密擴/加/解密模塊、工作模式為密鑰擴展,即sjhao [O] = nows jhao、moshi [O] = 0,通過指令接口輸出啟動信號st[0]給密擴/加/解密模塊,密擴/加/解密模塊啟動運行,并運行在F’變化下;將當前密鑰擴展編號加1,即mkh++ ;同時,輸出使能信號enO選通新密鑰存儲區(qū)到舊密鑰存儲區(qū)的賦值,輸出使能信號enl選通新輪密存儲區(qū)到舊輪密存儲區(qū)的賦值;
[0038]S16、若接收的微處理器的指令是加密指令,則進入S17,否則,進入S20 ;
[0039]S17、當加/解密模塊輸出的迭代次數(shù)信號ddai [I] = 33,判定加/解密模塊的運行狀態(tài)為空閑,進入S18 ;當加/解密模塊輸出的迭代次數(shù)信號ddai [I] ^ 33且解/加密模塊輸出的迭代次數(shù)信號ddai [2] = 33,判定解/加密模塊的運行狀態(tài)為空閑,進入S19 ;否則,停留在S17;
[0040]S18、選定當前數(shù)據(jù)工作模塊為加/解密模塊、工作模式為加密,即sjhao[l]=nowsjhao、moshi [I] = 1,xmh [I] = mkh,通過指令接口輸出啟動信號st[l]給加/解密模塊,加/解密模塊啟動運行,返回S2 ;
[0041]S19、選定當前數(shù)據(jù)工作模塊為解/加密模塊、工作模式為加密,即sjhao[2]=nowsjhao、moshi [2] = 1,xmh [2] = mkh,通過指令接口輸出啟動信號st[2]給解/加密模塊,解/加密模塊啟動運行,返回S2 ;
[0042]S20、當解/加密模塊輸出的迭代次數(shù)信號ddai [2] = 33,判定解/加密模塊的運行狀態(tài)為空閑,進入S21 ;當解/加密模塊輸出的迭代次數(shù)信號ddai [2] ^ 33且加/解密模塊輸出的迭代次數(shù)信號ddai [I] = 33,判定加/解密模塊的運行狀態(tài)為空閑,進入S22 ;否則,停留在S20 ;
[0043]S21、選定當前數(shù)據(jù)工作模塊為解/加密模塊、工作模式為解密,即sjhao[2]=nowsjhao、moshi [2] = 2,xmh [2] = mkh,通過指令接口輸出啟動信號st[2]給解/加密模塊,解/加密模塊啟動運行,返回S2 ;
[0044]S22、選定當前數(shù)據(jù)工作模塊為加/解密模塊、工作模式為解密,即sjhao[l]=nowsjhao、moshi [I] = 2,xmh [I] = mkh,通過指令接口輸出啟動信號st[l]給加/解密模塊,加/解密模塊啟動運行,返回S2。
[0045]根據(jù)本發(fā)明優(yōu)選的,所述數(shù)據(jù)通路模塊的運行方法,其中,內(nèi)部變量i表示工作模塊,i = 0,即模塊0,表示密擴/加/解密模塊;i = I,即模塊I,表示加/解密模塊;i = 2,即模塊2,表示解/加密模塊;內(nèi)部變量deng[i]表示模塊i由于所需密鑰尚未生成處在等待數(shù)據(jù)通路的狀態(tài),deng[i] = I表示模塊i在等待數(shù)據(jù)通路,deng[i] = O表示模塊i未等待數(shù)據(jù)通路;輸出信號sjh是已完成數(shù)據(jù)的編號;輸入信號mkh表示最新密鑰擴展的編號輸入信號;輸入信號sjhao [i]表不模塊i所處理數(shù)據(jù)的編號,輸入信號sjhao [2:0]包括sjhao [2] > sjhao [I]和 sjhao [0];輸入信號 moshi [i]表示模塊 i 的工作模式,moshi [i]=O表示密鑰擴展模式,moshi [i] = I表示加密模式,moshi [i] = 2表示解密模式,輸入信號moshi [2:0]包括moshi [2]、moshi [I]和moshi [0];輸入信號xmh[i]表示模塊i所需密鑰的編號,輸入信號xmh[2:1]包括xmh[2]和xmh[l];輸出信號add[0]—add[6]是輸出給相應(yīng)模塊的地址信號;輸出信號tong[i]表示模塊i的開啟數(shù)據(jù)通路信號;輸入信號ddai [i]表示模塊i的迭代次數(shù)信號,ddai [i] = j表示:當O < j < 32時,表示模塊i已完成j次迭代,當j = 33時,表示模塊i已經(jīng)完全空閑;通路任務(wù)Tongru和通路任務(wù)Tongchu是數(shù)據(jù)通路模塊內(nèi)部的子程序,通路任務(wù)Tongru負責開啟數(shù)據(jù)輸入通路,通路任務(wù)Tongchu負責開啟數(shù)