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