王春蕾
摘要:該文從降低資源消耗的目標(biāo)出發(fā),提出了AES-128算法的集成電路設(shè)計(jì)方法。使用Verilog HDL語(yǔ)言進(jìn)行RTL級(jí)建模,采用ModelSim工具進(jìn)行功能仿真,完成了FPGA驗(yàn)證,綜合結(jié)果表明本設(shè)計(jì)實(shí)現(xiàn)了降低硬件資源消耗的目標(biāo)。
關(guān)鍵詞:AES-128;加密;解密
中圖分類號(hào):TP301.6 文獻(xiàn)標(biāo)識(shí)碼:A 文章編號(hào):1009-3044(2015)18-0038-02
1.概述
隨著計(jì)算機(jī)網(wǎng)絡(luò)的發(fā)展,信息的安全性和保密性尤為重要。加密技術(shù)是對(duì)通信系統(tǒng)或者存儲(chǔ)系統(tǒng)中的數(shù)據(jù)信息進(jìn)行保護(hù)的一種重要方式。高級(jí)加密標(biāo)準(zhǔn)AES(Advanced Encryption Standard)密碼算法,是一種高效、安全的對(duì)稱加密算法,目前已經(jīng)成為加密各種形式電子數(shù)據(jù)的標(biāo)準(zhǔn),被廣泛應(yīng)用于通信、網(wǎng)絡(luò)、金融等領(lǐng)域。本文從降低資源消耗的目標(biāo)出發(fā),提出了AES-128算法的集成電路設(shè)計(jì)方法。
2.AES-128算法原理
2.1AES-128算法簡(jiǎn)介
AES密碼算法是一種迭代分組算法,采用128bits的數(shù)據(jù)分組長(zhǎng)度,三種可選密鑰長(zhǎng)度128bits,192bits和256bits。本文采用128bits密鑰長(zhǎng)度的AES算法,加密過程需要經(jīng)過10輪迭代,每一輪操作包括字節(jié)替換(SubBytes)、行移位(shiftRows)、列混合(MixColumns)和子密鑰加(AddRoundKey)四種變換。解密過程是加密過程的逆過程。其中,在加密和解密過程中所需要的每輪子密鑰由種子密鑰經(jīng)過一個(gè)密鑰擴(kuò)展算法產(chǎn)生。
2.2ALES-128算法工作模式
算法工作模式是指以128位的明文分組長(zhǎng)度為基礎(chǔ),構(gòu)造一個(gè)對(duì)待加密數(shù)據(jù)進(jìn)行分組、加解密的密碼系統(tǒng)。論文實(shí)現(xiàn)了AES-128算法的ECB非反饋模式和CBC反饋模式,符合低功耗、低成本的設(shè)計(jì)目標(biāo)。
2.2.1電子密碼本ECB(Electronic Code Book)模式
加解密過程是首先將明文或密文分成128位長(zhǎng)度的數(shù)據(jù)分組,如果最后一個(gè)分組不足128位,則進(jìn)行填充,然后對(duì)每一個(gè)分組進(jìn)行加解密。由于每次加解密使用相同的初始密鑰,所以加密相同的明文分組將產(chǎn)生相同的密文分組。密碼分析者有可能利用這些規(guī)律得到明文、密文對(duì),對(duì)信息安全造成威脅。但是,該模式可并行運(yùn)算,具有速度優(yōu)勢(shì),一般用于短數(shù)據(jù)加密。
2.2.2密碼分組鏈接CBC(Cipher Block Chaining)模式
CBC模式克服了ECB模式的缺陷,加密相同的明文將產(chǎn)生不同的密文。加密過程的輸入是當(dāng)前明文和前面密文異或的結(jié)果,所以相同的明文分組會(huì)產(chǎn)生不同的密文分組。同樣,解密過程的輸人是前面密文分組和當(dāng)前解密后的明文分組異或的結(jié)果。
3.體系結(jié)構(gòu)設(shè)計(jì)
如圖1所示,本系統(tǒng)由控制模塊(aescontrol module)、輸入輸出寄存器模塊(inout module)、密鑰擴(kuò)展模塊(keyexp module)和加/解密模塊(crydap module)組成。
3.1控制模塊
該模塊產(chǎn)生控制信號(hào),負(fù)責(zé)協(xié)調(diào)其它模塊有序地工作。
3.2密鑰擴(kuò)展模塊
該模塊實(shí)現(xiàn)初始密鑰的11輪密鑰擴(kuò)展功能,并將產(chǎn)生的輪密鑰輸入到加,解密模塊。一方面,本系統(tǒng)采用密鑰擴(kuò)展電路與加/解密電路分時(shí)的工作方式;另一方面,考慮到最終要將本系統(tǒng)模型下載到FPGA中進(jìn)行驗(yàn)證測(cè)試,F(xiàn)PGA芯片能夠提供足夠的RAM單元;因此,該模塊采用先擴(kuò)展后存儲(chǔ)的靜態(tài)密鑰調(diào)度方式,將每一輪擴(kuò)展得到的輪密鑰分別存儲(chǔ)在128位寄存器中。該設(shè)計(jì)方法充分利用了硬件資源,同時(shí)又提高了處理速度,符合設(shè)計(jì)要求。
3.3加/解密模塊
該模塊根據(jù)控制信號(hào)分時(shí)進(jìn)行加密或解密,執(zhí)行具體的10輪輪迭代操作。由于解密過程是加密過程的逆過程,不能使用完全相同的電路,為了消除硬件結(jié)構(gòu)的差異,設(shè)計(jì)中將字節(jié)變換和列混合變換進(jìn)行了優(yōu)化處理。其中,字節(jié)變換采用查找表的實(shí)現(xiàn)方法,列混合變換和逆列混合變換通過算法優(yōu)化進(jìn)行整合。
3.4輸入輸出寄存器模塊
該模塊負(fù)責(zé)數(shù)據(jù)的串并轉(zhuǎn)換以及實(shí)現(xiàn)ECB、CBC兩種工作模式。它由四個(gè)128位移位寄存器組成,分別是初始變量寄存器,明文,密文寄存器,密鑰寄存器,輸出寄存器。本設(shè)計(jì)采用16位的數(shù)據(jù)端口,通過移位將8個(gè)時(shí)鐘周期內(nèi)依次輸人的16位明文/密文、密鑰、初始變量分別保存在相應(yīng)的移位寄存器中,并送到加懈密模塊和密鑰擴(kuò)展模塊;同樣,加懈密模塊產(chǎn)生的結(jié)果被送到該模塊的輸出寄存器中,采用16位數(shù)據(jù)移位輸出的方法輸出。
4.Verilog模型建立與仿真
本系統(tǒng)使用Verilog HDL硬件描述語(yǔ)言對(duì)上述體系結(jié)構(gòu)進(jìn)行建模,使用ModelSim開發(fā)工具進(jìn)行仿真驗(yàn)證。根據(jù)文獻(xiàn),使用測(cè)試數(shù)據(jù)進(jìn)行ECB模式和CBC模式下的功能測(cè)試,具體仿真波形圖如圖所示,仿真結(jié)果完全正確。
5.FPGA實(shí)現(xiàn)與測(cè)試
在前面仿真驗(yàn)證的基礎(chǔ)上,選用Mtera公司Cyclone系列的EPlCl2Q240C8 FPGA芯片,使用QuartusII 7.0綜合工具進(jìn)行系統(tǒng)的邏輯綜合、布局布線和時(shí)序仿真。綜合報(bào)告如圖6所示。綜合結(jié)果表明該設(shè)計(jì)方案的綜合結(jié)果表明本系統(tǒng)硬件資源消耗較少,基本達(dá)到了低成本的預(yù)期設(shè)計(jì)目標(biāo)。
6.總結(jié)
本文提出了AES-128算法的集成電路設(shè)計(jì)方法,在所設(shè)計(jì)的體系結(jié)構(gòu)框架下,使用Verilog HDL語(yǔ)言進(jìn)行建模,采用Mod-elSim工具進(jìn)行功能仿真。通過測(cè)試本系統(tǒng)在ECB和CBC模式下的仿真結(jié)果,驗(yàn)證了系統(tǒng)邏輯功能的正確性。最后在Altera公司的QuartusII 7.0開發(fā)工具上完成綜合編譯,綜合結(jié)果表明本設(shè)計(jì)實(shí)現(xiàn)了降低硬件資源消耗的目標(biāo)。