一種實現(xiàn)sm4分組對稱密碼算法的系統(tǒng)的制作方法
【專利摘要】本發(fā)明公開了一種實現(xiàn)SM4分組對稱密碼算法的系統(tǒng),包括:輸入密鑰處理及結(jié)果存儲器,用于對輸入密鑰進行處理,得到直接參與迭代運算的結(jié)果,并進行存儲;密鑰緩存器,用于根據(jù)控制模塊輸出的控制信號更新和存儲密鑰擴展運算的中間結(jié)果,即加密運算需要的輪密鑰;數(shù)據(jù)緩存器,用于根據(jù)控制模塊輸出的控制信號更新和存儲加解密迭代運算的中間結(jié)果;數(shù)據(jù)處理選擇模塊,用于根據(jù)控制模塊輸出的控制信號,選擇參與運算的數(shù)據(jù)為密鑰還是加解密的數(shù)據(jù);運算邏輯模塊,用于進行加解密運算和密鑰擴展運算;控制模塊,用于根據(jù)輸入的工作模式控制信號,輸出相應(yīng)的加解密控制信號和密鑰擴展控制信號。利用本發(fā)明,使得系統(tǒng)冗余度得到降低。
【專利說明】—種實現(xiàn)SM4分組對稱密碼算法的系統(tǒng)
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及分組密碼算法【技術(shù)領(lǐng)域】,尤其是一種實現(xiàn)SM4分組對稱密碼算法的系統(tǒng)。
【背景技術(shù)】
[0002]SM4分組對稱密碼算法即原SMS4算法,它是國內(nèi)公布的第一個用于無線局域網(wǎng)產(chǎn)品的商用密碼算法,該算法是我國首個公開針對特殊領(lǐng)域的密碼算法,對無線局域網(wǎng)產(chǎn)業(yè)和商用密碼研究都有重要的意義。SM4是基于S盒的分組對稱密碼算法,它對一組比特數(shù)據(jù)進行加解密運算,而不像流密碼那樣只針對單個比特運算。該算法的分組長度為128比特,密鑰長度為128比特。加密算法與密鑰擴展算法都采用32輪非線性迭代結(jié)構(gòu)。解密算法與加密算法的結(jié)構(gòu)相同,只是輪密鑰的使用順序相反。
[0003]加密算法主要為讀入加密數(shù)據(jù)和密鑰進行加密運算的過程。算法的加密變換包含異或運算和合成置換T運算,其中合成置換T運算是由線性變換L和非線性變換τ復(fù)合而成,即T(.) =L(t (.))。非線性變換τ由4個并行的S盒構(gòu)成,S盒是固定的8比特輸入8比特輸出的變換;線性變換L包含異或運算和循環(huán)左移運算。
[0004]對密鑰擴展算法而言,加密算法中的輪密鑰是加密密鑰MK通過密鑰擴展算法生成。而該擴展算法基本結(jié)構(gòu)與加解密算法相同,同樣包含異或運算和合成置換Τ’運算。其中合成置換Τ’運算與加密算法中的合成置換T運算基本相同,僅僅將其中的線性變換L修改為L’,線性變化L’同樣包含異或運算和左移運算,形式略有不同。
[0005]實現(xiàn)SM4算法的加解密系統(tǒng)在現(xiàn)有技術(shù)中存在多種方案,但這些方案大多基于以下架構(gòu),如圖1所示,現(xiàn)有技術(shù)中一個標準SM4加解密系統(tǒng)包括:密鑰擴展模塊、控制模塊和加解密模塊。以加密操作為例,首先由密鑰擴展模塊讀入加密密鑰ΜΚ、系統(tǒng)參數(shù)FK和固定參數(shù)CK,其中FK和CK是固定值,讀入的所有參數(shù)經(jīng)過32輪迭代運算產(chǎn)生32個輪密鑰并存儲。當(dāng)有明文進入加解密模塊,則加密運算啟動,并在每輪迭代中讀入相應(yīng)輪密鑰,直至完成32輪迭代加密操作,最終輸出密文。不同方案的區(qū)別在于加解密模塊的實現(xiàn)上。
[0006]但從系統(tǒng)全局的結(jié)構(gòu)考慮,加解密模塊和密鑰擴展模塊在功能上有較大的相似性,使用兩個模塊實現(xiàn)系統(tǒng)的功能使得系統(tǒng)的部件冗余度較高。
【發(fā)明內(nèi)容】
[0007](一 )要解決的技術(shù)問題
[0008]有鑒于此,本發(fā)明的主要目的在于提供一種實現(xiàn)SM4分組對稱密碼算法的系統(tǒng),以降低系統(tǒng)部件的冗余度。
[0009]( 二 )技術(shù)方案
[0010]為達到上述目的,本發(fā)明提供了一種實現(xiàn)SM4分組對稱密碼算法的系統(tǒng),包括:
[0011]輸入密鑰處理及結(jié)果存儲器,用于對輸入密鑰進行處理,得到直接參與迭代運算的結(jié)果,并進行存儲;[0012]密鑰緩存器,用于根據(jù)控制模塊輸出的控制信號更新和存儲密鑰擴展運算的中間結(jié)果,即加密運算需要的輪密鑰;
[0013]數(shù)據(jù)緩存器,用于根據(jù)控制模塊輸出的控制信號更新和存儲加解密迭代運算的中間結(jié)果;
[0014]數(shù)據(jù)處理選擇模塊,用于根據(jù)控制模塊輸出的控制信號,選擇參與運算的數(shù)據(jù)為密鑰還是加解密的數(shù)據(jù);
[0015]運算邏輯模塊,用于進行加解密運算和密鑰擴展運算;以及
[0016]控制模塊,用于根據(jù)輸入的工作模式控制信號,輸出相應(yīng)的加解密控制信號和密鑰擴展控制信號。
[0017]上述方案中,所述輸入密鑰處理及結(jié)果存儲器包括運算部件以及存儲單元,當(dāng)接收到密鑰時,該運算部件將該密鑰與固定常數(shù)進行運算,得到直接參與密鑰擴展算法進行迭代運算的數(shù)據(jù),并將該數(shù)據(jù)存儲于該存儲單元中。
[0018]上述方案中,所述密鑰緩存器包括一組存儲單元,用于根據(jù)控制模塊輸出的控制信號更新和存儲密鑰擴展迭代運算得到的中間結(jié)果。
[0019]上述方案中,所述數(shù)據(jù)緩存器包括一組存儲單元,用于根據(jù)控制模塊輸出的控制信號更新和存儲數(shù)據(jù)加解密迭代運算得到的中間結(jié)果。
[0020]上述方案中,所述數(shù)據(jù)處理選擇模塊為一個數(shù)據(jù)選擇器,用于選擇輸入到運算邏輯模塊的數(shù)據(jù)是加解密數(shù)據(jù)還是密鑰擴展數(shù)據(jù),如果控制模塊輸出的是加解密控制信號,則輸入到運算邏輯模塊的數(shù)據(jù)是加解密數(shù)據(jù);如果控制模塊輸出的是密鑰擴展信號,則輸入到運算邏輯模塊的數(shù)據(jù)是密鑰擴展數(shù)據(jù)。
[0021]上述方案中,所述運算邏輯模塊包括輪密鑰運算所需常數(shù)生成部件、第一運算部件、S盒部件、循環(huán)移位部件以及第二運算部件,其中:
[0022]所述輪密鑰運算所需常數(shù)生成部件,用于根據(jù)控制邏輯輸出的控制信號,按照相應(yīng)的數(shù)學(xué)原理生成輪密鑰生成時所需的常數(shù);
[0023]所述第一運算部件,用于完成加解密數(shù)據(jù)與輪密鑰進行的異或運算,或者密鑰數(shù)據(jù)與生成輪密鑰所需常數(shù)的異或運算;
[0024]所述S盒部件,用于在加解密模式或輪密鑰擴展模式時對數(shù)據(jù)進行S盒查表運算;
[0025]所述循環(huán)移位部件,用于完成循環(huán)移位與異或運算;
[0026]所述循環(huán)移位部件,用于先對輸入數(shù)據(jù)進行循環(huán)左移2、10、18、24、13、23位,循環(huán)左移2、10、18、24位所得的數(shù)據(jù)輸入數(shù)據(jù)相異或得到輸出結(jié)果A,循環(huán)左移13、23位所得到的數(shù)據(jù)與輸入數(shù)據(jù)相異或得到輸出結(jié)果B ;
[0027]所述第二運算部件,用于對所述循環(huán)移位部件的輸出結(jié)果A與數(shù)據(jù)緩存器中相應(yīng)的數(shù)據(jù)相異或得到A’,對所述循環(huán)移位部件的輸出結(jié)果B與密鑰緩存器中相應(yīng)的數(shù)據(jù)相異或得到B’。
[0028]上述方案中,所述第二運算部件的輸出A’與B’在控制模塊輸出的控制信號下分別存入數(shù)據(jù)緩存器或密鑰緩存器。
[0029]上述方案中,所述控制模塊根據(jù)輸入的工作模式信號產(chǎn)生相應(yīng)的加密運算控制信號和解密運算控制信號,實現(xiàn)加密運算過程和解密運算過程。[0030]上述方案中,所述加密運算過程為:加密運算開始時,輸入的128位明文直接載入數(shù)據(jù)緩存器,輸入密鑰處理及結(jié)果存儲器中存儲的數(shù)據(jù)載入密鑰緩存器模塊;密鑰緩存器僅有128位,采取不存儲所有輪密鑰,而是每輪加密前先計算輪密鑰的方式工作;控制模塊控制系統(tǒng)交替進行輪密鑰的生成與數(shù)據(jù)塊的加密,一組數(shù)據(jù)的加密通過64輪迭代完成。
[0031]上述方案中,所述解密運算過程為:SM4為對合運算,加密過程與解密過程使用相同的密鑰;假設(shè)加密過程輪密鑰的使用順序為Tkci~rk31,解密時輪密鑰的使用順序為rk31~Tktl ;解密運算開始時,128位密文直接載入數(shù)據(jù)緩存器,輸入密鑰處理及結(jié)果存儲器中存儲的數(shù)據(jù)載入密鑰緩存器;先由輸入密鑰通過32輪迭代計算出{rk31,rk3(l,rk29,rk28},在此過程中只進行密鑰擴展運算,不進行數(shù)據(jù)解密運算;之后,可由{rk31,rk3(l,rk29,rk28}反推得到rk27~riv在此過程中輪密鑰的生成與數(shù)據(jù)的解密交替進行;整個解密過程通過96輪迭代完成。
[0032](三)有益效果
[0033]本發(fā)明提供的實現(xiàn)SM4分組對稱密碼算法的系統(tǒng),基于模塊復(fù)用的思想,僅使用一個運算模塊就可完成加解密運算和輪密鑰擴展運算;利用了密鑰擴展運算的正反遞推性質(zhì),只存儲初始密鑰,不存儲輪密鑰,省去了 32輪輪密鑰占用的大量資源;基于以上所述思想和性質(zhì),使得系統(tǒng)冗余度得到降低。
【專利附圖】
【附圖說明】
[0034]圖1為現(xiàn)有技術(shù)中一個標準SM4加解密系統(tǒng)的示意圖;
[0035]圖2為本發(fā)明提供的實現(xiàn)SM4分組對稱密碼算法的系統(tǒng)的結(jié)構(gòu)示意圖;
[0036]圖3是基于本發(fā)明提供的實現(xiàn)SM4分組對稱密碼算法的系統(tǒng)進行加密過程的流程圖;
[0037]圖4是基于本發(fā)明提供的實現(xiàn)SM4分組對稱密碼算法的系統(tǒng)進行解密過程的流程圖。
【具體實施方式】
[0038]為使本發(fā)明的目的、技術(shù)方案和優(yōu)點更加清楚明白,以下結(jié)合具體實施例,并參照附圖,對本發(fā)明進一步詳細說明。
[0039]SM4算法是國內(nèi)應(yīng)用于無線局域網(wǎng)領(lǐng)域的重要商用密碼算法,其中加解密算法和密鑰擴展算法都采用32輪非線性迭代結(jié)構(gòu)。解密算法和加密算法的結(jié)構(gòu)相同,只是輪密鑰的使用順序相反。
[0040]下面對加解密算法進行簡要介紹:
[0041]定SlX為e比特的向量集,<<< i為32比特循環(huán)左移i位,?為32比特異或。
[0042]設(shè)明文輸入為(為,Z7,為,為)e(Zf)4,密文輸出為(70,K, Y2, Y3) e (Zf)4,輪密鑰Tki^Zf,i = 0,1,...,31。則該算法的加密過程為:
[0043]A;+J = F(X',X,+1,X+2,Λ;+3, rk ) = Λ; ?T(Λ;τ1 ? Χ+2 ? Χ+3 十 rk ),/ = 0,1,…,31 (I)
[0044](Y0, Y1, Y2, Y3) = (X35, X34, X33, X32)(2)
[0045]在(I)式中,F(xiàn)(.)稱為加密算法的輪函數(shù),T(.)為Zf ^Z232的可逆變換,由非線性變換τ和線性變換L復(fù)合而成,即Τ(.) = L( τ (.))。[0046]非線性變換τ由4個并行的S盒構(gòu)成。設(shè)輸入為
【權(quán)利要求】
1.一種實現(xiàn)SM4分組對稱密碼算法的系統(tǒng),包括: 輸入密鑰處理及結(jié)果存儲器,用于對輸入密鑰進行處理,得到直接參與迭代運算的結(jié)果,并進行存儲; 密鑰緩存器,用于根據(jù)控制模塊輸出的控制信號更新和存儲密鑰擴展運算的中間結(jié)果,即加密運算需要的輪密鑰; 數(shù)據(jù)緩存器,用于根據(jù)控制模塊輸出的控制信號更新和存儲加解密迭代運算的中間結(jié)果; 數(shù)據(jù)處理選擇模塊,用于根據(jù)控制模塊輸出的控制信號,選擇參與運算的數(shù)據(jù)為密鑰還是加解密的數(shù)據(jù); 運算邏輯模塊,用于進行加解密運算和密鑰擴展運算;以及 控制模塊,用于根據(jù)輸入的工作模式控制信號,輸出相應(yīng)的加解密控制信號和密鑰擴展控制信號。
2.根據(jù)權(quán)利要求1所述的實現(xiàn)SM4分組對稱密碼算法的系統(tǒng),其特征在于,所述輸入密鑰處理及結(jié)果存儲器包括運算部件以及存儲單元,當(dāng)接收到密鑰時,該運算部件將該密鑰與固定常數(shù)進行運算,得到直接參與密鑰擴展算法進行迭代運算的數(shù)據(jù),并將該數(shù)據(jù)存儲于該存儲單元中。
3.根據(jù)權(quán)利要求1所述的實現(xiàn)SM4分組對稱密碼算法的系統(tǒng),其特征在于,所述密鑰緩存器包括一組存儲單元,用于根據(jù)控制模塊輸出的控制信號更新和存儲密鑰擴展迭代運算得到的中間結(jié)果。
4.根據(jù)權(quán)利要求1所 述的實現(xiàn)SM4分組對稱密碼算法的系統(tǒng),其特征在于,所述數(shù)據(jù)緩存器包括一組存儲單元,用于根據(jù)控制模塊輸出的控制信號更新和存儲數(shù)據(jù)加解密迭代運算得到的中間結(jié)果。
5.根據(jù)權(quán)利要求1所述的實現(xiàn)SM4分組對稱密碼算法的系統(tǒng),其特征在于,所述數(shù)據(jù)處理選擇模塊為一個數(shù)據(jù)選擇器,用于選擇輸入到運算邏輯模塊的數(shù)據(jù)是加解密數(shù)據(jù)還是密鑰擴展數(shù)據(jù),如果控制模塊輸出的是加解密控制信號,則輸入到運算邏輯模塊的數(shù)據(jù)是加解密數(shù)據(jù);如果控制模塊輸出的是密鑰擴展信號,則輸入到運算邏輯模塊的數(shù)據(jù)是密鑰擴展數(shù)據(jù)。
6.根據(jù)權(quán)利要求1所述的實現(xiàn)SM4分組對稱密碼算法的系統(tǒng),其特征在于,所述運算邏輯模塊包括輪密鑰運算所需常數(shù)生成部件、第一運算部件、S盒部件、循環(huán)移位部件以及第二運算部件,其中: 所述輪密鑰運算所需常數(shù)生成部件,用于根據(jù)控制邏輯輸出的控制信號,按照相應(yīng)的數(shù)學(xué)原理生成輪密鑰生成時所需的常數(shù); 所述第一運算部件,用于完成加解密數(shù)據(jù)與輪密鑰進行的異或運算,或者密鑰數(shù)據(jù)與生成輪密鑰所需常數(shù)的異或運算; 所述S盒部件,用于在加解密模式或輪密鑰擴展模式時對數(shù)據(jù)進行S盒查表運算; 所述循環(huán)移位部件,用于完成循環(huán)移位與異或運算; 所述循環(huán)移位部件,用于先對輸入數(shù)據(jù)進行循環(huán)左移2、10、18、24、13、23位,循環(huán)左移2、10、18、24位所得的數(shù)據(jù)輸入數(shù)據(jù)相異或得到輸出結(jié)果A,循環(huán)左移13、23位所得到的數(shù)據(jù)與輸入數(shù)據(jù)相異或得到輸出結(jié) 果B ;所述第二運算部件,用于對所述循環(huán)移位部件的輸出結(jié)果A與數(shù)據(jù)緩存器中相應(yīng)的數(shù)據(jù)相異或得到A’,對所述循環(huán)移位部件的輸出結(jié)果B與密鑰緩存器中相應(yīng)的數(shù)據(jù)相異或得到B,。
7.根據(jù)權(quán)利要求6所述的實現(xiàn)SM4分組對稱密碼算法的系統(tǒng),其特征在于,所述第二運算部件的輸出A’與B’在控制模塊輸出的控制信號下分別存入數(shù)據(jù)緩存器或密鑰緩存器。
8.根據(jù)權(quán)利要求1所述的實現(xiàn)SM4分組對稱密碼算法的系統(tǒng),其特征在于,所述控制模塊根據(jù)輸入的工作模式信號產(chǎn)生相應(yīng)的加密運算控制信號和解密運算控制信號,實現(xiàn)加密運算過程和解密運算過程。
9.根據(jù)權(quán)利要求8所述的實現(xiàn)SM4分組對稱密碼算法的系統(tǒng),其特征在于,所述加密運算過程為: 加密運算開始時,輸入的128位明文直接載入數(shù)據(jù)緩存器,輸入密鑰處理及結(jié)果存儲器中存儲的數(shù)據(jù)載入密鑰緩存器模塊;密鑰緩存器僅有128位,采取不存儲所有輪密鑰,而是每輪加密前先計算輪密鑰的方式工作;控制模塊控制系統(tǒng)交替進行輪密鑰的生成與數(shù)據(jù)塊的加密,一組數(shù)據(jù)的加密通過64輪迭代完成。
10.根據(jù)權(quán)利要求9所述的實現(xiàn)SM4分組對稱密碼算法的系統(tǒng),其特征在于,所述解密運算過程為: SM4為對合運算,加密過程與解密過程使用相同的密鑰;假設(shè)加密過程輪密鑰的使用順序為咖~rk31,解密時輪密鑰的使用順序為rk31~;解密運算開始時,128位密文直接載入數(shù)據(jù)緩存器,輸入密鑰處理及結(jié)果存儲器中存儲的數(shù)據(jù)載入密鑰緩存器;先由輸入密鑰通過32輪迭代計算出{rk31,rk3(l,rk29, rk28},在此過程中只進行密鑰擴展運算,不進行數(shù)據(jù)解密運算;之后 ,可由{rk31, rk3(l,rk29,rk28}反推得到rk27~rlv在此過程中輪密鑰的生成與數(shù)據(jù)的解密交替進行;整個解密過程通過96輪迭代完成。
【文檔編號】H04L9/06GK103812641SQ201210441335
【公開日】2014年5月21日 申請日期:2012年11月7日 優(yōu)先權(quán)日:2012年11月7日
【發(fā)明者】黑勇, 王晨光, 喬樹山, 任高峰 申請人:中國科學(xué)院微電子研究所