文献标识码: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.