国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

基于FPGA的高級加密標(biāo)準(zhǔn)AES設(shè)計(jì)與實(shí)現(xiàn)

2014-04-29 18:06孫海燕王喆
電子世界 2014年13期
關(guān)鍵詞:流水線

孫海燕 王喆

【摘要】確保網(wǎng)絡(luò)與通信安全的最重要的工具就是加密,對稱加密中又以AES加密算法最為重要,目前已成為標(biāo)準(zhǔn),研究AES加密算法對于防范信息安全泄密具有重要意義。本文對AES加密算法做簡單的介紹,并利用硬件描述語言進(jìn)行設(shè)計(jì),設(shè)計(jì)采用流水線的思想,AES-128算法共有10輪,在每一輪之間都插入流水線寄存器,提高系統(tǒng)工作頻率,最終下載到FPGA芯片CycloneIII系列的EP3C120F484I7器件中,經(jīng)驗(yàn)證功能正確。

【關(guān)鍵詞】AES;流水線;狀態(tài)矩陣;FPGA

Abstract:The most important tool to encrypt the security of networks and communications,is the symmetric encryption algorithm,AES is the Advanced Encryption Standard,which is now the most famous Symmetric encryption algorithm,it is meaningful to research this algorithm.This paper introduces the principle of AES encryption algorithm and the detailed description of the FPGA implementation,to make the optimization to achieve the best speed,the design of the state are designed by pipeline technology.we used the hardware description language to design each modules,fianly examed in the FPGA chip of CycloneIII EP3C120F484I7.

Keywords:AES;pipelines;state;FPGA

1.前言

現(xiàn)如今,信息安全一直都是熱門話題,而密碼學(xué)又是信息安全的重要組成部分,研究密碼學(xué)具有重要意義。在密碼學(xué)中,把消息經(jīng)過運(yùn)算得到密文的過程,稱為加密,它的反過程就是解密,在加、解密過程中所需要的變量,則稱為密鑰。圖1描述了密碼體系的結(jié)構(gòu)。

分組密碼體制[1],研究者們對這種體制的密碼展開過深入的研究,目前已有很多的密碼分組算法,例如:DES、IDEA、REDOC、CRAB以及AES算法。這其中,DES曾一度成為加密標(biāo)準(zhǔn),但是由于DES的密鑰長度不足,很容易被攻擊,利用DES加密存在嚴(yán)重的安全隱患,AES的及時出現(xiàn)彌補(bǔ)了DES的不足,最終取代DES稱為了新的加密標(biāo)準(zhǔn)。

圖1 密鑰體系結(jié)構(gòu)

表1 字節(jié)映射表

表2 S盒替換表格

圖3 行變換流程

AES加密算法被稱為是高級加密算法,是在十九世紀(jì)初期由美國國家標(biāo)準(zhǔn)與技術(shù)研究所(NISC)宣布,由比利時密碼專家Joan Daemen和Vicent Rijnnen提交的Rijndael算法作為高級加密標(biāo)準(zhǔn)(AES) [1]。AES加密速度很快,并且具有很高的安全性,缺點(diǎn)是密鑰的管理比較復(fù)雜[2]。

2.AES算法概述

AES算法是分組迭代型密碼算法,也稱為Rijndael加密算法。AES加密算法共有三種長度,本文以128bit為例,介紹AES-128算法,下圖2為AES加密的完整結(jié)構(gòu)。AES-128共有10輪變換,包括有:S-盒字節(jié)替換(S-box替換)、行移位、列混淆和輪密鑰加。這些變換,其作用主要是為了提高安全性能(見圖2)。

AES加密算法,每一輪的輪函數(shù)中主要包括以下幾個步驟 [5]。

2.1 字節(jié)替換

字節(jié)替換(ByteSub),也稱為S盒(Sbox)替換,每個字節(jié)包含8位,所以,128位的輸入數(shù)據(jù)可以分為16個字節(jié),把它們分別記為:

通過使用Sbox的代換表將狀態(tài)矩陣中的每一個字節(jié)獨(dú)立的映射為一個新的字節(jié),這種映射屬于非線性的映射,具體過程如表1所示。

