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