輕量級(jí)雙模兼容aes加解密模塊及其方法
【專利摘要】本發(fā)明公開(kāi)了一種輕量級(jí)雙模兼容AES加解密模塊及其方法,該加解密模塊包括:數(shù)據(jù)及控制信號(hào)讀取模塊,讀取相應(yīng)控制信號(hào),并經(jīng)數(shù)據(jù)讀入控制信號(hào)觸發(fā)后讀入待加密數(shù)據(jù)和加密密鑰;判斷選擇模塊,用于判斷加解密控制信號(hào)以及模式選擇控制信號(hào),以選擇當(dāng)前為加密運(yùn)算或是解密運(yùn)算,以及當(dāng)前為256bit密鑰加解密運(yùn)算或是128bit密鑰加解密運(yùn)算;AES計(jì)算模塊,根據(jù)所述判斷選擇模塊的選擇采用輪計(jì)算對(duì)待加/解密數(shù)據(jù)進(jìn)行加解密,本發(fā)明在控制信號(hào)的控制下,可實(shí)現(xiàn)128bit、256bit長(zhǎng)度密鑰的加解密運(yùn)算,并實(shí)現(xiàn)部分結(jié)構(gòu)復(fù)用,從而達(dá)到萬(wàn)門等效門以下的實(shí)現(xiàn)結(jié)果和數(shù)十Mbps級(jí)別的吞吐量。
【專利說(shuō)明】
輕量級(jí)雙模兼容AES加解密模塊及其方法
技術(shù)領(lǐng)域
[0001] 本發(fā)明涉及一種AES加解密模塊及其方法,特別是涉及一種輕量小面積均衡吞吐 量且128/256bit長(zhǎng)度密鑰兼容的輕量級(jí)雙模兼容AES加解密模塊的硬件實(shí)現(xiàn)及其方法。
【背景技術(shù)】
[0002] AES (Advanced Encryption Standard,高級(jí)加密標(biāo)準(zhǔn))算法自從 2001 年被 NIST 機(jī)構(gòu)采納為標(biāo)準(zhǔn)算法以來(lái),因?yàn)榘踩?、?fù)雜度、速度等方面的均衡性優(yōu)點(diǎn),被多種通信系 統(tǒng)采納為加密算法而廣泛應(yīng)用,以提高數(shù)據(jù)的保密性和完整性。
[0003] AES算法實(shí)現(xiàn)主要包括軟件實(shí)現(xiàn)和硬件實(shí)現(xiàn)。隨著通信系統(tǒng)集成度的提高,硬件 實(shí)現(xiàn)近年來(lái)越來(lái)越被重視和需求。除了大規(guī)模常規(guī)算法外,近幾年的研究中也被認(rèn)為是最 合適的輕量級(jí)加密算法之一,被應(yīng)用于RFID(射頻識(shí)別)和無(wú)線傳感網(wǎng)等多種輕量級(jí)場(chǎng) 合。作為一種對(duì)稱分組加密算法,AES每次處理一個(gè)128bit長(zhǎng)度的數(shù)據(jù)塊,使用128、192 和256bit不同長(zhǎng)度的密鑰來(lái)提供不同的安全等級(jí)。研究表明256bit長(zhǎng)度的密鑰破解復(fù)雜 度遠(yuǎn)高于128bit密鑰,達(dá)到2 12°。雖然256bit長(zhǎng)度的密鑰能提供更高的安全性,但受面積 代價(jià)等方面的限制,目前的輕量級(jí)算法都集中于128bit密鑰單模式AES的實(shí)現(xiàn)。兼容算法 多為支持三種密鑰長(zhǎng)度大吞吐量兼容算法,面積及功耗均不適用于輕量級(jí)場(chǎng)合,高達(dá)數(shù)萬(wàn) 等效門。輕量級(jí)AES算法實(shí)現(xiàn)結(jié)構(gòu)尚缺乏多種密鑰長(zhǎng)度兼容的實(shí)現(xiàn)設(shè)計(jì),無(wú)法為高安全要 求的輕量級(jí)系統(tǒng)提供更高的安全等級(jí),并且部分設(shè)計(jì)結(jié)構(gòu)過(guò)低的吞吐量嚴(yán)重限制了使用范 圍。
【發(fā)明內(nèi)容】
[0004] 為克服上述現(xiàn)有技術(shù)存在的不足,本發(fā)明之一目的在于提供一種輕量級(jí)雙模兼容 AES加解密模塊及其方法,其在控制信號(hào)enc和sw的控制下,可實(shí)現(xiàn)128bit、256bit長(zhǎng)度密 鑰的加解密運(yùn)算,并實(shí)現(xiàn)部分結(jié)構(gòu)復(fù)用,從而達(dá)到萬(wàn)門等效門以下的實(shí)現(xiàn)結(jié)果和數(shù)十Mbps 級(jí)別的吞吐量。
[0005] 為達(dá)上述及其它目的,本發(fā)明提出一種輕量級(jí)雙模兼容AES加解密模塊,包括:
[0006] 數(shù)據(jù)及控制信號(hào)讀取模塊,讀取相應(yīng)控制信號(hào),并經(jīng)數(shù)據(jù)讀入控制信號(hào)觸發(fā)后讀 入待加密數(shù)據(jù)和加密密鑰;
[0007] 判斷選擇模塊,用于判斷加解密控制信號(hào)以及模式選擇控制信號(hào),以選擇當(dāng)前為 加密運(yùn)算或是解密運(yùn)算,以及當(dāng)前為256bit密鑰加解密運(yùn)算或是128bit密鑰加解密運(yùn) 算;
[0008] AES計(jì)算模塊,根據(jù)所述判斷選擇模塊的選擇采用輪計(jì)算對(duì)待加/解密數(shù)據(jù)進(jìn)行 加解密,256bit密鑰AES加解密需14輪運(yùn)算,128bit密鑰AES加解密需10輪運(yùn)算,除最 后一輪跳過(guò)列混淆運(yùn)算,每輪包括行變換、S變換、列混淆和輪密鑰加各一次,每輪運(yùn)算需要 20個(gè)時(shí)鐘周期,采用1個(gè)S盒,在一輪運(yùn)算中的20個(gè)時(shí)鐘周期內(nèi)通過(guò)主狀態(tài)機(jī)分配給每輪 運(yùn)算內(nèi)使用20次。
[0009] 進(jìn)一步地,所述AES計(jì)算模塊包括:
[0010] 行變換模塊,對(duì)主狀態(tài)矩陣進(jìn)行行變換;
[0011] S盒變換模塊,利用S盒分別對(duì)主狀態(tài)矩陣各列進(jìn)行S變換;
[0012] 列混淆模塊,對(duì)S變換后的主狀態(tài)矩陣逐列進(jìn)行列混淆運(yùn)算;
[0013] 輪密鑰加模塊對(duì)經(jīng)列混淆運(yùn)算后的主狀態(tài)矩陣與經(jīng)密鑰拓展模塊305獲得的拓 展密鑰進(jìn)行輪密鑰加運(yùn)算;
[0014] 密鑰拓展模塊,根據(jù)輪密鑰生成規(guī)則生成所述輪密鑰加模塊所需的密鑰,除初始 密鑰外,每次輪變換中的輪密鑰加模塊所需要的密鑰均通過(guò)所述密鑰拓展模塊產(chǎn)生。
[0015] 進(jìn)一步地,在加密運(yùn)算與解密運(yùn)算中保持列混淆和輪密鑰加的順序不同,加密運(yùn) 算先進(jìn)行列混淆,解密運(yùn)算先進(jìn)行輪密鑰加。
[0016] 進(jìn)一步地,主狀態(tài)矩陣每輪需要使用16次S盒,密鑰拓展每輪需使用4次S盒, 主狀態(tài)機(jī)在每輪運(yùn)算中將S盒分配給主狀態(tài)矩陣和密鑰拓展的不同部分使用。
[0017] 進(jìn)一步地,在每輪輪變換中,對(duì)一列元素進(jìn)行S變換后,再同時(shí)輸入到列混淆模塊 進(jìn)行運(yùn)算,列混淆運(yùn)算和輪密鑰加發(fā)生在同一個(gè)周期。
[0018] 進(jìn)一步地,所述輪密鑰生成規(guī)則為:
[0019]
[0020] 其中,w[i]為密鑰字,每個(gè)長(zhǎng)度為32bit,i為密鑰的序數(shù),sub函數(shù)表示S變換, rot為一個(gè)循環(huán)移位函數(shù),rcon函數(shù)為AES標(biāo)準(zhǔn)文檔中所規(guī)定的一個(gè)與輪數(shù)有關(guān)的函數(shù)。
[0021] 為達(dá)到上述目的,本發(fā)明還提供一種輕量級(jí)雙模兼容AES加解密方法,包括如下 步驟:
[0022] 步驟一,在數(shù)據(jù)讀入控制信號(hào)觸發(fā)下讀入待加密數(shù)據(jù)和加密密鑰;
[0023] 步驟二,根據(jù)加解密控制信號(hào)控制AES計(jì)算模塊進(jìn)行加密或解密運(yùn)算,根據(jù)模式 選擇控制信號(hào)控制AES計(jì)算模塊進(jìn)行256bit密鑰加解密運(yùn)算或128bit密鑰加解密運(yùn)算;
[0024] 步驟三,在所述加解密控制信號(hào)與模式選擇控制信號(hào)的控制下,AES計(jì)算模塊采用 輪計(jì)算對(duì)待加/解密數(shù)據(jù)進(jìn)行加解密,256bit密鑰AES加解密各需14輪運(yùn)算,128bit密鑰 AES加解密需10輪運(yùn)算,除最后一輪跳過(guò)列混淆運(yùn)算,每輪包括行變換、S變換、列混淆和輪 密鑰加各一次,每輪運(yùn)算需要20個(gè)時(shí)鐘周期,采用1個(gè)S盒,在一輪運(yùn)算中的20個(gè)時(shí)鐘周 期內(nèi)通過(guò)主狀態(tài)機(jī)分配給每輪運(yùn)算內(nèi)使用20次。
[0025] 進(jìn)一步地,在步驟三中,在加密和解密運(yùn)算的每次輪變換中,均為先計(jì)算行變換再 進(jìn)行S變換,加密運(yùn)算和解密運(yùn)算保持列混淆和輪密鑰加的順序不同,加密運(yùn)算先進(jìn)行列 混淆、解密運(yùn)算先進(jìn)行輪密鑰加。
[0026] 進(jìn)一步地,在步驟三中,主狀態(tài)矩陣每輪計(jì)算需要使用16次S盒,密鑰拓展每輪需 使用4次S盒,主狀態(tài)機(jī)在每輪運(yùn)算中將S盒分配給主狀態(tài)矩陣和密鑰拓展的不同部分使 用,每輪計(jì)算中,每次分四周期對(duì)一列元素進(jìn)行S變換后,再同時(shí)輸入到列混淆模塊進(jìn)行運(yùn) 算,列混淆運(yùn)算和輪密鑰加發(fā)生在同一個(gè)周期。
[0027] 進(jìn)一步地,所述輪密鑰生成規(guī)則為:
[0028]
[0029] 其中,w[i]為密鑰字,每個(gè)長(zhǎng)度為32bit,i為密鑰的序數(shù),sub函數(shù)表示S變換, rot為一個(gè)循環(huán)移位函數(shù),rcon函數(shù)為AES標(biāo)準(zhǔn)文檔中所規(guī)定的一個(gè)與輪數(shù)有關(guān)的函數(shù)。
[0030] 與現(xiàn)有技術(shù)相比,本發(fā)明一種輕量級(jí)雙模兼容AES加解密模塊及其方法在控制信 號(hào)enc和sw的控制下,可實(shí)現(xiàn)128bit、256bit長(zhǎng)度密鑰的加解密運(yùn)算,并實(shí)現(xiàn)部分結(jié)構(gòu)復(fù) 用,從而達(dá)到萬(wàn)門等效門以下的實(shí)現(xiàn)結(jié)果和數(shù)十Mbps級(jí)別的吞吐量,通過(guò)本發(fā)明的設(shè)計(jì), 可使本發(fā)明達(dá)到低于一萬(wàn)門,雙模式實(shí)現(xiàn)和較為均衡的吞吐量,可滿足大多數(shù)輕量級(jí)通信 及數(shù)字系統(tǒng)要求。
【附圖說(shuō)明】
[0031] 圖1為本發(fā)明一種輕量級(jí)雙模兼容AES加解密模塊的架構(gòu)示意圖;
[0032] 圖2為本發(fā)明的數(shù)據(jù)的加密過(guò)程圖;
[0033] 圖3為本發(fā)明中S盒的具體分配方法流程圖;
[0034] 圖4為本發(fā)明中采用的S盒結(jié)構(gòu)示意圖;
[0035] 圖5為本發(fā)明密鑰拓展模塊的密鑰拓展結(jié)構(gòu)復(fù)用結(jié)構(gòu)圖;
[0036] 圖6為本發(fā)明一種輕量級(jí)兼容AES加解密方法的步驟流程圖。
【具體實(shí)施方式】
[0037] 以下通過(guò)特定的具體實(shí)例并結(jié)合【附圖說(shuō)明】本發(fā)明的實(shí)施方式,本領(lǐng)域技術(shù)人員可 由本說(shuō)明書(shū)所揭示的內(nèi)容輕易地了解本發(fā)明的其它優(yōu)點(diǎn)與功效。本發(fā)明亦可通過(guò)其它不同 的具體實(shí)例加以施行或應(yīng)用,本說(shuō)明書(shū)中的各項(xiàng)細(xì)節(jié)亦可基于不同觀點(diǎn)與應(yīng)用,在不背離 本發(fā)明的精神下進(jìn)行各種修飾與變更。
[0038] 圖1為本發(fā)明一種輕量級(jí)雙模兼容AES加解密模塊的架構(gòu)示意圖。如圖1所示, 本發(fā)明一種輕量級(jí)雙模兼容AES加解密模塊,包括:數(shù)據(jù)及控制信號(hào)讀取模塊10、判斷選擇 模塊20以及AES計(jì)算模塊30。
[0039] 其中,數(shù)據(jù)及控制信號(hào)讀取模塊10讀取相應(yīng)控制信號(hào),并經(jīng)數(shù)據(jù)讀入控制信號(hào)Id 觸發(fā)后讀入待加密數(shù)據(jù)Data_in和加密密鑰Key_in,本發(fā)明中,輸入控制信號(hào)包括enc (加 /解密控制信號(hào))、Id (數(shù)據(jù)讀入控制信號(hào))、SW (模式選擇控制信號(hào)),計(jì)算前需將數(shù)據(jù)讀 入控制信號(hào)Id信號(hào)置高電平,進(jìn)行數(shù)據(jù)讀入,開(kāi)始計(jì)算后Id置低電平,Data_in為128-bit 輸入,Key_in在兩種情況下都是256bit輸入,在128bit長(zhǎng)度密鑰工作情況下,高128bit 置〇,輸出均為128bit的Data_out ;判斷選擇模塊20用于判斷加解密控制信號(hào)enc以及 模式選擇控制信號(hào)sw,以選擇當(dāng)前為加密運(yùn)算還是解密運(yùn)算,以及當(dāng)前為256bit密鑰加 解密運(yùn)算還是128bit密鑰加解密運(yùn)算,具體地說(shuō),判斷選擇模塊20判斷加解密控制信號(hào) enc為1時(shí)指示加密運(yùn)算,enc為0時(shí)指示解密運(yùn)算,判斷模式選擇控制信號(hào)sw為1時(shí)指示 256bit密鑰加解密運(yùn)算,sw為0時(shí)指示128bit密鑰加解密運(yùn)算;AES計(jì)算模塊30根據(jù)判 斷選擇模塊20的選擇采用輪計(jì)算對(duì)待加/解密數(shù)據(jù)進(jìn)行加解密,256bit密鑰AES加解密各 需14輪運(yùn)算,128bit密鑰AES加解密需10輪運(yùn)算。除最后一輪跳過(guò)列混淆運(yùn)算,每輪包 括行變換、S變換、列混淆和輪密鑰加各一次,每輪運(yùn)算需要20個(gè)時(shí)鐘周期,采用1個(gè)S盒 (Substitution-box,置換盒,對(duì)稱密鑰算法中執(zhí)行置換計(jì)算的基本結(jié)構(gòu)),在一輪運(yùn)算中的 20個(gè)時(shí)鐘周期內(nèi)通過(guò)主狀態(tài)機(jī)分配給每輪運(yùn)算內(nèi)使用20次。AES計(jì)算模塊30進(jìn)一步包括 行變換模塊301、S盒變換模塊302、列混淆模塊303、輪密鑰加模塊304以及密鑰拓展模塊 305,行變換模塊301對(duì)主狀態(tài)矩陣進(jìn)行行變換,S盒變換模塊302利用S盒分別對(duì)主狀態(tài) 矩陣各列進(jìn)行S變換,列混淆模塊303對(duì)S變換后的主狀態(tài)矩陣逐列進(jìn)行列混淆運(yùn)算,輪密 鑰加模塊304對(duì)經(jīng)列混淆運(yùn)算后的主狀態(tài)矩陣與經(jīng)密鑰拓展模塊305獲得的拓展密鑰進(jìn)行 輪密鑰加,即異或運(yùn)算,密鑰拓展模塊305,根據(jù)輪密鑰生成規(guī)則生成輪密鑰加模塊304所 需的密鑰,即除了初始密鑰外,每次輪變換中的輪密鑰加模塊所需要的密鑰均通過(guò)密鑰拓 展模塊305產(chǎn)生。
[0040] 具體地,AES計(jì)算模塊主要通過(guò)迭代運(yùn)算完成,迭代運(yùn)算稱為輪變換(輪計(jì)算)。 每個(gè)輪變換的具體計(jì)算過(guò)程如圖2所示,包括行變換(ShiftRow)、S變換(SubBytes)、列混 淆(Mixcolumn)和輪密鑰加 (Add RoundKey)等。在此需說(shuō)明的是,圖2示出的是數(shù)據(jù)的加 密步驟圖,解密步驟和加密步驟類似,只是四個(gè)步驟順序不同。256bit密鑰共需14輪運(yùn)算, 128bit密鑰需10輪運(yùn)算,最后一輪跳過(guò)列混淆運(yùn)算,本發(fā)明中每輪運(yùn)算需要20個(gè)時(shí)鐘周 期,故256bit密鑰加解密算法共需280個(gè)時(shí)鐘周期,128bit密鑰加解密算法共需200個(gè)時(shí) 鐘周期。計(jì)算完成后輸出運(yùn)算結(jié)果Data_out。
[0041] 在加密和解密運(yùn)算中,行變換和S變換、列混淆和輪密鑰加的順序是不同的。在本 發(fā)明中,根據(jù)行變換和S變換序可換的原理,在加密和解密運(yùn)算的每次輪變換中,均為先計(jì) 算行變換再進(jìn)行S變換。列混淆和輪密鑰加的順序如需調(diào)換,將明顯增加計(jì)算量。因而在 本發(fā)明較佳實(shí)施例中,加密算法和解密算法保持列混淆和輪密鑰加的順序不同,加密運(yùn)算 先進(jìn)行列混淆,解密運(yùn)算先進(jìn)行輪密鑰加。
[0042] 本發(fā)明的特點(diǎn)之一在于S盒的分配問(wèn)題。S盒的具體分配方法如圖3所示。主狀 態(tài)矩陣每輪需要使用16次S盒,密鑰拓展每輪需使用4次S盒。主狀態(tài)機(jī)在每輪運(yùn)算中將 S盒分配給主狀態(tài)矩陣和密鑰拓展的不同部分使用。
[0043] 在共用一個(gè)列混淆模塊的情況下,每次應(yīng)對(duì)一列元素進(jìn)行S變換后,再同時(shí)輸入 到列混淆模塊進(jìn)行運(yùn)算,列混淆運(yùn)算和輪密鑰加發(fā)生在同一個(gè)周期。計(jì)算周期的位置如圖 3所示。
[0044] 當(dāng)Sw = 1,即為256bit密鑰加解密運(yùn)算:
[0045] SO周期:S盒用于密鑰拓展,主狀態(tài)矩陣進(jìn)行行變換;
[0046] Sl~S4周期:S盒用于S3 (主狀態(tài)矩陣第4列)S變換;
[0047] S5~S8周期:S盒用于S2列(主狀態(tài)矩陣第3列)S變換,S3列進(jìn)行列混淆和輪 密鑰加運(yùn)算;
[0048] S9~S12周期,S盒用于Sl列(主狀態(tài)矩陣第2列)S變換,S2列進(jìn)行列混淆和 輪密鑰加運(yùn)算;
[0049] S13~S16周期,S盒用于SO列(主狀態(tài)矩陣第1列)S變換,Sl列進(jìn)行列混淆和 輪密鑰加運(yùn)算;
[0050] S17~S19周期:S盒用于密鑰拓展,SO列進(jìn)行列混淆和輪密鑰加運(yùn)算。
[0051] 當(dāng)Sw = 0,即為128bit密鑰加解密運(yùn)算:
[0052] 第一輪計(jì)算進(jìn)行之前,先進(jìn)行S17~S19周期計(jì)算,但屏蔽列混淆和輪密鑰加運(yùn) 算,再?gòu)牡谝惠哠O開(kāi)始計(jì)算,其他分配與256bit密鑰AES計(jì)算相同。
[0053] 在本發(fā)明中,輪變換中采用的S盒為采用組合邏輯S盒,本發(fā)明中采用的S盒結(jié) 構(gòu)如圖4所示??赏ㄟ^(guò)enc信號(hào)控制,進(jìn)行S變換或逆S變換。組合S盒結(jié)構(gòu)主要包括 Affine (仿射)變換和求逆運(yùn)算。加密時(shí)加解密控制信號(hào)enc控制多路器輸出選擇1輸入 端的數(shù)據(jù)依次進(jìn)行求逆運(yùn)算和仿射,解密時(shí)加解密控制信號(hào)enc控制多路器輸出選擇0輸 入端的數(shù)據(jù)依次進(jìn)行逆仿射和求逆運(yùn)算。本發(fā)明求逆運(yùn)算算法是將GF(2 s)有限域上的求 逆運(yùn)算轉(zhuǎn)換到GF(24)上進(jìn)行。也就是說(shuō),每個(gè)S盒設(shè)計(jì)結(jié)構(gòu)上需要調(diào)用兩個(gè)多路器、一個(gè) 求逆運(yùn)算、一個(gè)仿射和一個(gè)逆仿射模塊。
[0054] 承前所述,除了初始密鑰外,本發(fā)明每次輪變換中的輪密鑰加步驟所需要的密鑰 均通過(guò)密鑰拓展過(guò)程產(chǎn)生。密鑰拓展的生成規(guī)則如公式1所示,其結(jié)構(gòu)實(shí)現(xiàn)如圖5所示。其 中,w[i]為密鑰字,每個(gè)長(zhǎng)度為32bit,i為密鑰的序數(shù)。sub函數(shù)表示S變換,rot是一個(gè) 移位函數(shù)。rcon函數(shù)是AES標(biāo)準(zhǔn)文檔中所規(guī)定的一個(gè)與輪數(shù)有關(guān)的函數(shù),對(duì)應(yīng)不同輪數(shù)取 特定常數(shù),在圖5中記為Rcon。隊(duì)為密鑰字的長(zhǎng)度,對(duì)于128bit、192bit、256bit密鑰分別 取 4、6、8〇
[0055]
[0056] 公式 1
[0057] 128bit密鑰、192bit密鑰和256bit密鑰分別以4、6、8周期進(jìn)行拓展。本發(fā)明中 選取128bit密鑰和256bit密鑰兼容主要基于復(fù)用代價(jià)和安全性能的考慮。若128bit和 192bit密鑰兼容將造成不低于128bit/256bit密鑰兼容的面積代價(jià),獲得不高于后者的安 全等級(jí)。本發(fā)明中對(duì)于256bit的密鑰拓展引入內(nèi)部奇偶控制信號(hào)od,拆分成奇周期和偶 周期。其中奇數(shù)周期的結(jié)構(gòu)可與128bit密鑰拓展使用相同的結(jié)構(gòu)。復(fù)用情況如圖5所示。 左側(cè)實(shí)線部分為奇數(shù)周期,128bit和256bit密鑰拓展復(fù)用的部分;右側(cè)虛線部分為偶數(shù)周 期,也是256bit密鑰拓展專用的部分。sw為圖1中的輸入信號(hào),sw為1時(shí),指示256bit密 鑰AES ;sw為0時(shí)指示128bit密鑰AES。sw = 0時(shí),od信號(hào)恒為0 ;只有sw = 1時(shí),才涉 及到〇d的奇偶問(wèn)題,因此sw/od信號(hào)為01是不可能的。sw/od取00或01時(shí),多路器輸出 為左側(cè)實(shí)線輸入;sw/od取11時(shí),多路器輸出為右側(cè)虛線輸入。需說(shuō)明的是,因?yàn)橹挥袃煞N 輸入,該選擇器是一個(gè)四選一選擇器的簡(jiǎn)化示意畫法。圖5是一個(gè)反饋結(jié)構(gòu),輸出密鑰也是 下一輪密鑰拓展的輸入。
[0058] 圖6為本發(fā)明一種輕量級(jí)兼容AES加解密方法的步驟流程圖。如圖5所示,本發(fā) 明一種輕量級(jí)兼容AES加解密方法,包括如下步驟:
[0059] 步驟601,在數(shù)據(jù)讀入控制信號(hào)Id觸發(fā)下讀入待加密數(shù)據(jù)Data_in和加密密鑰 Key_in〇
[0060] 步驟602,根據(jù)加解密控制信號(hào)enc控制AES計(jì)算模塊進(jìn)行加密或解密運(yùn)算,根據(jù) 模式選擇控制信號(hào)sw控制AES計(jì)算模塊進(jìn)行256bit密鑰加解密運(yùn)算或128bit密鑰加解 密運(yùn)算。其中,加解密控制信號(hào)enc為1時(shí)指示加密運(yùn)算,enc為O時(shí)指示解密運(yùn)算;模式 選擇控制信號(hào)sw為1時(shí)指示256bit密鑰加解密運(yùn)算,sw為O時(shí)指示128bit密鑰加解密 運(yùn)算。
[0061] 步驟603,在加解密控制信號(hào)與模式選擇控制信號(hào)的控制下,AES計(jì)算模塊采用輪 計(jì)算對(duì)待加/解密數(shù)據(jù)進(jìn)行加解密,256bit密鑰AES加解密共需14輪運(yùn)算,128bit密鑰 AES加解密需10輪運(yùn)算。除最后一輪跳過(guò)列混淆運(yùn)算,每輪包括行變換、S變換、列混淆和 輪密鑰加各一次,每輪運(yùn)算需要20個(gè)時(shí)鐘周期,采用1個(gè)S盒(Substitution-box,置換盒, 對(duì)稱密鑰算法中執(zhí)行置換計(jì)算的基本結(jié)構(gòu)),在一輪運(yùn)算中的20個(gè)時(shí)鐘周期內(nèi)通過(guò)主狀態(tài) 機(jī)分配給每輪運(yùn)算內(nèi)使用20次。
[0062] 較佳的,在步驟603中,根據(jù)行變換和S變換序可換的原理,在加密和解密運(yùn)算的 每次輪變換中,均為先計(jì)算行變換再進(jìn)行S變換。列混淆和輪密鑰加的順序如需調(diào)換,將明 顯增加計(jì)算量。因而在本發(fā)明中,加密運(yùn)算和解密運(yùn)算保持列混淆和輪密鑰加的順序不同, 加密運(yùn)算先進(jìn)行列混淆,解密運(yùn)算先進(jìn)行輪密鑰加。
[0063] 在步驟603中,主狀態(tài)矩陣每輪計(jì)算需要使用16次S盒,密鑰拓展每輪需使用4 次S盒。主狀態(tài)機(jī)在每輪運(yùn)算中將S盒分配給主狀態(tài)矩陣和密鑰拓展的不同部分使用。
[0064] 在共用一個(gè)列混淆模塊的情況下,每輪計(jì)算中,每四個(gè)周期對(duì)一列元素進(jìn)行S變 換后,再同時(shí)輸入到列混淆模塊進(jìn)行運(yùn)算,列混淆運(yùn)算和輪密鑰加發(fā)生在同一個(gè)周期。
[0065] 除了初始密鑰外,每次輪變換中的輪密鑰加步驟所需要的密鑰均通過(guò)密鑰拓展過(guò) 程產(chǎn)生。密鑰拓展的規(guī)則如下公式所示。w[i]為密鑰字,每個(gè)長(zhǎng)度為32bit,i為密鑰的 序數(shù)。sub函數(shù)表示S變換,rot是一個(gè)循環(huán)移位函數(shù)。rcon函數(shù)是AES標(biāo)準(zhǔn)文檔中所規(guī) 定的一個(gè)與輪數(shù)有關(guān)的函數(shù),對(duì)應(yīng)不同輪數(shù)取特定常數(shù)。隊(duì)為密鑰字的長(zhǎng)度,對(duì)于128bit、 192bit、256bit 密鑰分別取 4、6、8。
[0066]
[0067] 本發(fā)明經(jīng)過(guò)modelsim軟件進(jìn)行功能仿真,能夠?qū)崿F(xiàn)兩種長(zhǎng)度密鑰加解密全部功 能。之后經(jīng)過(guò)ISE套件進(jìn)行FPGA布線仿真,采用VirtexVI xc6vlx550t進(jìn)行仿真,最高運(yùn) 算頻率為67. 6Mhz,吞吐量達(dá)到43. 2/31. 1Mbps。通過(guò)DesignComplier進(jìn)行布線仿真,采用 0. 18 μ m工藝,等效門數(shù)為8400門,吞吐量達(dá)到30. 8/22. 1Mbps。在小面積均衡吞吐量設(shè)計(jì) 中取得了較為理想的結(jié)果。
[0068] 綜上所述,本發(fā)明一種輕量級(jí)雙模兼容AES加解密模塊及其方法在控制信號(hào)enc 和sw的控制下,可實(shí)現(xiàn)128bit、256bit長(zhǎng)度密鑰的加解密運(yùn)算,并實(shí)現(xiàn)部分結(jié)構(gòu)復(fù)用,從而 達(dá)到萬(wàn)門等效門以下的實(shí)現(xiàn)結(jié)果和數(shù)十Mbs級(jí)別的吞吐量,通過(guò)本發(fā)明的設(shè)計(jì),可使本發(fā) 明達(dá)到低于一萬(wàn)門,雙模式實(shí)現(xiàn)和較為均衡的吞吐量,可滿足大多數(shù)輕量級(jí)通信及數(shù)字系 統(tǒng)要求。
[0069] 與現(xiàn)有技術(shù)相比,本發(fā)明具有如下有益效果:
[0070] 1.選取128/256bit長(zhǎng)度密鑰兼容作為多模實(shí)現(xiàn)手段,利用256bit密鑰拓展的對(duì) 稱結(jié)構(gòu)實(shí)現(xiàn)與128bit密鑰的兼容,通過(guò)邏輯復(fù)用,減少了內(nèi)存和控制信號(hào)的使用,以較低 代價(jià)獲得最高的安全等級(jí)。
[0071] 2.采用1個(gè)S盒(Substitution-box,置換盒,對(duì)稱密鑰算法中執(zhí)行置換計(jì)算的基 本結(jié)構(gòu)),在一輪運(yùn)算中的20個(gè)時(shí)鐘周期內(nèi)通過(guò)主狀態(tài)機(jī)分配給每輪運(yùn)算內(nèi)使用20次,從 而實(shí)現(xiàn)該種方案下的理論最小周期。
[0072] 3.使用Sbit數(shù)據(jù)通路進(jìn)行變換、列混淆等計(jì)算,將列混淆等模塊在不同周期內(nèi)分 配給狀態(tài)矩陣的不同部分使用,同時(shí)采用組合邏輯S盒,進(jìn)一步降低設(shè)計(jì)面積。
[0073] 上述實(shí)施例僅例示性說(shuō)明本發(fā)明的原理及其功效,而非用于限制本發(fā)明。任何本 領(lǐng)域技術(shù)人員均可在不違背本發(fā)明的精神及范疇下,對(duì)上述實(shí)施例進(jìn)行修飾與改變。因此, 本發(fā)明的權(quán)利保護(hù)范圍,應(yīng)如權(quán)利要求書(shū)所列。
【主權(quán)項(xiàng)】
1. 一種輕量級(jí)雙模兼容AES加解密模塊,包括: 數(shù)據(jù)及控制信號(hào)讀取模塊,讀取相應(yīng)控制信號(hào),并經(jīng)數(shù)據(jù)讀入控制信號(hào)觸發(fā)后讀入待 加密數(shù)據(jù)和加密密鑰; 判斷選擇模塊,用于判斷加解密控制信號(hào)W及模式選擇控制信號(hào),W選擇當(dāng)前為加密 運(yùn)算或是解密運(yùn)算,W及當(dāng)前為25化it密鑰加解密運(yùn)算或是128bit密鑰加解密運(yùn)算; AES計(jì)算模塊,根據(jù)所述判斷選擇模塊的選擇采用輪計(jì)算對(duì)待加/解密數(shù)據(jù)進(jìn)行加解 密,256bit密鑰AES加解密需14輪運(yùn)算,128bit密鑰AES加解密需10輪運(yùn)算,除最后一輪 跳過(guò)列混淆運(yùn)算,每輪包括行變換、S變換、列混淆和輪密鑰加各一次,每輪運(yùn)算需要20個(gè) 時(shí)鐘周期,采用1個(gè)S盒,在一輪運(yùn)算中的20個(gè)時(shí)鐘周期內(nèi)通過(guò)主狀態(tài)機(jī)分配給每輪運(yùn)算 內(nèi)使用20次。2. 如權(quán)利要求1所述的一種輕量級(jí)雙模兼容AES加解密模塊,其特征在于,所述AES計(jì) 算模塊包括: 行變換模塊,對(duì)主狀態(tài)矩陣進(jìn)行行變換; S盒變換模塊,利用S盒分別對(duì)主狀態(tài)矩陣各列進(jìn)行S變換; 列混淆模塊,對(duì)S變換后的主狀態(tài)矩陣逐列進(jìn)行列混淆運(yùn)算; 輪密鑰加模塊對(duì)經(jīng)列混淆運(yùn)算后的主狀態(tài)矩陣與經(jīng)密鑰拓展模塊305獲得的拓展密 鑰進(jìn)行輪密鑰加運(yùn)算; 密鑰拓展模塊,根據(jù)輪密鑰生成規(guī)則生成所述輪密鑰加模塊所需的密鑰,除初始密鑰 夕F,每次輪變換中的輪密鑰加模塊所需要的密鑰均通過(guò)所述密鑰拓展模塊產(chǎn)生。3. 如權(quán)利要求2所述的一種輕量級(jí)雙模兼容AES加解密模塊,其特征在于:在加密運(yùn) 算與解密運(yùn)算中保持列混淆和輪密鑰加的順序不同,加密運(yùn)算先進(jìn)性列混淆,解密計(jì)算先 進(jìn)行輪密鑰加。4. 如權(quán)利要求3所述的一種輕量級(jí)雙模兼容AES加解密模塊,其特征在于:主狀態(tài)矩 陣每輪需要使用16次S盒,密鑰拓展每輪需使用4次S盒,主狀態(tài)機(jī)在每輪運(yùn)算中將S盒 分配給主狀態(tài)矩陣和密鑰拓展的不同部分使用。5. 如權(quán)利要求4所述的一種輕量級(jí)雙模兼容AES加解密模塊,其特征在于:在每輪輪 變換中,對(duì)一列元素進(jìn)行S變換后,再同時(shí)輸入到列混淆模塊進(jìn)行運(yùn)算,列混淆運(yùn)算和輪密 鑰加發(fā)生在同一個(gè)周期。6. 如權(quán)利要求1所述的一種輕量級(jí)雙模兼容AES加解密模塊,其特征在于,所述輪密鑰 生成規(guī)則為:其中,W [i]為密鑰字,每個(gè)長(zhǎng)度為32bit,i為密鑰的序數(shù),SUb函數(shù)表示S變換,rot為 一個(gè)循環(huán)移位函數(shù),rcon函數(shù)為AES標(biāo)準(zhǔn)文檔中所規(guī)定的一個(gè)與輪數(shù)有關(guān)的函數(shù)。7. -種輕量級(jí)雙模兼容AES加解密方法,包括如下步驟: 步驟一,在數(shù)據(jù)讀入控制信號(hào)觸發(fā)下讀入待加密數(shù)據(jù)和加密密鑰; 步驟二,根據(jù)加解密控制信號(hào)控制AES計(jì)算模塊進(jìn)行加密或解密運(yùn)算,根據(jù)模式選擇 控制信號(hào)控制AES計(jì)算模塊進(jìn)行25化it密鑰加解密運(yùn)算或128bit密鑰加解密運(yùn)算; 步驟S,在所述加解密控制信號(hào)與模式選擇控制信號(hào)的控制下,AES計(jì)算模塊采用輪計(jì) 算對(duì)待加/解密數(shù)據(jù)進(jìn)行加解密,256bit密鑰AES加解密各需14輪運(yùn)算,128bit密鑰AES 加解密需10輪運(yùn)算,除最后一輪跳過(guò)列混淆運(yùn)算,每輪包括行變換、S變換、列混淆和輪密 鑰加各一次,每輪運(yùn)算需要20個(gè)時(shí)鐘周期,采用1個(gè)S盒,在一輪運(yùn)算中的20個(gè)時(shí)鐘周期 內(nèi)通過(guò)主狀態(tài)機(jī)分配給每輪運(yùn)算內(nèi)使用20次。8. 如權(quán)利要求7所述的一種輕量級(jí)雙模兼容AES加解密方法,其特征在于:在步驟S 中,在加密和解密運(yùn)算的每次輪變換中,均為先計(jì)算行變換再進(jìn)行S變換,加密運(yùn)算和解密 運(yùn)算保持列混淆和輪密鑰加的順序不同,加密運(yùn)算先進(jìn)性列混淆,解密計(jì)算先進(jìn)行輪密鑰 加。9. 如權(quán)利要求8所述的一種輕量級(jí)雙模兼容AES加解密方法,其特征在于:在步驟S 中,主狀態(tài)矩陣每輪計(jì)算需要使用16次S盒,密鑰拓展每輪需使用4次S盒,主狀態(tài)機(jī)在每 輪運(yùn)算中將S盒分配給主狀態(tài)矩陣和密鑰拓展的不同部分使用,每輪計(jì)算中,每次分四周 期對(duì)一列元素進(jìn)行S變換后,再同時(shí)輸入到列混淆模塊進(jìn)行運(yùn)算,列混淆運(yùn)算和輪密鑰加 發(fā)生在同一個(gè)周期。10. 如權(quán)利要求7所述的一種輕量級(jí)雙模兼容AES加解密方法,其特征在于,所述輪密 鑰生成規(guī)則為:其中,W [i]為密鑰字,每個(gè)長(zhǎng)度為32bit,i為密鑰的序數(shù),SUb函數(shù)表示S變換,rot為 一個(gè)循環(huán)移位函數(shù),rcon函數(shù)為AES標(biāo)準(zhǔn)文檔中所規(guī)定的一個(gè)與輪數(shù)有關(guān)的函數(shù)。
【文檔編號(hào)】H04L9/06GK106034021SQ201510107703
【公開(kāi)日】2016年10月19日
【申請(qǐng)日】2015年3月12日
【發(fā)明人】王凡琦, 莊健敏, 張釗鋒, 封松林
【申請(qǐng)人】中國(guó)科學(xué)院上海高等研究院