在利用硬件實(shí)現(xiàn)S盒單元時,由于要計(jì)算大量的有限域運(yùn)算,求逆運(yùn)算以及仿射變換,所以常常把運(yùn)算結(jié)果做成一個字節(jié)替換表(也稱為Sbox),通過查表去實(shí)現(xiàn)字節(jié)的替換,所以為了實(shí)現(xiàn)AES算法,就要構(gòu)造一個查找表,把數(shù)據(jù)存儲在FPGA中的ROM中,通過查詢地址的方式讀取對應(yīng)的數(shù)據(jù),這樣可以大量提升計(jì)算速度。

經(jīng)過計(jì)算構(gòu)造得到的Sbox[4],(下轉(zhuǎn)第152頁)(上接第150頁)如表a所示的查找表形式(16x16個字節(jié)組成的矩陣)包含了8位值所能表達(dá)的256種變換。替換表格如表2所示。

2.2 行移位變換

行移位變換,也是一種字節(jié)變換,它是將狀態(tài)矩陣中的行按照不同的偏移量循環(huán)左移。轉(zhuǎn)換方式如下:第一行不變,第二行左移一個字節(jié)、依此類推,這一過程如圖表示為如圖3所示。

2.3 列混淆變換

Mixcolumns變換:同樣是對矩陣的操作它把矩陣的每一列當(dāng)做一個系數(shù)在有限域GF(28)上的多項(xiàng)式,這個多項(xiàng)式與GF(28)域上的固定多項(xiàng)式a(x)進(jìn)行模x4+1的乘法運(yùn)算,a(x)的定義如下:

根據(jù)前面對列混淆的定義,我們有:

表示為乘法矩陣形式如下:

經(jīng)過列混淆的變換,一列上的每一個元素表示為如下:

列混淆變換圖如圖4所示。

圖4 列混淆變換

圖5 輪密鑰加變換

圖6 加密模塊框圖

2.4 輪密鑰加變換

輪密鑰加(Addroundkey)是每次處理一列的運(yùn)算,它是把一個輪密鑰字和狀態(tài)矩陣的一列相加。與列混淆操作不同,輪密鑰加操作是矩陣的加法(見圖5)。

3.軟件實(shí)現(xiàn)

根據(jù)前面說明介紹,采用FPGA常用的Top-Down方式,利用硬件描述語言Verilog分別設(shè)計(jì)AES各模塊以及整個AES加密系統(tǒng),加密算法模塊框圖如圖6所示。

AES密碼的核心由一個密鑰擴(kuò)展模塊,一個初始置換模塊,輪排列模塊,并最終排列模塊。輪排列模塊將循環(huán)內(nèi)部進(jìn)行10次迭代(128位密鑰)。

本設(shè)計(jì)中的AES加密模塊,采用的是128位寬度的密鑰。根據(jù)前面第四章的分析,采用FPGA設(shè)計(jì)中常使用的Top-Down的設(shè)計(jì)思想,對AES的整個結(jié)構(gòu)進(jìn)行設(shè)計(jì),采用流水線的設(shè)計(jì)思想, AES-128共有10輪迭代,每一級之間插入流水線寄存器,利用面積換取速度的思想,這樣可以使系統(tǒng)達(dá)到很高的工作頻率;采用的是硬件描述語言Verilog,使用QuartusII和Modelsim進(jìn)行仿真。同樣的,整個AES加密模塊的驗(yàn)證,是使用了高級加密標(biāo)準(zhǔn)資料所提供的測試數(shù)據(jù)[1] [7],并與之進(jìn)行對比。

利用Altera公司的QuartusII軟件,選定器件型號為CycloneIII系列的EP3C120F484I7芯片進(jìn)行仿真綜合,得到的FPGA資源消耗的綜合結(jié)果如表3所示。

圖7的仿真結(jié)果,只針對有限個測試數(shù)據(jù)進(jìn)行測試,測試的精確以及代碼覆蓋率達(dá)不到要求,所以在測試文件(Testbench)中隨機(jī)產(chǎn)生密鑰和數(shù)據(jù),大量的數(shù)據(jù)在覆蓋率上達(dá)標(biāo),數(shù)據(jù)如表4所示,經(jīng)過Modelsim仿真驗(yàn)證,如圖8所示,能夠正確實(shí)現(xiàn)加解密功能。

