国产精品1024永久观看,大尺度欧美暖暖视频在线观看,亚洲宅男精品一区在线观看,欧美日韩一区二区三区视频,2021中文字幕在线观看

  • <option id="fbvk0"></option>
    1. <rt id="fbvk0"><tr id="fbvk0"></tr></rt>
      <center id="fbvk0"><optgroup id="fbvk0"></optgroup></center>
      <center id="fbvk0"></center>

      <li id="fbvk0"><abbr id="fbvk0"><dl id="fbvk0"></dl></abbr></li>

      實現(xiàn)sms4算法的加解密系統(tǒng)的制作方法

      文檔序號:7715727閱讀:547來源:國知局
      專利名稱:實現(xiàn)sms4算法的加解密系統(tǒng)的制作方法
      技術(shù)領(lǐng)域
      本發(fā)明涉及無線局域網(wǎng)分組密碼算法領(lǐng)域,具體為提出一種實現(xiàn)SMS4算法的加解密系統(tǒng)。
      背景技術(shù)
      SMS4密碼算法是國內(nèi)公布的第一個用于無線局域網(wǎng)產(chǎn)品的商用密碼算法,該算法是我國首個公開針對特殊領(lǐng)域的密碼算法,對無線局域網(wǎng)產(chǎn)業(yè)和商用密碼研究都有重要的意義。SMS4是基于S盒的分組對稱密碼算法,它對一組比特數(shù)據(jù)進行加解密運算,該算法的分組長度為128比特,密鑰長度為128比特。加密算法與密鑰擴展算法都采用32輪非線性迭代結(jié)構(gòu)。
      加密算法主要為讀入加解密數(shù)據(jù)和輪密鑰進行加密運算的過程。算法的加密變換包含異或運算和合成置換1\運算,其中合成置換1\運算是由線性變化和非線性變化t復合而成,即T乂) =1^"(.))。非線性變化t由4個并行的S盒構(gòu)成,S盒是固定的8比特輸入8比特輸出的變換;線性變化包含異或運算和左移運算。
      解密算法與加密算法的結(jié)構(gòu)完全相同,但使用輪密鑰的次序與之相反。
      加解密算法中的輪密鑰是加密密鑰MK通過輪密鑰擴展算法生成。該擴展算法的基本結(jié)構(gòu)也與加解密算法相同,同樣包含異或運算和合成置換T2運算。其中合成置換T2運算與加密算法中的合成置換l運算基本相同,僅僅將其中的線性變化修改為k,線性變化1^同樣包含異或運算和左移運算,形式略有不同。 實現(xiàn)SMS4算法的加解密系統(tǒng)在現(xiàn)有技術(shù)中存在多種實現(xiàn)方案,但這些方案大多基于以下架構(gòu)包括輪密鑰擴展模塊、控制模塊和加解密模塊。以加密操作為例,首先由輪密鑰擴展模塊讀入加密密鑰MK、系統(tǒng)參數(shù)FK和固定參數(shù)CK,其中FK和CK是固定值,讀入的所有參數(shù)經(jīng)過32輪迭代運算產(chǎn)生32個輪密鑰并存儲。當有明文進入加解密模塊,則加密運算啟動,并在每輪迭代中讀入相應(yīng)輪密鑰,直至完成32輪迭代加密操作,最終輸出密文。不同方案的區(qū)別在于加解密模塊的實現(xiàn)上。如果簡單按照算法中的操作,每一組明文都要經(jīng)過32輪迭代才能完成加密,而實際應(yīng)用中的時鐘頻率一般都比較低,從而導致單位時間內(nèi)加密的數(shù)據(jù)量少,效率低。如果強行提高時鐘頻率,又會給系統(tǒng)帶來較大的干擾,給集成電路芯片設(shè)計帶來困難。因此技術(shù)人員設(shè)計出了不同的加密運算結(jié)構(gòu)以減少循環(huán)次數(shù),提高加密效率。比如一輪循環(huán)中加入多個輪函數(shù)F,從而達到減少迭代次數(shù)的目的,只要保持輪函數(shù)F的個數(shù)與迭代次數(shù)的乘積是32即可。還可以在各輪函數(shù)F之間插入寄存器形成流水結(jié)構(gòu),使系統(tǒng)在同一時間內(nèi)可以對多組數(shù)據(jù)進行加解密運算。 但從系統(tǒng)全局的結(jié)構(gòu)考慮,加解密模塊和輪密鑰擴展模塊在功能上有較大的相似性,現(xiàn)有技術(shù)仍然使用兩個單獨的模塊來分別實現(xiàn)輪密鑰擴展以及加解密功能,使得系統(tǒng)在采用流水線結(jié)構(gòu)的情況下部件冗余度較高。

      發(fā)明內(nèi)容
      本發(fā)明的目的在于提出一種實現(xiàn)SMS4算法的加解密系統(tǒng),在采用流水線結(jié)構(gòu)的情況下降低系統(tǒng)的部件冗余度。 由于實現(xiàn)SMS4算法的加解密系統(tǒng)中加解密模塊和輪密鑰擴展模塊功能存在較大的相似性,為了降低部件冗余度,本發(fā)明基于模塊復用的思想提出一種實現(xiàn)SMS4算法的加解密系統(tǒng),包括第一級流水線、第二級流水線、第三級流水線; 所述第一級流水線包含第一運算模塊和第一存儲模塊;所述第二級流水線包含第二運算模塊和第二存儲模塊;所述第三級流水線包含第三運算模塊和第三存儲模塊;
      所述各級流水線的存儲模塊都包含控制參數(shù)區(qū)域、輸入數(shù)據(jù)區(qū)域和運算數(shù)據(jù)區(qū)域;所述控制參數(shù)區(qū)域用于存儲控制參數(shù),該控制參數(shù)指示工作模式和迭代輪次;所述輸入數(shù)據(jù)區(qū)域用于存儲輸入數(shù)據(jù),所述第一級流水線接收對應(yīng)輪次的輸入數(shù)據(jù),并保存于各級流水線的存儲模塊的輸入數(shù)據(jù)區(qū)域;所述運算數(shù)據(jù)區(qū)域用于存儲運算數(shù)據(jù),各級流水線的運算輸出結(jié)果保存于各級流水線的存儲模塊的運算數(shù)據(jù)區(qū)域; 所述工作模式包括密鑰擴展模式和加解密模式;所述工作模式由第一輪次的輸入數(shù)據(jù)決定,若輸入數(shù)據(jù)為加密密鑰則處于密鑰擴展模式,若輸入數(shù)據(jù)為明文或密文則處于加解密模式; 所述第一運算模塊將輸入數(shù)據(jù)與系統(tǒng)參數(shù)或零參數(shù)執(zhí)行異或操作,并將運算輸出結(jié)果保存于所述第一存儲模塊;所述第二運算模塊接收第一存儲模塊的運算輸出結(jié)果,然后將該運算輸出結(jié)果與固定參數(shù)或輪密鑰執(zhí)行異或操作,再進行S盒查表操作,并將運算輸出結(jié)果保存于所述第二存儲模塊;所述第三運算模塊接收第二存儲模塊的運算輸出結(jié)果,然后對該運算輸出結(jié)果執(zhí)行循環(huán)左移操作,再執(zhí)行異或運算,并將運算輸出結(jié)果保存于所述第三存儲模塊; 所述第二運算模塊在所述第三級流水線處于密鑰擴展模式時根據(jù)所述第三存儲模塊存儲的運算輸出結(jié)果來更新輪密鑰; 所述第三級流水線把運算輸出結(jié)果發(fā)送至第一級流水線進入下一迭代輪次,此時復制工作模式并將迭代輪次遞增;如果所述第三級流水線處于最后一個迭代輪次,則不把運算輸出結(jié)果發(fā)送至第一級流水線;若該最后一個迭代輪次為加解密模式下的最后一個迭代輪次,則把所述第三級流水線的運算輸出結(jié)果作為加解密運算結(jié)果。 本發(fā)明提出的實現(xiàn)SMS4算法的加解密系統(tǒng),采用包括第一級流水線、第二級流水線和第三級流水線組成的流水線架構(gòu),通過第一運算模塊、第二運算模塊和第三運算模塊這三個運算模塊,實現(xiàn)加解密運算和輪密鑰擴展運算的功能復用。雖然技術(shù)方案中存在三個運算模塊,但由于各個模塊僅完成運算的一部分,實質(zhì)相當于每個模塊僅為現(xiàn)有技術(shù)中輪函數(shù)模塊的三分之一,可以視為本發(fā)明僅采用一個復用的輪函數(shù)模塊,就可實現(xiàn)現(xiàn)有技術(shù)中需要兩個單獨的輪函數(shù)模塊才能實現(xiàn)的功能,直接降低了部件冗余度;并且本方案在采用流水線架構(gòu)下可以實現(xiàn)加解密處理的32次輪函數(shù)運算與輪密鑰擴展的32次輪函數(shù)運算穿插進行,即在每個周期用戶可以并發(fā)執(zhí)行3個運算,其中每一個運算可以為加解密運算或密鑰擴展運算。


      圖1為一個標準加密模塊的示意 圖2是一種輪密鑰擴展模塊的示意 圖3是實施例1的實現(xiàn)SMS4算法的加解密系統(tǒng)中三級流水線的內(nèi)部各模塊示意圖; 圖4為實施例2的實現(xiàn)SMS4算法的加解密系統(tǒng)第一級流水線的信號走向示意圖; 圖5為實施例2的實現(xiàn)SMS4算法的加解密系統(tǒng)第二級流水線的信號走向示意圖; 圖6為實施例2的實現(xiàn)SMS4算法的加解密系統(tǒng)第三級流水線的信號走向示意圖。
      具體實施例方式
      SMS4算法是國內(nèi)應(yīng)用于無線局域網(wǎng)領(lǐng)域的重要商用密碼算法,其中加解密算法和密鑰擴展算法都采用32輪非線性迭代結(jié)構(gòu)。解密算法和加密算法的結(jié)構(gòu)相同,只是輪密鑰的使用順序相反。 下面對加解密算法進行簡要介紹 設(shè)明文輸入為X。, &, X2, X3 ;密文輸入為Y。, Yp Y2, Y3 ;輪密鑰為rki,其中i = 0,1,2, ... ,31。用Z/表示e比特的二進制數(shù)集,則X, Y, rki都是32比特的二進制數(shù)集,用X,IX. eZf表示。算法的加解密變換為 《+4 = f(^,Xw,z,+2, z/+3, a)=《④《e jr,+2 jr,+3 0 ,a,),/ = o,i,".,3i F為輪函數(shù),進行如上的32輪迭代運算后,得到密文
      (HH) = (X35, X34, X33, X32) 解密變換與加密變換結(jié)構(gòu)相同,僅是輪密鑰的使用順序不同。當加密時輪密鑰的使用順序為rk。, rkn . . . , rk31 ;解密時輪密鑰的使用順序為rk31, rk3。, . . . , rk。。
      合成置換1\是一個可逆變換,由非線性變換t和線性變換復合而成,即1\ (.)=1^(1 (.))。非線性變換t由4個并行的S盒構(gòu)成,S盒為固定的8比特輸入8比特輸出的變換,記為Sbox(.)。 設(shè)輸入為A = (a" a2, a3, a4),輸出為B = (t^, b2, b3, b4),其中,a" a2, a3, a4, b"b2, b3,、都是8比特二進制數(shù),用A,a2,"3,"4,^,^,63,力4 sZ^表示。非線性變換t和線性變換k分別為 B = t (A) = (Sbox (a0) , Sbox (a》,Sbox (a2) , Sbox (a3)); c = A (萬)=5< 2)④ < 10) (萬《< 18)④(5 < 24)。 上述算法采用了比特異或和比特循環(huán)左移的基本運算;用e表示比特異或運算,用<<< i表示比特循環(huán)左移i位。 圖1為一個標準加密模塊的示意圖,由數(shù)據(jù)選擇器、輪函數(shù)F部件和寄存器組成。以加密過程為例數(shù)據(jù)選擇器判斷當前數(shù)據(jù)組的加密是否完成,若已經(jīng)完成則讀入新明文進行加密;若未完成則將上一輪的運算結(jié)果送入下一輪繼續(xù)進行加密運算。輪函數(shù)F部件是加解密模塊的核心部件,讀入待加密數(shù)據(jù)和輪密鑰進行加密運算,具體加密步驟如上文所述。寄存器是暫存上一輪的加密結(jié)果,直至32輪迭代加解密運算完成時輸出密文。
      下面對輪密鑰擴展算法進行簡要介紹 加解密算法中的輪密鑰由加密密鑰通過密鑰擴展算法生成,該算法基本結(jié)構(gòu)與加
      解密算法相同,也是經(jīng)過32輪迭代運算后生成32個輪密鑰。加密密鑰MK = (MK。, , MK2 , MK3) , e Z232 , i = 0 , 1 , 2 , 3 ;
      令《sZf,i = O,l, ... ,35,輪密鑰為A, eZ232 , i = O,l, ... ,31,則輪密鑰擴展
      算法為(《o' A,〖2, A )=(縦。
      FiiT。 , 十, M《2十尸《2, MA十13)
      rA =《+4 =尸'(《,,^+1,《+2,尺,+3,(^)=《時2(《+1 《+2 e《+3 CX》,/ = 0,1,....31
      T2變換與加解密算法中的1\基本相同,僅是線性變換修改為L2。設(shè)輸入為B, 輸出為C,則線性變換L2為C-Z2⑨-5①(S《〈13)④(S〈《23)。FK為系統(tǒng)參數(shù)FK。= (A3B1BAC6) ,F(xiàn)Ki = (56AA3350) , FK2 = (677D9197) , FK3 = (B27022DC),這些參數(shù)都是16進 制表示;CK是固定參數(shù)取值。 圖2是一種輪密鑰擴展模塊的示意圖,包括數(shù)據(jù)選擇器及異或運算器、 輪函數(shù)F—部件、寄存器三部分組成。輪密鑰擴展模塊的第一部分包含數(shù)據(jù)選擇 器和異或運算器,數(shù)據(jù)選擇器判斷當前輪密鑰組是否完全生成,若已完全生成則 接受新輸入的加密密鑰,否則將上輪運算結(jié)果作為輸入數(shù)據(jù)進行下一輪輪密鑰生 成運算;異或運算器對輸入的加密密鑰MK和系統(tǒng)參數(shù)FK進行異或運算,即完成 (尺o,&,《2,《3)-(Mii:。 eF《。,MA i^,MT^ F《2,M《3 0i^3)的運算。輪函數(shù)F—部 件讀入MK和FK的異或結(jié)果K以及CK,經(jīng)32輪迭代運算產(chǎn)生32個輪密鑰,具體運算過程如 上所述。寄存器依次儲存每一輪運算的輪密鑰,直至運算結(jié)束后輸出32個輪密鑰。
      從加解密算法和輪密鑰擴展算法的介紹中可以看出,加解密模塊和輪密鑰擴展模 塊存在較多功能相同的部件,可以從模塊復用角度來降低系統(tǒng)冗余度;并且輪密鑰運算和 加解密運算在時間上存在先后性,可以通過功能切換實現(xiàn)模塊復用。
      實施例1 : 本發(fā)明提出的實現(xiàn)SMS4算法的加解密系統(tǒng),包括第一級流水線、第二級流水線、 第三級流水線;圖3為三級流水線的內(nèi)部各模塊示意圖,其中第一級流水線包含第一運算 模塊和第一存儲模塊,第二級流水線包含第二運算模塊和第二存儲模塊,第三級流水線包 含第三運算模塊和第三存儲模塊。 各級流水線的存儲模塊都包含控制參數(shù)區(qū)域、輸入數(shù)據(jù)區(qū)域和運算數(shù)據(jù)區(qū)域,其 中控制參數(shù)區(qū)域用于存儲控制參數(shù),輸入數(shù)據(jù)區(qū)域用于存儲輸入數(shù)據(jù),運算數(shù)據(jù)區(qū)域用于 存儲運算數(shù)據(jù);控制參數(shù)包括工作模式和迭代輪次,各級流水線可以處于密鑰擴展模式和 加解密模式,這由第一輪次的輸入數(shù)據(jù)決定,若輸入數(shù)據(jù)為加密密鑰則處于密鑰擴展模式, 若輸入數(shù)據(jù)為明文或密文則處于加解密模式。 本實施例1的實現(xiàn)SMS4算法的加解密系統(tǒng)的工作過程如下,對于加解密運算則全 部以加密過程來進行描述 當系統(tǒng)執(zhí)行的密鑰擴展運算或加解密運算總數(shù)少于3個時,可以向系統(tǒng)輸入新的 運算操作。第一級流水線接收第一輪次的輸入數(shù)據(jù),將其保存于各級流水線的存儲模塊的 輸入數(shù)據(jù)區(qū)域,并根據(jù)輸入數(shù)據(jù)的類型確定工作模式,保存于控制參數(shù)區(qū)域,同時將控制參 數(shù)區(qū)域中的迭代輪次設(shè)定為1。 第一級流水線中的第一運算模塊將輸入數(shù)據(jù)與系統(tǒng)參數(shù)或零參數(shù)執(zhí)行異或操作,
      7第一存儲模塊對運算結(jié)果進行存儲。第二運算模塊接收第一存儲模塊的運算輸出結(jié)果,然 后將該運算輸出結(jié)果與固定參數(shù)或輪密鑰執(zhí)行異或操作,再進行S盒查表操作,第二存儲 模塊對運算結(jié)果進行存儲。第三運算模塊接收第二存儲模塊的運算輸出結(jié)果,然后對該運 算輸出結(jié)果執(zhí)行循環(huán)左移操作,再執(zhí)行異或運算,第三存儲模塊對運算結(jié)果進行存儲。如果 第三級流水線處于密鑰擴展模式,第三存儲模塊存儲的運算輸出結(jié)果應(yīng)該被送往第二運算 模塊,用于更新輪密鑰信息。 第一級流水線中的第一運算模塊執(zhí)行的操作與工作模式有關(guān)。若處于密鑰擴 展模式,輸入數(shù)據(jù)類型為加密密鑰,則第一運算模塊選擇系統(tǒng)參數(shù)來進行異或運算,以 MK。, M&, MK2, MKs表示加密密鑰,F(xiàn)K。, F&, FK2, FK3表示系統(tǒng)參數(shù),則異或運算輸出表示為 (尺。,A,K2,/Q = (MK。
      i^。,M^④i^,M^ @i^2,MK3 。若處于加解密模式,
      輸入數(shù)據(jù)類型為明文、密文,則第一運算模塊選擇零參數(shù)來進行異或運算,雖然與零異或的 數(shù)據(jù)沒有變化,但使得第一運算模塊在兩種工作模式下具有類似的結(jié)構(gòu),從而實現(xiàn)復用。
      第二級流水線中的第二運算模塊執(zhí)行的操作與工作模式有關(guān)。若處于加解密模 式,接收的數(shù)據(jù)類型為加解密中間數(shù)據(jù),以加密過程為例,用Xi, Xi+1, Xi+2, Xi+3表示明文或進 行加密運算的加解密中間數(shù)據(jù),rki表示輪密鑰,A表示輸出,則第二運算模塊選擇輪密鑰來 進行異或運算^ = e X,+2 0《+3 rl,,再將A作為輸入進行S盒查表運算,得到S盒查 表運算結(jié)果B,然后第二存儲模塊對B進行存儲。若處于密鑰擴展模式,接收的數(shù)據(jù)類型為 輪密鑰擴展中間數(shù)據(jù),以&, Ki+1 , Ki+2, Ki+3表示輪密鑰擴展中間數(shù)據(jù),CKi表示固定參數(shù),A表 示輸出,則第二運算模塊選擇固定參數(shù)進行異或運算^ = 《,.+2 尺,-+3 ,并將A 作為輸入進行S盒查表運算,得到查表運算結(jié)果B,然后第二存儲模塊對B進行存儲。類似 的,第二運算模塊在不同的工作模式中使用的參數(shù)包括輪密鑰和固定參數(shù),所以需要通過 數(shù)據(jù)選擇來選取,這樣既保證模塊的復用,又保證各種功能的實現(xiàn)。 第三級流水線中的第三運算模塊執(zhí)行的操作與工作模式有關(guān)。若處于加解
      密模式,接收的數(shù)據(jù)類型為加解密中間數(shù)據(jù),則對加解密中間數(shù)據(jù)執(zhí)行循環(huán)左移及異 或運算C-萬④C8 < 2) (5 <10) (S <18) (5 <24),然后再進行異或運算
      《+4 =《十c,第三存儲模塊將異或運算的輸出Xi+4進行存儲。若處于密鑰擴展模式,接
      收的數(shù)據(jù)類型為輪密鑰擴展中間數(shù)據(jù),則對輪密鑰擴展中間數(shù)據(jù)執(zhí)行循環(huán)左移及異或運算
      。=^@(^ <13,(^< 23),然后再進行異或運算^+4=《@0滯三存儲模塊將異或運
      算的輸出K^進行存儲。 當輸入數(shù)據(jù)分別經(jīng)過三級流水線,即完成一次迭代操作,第三級流水線將把運算 輸出結(jié)果發(fā)送至第一級流水線進入下一迭代輪次,此時工作模式應(yīng)維持不變,而迭代輪次 應(yīng)遞增。上述迭代過程需循環(huán)執(zhí)行32次,才能完成一次密鑰擴展運算或加密、解密運算。當 第三級流水線所處理的迭代輪次等于32,則不把運算輸出結(jié)果發(fā)送至第一級流水線,此時 若處于加解密模式則第三存儲模塊保存了加解密運算的輸出結(jié)果。而對于密鑰擴展模式, 第三存儲模塊存儲的運算輸出結(jié)果在每一次迭代結(jié)束時已被更新至第二運算模塊的輪密 鑰參數(shù)區(qū)域。
      實施例2 : 本實施例的實現(xiàn)SMS4算法的加解密系統(tǒng),包括第一級流水線、第二級流水線、第 三級流水線;圖3為三級流水線的內(nèi)部各模塊示意圖,其中第一級流水線包含第一運算模塊和第一存儲模塊,第二級流水線包含第二運算模塊和第二存儲模塊,第三級流水線包含 第三運算模塊和第三存儲模塊。 各級流水線的存儲模塊都包含控制參數(shù)區(qū)域、輸入數(shù)據(jù)區(qū)域和運算數(shù)據(jù)區(qū)域,其 中控制參數(shù)區(qū)域用于存儲控制參數(shù),輸入數(shù)據(jù)區(qū)域用于存儲輸入數(shù)據(jù),運算數(shù)據(jù)區(qū)域用于 存儲運算數(shù)據(jù);控制參數(shù)包括工作模式和迭代輪次,各級流水線可以處于密鑰擴展模式和 加解密模式,這由第一輪次的輸入數(shù)據(jù)決定,若輸入數(shù)據(jù)為加密密鑰則處于密鑰擴展模式, 若輸入數(shù)據(jù)為明文或密文則處于加解密模式。 第一運算模塊、第二運算模塊和第三運算模塊包含多種實現(xiàn)方式,在本實施例中 第一運算模塊包括第一數(shù)據(jù)選擇部件和第一異或部件,第二運算模塊包括第二數(shù)據(jù)選擇部 件、第二異或部件和S盒部件,第三運算模塊包括第三數(shù)據(jù)選擇部件、循環(huán)左移部件和第三 異或部件。 第一數(shù)據(jù)選擇部件、第二數(shù)據(jù)選擇部件和第三數(shù)據(jù)選擇部件都是用于數(shù)據(jù)的選擇 的部件,并接收數(shù)據(jù)中的控制參數(shù)來獲取工作模式和迭代輪次。第一異或部件、第二異或部 件和第三異或部件都是用于數(shù)據(jù)的異或運算,參與異或運算的數(shù)據(jù)部分來自數(shù)據(jù)選擇器的 輸出結(jié)果,對于不同的工作模式,異或部件執(zhí)行相同的操作,而數(shù)據(jù)選擇器根據(jù)工作模式來 為異或部件提供準確的數(shù)據(jù),從而實現(xiàn)不同的運算功能。S盒部件用于進行加解密中間數(shù)據(jù) 或輪密鑰擴展中間數(shù)據(jù)的S盒查表運算。循環(huán)左移部件用于對輸入數(shù)據(jù)進行包括循環(huán)左移 和異或的運算,循環(huán)左移部件先對輸入數(shù)據(jù)執(zhí)行四種帶參數(shù)的循環(huán)左移運算,該參數(shù)代表 左移的比特個數(shù),再對四種循環(huán)左移結(jié)果執(zhí)行異或操作。 圖4為第一級流水線中的信號走向示意圖,圖5為第二級流水線中的信號走向示 意圖,圖6為第三級流水線中的信號走向示意圖。 本實施例2的實現(xiàn)SMS4算法的加解密系統(tǒng)的工作過程如下,對于加解密運算則全 部以加密過程來進行描述 當系統(tǒng)執(zhí)行的密鑰擴展運算或加解密運算總數(shù)少于3個時,可以向系統(tǒng)輸入新的 運算操作。第一級流水線接收第一輪次的輸入數(shù)據(jù),將其保存于各級流水線的存儲模塊的 輸入數(shù)據(jù)區(qū)域,并根據(jù)輸入數(shù)據(jù)的類型確定工作模式,保存于控制參數(shù)區(qū)域,同時將控制參 數(shù)區(qū)域中的迭代輪次設(shè)定為1。 第一級流水線中的第一運算模塊將輸入數(shù)據(jù)與系統(tǒng)參數(shù)或零參數(shù)執(zhí)行異或操作, 第一存儲模塊對運算結(jié)果進行存儲。第二運算模塊接收第一存儲模塊的運算輸出結(jié)果,然 后將該運算輸出結(jié)果與固定參數(shù)或輪密鑰執(zhí)行異或操作,再進行S盒查表操作,第二存儲 模塊對運算結(jié)果進行存儲。第三運算模塊接收第二存儲模塊的運算輸出結(jié)果,然后對該運 算輸出結(jié)果執(zhí)行循環(huán)左移操作,再執(zhí)行異或運算,第三存儲模塊對運算結(jié)果進行存儲。如果 第三級流水線處于密鑰擴展模式,第三存儲模塊存儲的運算輸出結(jié)果應(yīng)該被送往第二運算 模塊,用于更新輪密鑰信息。 第一級流水線中的第一運算模塊包括第一數(shù)據(jù)選擇部件和第一異或部 件,其中第一數(shù)據(jù)選擇部件根據(jù)控制參數(shù)中包含的工作模式來選擇其輸出,若處 于密鑰擴展模式則選擇系統(tǒng)參數(shù),否則選擇零參數(shù)。第一異或部件將輸入數(shù)據(jù)與 第一數(shù)據(jù)選擇部件的輸出結(jié)果執(zhí)行異或操作。當處于密鑰擴展模式,輸入數(shù)據(jù) 類型為加密密鑰,此時第一數(shù)據(jù)選擇部件輸出系統(tǒng)參數(shù),以MK。, MK" MK2, MK3表示加密密鑰,F(xiàn)K。, FK" FK2, FK3表示系統(tǒng)參數(shù),則第 一 異或部件的運算輸出表示為
      (a:。,A,a:2,K3)-(m^:。 0i^r。,m^④i^,m《2 0i^2,m夂3④fa)。當處于加解密模式,
      輸入數(shù)據(jù)類型為明文、密文,此時第一數(shù)據(jù)選擇部件輸出零參數(shù),則第一異或部件將明文、 密文與零異或,亦即保持原來的數(shù)據(jù)。上述數(shù)據(jù)選擇及數(shù)據(jù)運算過程使得第一運算模塊在 兩種工作模式下具有類似的結(jié)構(gòu),從而實現(xiàn)復用。 工作模式在第一級流水線時被確定。在經(jīng)過第一級流水線中的運算之后,處于密 鑰擴展模式下的運算數(shù)據(jù)則為輪密鑰擴展中間數(shù)據(jù);處于加解密模式下的運算數(shù)據(jù)則為加
      解密中間數(shù)據(jù)。 第二級流水線中的第二運算模塊包括第二數(shù)據(jù)選擇部件、第二異或部件和S盒部 件。其中第二數(shù)據(jù)選擇部件根據(jù)控制參數(shù)中包含的工作模式來選擇其輸出,若處于密鑰擴 展模式則選擇固定參數(shù),否則根據(jù)迭代輪次來選擇對應(yīng)輪次的輪密鑰。第二異或部件將運 算數(shù)據(jù)與第二數(shù)據(jù)選擇部件的輸出結(jié)果執(zhí)行異或操作,S盒部件對第二異或部件的輸出結(jié) 果執(zhí)行S盒查表操作。當處于加解密模式,接收的數(shù)據(jù)類型為加解密中間數(shù)據(jù),以加密過 程為例,此時第二數(shù)據(jù)選擇部件輸出對應(yīng)輪次的輪密鑰,用Xi, Xi+1, Xi+2, Xi+3表示明文或進 行加密運算的加解密中間數(shù)據(jù),rki表示輪密鑰,A表示輸出,則第二異或部件首先執(zhí)行異 或運算爿=Zw④《+2 @ Z,+3④^ ,再將A作為輸入進行S盒查表運算,得到S盒查表運 算結(jié)果B,然后第二存儲模塊對B進行存儲。當處于密鑰擴展模式,接收的數(shù)據(jù)類型為輪密 鑰擴展中間數(shù)據(jù),此時第二數(shù)據(jù)選擇部件輸出固定參數(shù),以Ki, Ki+1, Ki+2, Ki+3表示輪密鑰擴 展中間數(shù)據(jù),CKi表示固定參數(shù),A表示輸出,則第二運算模塊選擇固定參數(shù)進行異或運算 x =《+1 e C《,并將A作為輸入進行S盒查表運算,得到查表運算結(jié)果B,然 后第二存儲模塊對B進行存儲。類似的,第二運算模塊在不同的工作模式中使用的參數(shù)包 括輪密鑰和固定參數(shù),所以需要通過數(shù)據(jù)選擇來選取,這樣既保證模塊的復用,又保證各種 功能的實現(xiàn)。 第三級流水線中的第三運算模塊包括第三數(shù)據(jù)選擇部件、循環(huán)左移部件和第三 異或部件。其中第三數(shù)據(jù)選擇部件根據(jù)控制參數(shù)中包含的工作模式來選擇其輸出,若處 于密鑰擴展模式則選擇參數(shù){0,0, 13,23},否則選擇參數(shù){2, 10, 18,24}。循環(huán)左移部件 對運算數(shù)據(jù)執(zhí)行循環(huán)左移和異或操作,先對運算數(shù)據(jù)執(zhí)行四種帶參數(shù)的循環(huán)左移運算,該 參數(shù)代表左移的比特個數(shù),再對四種循環(huán)左移結(jié)果執(zhí)行異或操作,而循環(huán)左移部件的參數(shù) 來自第三數(shù)據(jù)選擇部件的輸出結(jié)果。第三異或部件將輸入數(shù)據(jù)與循環(huán)左移部件的輸出結(jié) 果執(zhí)行異或操作。當處于加解密模式,接收的數(shù)據(jù)類型為加解密中間數(shù)據(jù),此時第三數(shù) 據(jù)選擇部件輸出參數(shù){2, 10, 18, 24},循環(huán)左移部件將對加解密中間數(shù)據(jù)執(zhí)行循環(huán)左移及 異或運算C^萬十(萬《<2) (5 <10) (B < 18) (5 < 24),然后再進行異或運算 Z,+4 = C ,第三存儲模塊將異或運算的輸出Xi+4進行存儲。當處于密鑰擴展模式,接收
      的數(shù)據(jù)類型為輪密鑰擴展中間數(shù)據(jù),此時第三數(shù)據(jù)選擇部件輸出參數(shù){0,0, 13,23},循環(huán)左 移部件將對輪密鑰擴展中間數(shù)據(jù)執(zhí)行循環(huán)左移及異或運算0 = 3 (萬<<<13) (^<<<23),
      然后再進行異或運算《+4 =《 C ,第三存儲模塊將異或運算的輸出Ki+4進行存儲。類似
      的,第三運算模塊在不同的工作模式中通過數(shù)據(jù)選擇器來選定兩組參數(shù)之一,從而改變循
      環(huán)左移部件的運算行為,從而實現(xiàn)既保證模塊的復用,又保證各種功能的實現(xiàn)。 當輸入數(shù)據(jù)分別經(jīng)過三級流水線,即完成一次迭代操作,第三級流水線將把運算輸出結(jié)果發(fā)送至第一級流水線進入下一迭代輪次,此時工作模式應(yīng)維持不變,而迭代輪次 應(yīng)遞增。上述迭代過程需循環(huán)執(zhí)行32次,才能完成一次密鑰擴展運算或加密、解密運算。當 第三級流水線所處理的迭代輪次等于32,則不把運算輸出結(jié)果發(fā)送至第一級流水線,此時 若處于加解密模式則第三存儲模塊保存了加解密運算的輸出結(jié)果。而對于密鑰擴展模式, 第三存儲模塊存儲的運算輸出結(jié)果在每一次迭代結(jié)束時已被更新至第二運算模塊的輪密 鑰參數(shù)區(qū)域。所以如圖6所示,第三存儲模塊的輸出包括輸出結(jié)果或中間結(jié)果或輪密鑰更 新數(shù)據(jù);在加解密模式下,一般的運算中該第三存儲模塊輸出都為中間結(jié)果,只有迭代輪次 等于32時此時第三存儲模塊的輸出才為加解密輸出結(jié)果;而在密鑰擴展模式下,一般第三 存儲模塊的輸出作為輪密鑰更新數(shù)據(jù),即輪密鑰擴展運算的輸出結(jié)果,被更新至第二運算 模塊的輪密鑰參數(shù)區(qū)域。 由于本發(fā)明是三級流水線結(jié)構(gòu),可同時對3組數(shù)據(jù)進行運算,提高運算效率。由于 各級的數(shù)據(jù)處理時間不同,有可能造成本級的數(shù)據(jù)還未處理完成,上一級的數(shù)據(jù)就已經(jīng)進 入本級導致數(shù)據(jù)沖突。作為本實施例的進一步改進,該實現(xiàn)SMS4算法的加解密系統(tǒng)還包括 時鐘模塊,時鐘模塊將產(chǎn)生的時鐘信號發(fā)送至第一存儲模塊、第二存儲模塊和第三存儲模 塊,三個存儲模塊都根據(jù)接收的時鐘信號進行數(shù)據(jù)的采樣并存儲運算結(jié)果。三個存儲模塊 都必須接收到新的時鐘信號,才能夠?qū)ι弦患墧?shù)據(jù)進行同步存儲。時鐘信號起到統(tǒng)一各級 工作節(jié)拍的作用,保證流水線各級的協(xié)調(diào)工作,使得系統(tǒng)工作效果更佳。
      現(xiàn)有技術(shù)中實現(xiàn)SMS4算法的加解密系統(tǒng)由加解密模塊和輪密鑰擴展模塊組成, 所占面積為2Sm+2S,2Sk,其中SM為數(shù)據(jù)選擇器面積,Sp為輪函數(shù)F的面積,S^為寄存器的面 積。每加密3組數(shù)據(jù),所消耗的時間為3X32X (TM+TF+TK),其中TM,TF,TK分別代表數(shù)據(jù)通過 數(shù)據(jù)選擇器、輪函數(shù)F和寄存器的時間。而本方案中,系統(tǒng)面積約為SM+SF+5SK,每加密3組 數(shù)據(jù)所消耗的時間為33X (TM+TF+3TK)。而在實現(xiàn)SMS4算法的加解密系統(tǒng)中,輪函數(shù)在面積 和時間的開銷上都占主要部分,即SF > SM+SK, TF > TM+TK。因此,本發(fā)明的技術(shù)方案相對于 現(xiàn)有技術(shù),在面積開銷減小約一半的情況下,時間開銷減小了 2/3。 以上所述的本發(fā)明實施方式,并不構(gòu)成對本發(fā)明保護范圍的限定。任何在本發(fā)明 的精神和原則之內(nèi)所作的修改、等同替換和改進等,均應(yīng)包含在本發(fā)明的權(quán)利要求保護范 圍之內(nèi)。
      權(quán)利要求
      一種實現(xiàn)SMS4算法的加解密系統(tǒng),其特征在于,包括第一級流水線、第二級流水線、第三級流水線;所述第一級流水線包含第一運算模塊和第一存儲模塊;所述第二級流水線包含第二運算模塊和第二存儲模塊;所述第三級流水線包含第三運算模塊和第三存儲模塊;所述各級流水線的存儲模塊都包含控制參數(shù)區(qū)域、輸入數(shù)據(jù)區(qū)域和運算數(shù)據(jù)區(qū)域;所述控制參數(shù)區(qū)域用于存儲控制參數(shù),該控制參數(shù)用于指示工作模式和迭代輪次;所述輸入數(shù)據(jù)區(qū)域用于存儲輸入數(shù)據(jù),所述第一級流水線接收對應(yīng)輪次的輸入數(shù)據(jù),并保存于各級流水線的存儲模塊的輸入數(shù)據(jù)區(qū)域;所述運算數(shù)據(jù)區(qū)域用于存儲運算數(shù)據(jù),各級流水線的運算輸出結(jié)果保存于各級流水線的存儲模塊的運算數(shù)據(jù)區(qū)域;所述工作模式包括密鑰擴展模式和加解密模式;所述工作模式由第一輪次的輸入數(shù)據(jù)決定,若輸入數(shù)據(jù)為加密密鑰則處于密鑰擴展模式,若輸入數(shù)據(jù)為明文或密文則處于加解密模式;所述第一運算模塊根據(jù)所述工作模式將輸入數(shù)據(jù)與系統(tǒng)參數(shù)或零參數(shù)執(zhí)行異或操作,并將運算輸出結(jié)果保存于所述第一存儲模塊;所述第二運算模塊接收第一存儲模塊的運算輸出結(jié)果,然后根據(jù)工作模式將該運算輸出結(jié)果與固定參數(shù)或輪密鑰執(zhí)行異或操作,再進行S盒查表操作,并將運算輸出結(jié)果保存于所述第二存儲模塊;所述第三運算模塊接收第二存儲模塊的運算輸出結(jié)果,然后根據(jù)工作模式對該運算輸出結(jié)果執(zhí)行循環(huán)左移操作,再執(zhí)行異或運算,并將運算輸出結(jié)果保存于所述第三存儲模塊;所述第二運算模塊在所述第三級流水線處于密鑰擴展模式時根據(jù)所述第三存儲模塊存儲的運算輸出結(jié)果來更新輪密鑰;所述第三級流水線把運算輸出結(jié)果發(fā)送至第一級流水線進入下一迭代輪次,復制工作模式并將迭代輪次遞增;如果所述第三級流水線處于最后一個 迭代輪次,則不把運算輸出結(jié)果發(fā)送至第一級流水線;若該最后一個迭代輪次為加解密模式下的最后一個迭代輪次,則把所述第三級流水線的運算輸出結(jié)果作為加解密運算結(jié)果。
      2. 根據(jù)權(quán)利要求1所述的實現(xiàn)SMS4算法的加解密系統(tǒng),其特征在于,所述第一運算模塊包括第一數(shù)據(jù)選擇部件和第一異或部件;所述第一數(shù)據(jù)選擇部件用于數(shù)據(jù)的選擇,選擇的依據(jù)是所述控制參數(shù)中包含的工作模式;若處于密鑰擴展模式,則選擇系統(tǒng)參數(shù);若處于加解密模式,則選擇零參數(shù)。所述第一異或部件用于對所述輸入數(shù)據(jù)與所述第一數(shù)據(jù)選擇部件的輸出結(jié)果執(zhí)行異或操作。
      3. 根據(jù)權(quán)利要求1所述的實現(xiàn)SMS4算法的加解密系統(tǒng),其特征在于,所述第二運算模塊包括第二數(shù)據(jù)選擇部件、第二異或部件和S盒部件;所述第二數(shù)據(jù)選擇部件用于數(shù)據(jù)的選擇,其選擇依據(jù)是所述控制參數(shù)中包含的工作模式;若處于密鑰擴展模式,則選擇固定參數(shù);若處于加解密模式,則選擇輪密鑰;選擇所述輪密鑰還依據(jù)所述控制參數(shù)中包含的迭代輪次;所述第二異或部件用于對所述運算數(shù)據(jù)與所述第二數(shù)據(jù)選擇部件的輸出結(jié)果執(zhí)行異或操作;所述S盒部件用于對所述第二異或部件的輸出結(jié)果執(zhí)行S盒查表操作。
      4. 根據(jù)權(quán)利要求1所述的實現(xiàn)SMS4算法的加解密系統(tǒng),其特征在于,所述第三運算模塊包括第三數(shù)據(jù)選擇部件、循環(huán)左移部件和第三異或部件;所述第三數(shù)據(jù)選擇部件用于數(shù)據(jù)的選擇,其選擇依據(jù)是控制參數(shù)中包含的工作模式;若處于密鑰擴展模式,則選擇參數(shù){0,0,13,23};若處于加解密模式,則選擇參數(shù){2,10,`18,24};所述循環(huán)左移部件用于對運算數(shù)據(jù)執(zhí)行循環(huán)左移和異或操作;所述循環(huán)左移部件先對運算數(shù)據(jù)執(zhí)行四種帶參數(shù)的循環(huán)左移運算,所述參數(shù)代表左移的比特個數(shù),再對四種循環(huán)左移結(jié)果執(zhí)行異或操作;所述循環(huán)左移部件的參數(shù)來自所述第三數(shù)據(jù)選擇部件的輸出結(jié)果;所述第三異或部件用于對所述輸入數(shù)據(jù)與所述循環(huán)左移部件的輸出結(jié)果執(zhí)行異或操作。
      5.根據(jù)權(quán)利要求1所述的實現(xiàn)SMS4算法的加解密系統(tǒng),其特征在于,還包括用于產(chǎn)生時鐘信號的時鐘模塊,所述時鐘模塊將產(chǎn)生的時鐘信號發(fā)送至所述第一存儲模塊、所述第二存儲模塊和所述第三存儲模塊,所述第一存儲模塊、所述第二存儲模塊和所述第三存儲模塊都根據(jù)接收的時鐘信號進行數(shù)據(jù)的存儲。
      全文摘要
      本發(fā)明涉及無線局域網(wǎng)分組密碼算法領(lǐng)域,提出一種實現(xiàn)SMS4算法的加解密系統(tǒng)包含第一運算模塊和第一存儲模塊的第一級流水線、包含第二運算模塊和第二存儲模塊的第二級流水線、包含第三運算模塊和第三存儲模塊的第三級流水線。本發(fā)明的技術(shù)方案中三個運算模塊實現(xiàn)加解密運算和輪密鑰擴展運算的功能復用,直接降低了部件冗余度,并使得系統(tǒng)占用面積更小。而且由于本發(fā)明采用了三級流水線結(jié)構(gòu),因此可以同時處理3組數(shù)據(jù),這3組數(shù)據(jù)任何一組可以是加解密運算或輪密鑰擴展運算,提高了系統(tǒng)的效率。
      文檔編號H04L9/06GK101764685SQ200910193308
      公開日2010年6月30日 申請日期2009年10月26日 優(yōu)先權(quán)日2009年10月26日
      發(fā)明者張永強 申請人:廣州杰賽科技股份有限公司
      網(wǎng)友詢問留言 已有0條留言
      • 還沒有人留言評論。精彩留言會獲得點贊!
      1