午夜毛片免费看,老师老少妇黄色网站,久久本道综合久久伊人,伊人黄片子

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

文檔序號(hào):12131441閱讀:473來(lái)源:國(guó)知局
一種低復(fù)雜度的AES一體化加解密器實(shí)現(xiàn)方法與流程

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



背景技術(shù):

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

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

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

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

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

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

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

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

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

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

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

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



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

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

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

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

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

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

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

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

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

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

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

附圖說(shuō)明

圖1行位移運(yùn)算原理示意圖;

圖2逆行位移運(yùn)算原理示意圖;

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

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

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

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

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

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

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

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

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

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

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

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

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

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

具體實(shí)施方式

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

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

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

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

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

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

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

第二個(gè)時(shí)鐘周期,第二個(gè)數(shù)據(jù)0x6E輸入時(shí),伽羅華域乘法器單元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的輸出進(jìn)行異或,于是異或單元34分別完成0x6E×2+0xC9×1,0x6E×1+0xC9×1,0x6E×1+0xC9×3,0x6E×3+0xC9×2的運(yùn)算,注意,此處的加法為異或和運(yùn)算,異或運(yùn)算的結(jié)果存入寄存器組35的A0,A1,A2與A3中;

以此類推,第三個(gè)時(shí)鐘周期,異或單元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的運(yùn)算;第四個(gè)時(shí)鐘周期,異或單元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的運(yùn)算,異或運(yùn)算的結(jié)果存入寄存器組35的A0,A1,A2與A3中;和圖3對(duì)照可以看出,此時(shí),寫入到A1,A2,A3,A0分別為第一組的4個(gè)數(shù)進(jìn)行列混淆運(yùn)算后的結(jié)果;

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

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

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

至此,列混淆運(yùn)算完成。

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

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

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

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

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

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

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

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

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

至此,AES加密過(guò)程完成。

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

步驟1:密鑰異或運(yùn)算:

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

步驟2:S盒變換運(yùn)算:

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

步驟3:行位移運(yùn)算:

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

步驟4:列混淆運(yùn)算:

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

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

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

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

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

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

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

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

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

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

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

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

下面描述第一輪解密過(guò)程。

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

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

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

下面描述第二輪到第十輪的解密過(guò)程。

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

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

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

至此,AES解密過(guò)程完成。

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

步驟1:密鑰異或運(yùn)算:

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

步驟2:逆S盒變換運(yùn)算:

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

步驟3:逆行位移運(yùn)算:

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

步驟4:密鑰異或運(yùn)算:

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

步驟5:逆列混淆運(yùn)算:

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

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

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

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

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

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

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

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

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

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

當(dāng)前第1頁(yè)1 2 3 
網(wǎng)友詢問(wèn)留言 已有0條留言
  • 還沒(méi)有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
1