利用Mentor公司的第三方仿真軟件Modelsim仿真結(jié)果如圖7和圖8,從仿真圖7可以看出:12個時鐘周期(10個周期為10輪,再加上一個周期的初始密鑰擴(kuò)展,一個周期用于輸出級)執(zhí)行完整的加密序列,當(dāng)‘ld信號的上升沿到來時,數(shù)據(jù)和密鑰能夠正確的被加載到系統(tǒng)中;可以由初始密鑰生成每一輪所需要的密鑰字;從仿真圖8中可以看出,對于大量的測試數(shù)據(jù)輸入時,加密模塊都可以在每個加密序列的開始接受其中的一組密鑰和明文。系統(tǒng)能夠在每12個時鐘周期完成一次加密運(yùn)算,滿足AES加密的時序要求;當(dāng)加密完成時,“done”信號會被拉高一個時鐘周期,表明加密結(jié)束。

在驗(yàn)證仿真結(jié)果的正確性時,這里采用的是與軟件計(jì)算的結(jié)果對比的方法,即:把一組銘文和密鑰得到的加密后的數(shù)據(jù),與通過與軟件中計(jì)算出的結(jié)果進(jìn)行逐一比較,經(jīng)過對比,結(jié)果一致,說明本設(shè)計(jì)是正確的。

表4 FPGA資源使用情況

結(jié)構(gòu) Slices 4輸入LUTs RAMs 頻率Mhz

AES(流水線) 3393(13%) 2353(4%) 64(19%) 178.176

AES(非流水) 2393(9%) 1353(2%) 81(25%) 120.785

4.結(jié)論

本文仔細(xì)分析AES 算法結(jié)構(gòu)與輪函數(shù)各個變換的特點(diǎn),設(shè)計(jì)實(shí)現(xiàn)了128位密鑰長度的AES加密系統(tǒng),采用CycloneIII 系列的FPGA芯片進(jìn)行設(shè)計(jì),通過仿真結(jié)果驗(yàn)證了設(shè)計(jì)的正確性。從實(shí)驗(yàn)結(jié)果可以看出,本設(shè)計(jì)在與非流水線結(jié)構(gòu)的AES進(jìn)行對比時,面積消耗較大,但是系統(tǒng)的時鐘頻率得到了一定的提升。本設(shè)計(jì)適用于對速度要求較高的加密場合。

參考文獻(xiàn)

[1]FIPS PUB 197,Advanced Encryption Standard,http://csrc.nist.gov/publications,NIST,2001.

[2]W.Stallings.密碼編碼學(xué)與網(wǎng)絡(luò)安全—原理與實(shí)踐(第三版)[M].劉玉珍等,譯.電子工業(yè)出版社,2005.

[3]楊波.現(xiàn)代密碼學(xué)[M].清華大學(xué)出版社,2003.

[4]A.Rudra,P.Dubey,C.Jutla,V.Kumar,J.Rao,P.Rohatgi,Efficient Rijndael Encryption Implementation with Composite Field Arithmetic,CHES 2001,LNCS 2162,pp.171-184.

[5]Y.Huang,Y.Lin,K.Huang,K.Lin,Efficient Implementation of AES IP,IEEE Asia Pacific Conference on Circuits Systems,2006,pp.1418-1421,IEEE,2006.

[6]D.Canright,A Very Compact S-Box for AES,CHES 2005,LNCS 3659,pp.441-455,Intenational association for Cryptologic Research,2005.

[7]X.Zhang,K.Parhi,High-Speed VLSI Architectures for the AES Algorithm,IEEE Transactions on Very Large Scale Integration(VLSI) Systems,vol.12,issue 9,pp.957-967,20.

猜你喜歡
流水線
Gen Z Migrant Workers Are Leaving the Assembly Line
流水線
報廢汽車拆解半自動流水線研究
流水線生產(chǎn)殺死藝術(shù)
汽車噴漆流水線的應(yīng)用與研究
SIMATIC IPC3000 SMART在汽車流水線領(lǐng)域的應(yīng)用