文獻(xiàn)標(biāo)識碼: A
DOI:10.16157/j.issn.0258-7998.2015.07.021
中文引用格式: 孫汶,,朱平. 基于AES算法的存儲測試系統(tǒng)設(shè)計(jì)[J].電子技術(shù)應(yīng)用,,2015,41(7):74-76,,84.
英文引用格式: Sun Wen,Zhu Ping. Design of storage testing system based on AES algorithm[J].Application of Electronic Technique,,2015,,41(7):74-76,84.
0 引言
隨著信息技術(shù)的不斷發(fā)展與信息價值的不斷提高,人們對于信息存儲的安全問題關(guān)注度越來越高,,越來越多的信息科技產(chǎn)品采用了加密技術(shù)對數(shù)據(jù)進(jìn)行保護(hù),。由于存儲測試系統(tǒng)應(yīng)用方面的特殊性,測試的數(shù)據(jù)大多屬于機(jī)密,目前大多數(shù)是靠回收記錄器來獲得測試數(shù)據(jù),,然而由于回收難度大的問題造成了數(shù)據(jù)安全性方面的隱患,,因此對于測試系統(tǒng)的數(shù)據(jù)加密需求極為迫切[1-2]。高級加密標(biāo)準(zhǔn)(AES)是由美國國家標(biāo)準(zhǔn)與技術(shù)研究院于2001年12月公布的對稱密鑰分組密碼[3],。AES是一個非菲斯特爾(Feistel)密碼,,可以加密和解密128 bit的數(shù)據(jù)分組,可使用10,、12或14個輪,。密鑰的大小可以是128 bit、192 bit或256 bit,,依輪的數(shù)目而定,,擁有三種版本,即AES-128,、AES-192和AES-256[4],。本文基于AES-128算法提出了一種數(shù)據(jù)加密系統(tǒng)的設(shè)計(jì)方案,給出了基于Xilinx的FPGA硬件實(shí)現(xiàn)方法,。
1 AES算法
1.1 AES算法概述
AES算法利用代換,、置換、混合和密鑰加來對數(shù)據(jù)進(jìn)行類型轉(zhuǎn)換進(jìn)而完成加密解密工作,,提高系統(tǒng)的安全性能,。字節(jié)代換、行移位,、列混合,、加輪密鑰和密鑰擴(kuò)展是算法加密過程的主要步驟,解密過程主要步驟則為行移位反演,、位代換反演,、加輪密鑰、列混合反演,。需要注意的是在進(jìn)行加密解密的過程中除第一步加輪密鑰外還須進(jìn)行十輪數(shù)據(jù)轉(zhuǎn)換,,在加密過程中第十輪沒有列混合這一步驟,解密過程中第十輪同意不包含列混合反演這一步驟[5],。AES-128加密解密算法的整體工作流程如圖1所示,。
1.2 算法流程
AES加密算法首先將128 bit明文排列成一個4×4的矩陣,如圖2所示,。同樣密鑰也被排列成4×4矩陣,。AES算法的加密過程可分為輪變換和密鑰擴(kuò)展(KeyExpansion),輪變換包括字節(jié)代換(SubByte),、行移位(ShiftRow),、列混合(MixColumn)和加輪密鑰(AddRoundKey),。
(1)字節(jié)代換(SubByte)
字節(jié)代換將明文狀態(tài)的每個字節(jié)做非線性變換,明文狀態(tài)中的每一個字節(jié)經(jīng)過查找表操作,,通過S盒變換為另一個字節(jié),。字節(jié)代換如圖3所示。
(2)行移位(ShiftRow)
經(jīng)過字節(jié)代換后明文數(shù)據(jù)要進(jìn)行行移位轉(zhuǎn)換,,這種轉(zhuǎn)換就是改變字節(jié)的序列,,移位是在字節(jié)層上進(jìn)行的,不改變字節(jié)當(dāng)中的比特順序,。加密過程中,,行移位是向左移位,行0沒有移位,,行1有一字節(jié)移位,,行2有兩個字節(jié)移位,最后一行移了3個字節(jié),。
(3)列混合(MixColumn)
經(jīng)過行移位之后還需要一個字節(jié)內(nèi)交換來改變字節(jié)中的比特,,列混合就是在列層上的轉(zhuǎn)換操作,把狀態(tài)的每一列轉(zhuǎn)換為一個新的列,,實(shí)際上轉(zhuǎn)換就是一個狀態(tài)列和一個常數(shù)矩陣相乘,。
(4)加輪密鑰(AddRoundKey)
加輪密鑰過程每次處理一列,把一個輪密鑰字與每一個狀態(tài)列矩陣相加,。加輪密鑰的操作也可以看做是對狀態(tài)的每一列與相應(yīng)的密鑰字所進(jìn)行的異或運(yùn)算,。圖4為加輪密鑰示意圖。
(5)密鑰擴(kuò)展(KeyExpansion)
AES算法需要一個密鑰擴(kuò)展模塊來生成每一輪操作所需的密鑰,。本設(shè)計(jì)中加密輪數(shù)為10,,密鑰擴(kuò)展就從一個128 bit的密碼密鑰創(chuàng)建成11個128 bit的輪密鑰,。第一個輪密鑰用作加輪密鑰,,其他的十個輪密鑰用作每一輪的轉(zhuǎn)換。
2 數(shù)據(jù)加密系統(tǒng)整體設(shè)計(jì)及實(shí)現(xiàn)
由于存儲測試系統(tǒng)采集存儲數(shù)據(jù)的實(shí)時性,,數(shù)據(jù)加密也必須對采集的數(shù)據(jù)進(jìn)行實(shí)時加密,,基于此本設(shè)計(jì)的加密程序采用了內(nèi)外混合流水線結(jié)構(gòu)設(shè)計(jì)的方法來滿足存儲測試系統(tǒng)的高速采集。
2.1 數(shù)據(jù)加密系統(tǒng)器件選擇
FPGA作為一種可編程邏輯器件,,結(jié)合了軟件靈活和硬件的速度特性,。使用FPGA開發(fā)數(shù)字電路,可以大大縮短開發(fā)時間,,提高系統(tǒng)的可靠性,,可擦除式編程使程序更加靈活多變?;趯ES算法的分析,,其復(fù)雜的數(shù)學(xué)運(yùn)算可以通過查找表與組合邏輯電路實(shí)現(xiàn),,綜合考慮速度、功耗和應(yīng)用范圍等因素,,本設(shè)計(jì)采用FPGA來實(shí)現(xiàn)AES加密算法[6-8],。
選取Xilinx公司生產(chǎn)的Spartan3E系列的XC3S500E作為主控芯片,擁有最多376個可操作I/O口,,500 k個系統(tǒng)門數(shù),,塊RAM容量為360 KB,最高主頻高達(dá)300 MHz,,完全滿足系統(tǒng)需要,。
2.2 加密系統(tǒng)工作結(jié)構(gòu)
根據(jù)現(xiàn)有存儲測試系統(tǒng)的設(shè)計(jì),首先系統(tǒng)通過一定位數(shù)的AD采集器將輸入的模擬信號在FPGA主控芯片的控制下以一定采樣頻率轉(zhuǎn)換為數(shù)字信號進(jìn)行采集,,然后采集的數(shù)字信號經(jīng)過AES算法加密模塊進(jìn)行加密,,最后在FPGA芯片的控制下將加密后的數(shù)據(jù)存儲到Flash閃存中,完成數(shù)據(jù)的加密存儲過程[9-10],。數(shù)據(jù)加密系統(tǒng)的硬件電路總體方案如圖5所示,。
為了達(dá)到高精度采集的目的,采用12 bit的高速低功耗逐次逼近型A/D轉(zhuǎn)換器AD7495,。由于本系統(tǒng)采集的模擬信號在-5 V~5 V之間,,而AD7495芯片轉(zhuǎn)換要求輸入的模擬信號幅值在0 V~2.5 V之間,故信號在輸入ADC之前先通過運(yùn)放AD823進(jìn)行調(diào)理,,使其輸入電壓在ADC正常工作范圍之內(nèi),。同時,信號經(jīng)調(diào)理后消除了使用模擬多路開關(guān)帶來的開關(guān)導(dǎo)通電阻的影響,、通道切換過程中產(chǎn)生的尖峰電壓,、輸入信號電壓擺幅等一系列問題。
A/D轉(zhuǎn)換的工作過程嚴(yán)格按照AD7495的工作時序設(shè)定,,其工作時序如圖6所示,。片選CS拉低以啟動A/D轉(zhuǎn)換器并對其進(jìn)行初始化,同時把時鐘信號SCLK傳給A/D轉(zhuǎn)換器,,執(zhí)行模數(shù)轉(zhuǎn)換并根據(jù)SCLK逐位輸出轉(zhuǎn)換后的數(shù)字信號,,按照先高8位后低8位的順序送人FIFO中,其中DB12~DB15用0來補(bǔ),,轉(zhuǎn)換時間由SCLK的頻率決定,。
在硬件電路設(shè)計(jì)方案的基礎(chǔ)上,設(shè)計(jì)出了FPGA與計(jì)算機(jī)通信的上位機(jī)軟件,。上位機(jī)軟件利用接口單元即USB接口與存儲測試系統(tǒng)進(jìn)行通信,,用戶通過操作上位機(jī)軟件即可向FPGA芯片下發(fā)命令,完成數(shù)據(jù)的讀取,、擦除和解密等功能,,使上位機(jī)軟件和數(shù)據(jù)加密系統(tǒng)形成一個完整的系統(tǒng),。
2.3 加密系統(tǒng)實(shí)現(xiàn)
FPGA的功能邏輯使用 VHDL 語言實(shí)現(xiàn), 用于描述數(shù)字系統(tǒng)的結(jié)構(gòu)、行為和功能,。使用 VHDL 語言設(shè)計(jì)硬件電路時,,可以使設(shè)計(jì)者免除編寫邏輯表達(dá)式或真值表的工作,這樣使硬件電路設(shè)計(jì)的難度有了大幅度的降低, 從而提高工作效率, 縮短硬件電路的設(shè)計(jì)周期,。作為采集的數(shù)據(jù)為8 bit,,而加密算法所加密的是128 bit,因此需要一個data8to128模塊,。使用VHDL 語言實(shí)現(xiàn)的系統(tǒng) FPGA 部分原理圖如圖7所示,。
取實(shí)際測試采集的128 bit數(shù)據(jù)作為測試明文,轉(zhuǎn)換為16進(jìn)制后的數(shù)據(jù)即為:08 A6 08 A5 08 A5 08 A4 08 A2 08 A1 08 9F 08 9F,。初始密鑰在程序中設(shè)置,,設(shè)初始密鑰為:4A 5B 68 2C 32 E1 B3 AC F2 35 24 A2 4B 3C 2F E6。對128 bit明文的加密轉(zhuǎn)換為表1所示,。
圖8為AES加密模塊的整體功能仿真圖,,仿真軟件使用Modelsim SE 10.0c。從圖中可看出,,完成一次128 bit數(shù)據(jù)加密從開始到結(jié)束需要12個時鐘周期,,最終程序加密所得到的數(shù)據(jù)與加密軟件驗(yàn)證的一致。
本文所設(shè)計(jì)的系統(tǒng)程序通過ISE12.2進(jìn)行綜合編譯后進(jìn)行時序仿真,。
AES算法內(nèi)部設(shè)計(jì)的理論處理時延是2 ns,,為了數(shù)據(jù)加密系統(tǒng)能夠穩(wěn)定工作,因此建議主時鐘周期在10 ns以上,。設(shè)FPGA的主時鐘頻率為100 MHz,,完成128 bit的數(shù)據(jù)加密需要12個時鐘周期才能完成,計(jì)算可得出滿負(fù)荷運(yùn)行時加密速度可以達(dá)到1.06 Gb/s,??紤]到受器件、延時,、邏輯和噪聲等多種條件影響,,AES加密核不能保證在更高時鐘下運(yùn)行正確,,實(shí)驗(yàn)測試結(jié)果表明:在輸出結(jié)果完全正確,,時序符合設(shè)計(jì)要求和系統(tǒng)能正確執(zhí)行AES加解算法的情況下,加密系統(tǒng)加密過程的吞吐量可達(dá)到0.98 Gb/s,,完全滿足存儲測試系統(tǒng)的高速采集需求,。
3 結(jié)束語
本文首先介紹了ASE算法的結(jié)構(gòu)流程,對存儲測試系統(tǒng)數(shù)據(jù)加密需求進(jìn)行了分析,,提出了數(shù)據(jù)加密系統(tǒng)的硬件電路設(shè)計(jì)方案,,編寫了基于VHDL語言的AES加密算法,,對算法進(jìn)行了仿真驗(yàn)證。最后,,對加密系統(tǒng)的整體功能進(jìn)行了驗(yàn)證,。經(jīng)實(shí)際系統(tǒng)測試,本方法可以有效地保護(hù)存儲測試系統(tǒng)采集的數(shù)據(jù),。
參考文獻(xiàn)
[1] 張文棟.存儲測試系統(tǒng)的設(shè)計(jì)理論與應(yīng)用研究及其在導(dǎo)彈動態(tài)數(shù)據(jù)測試中的實(shí)現(xiàn)[D].北京:北京理工大學(xué),,1995.
[2] 祖靜,申湘南,,張文棟.存儲測試技術(shù)[J].測試技術(shù)學(xué)報(bào),,1994,8(2):25-31.
[3] (美)Behrouz A.Forouzan.密碼學(xué)與網(wǎng)絡(luò)安全[M].北京:清華大學(xué)出版社,,2009.
[4] 李洪剛,,楊林楠,張麗蓮,,等.基于FPGA的高速多通道數(shù)據(jù)采集系統(tǒng)的設(shè)計(jì)[J].計(jì)算機(jī)測量與控制,,2006,14(10).
[5] PONGYUPINPANICH S,,PHATHUMVANH S,,CHOOMCHUAY S.A32 bits Architecture For An AES System[C].ISCIT,2004:70-73.
[6] 田耘,,徐文波.Xilinx FPGA開發(fā)實(shí)用教程[M].北京:清華大學(xué)出版社,,2010.
[7] 韋寶典.高級加密標(biāo)準(zhǔn)AES中若干問題的研究[D].西安:西安電子科技大學(xué),2003.
[8] 鹿欽鶴,,任濤.AES算法的研究[J].長春理工大學(xué)學(xué)報(bào),,2007,30(1):83-85.
[9] 高磊,,戴冠中.AES算法中SubBytes變換的高速硬件實(shí)現(xiàn)[J].微電子學(xué)與計(jì)算機(jī),,2006,23(7):47-49.
[10] 何德彪,,胡進(jìn),,陳建華.基于FPGA的高速AES實(shí)現(xiàn)[J].華中科技大學(xué)學(xué)報(bào),2010,,38(2):101-103.