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