国产精品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>

      一種低復雜度的AES一體化加解密器實現(xiàn)方法與流程

      文檔序號:12131441閱讀:495來源:國知局
      一種低復雜度的AES一體化加解密器實現(xiàn)方法與流程

      本發(fā)明屬于通信領(lǐng)域,具體涉及一種低復雜度AES一體化加解密器實現(xiàn)方法。



      背景技術(shù):

      隨著科技的進步,信息的交換在人們生活中越加頻繁,保證信息的安全傳輸成為通信中至關(guān)重要的一環(huán)。美國國家標準與技術(shù)研究院(NIST)在2001年制定和公布了AES(Advanced Encryption Standard)加密算法,它已取代DES加密算法成為現(xiàn)今最流行的加密方式之一。AES加密算法具有安全性高,流程簡單,編碼緊湊等特點,能滿足大多數(shù)情況下信息加密的需要。

      AES是一種對稱密鑰分組的加密算法。為滿足不同的情景需要,AES加密算法可以分別使用128、192或256位密鑰,其中128位密鑰最為常用,以下對AES算法的描述均是以128位密鑰模式為例。同時,作為一種迭代加密算法,AES根據(jù)密鑰長度的不同分別包括10,12或14輪循環(huán),每輪循環(huán)又稱作輪變換,包括以下四種運算:

      密鑰異或:數(shù)據(jù)與密鑰或子密鑰進行異或。

      盒變換:通過查表的方式,對輸入的數(shù)據(jù)按照字節(jié)進行替換,加密時進行S盒變換,解密時進行逆S盒變換。S盒與逆S盒的大小均為256字節(jié)。

      行變換:包括行位移與逆行位移,行位移和逆行位移分別用于加密和解密過程中,將輸入的16字節(jié)的數(shù)據(jù)按照先后順序進行排列,為便于描述,將這16個字節(jié)的數(shù)據(jù)命名為S0至S15,這些數(shù)據(jù)每4個字節(jié)分成一組,排列成如圖1左側(cè)行位移前所示的4行乘4列的矩陣形式。進行行位移時,矩陣中第一行數(shù)據(jù)的順序保持不變,第二行的數(shù)據(jù)循環(huán)左移一個字節(jié),第三行的數(shù)據(jù)循環(huán)左移兩個字節(jié),第四行的數(shù)據(jù)循環(huán)左移三個字節(jié)。逆行位移過程中,則改為循環(huán)右移。行位移與逆行位移的過程分別如圖1與圖2所示。

      列變換:包括列混淆與逆列混淆,在伽羅華域上對數(shù)據(jù)左乘一個矩陣,列混淆和逆列混淆分別用于加密和解密過程中,區(qū)別在于左乘的矩陣不同。列混淆與逆列混淆的過程分別如圖3與圖4所示,圖中所有數(shù)據(jù)均采用16進制表示。

      使用AES算法對數(shù)據(jù)進行加密的流程如下:

      待加密數(shù)據(jù)先與密鑰進行異或運算,接著依次完成S盒變換、行位移、列混淆以及密鑰異或運算,至此完成第一輪輪變換。之后按照S盒變換、行位移、列混淆、密鑰異或的順序完成第二輪到第九輪輪變換后,數(shù)據(jù)進入第十輪輪變換過程,此時數(shù)據(jù)先后進行S盒變換,行變換與密鑰異或操作即得到加密結(jié)果,第十輪中沒有列混淆操作,使用AES算法對數(shù)據(jù)進行加密的流程如圖5所示。

      使用AES算法對數(shù)據(jù)進行解密的流程如下:

      待解密數(shù)據(jù)先與密鑰進行異或運算,接著依次完成逆行位移、逆S盒變換、密鑰異或以及逆列混淆,至此完成第一輪解密輪變換。之后按照逆行位移、逆S盒變換、密鑰異或以及逆列混淆的順序完成第二至第九輪輪變換后,數(shù)據(jù)進入第十輪輪變換過程,此時數(shù)據(jù)先后進行逆行位移、逆S盒變換與密鑰異或運算,解密第十輪輪變換中沒有逆列混淆操作,使用AES算法對數(shù)據(jù)進行解密的流程如圖6所示。

      AES加密算法在軟件和硬件上都可以進行快速的加解密。尤其是在硬件上,AES加密的速度能夠大幅度提升,但是,過高的速度是以巨大的資源消耗為代價,在實際應(yīng)用中,還要著重考慮成本問題,如何在速度和資源這兩方面達到平衡值得很好地研究。

      現(xiàn)有資料中,基于FPGA的AES加解密器大多面向高速應(yīng)用,耗費很多的硬件資源,實現(xiàn)復雜度高。然而,在實際中,只有在很少的情形下才需要非常高的速率,更多情況下則是期望能夠盡可能地降低復雜度,從而降低實現(xiàn)成本。



      技術(shù)實現(xiàn)要素:

      本發(fā)明的目的在于,提供一種低復雜度的基于FPGA的AES一體化加解密器(以下簡稱加解密器)的實現(xiàn)方式,用以解決現(xiàn)有技術(shù)中AES加解密器實現(xiàn)復雜度過高的問題。

      首先重新定義AES加密過程的輪變換過程,從圖5可以看出,待加密數(shù)據(jù)首先需要進行一次密鑰異或操作,才開始進行第一輪加密,最后第十輪加密只包含三個運算過程。本發(fā)明中,將圖5中待加密數(shù)據(jù)后的第一次密鑰異或運算計入第一輪加密過程中,而將圖5中每一輪加密中的密鑰異或運算計入下一輪加密過程中,由此,本發(fā)明對數(shù)據(jù)進行加密的流程如圖7所示,對比圖5與圖7可以看出,兩者在對數(shù)據(jù)進行加密的流程上相同,只是在輪變換的定義上有所區(qū)別,因此,按照圖7對數(shù)據(jù)進行加密的結(jié)果和按照圖5對數(shù)據(jù)進行加密的結(jié)果相同。

      從前述可知,盒變換是對數(shù)據(jù)的內(nèi)容進行替換,不影響數(shù)據(jù)各字節(jié)的先后,而行變換是對數(shù)據(jù)進行順序調(diào)整,不影響數(shù)據(jù)的內(nèi)容。因此,對數(shù)據(jù)進行加密或解密時,相鄰的盒變換和行變換可以進行順序調(diào)整,順序調(diào)整后,運算結(jié)果不變。

      本發(fā)明對數(shù)據(jù)的解密流程如圖8所示,對比圖6和圖8,可以看出,兩者只在執(zhí)行逆S盒變換和逆行位移的先后順序上不同,而上述兩種運算的執(zhí)行順序不影響運算結(jié)果。因此,按照圖8對數(shù)據(jù)進行解密的結(jié)果和按照圖6對數(shù)據(jù)進行解密的結(jié)果相同。

      本發(fā)明提供的加解密器包括密鑰生成模塊11,用于生成加密與解密時的密鑰;密鑰異或模塊12,用于完成輸入信息與密鑰的異或;行變換模塊14,對輸入數(shù)據(jù)進行行位移與逆行位移運算;列變換模塊16,對數(shù)據(jù)進行列混淆與逆列混淆運算;盒變換模塊13,對數(shù)據(jù)進行S盒變換與逆S盒變換;數(shù)據(jù)緩存單元15,用于緩存行變換模塊輸出的數(shù)據(jù);第一數(shù)據(jù)選擇單元17-1,用于選擇輸入到密鑰異或模塊的數(shù)據(jù)來源;第二數(shù)據(jù)選擇單元17-2,用于選擇輸入到盒變換模塊的數(shù)據(jù)來源;第三數(shù)據(jù)選擇單元17-3,用于選擇輸入到列變換模塊的數(shù)據(jù)來源;第四數(shù)據(jù)選擇單元17-4,用于選擇輸入到數(shù)據(jù)選擇器17-1的數(shù)據(jù)來源;控制單元10,根據(jù)加解密器的工作模式與輪數(shù),控制密鑰生成模塊、盒變換模塊、行變換模塊、數(shù)據(jù)緩存單元、列變換模塊以及4個數(shù)據(jù)選擇器,對加密或解密的流程進行控制。加解密器整體架構(gòu)如圖9所示。

      本發(fā)明所提供的加解密器中的盒變換模塊13使用只讀存儲器(ROM)實現(xiàn),此ROM包含兩部分地址空間,前256個地址用于存儲加密的S盒變換數(shù)據(jù),后256個地址用于存儲解密的逆S盒變換數(shù)據(jù)。

      根據(jù)AES加解密算法,在密鑰生成時也需要進行S盒變換或逆S盒變換,本發(fā)明所提供的加解密器中的盒變換模塊使用雙口ROM實現(xiàn),該雙口ROM的1個端口用于完成數(shù)據(jù)的S盒與逆S盒變換,另一個端口用于完成密鑰的S盒與逆S盒變換。在FPGA中,單口ROM與雙口ROM耗用的存儲器資源相同。

      本發(fā)明所提供的加解密器中的數(shù)據(jù)緩存單元15使用雙口RAM實現(xiàn),其一個口用于接收行變換模塊的輸出,另一個口用于將數(shù)據(jù)輸出到數(shù)據(jù)選擇器17-3。數(shù)據(jù)緩存單元的大小為32個字節(jié),分成兩個區(qū)域A與B,每個區(qū)域為16個字節(jié),在進行加解密操作時,數(shù)據(jù)緩存單元的兩個區(qū)域采用乒乓操作方式,從而避免前后兩輪加密或者解密操作的數(shù)據(jù)沖突,進而提高對數(shù)據(jù)進行加密或者解密的速度。

      本發(fā)明所提供的加解密器中的行變換模塊14包括計數(shù)器20、加法器21、第一寄存器22、第二寄存器23、數(shù)據(jù)選擇器24、異或器25、移位器26。計數(shù)器20為16進制計數(shù)器,共包含4個比特,從高位到低位分別記為C[3],C[2],C[1]與C[0];寄存器22,共兩比特,高位為B[1],低位為B[0],B[1]的值與C[1]相同,B[0]的值與C[0]相同;寄存器23,共兩比特,高位為F[1],低位為F[0],F(xiàn)[1]的值為B[0]與B[1]異或的結(jié)果,F(xiàn)[0]的值與B[0]的值相同;數(shù)據(jù)選擇器24為二選一數(shù)據(jù)選擇器,其一個輸入端為寄存器22,另一個輸入端為寄存器23,數(shù)據(jù)選擇器24的選通信號由控制模塊10提供,當選通信號MODE為0時,選擇寄存器23輸出,當選通信號MODE為1時,選擇寄存器22輸出;移位器26,用于對數(shù)據(jù)選擇器24的輸出向左移動兩比特,完成對數(shù)據(jù)選擇器24的輸出乘以4的功能;加法器21,用于完成計數(shù)器20與移位器26的輸出相加的功能;異或器25用于完成對B[1]與B[0]進行異或運算的功能。當選通信號MODE設(shè)置為0時,行變換模塊工作在加密模式下,當選通信號MODE設(shè)置為1時,行變換模塊工作在解密模式下。本發(fā)明提供的行變換模塊的設(shè)計架構(gòu)如圖10所示。

      本發(fā)明所提供的加解密器中的列變換模塊16包括伽羅華域乘法器單元31、加法單元32、數(shù)據(jù)選擇器單元33、異或器單元34、寄存器單元35、數(shù)據(jù)緩存器單元36、數(shù)據(jù)選擇器37與計數(shù)器38;伽羅華域乘法器單元31包含三個伽羅華域乘法器31-1、31-2與31-3,分別完成對輸入數(shù)據(jù)Din3進行乘2、乘4與乘8的運算;加法單元32包含六個加法器32-1、32-2、32-3、32-4、32-5與32-6,32-4對Din3與31-3的輸出求和,求和結(jié)果為Din3乘以9,32-3對31-2與32-4的輸出求和,求和結(jié)果為Din3乘以13,32-2對31-2的輸出與31-3的輸出求和,求和結(jié)果為Din3乘以12,32-1對32-2的輸出與31-1的輸出求和,求和結(jié)果為Din3乘以14,32-5對31-1的輸出與Din3求和,求和結(jié)果為Din3乘以3,32-6對31-1與32-4的輸出求和,求和結(jié)果為Din3乘以11;數(shù)據(jù)選擇器單元33包括4個二選一數(shù)據(jù)選擇器,當選通信號MODE為0時,4個數(shù)據(jù)選擇器分別將Din3乘以2的結(jié)果、Din3、Din3、Din3乘以3的結(jié)果輸出,當選通信號MODE為1時,4個數(shù)據(jù)選擇器分別將Din3乘以14的結(jié)果、Din3乘以9的結(jié)果、Din3乘以13的結(jié)果、Din3乘以11的結(jié)果輸出;異或器單元34包括4個異或器,分別用于完成4個數(shù)據(jù)選擇器的輸出與寄存器組35中的A0、A1、A2與A3的異或運算;寄存器組35包括4個8比特數(shù)據(jù)存儲單元A0、A1、A2與A3,分別用于存儲異或器單元34的輸出結(jié)果;數(shù)據(jù)緩存器單元36包括4個8比特緩存器D0、D1、D2與D3,分別用于緩存寄存器組35中A0、A1、A2與A3的數(shù)據(jù);數(shù)據(jù)選擇器37,為一個四選一數(shù)據(jù)選擇器,在計數(shù)器38的控制下,將數(shù)據(jù)緩存器單元36中D0、D1、D2與D3的數(shù)據(jù)依次輸出;計數(shù)器38,為一個4進制計數(shù)器,共兩個比特,控制數(shù)據(jù)選擇器37進行數(shù)據(jù)選擇以及控制數(shù)據(jù)緩存器單元36對寄存器組35的數(shù)據(jù)進行緩存。當選通信號MODE設(shè)置為0時,列變換模塊工作在加密模式下,當選通信號MODE設(shè)置為1時,列變換模塊工作在解密模式下。本發(fā)明提供的列變換模塊的設(shè)計架構(gòu)如圖11所示。

      附圖說明

      圖1行位移運算原理示意圖;

      圖2逆行位移運算原理示意圖;

      圖3對某一列數(shù)據(jù)進行列混淆運算的原理示意圖;

      圖4對某一列數(shù)據(jù)進行逆列混淆運算的原理示意圖;

      圖5使用AES算法對數(shù)據(jù)進行加密的流程圖;

      圖6使用AES算法對數(shù)據(jù)進行解密的流程圖;

      圖7本發(fā)明對數(shù)據(jù)進行加密的流程圖;

      圖8本發(fā)明對數(shù)據(jù)進行解密的流程圖;

      圖9為本發(fā)明所提供的加解密器整體結(jié)構(gòu)框圖;

      圖10為本發(fā)明所提供的行變換模塊的結(jié)構(gòu)框圖;

      圖11為本發(fā)明所提供的列位移模塊的結(jié)構(gòu)框圖;

      圖12為本發(fā)明所提供的加解密器在加密模式下的簡化結(jié)構(gòu)框圖;

      圖13為本發(fā)明所涉及的加密流程時間順序示意圖;

      圖14為本發(fā)明所提供的加解密器在解密模式下第一層數(shù)據(jù)傳輸過程中的簡化結(jié)構(gòu)框圖;

      圖15為本發(fā)明所提供的加解密器在解密模式下第二層數(shù)據(jù)傳輸過程中的簡化結(jié)構(gòu)框圖;

      圖16為本發(fā)明所涉及的解密流程時間順序示意圖。

      具體實施方式

      下面結(jié)合圖10、圖1與圖2敘述本發(fā)明所提供的行變換模塊執(zhí)行行變換運算的過程,首先敘述行位移運算的過程,此時行變換模塊的選通信號MODE被設(shè)置為0,數(shù)據(jù)選擇器選擇寄存器23輸出。

      使用本發(fā)明提供的行變換模塊執(zhí)行行位移運算時,數(shù)據(jù)按照字節(jié)順序依次輸入行變換模塊,第一個數(shù)據(jù)S0輸入時,計數(shù)器20從0開始計數(shù),此時寄存器22為0,寄存器23為0,因此,移位器26的輸出為0,加法器21的輸出為0,即S0被寫到了0地址,圖1中S0的順序沒有改變;第二個數(shù)據(jù)S1輸入時,計數(shù)器20變成了1,此時寄存器22為1,寄存器23為3,因此,移位器26的輸出為12,加法器21的輸出為13,即S1被寫到了13地址,圖1中左側(cè)矩陣中的S1便移到了右側(cè)矩陣中的S1的位置;第三個數(shù)據(jù)S2輸入時,計數(shù)器20變成了2,此時寄存器22為2,寄存器23為2,因此,移位器26的輸出為8,加法器21的輸出為10,即S2被寫到了10地址,圖1中左側(cè)矩陣中的S2便移到了右側(cè)矩陣中S2的位置;以此類推,隨著計數(shù)器20依次增加,圖1中左側(cè)矩陣中的S2至S15便移到了右側(cè)矩陣中的S2至S15對應(yīng)的位置,從而完成了行位移運算。

      下面敘述逆行位移運算的過程,此時行變換模塊的選通信號MODE被設(shè)置為1,數(shù)據(jù)選擇器選擇寄存器22輸出。

      使用本發(fā)明提供的行變換模塊執(zhí)行逆行位移運算時,數(shù)據(jù)按照字節(jié)順序依次輸入行變換模塊,第一個數(shù)據(jù)S0輸入時,計數(shù)器20從0開始計數(shù),此時寄存器22為0,寄存器23為0,因此,移位器26的輸出為0,加法器21的輸出為0,即S0被寫到了0地址,圖2中S0的順序沒有改變;第二個數(shù)據(jù)S1輸入時,計數(shù)器20變成了1,此時寄存器22為1,寄存器23為3,因此,移位器26的輸出為4,加法器21的輸出為5,即S1被寫到了5地址,圖2中左側(cè)矩陣中的S1便移到了右側(cè)矩陣中的S1的位置;第三個數(shù)據(jù)S2輸入時,計數(shù)器20變成了2,此時寄存器22為2,寄存器23為2,因此,移位器26的輸出為8,加法器21的輸出為10,即S2被寫到了10地址,圖2中左側(cè)矩陣中的S2便移到了右側(cè)矩陣中S2的位置;以此類推,隨著計數(shù)器20依次增加,圖2中左側(cè)矩陣中的S2至S15便移到了右側(cè)矩陣中的S2至S15對應(yīng)的位置,從而完成了逆行位移運算。

      下面結(jié)合圖11、圖3與圖4敘述本發(fā)明所提供的列變換模塊執(zhí)行列變換運算的過程,首先敘述列混淆運算的過程,此時列變換模塊的選通信號MODE被設(shè)置為0,數(shù)據(jù)選擇器單元33選擇“0”支路輸出。

      使用本發(fā)明提供的列變換模塊執(zhí)行列混淆運算時,數(shù)據(jù)按照字節(jié)順序依次輸入列變換模塊,每4個數(shù)據(jù)分成一組,每一組的處理方式相同。下面以第一組數(shù)據(jù)為例加以說明。如圖3所示,第一組的四個數(shù)據(jù)分別為0xC9,0x6E,0x46與0xA6。

      第一個時鐘周期,第一個數(shù)據(jù)0xC9輸入,伽羅華域乘法器單元31、加法單元32與數(shù)據(jù)選擇器單元33配合,分別將0xC9×2,0xC9×1,0xC9×1與0xC9×3的結(jié)果輸出;在第一個時鐘周期,控制寄存器組35輸入到異或單元34的數(shù)據(jù)為0,使得異或單元34的輸出和數(shù)據(jù)選擇器的輸出相同,因此,0xC9×2,0xC9×1,0xC9×1與0xC9×3的結(jié)果分別被存到了寄存器組35中的A0,A1,A2與A3中;

      第二個時鐘周期,第二個數(shù)據(jù)0x6E輸入時,伽羅華域乘法器單元31、加法單元32與數(shù)據(jù)選擇器單元33配合,分別將0x6E×2,0x6E×1,0x6E×1與0x6E×3的結(jié)果輸出,另一方面,根據(jù)圖11所示,異或單元34需要將寄存器組35中的A1,A2,A3,A0分別與數(shù)據(jù)選擇器單元33的輸出進行異或,于是異或單元34分別完成0x6E×2+0xC9×1,0x6E×1+0xC9×1,0x6E×1+0xC9×3,0x6E×3+0xC9×2的運算,注意,此處的加法為異或和運算,異或運算的結(jié)果存入寄存器組35的A0,A1,A2與A3中;

      以此類推,第三個時鐘周期,異或單元34分別完成0x46×2+0x6E×1+0xC9×1,0x46×1+0x6E×1+0xC9×3,0x46×1+0x6E×3+0xC9×2,0x46×3+0x6E×2+0xC9×1的運算;第四個時鐘周期,異或單元34分別完成0xA6×2+0x46×1+0x6E×1+0xC9×3,0xA6×1+0x46×1+0x6E×3+0xC9×2,0xA6×1+0x46×3+0x6E×2+0xC9×1,0xA6×3+0x46×2+0x6E×1+0xC9×1的運算,異或運算的結(jié)果存入寄存器組35的A0,A1,A2與A3中;和圖3對照可以看出,此時,寫入到A1,A2,A3,A0分別為第一組的4個數(shù)進行列混淆運算后的結(jié)果;

      第五個時鐘周期,數(shù)據(jù)緩存器單元36將寄存器組35中的數(shù)據(jù)取出并儲存,接下來的第六到第九個時鐘,在計數(shù)器38的控制下,數(shù)據(jù)選擇器37依次將數(shù)據(jù)緩存器單元36中的D1,D2,D3與D0輸出,至此,第一組的4個數(shù)的列混淆操作完成。

      第二組的4個數(shù)據(jù)在第五到第八個時鐘周期輸入到列變換模塊,第三組的4個數(shù)據(jù)在第九到第十二個時鐘周期輸入到列變換模塊,第四組的4個數(shù)據(jù)在第十三到第十六個時鐘周期輸入到列變換模塊,對應(yīng)的列混淆運算后的結(jié)果依次在第十到第二十一個時鐘周期輸出,第二組到第四組的數(shù)據(jù)在列變換模塊中的處理方式和第一組數(shù)據(jù)的處理方式相同,此處不再贅述。

      從上述分析可知,從第一個數(shù)據(jù)輸入到列變換模塊到完成列混淆運算的第一個數(shù)據(jù)輸出需要經(jīng)過五個時鐘周期,為了減少路徑延遲,可以在列變換模塊的31到35之間的組合邏輯電路中插入一級流水線,此時,從第一個數(shù)據(jù)輸入到列變換模塊到完成列混淆運算的第一個數(shù)據(jù)輸出需要增加一個時鐘周期,即六個時鐘周期。

      至此,列混淆運算完成。

      使用本發(fā)明所提供的列變換模塊執(zhí)行逆列混淆運算的過程與執(zhí)行列混淆運算的過程類似,不同之處在于,此時列變換模塊的選通信號MODE被設(shè)置為1,數(shù)據(jù)選擇器單元33選擇“1”支路輸出,其余運算步驟相同,此處不再贅述。

      本發(fā)明所提供的加解密器根據(jù)用戶的輸入,可以工作在加密模式下,也可以工作在解密模式下。

      下面敘述使用本發(fā)明提供的加解密器的對數(shù)據(jù)進行加密操作的具體方式。

      加密模式下,外部輸入到控制模塊的模式輸入信號為“0”,此時,控制模塊將盒變換模塊、行變換模塊、列變換模塊與密鑰生成模塊的控制信號均設(shè)置成“0”,使上述模塊工作在加密模式下,同時,控制模塊設(shè)置數(shù)據(jù)選擇器17-2與17-3為支路“1”選通,此時,加解密器的架構(gòu)可簡化為圖12。

      下面結(jié)合圖7與圖12敘述本發(fā)明提供的加解密器對數(shù)據(jù)進行加密操作時的流程。

      第一輪加密時,控制器10控制17-1的“0”支路導通,控制17-4的“1”支路導通,外部的待加密數(shù)據(jù)通過17-1,進入密鑰異或模塊12,完成圖7所示的第一輪的密鑰異或操作,隨后數(shù)據(jù)先后通過盒變換模塊13與行變換模塊14進行圖7所示的第一輪的S盒變換與行位移運算,之后數(shù)據(jù)在控制模塊10的控制下進入到數(shù)據(jù)緩存模塊15的A區(qū)進行緩存,隨后,列變換模塊16將數(shù)據(jù)從數(shù)據(jù)緩存模塊15的A區(qū)讀出,進行圖7所示的第一輪的列混淆運算,運算后的結(jié)果通過17-4的“1”支路輸入到17-1的輸入端。至此,圖7所示的第一輪加密過程結(jié)束;

      第二輪加密過程與第一輪加密過程類似,其不同點有兩處,一是控制器控制17-1的“1”支路導通,進入密鑰異或模塊12進行運算的是前一輪加密后的數(shù)據(jù),二是控制模塊10控制行位移運算后的數(shù)據(jù)進入到數(shù)據(jù)緩存模塊15的B區(qū)進行緩存,列變換模塊16將數(shù)據(jù)從數(shù)據(jù)緩存模塊15的B區(qū)讀出,進行列混淆運算;至此,圖7所示的第二輪加密過程結(jié)束;

      第三輪至第九輪加密過程與第二輪加密過程類似,其中偶數(shù)輪加密過程與第二輪加密過程相同,而在奇數(shù)輪加密過程中,控制模塊10控制行位移運算后的數(shù)據(jù)進入到數(shù)據(jù)緩存模塊15的A區(qū)進行緩存,列變換模塊16將數(shù)據(jù)從數(shù)據(jù)緩存模塊15的A區(qū)讀出,進行列混淆運算;

      第十輪加密過程與第二輪加密過程類似,其不同點為,控制器控制17-4的“0”支路導通,數(shù)據(jù)不進行列混淆運算,此外,本輪加密過程中17-4輸出的數(shù)據(jù)還需要通過17-1的“1”支路進入密鑰異或模塊,完成圖7所示的第十輪加密過程中的第二次密鑰異或運算,其結(jié)果作為AES十輪加密的結(jié)果輸出;

      至此,AES加密過程完成。

      基于本發(fā)明提供的加解密器,按照圖7所示流程與圖12所示的架構(gòu),且假定在列變換模塊中插入了一級流水線,對數(shù)據(jù)進行加密時,具體步驟如下:

      步驟1:密鑰異或運算:

      分別地、順序地,待加密的128比特數(shù)據(jù)(16字節(jié))按照字節(jié)順序依次輸入到加解密器中的密鑰異或模塊,完成密鑰異或運算,每個時鐘輸入一個字節(jié)的數(shù)據(jù),16個時鐘后,16字節(jié)的數(shù)據(jù)完成密鑰異或運算;

      步驟2:S盒變換運算:

      分別地、順序地,完成密鑰異或運算的數(shù)據(jù)按照字節(jié)順序依次輸入到盒變換模塊,完成S盒變換運算,每個時鐘輸入一個字節(jié)的數(shù)據(jù),16個時鐘后,16字節(jié)的數(shù)據(jù)完成S盒變換運算;由于采用ROM完成S盒變換運算,S盒變換運算的輸出相對于輸入會有一個時鐘的延遲;

      步驟3:行位移運算:

      分別地、順序地,完成S盒變換運算的數(shù)據(jù)按照字節(jié)順序依次輸入到行變換模塊,完成行位移運算,行位移運算的結(jié)果寫入到數(shù)據(jù)緩存單元,16個時鐘后,16字節(jié)的數(shù)據(jù)完成行位移運算;

      步驟4:列混淆運算:

      等16字節(jié)的數(shù)據(jù)完成行位移運算后,列變換模塊按照地址順序依次、順序?qū)?6字節(jié)的數(shù)據(jù)從數(shù)據(jù)緩存單元讀出,進行列混淆運算,考慮到列變換模塊內(nèi)部寄存器組、緩存器與流水線的影響,延遲6個時鐘后,列混淆運算的結(jié)果按照字節(jié)順序逐時鐘依次輸出;

      至此,數(shù)據(jù)的第一輪加密過程結(jié)束;

      步驟5:重復步驟1至步驟4,完成數(shù)據(jù)的第二輪到第九輪加密過程,第二輪到第九輪加密過程與第一輪加密過程的區(qū)別在于步驟1中的參與密鑰異或運算的數(shù)據(jù)由外部輸入數(shù)據(jù)換成了上一輪列混淆運算的結(jié)果;

      步驟6:數(shù)據(jù)完成第十輪加密運算;

      輸入數(shù)據(jù)依次完成步驟1,步驟2與步驟3運算,步驟3運算的結(jié)果再完成一次步驟1的運算,至此,數(shù)據(jù)的十輪加密過程完成。

      基于本發(fā)明提供的加解密器,對數(shù)據(jù)進行加密時的時間順序具體如下:

      第1到第16個時鐘,待加密的16個字節(jié)的數(shù)據(jù)依次完成密鑰異或運算;第1到第16個時鐘,完成了密鑰異或運算的數(shù)據(jù)依次完成S盒變換運算;第2到第17個時鐘,完成了S盒變換運算的數(shù)據(jù)依次完成行位移運算;第18到第33個時鐘,數(shù)據(jù)進行列混淆運算;第24到第39個時鐘,數(shù)據(jù)完成第二輪的密鑰異或運算;以此類推,第(1+23*9)=208到第223個時鐘,數(shù)據(jù)完成第十輪的第一次密鑰異或運算,第208到第213個時鐘,數(shù)據(jù)完成第十輪的S盒變換運算,第209到第224個時鐘,數(shù)據(jù)完成第十輪的行位移運算,第210到第225個時鐘,數(shù)據(jù)完成第十輪的第二次密鑰異或運算,因此,基于本發(fā)明提供的加解密器,對數(shù)據(jù)進行一次完整加密需要215個時鐘周期;基于本發(fā)明提供的加解密器的加密流程與各步驟執(zhí)行順序如圖13所示,圖中一個陰影方格表示一個字節(jié)的數(shù)據(jù),“t”表示一個時鐘的周期;

      從圖13可以看出,前一輪加密過程的列混淆運算與后一輪加密過程的行位移運算有部分時間是重疊的,為避免數(shù)據(jù)訪問沖突,減少等待時間,本發(fā)明提供的加解密器中的數(shù)據(jù)緩存單元采用乒乓操作的方式,前一輪的列混淆運算與后一輪的行位移運算對數(shù)據(jù)緩存單元的兩塊區(qū)域進行交替訪問,從而避免了數(shù)據(jù)訪問沖突。

      下面敘述使用本發(fā)明提供的加解密器的對數(shù)據(jù)進行解密操作的具體方式。

      解密模式下,外部輸入到控制模塊的模式輸入信號為“1”,此時,控制模塊將盒變換模塊、行變換模塊、列變換模塊與密鑰生成模塊的控制信號均設(shè)置成“1”,使上述模塊工作在解密模式下。

      下面結(jié)合圖8與圖9敘述本發(fā)明提供的加解密器對數(shù)據(jù)進行解密操作時的流程。

      在解密時,每一輪解密,數(shù)據(jù)均需要經(jīng)歷兩次從輸入到選擇器17-1的輸入端到從選擇器17-4輸出端輸出的過程。為便于描述,下面在敘述時將這兩次過程分別稱為第一層傳輸過程與第二層傳輸過程。

      下面描述第一輪解密過程。

      第一層傳輸過程,控制器10控制17-1的“0”支路導通,控制器控制17-2的“1”支路導通,控制器控制17-3的“1”支路導通,控制17-4的“0”支路導通,此時,圖9可簡化成圖14。從圖14可以看出,外部的待解密數(shù)據(jù)通過17-1,進入密鑰異或模塊12,進行圖8所示的第一輪解密前的密鑰異或運算,然后通過17-2,先后通過盒變換模塊13與行變換模塊14分別進行圖8所示的第一輪解密的逆S盒變換與逆行位移運算,之后數(shù)據(jù)在控制模塊10的控制下進入到數(shù)據(jù)緩存模塊15的A區(qū)進行緩存,之后數(shù)據(jù)通過17-4的“0”支路輸入到17-1的輸入端。至此,第一輪解密的第一層傳輸過程結(jié)束;

      第二層傳輸過程,控制器10控制17-1的“1”支路導通,控制器控制17-2的“1”支路導通,控制器控制17-3的“0”支路導通,控制17-4的“1”支路導通,此時,圖9可簡化成圖15。從圖15可以看出,經(jīng)過了第一層傳輸過程的數(shù)據(jù)通過17-1,進入密鑰異或模塊12,進行圖8所示的第一輪解密的密鑰異或運算,然后通過17-2與17-3,進入列變換模塊16,進行圖8所示的第一輪解密的逆列混淆運算,之后數(shù)據(jù)通過17-4的“1”支路輸入到17-1的輸入端。至此,第一輪解密的第二層傳輸過程結(jié)束;

      至此,圖8所示的第一輪解密的所有操作完成。

      下面描述第二輪到第十輪的解密過程。

      第二輪解密過程與第一輪解密過程類似,只在第一層傳輸過程中有兩處不同,一是控制器10控制17-1的“1”支路導通,控制17-2的“0”支路導通,數(shù)據(jù)不進行密鑰異或運算,而在第一輪解密過程中,控制器10控制17-1的“0”支路導通,控制17-2的“1”支路導通,數(shù)據(jù)需要進行密鑰異或運算;二是行變換模塊輸出的數(shù)據(jù)在控制模塊10的控制下進入到數(shù)據(jù)緩存模塊15的B區(qū)進行緩存,而在第一輪解密過程中,數(shù)據(jù)是在數(shù)據(jù)緩存模塊的A區(qū)進行緩存。至此,圖8所示的第二輪解密的所有操作完成。

      第三輪到第九輪解密過程與第二輪解密過程類似,其中,偶數(shù)輪解密過程與第二輪解密過程完全相同,奇數(shù)輪解密過程只在行變換模塊14輸出的數(shù)據(jù)在數(shù)據(jù)緩存器15中的位置上與第二輪解密過程不同,奇數(shù)輪解密過程中,行變換模塊14輸出的數(shù)據(jù)緩存在15的A區(qū)中。

      第十輪解密過程與第二輪解密過程類似,其區(qū)別在于,在第十輪解密過程的第二層傳輸過程中,將密鑰異或模塊的輸出作為解密結(jié)果輸出。至此,圖8所示的第十輪解密的所有操作完成。

      至此,AES解密過程完成。

      基于本發(fā)明提供的加解密器,按照圖8所示流程與圖8所示的架構(gòu),且假定在列變換模塊中插入了一級流水線,對數(shù)據(jù)進行解密時,具體步驟如下:

      步驟1:密鑰異或運算:

      分別地、順序地,待解密的128比特數(shù)據(jù)(16字節(jié))按照字節(jié)順序依次輸入到加解密器中的密鑰異或模塊,完成密鑰異或運算,每個時鐘輸入一個字節(jié)的數(shù)據(jù),16個時鐘后,16字節(jié)的數(shù)據(jù)完成密鑰異或運算;

      步驟2:逆S盒變換運算:

      分別地、順序地,完成密鑰異或運算的數(shù)據(jù)按照字節(jié)順序依次輸入到盒變換模塊,完成逆S盒變換運算,每個時鐘輸入一個字節(jié)的數(shù)據(jù),16個時鐘后,16字節(jié)的數(shù)據(jù)完成逆S盒變換運算;由于采用ROM完成逆S盒變換運算,逆S盒變換運算的輸出相對于輸入會有一個時鐘的延遲;

      步驟3:逆行位移運算:

      分別地、順序地,完成逆S盒變換運算的數(shù)據(jù)按照字節(jié)順序依次輸入到行變換模塊,完成逆行位移運算,運算的結(jié)果寫入到數(shù)據(jù)緩存單元,16個時鐘后,16字節(jié)的數(shù)據(jù)完成逆行位移運算;

      步驟4:密鑰異或運算:

      完成逆行位移的數(shù)據(jù)按照字節(jié)順序依次輸入到加解密器中的密鑰異或模塊,完成密鑰異或運算,每個時鐘輸入一個字節(jié)的數(shù)據(jù),16個時鐘后,16字節(jié)的數(shù)據(jù)完成密鑰異或運算;

      步驟5:逆列混淆運算:

      完成密鑰異或運算后的數(shù)據(jù)順序進行逆列混淆運算,考慮到逆列混淆運算單元內(nèi)部寄存器組、緩存器與流水線的影響,延遲6個時鐘后,逆列混淆運算的結(jié)果按照字節(jié)順序逐時鐘依次輸出;

      至此,數(shù)據(jù)的第一輪解密過程結(jié)束;

      步驟6:重復步驟2至步驟5,完成數(shù)據(jù)的第二輪到第九輪解密過程,第二輪到第九輪解密過程與第一輪解密過程的區(qū)別在于步驟2中通往逆S盒運算的數(shù)據(jù)為上一輪逆列混淆后的數(shù)據(jù);

      步驟7:數(shù)據(jù)完成第十輪加密運算;

      第九輪逆列混淆運算的結(jié)果依次完成步驟2,步驟3與步驟4運算,至此,數(shù)據(jù)的十輪解密過程完成。

      基于本發(fā)明提供的加解密器,對數(shù)據(jù)進行解密時的時間順序具體如下:

      第1到第16個時鐘,待解密的16個字節(jié)的數(shù)據(jù)依次完成密鑰異或運算;第1到第16個時鐘,完成了密鑰異或運算的數(shù)據(jù)依次完成逆S盒變換運算;第2到第17個時鐘,完成了S盒變換運算的數(shù)據(jù)依次完成逆行位移運算;第18到第33個時鐘,數(shù)據(jù)進行密鑰異或運算;第18到第33個時鐘,數(shù)據(jù)進行逆列混淆運算;第24到第39個時鐘,數(shù)據(jù)進行第二輪的逆S盒運算;以此類推,第(24+23*8)=208到第223個時鐘,數(shù)據(jù)進行第十輪的逆S盒運算,第209到第224個時鐘,數(shù)據(jù)進行第十輪的逆行位移運算,第225到第240個時鐘,數(shù)據(jù)進行第十輪的密鑰異或運算。因此,基于本發(fā)明提供的加解密器,對數(shù)據(jù)進行一次完整解密需要240個時鐘周期;基于本發(fā)明提供的加解密器的解密流程與各步驟執(zhí)行順序如圖16所示。

      解密過程中,同樣對數(shù)據(jù)緩存單元采用了乒乓操作的方式,避免前后兩輪之間的數(shù)據(jù)訪問沖突,提高了數(shù)據(jù)處理速度。

      根據(jù)圖1所示的行位移運算的原理與本發(fā)明提供的行變換模塊對數(shù)據(jù)的處理方式,在S13被行變換模塊輸出到后級數(shù)據(jù)緩存單元的同時,后級的列變換模塊便可以從數(shù)據(jù)緩存單元中將數(shù)據(jù)讀出進行列混淆運算,列變換模塊并不需要等待行位移運算結(jié)束才開始讀取數(shù)據(jù)進行列混淆運算。因此,圖13所示的加密流程圖中每一輪的列混淆運算可以最多提前3個時鐘周期,從而減少了處理時間,提高了處理速度。

      與加密過程類似的,在解密過程中,圖16所示的每一輪的逆行位移后的密鑰異或運算與逆列混淆運算也可以最多提前3個時鐘周期,從而減少了處理時間,提高了處理速度。

      當前第1頁1 2 3 
      網(wǎng)友詢問留言 已有0條留言
      • 還沒有人留言評論。精彩留言會獲得點贊!
      1