文献标识码: A
文章编号: 0258-7998(2014)01-0064-04
针对通信网络、数据存储加密等应用场景中的安全需求,人们对AES算法的硬件实现进行了广泛地研究。目前,对其高速高吞吐率的优化实现方法主要分为两类。
第一类采用组合逻辑计算字节代替变换中S盒代替表的值,并通过在组合路径中插入流水寄存器的方法来减小整个芯片的关键路径,从而提高最高时钟频率与数据吞吐率。HODJAT A[1]将数据映射到GF(24)上,MATHEW S K[2]将所有数据与变换系数均映射到GF(24)2上,并在组合路径中插入了不同级数的流水寄存器,实现了不同数据吞吐率的AES硬件电路。虽然这类实现方法有着面积占用小、数据吞吐率高的优点,但不能有效支持分组密码工作中目前已被广泛使用的密码分组链接CBC(Cipher Block Chaining)模式,影响算法实际应用的安全性。
第二类采用多核方案实现。Wang Maoyin[3]提出了面向不同安全等级的AES架构,Huang Wei[6]提出了低复杂性的多核异构安全SoC平台。虽然数据吞吐率较高,但这类方法在提高数据吞吐率的同时成倍地增加了电路面积,且仲裁逻辑的设计也会导致电路设计复杂性的增加。
基于以上问题,本设计基于一种改进的AES算法,在算法级对电路实现进行优化,将AES算法中字节代替变换与列混合变换进行合并,采用查找表方式实现,从而有效地缩短了关键路径,提高了时钟频率,同时支持分组密码CBC模式,提升了安全强度。
1 AES密码算法简介
AES密码算法是基于对称密钥密码实现的分组密码算法,分组长度为128 bit,密钥长度为128 bit、192 bit或256 bit。对应的轮数Nr分别为10、12和14。
AES密码算法在对明文进行加密时,经过的变换依次为字节代替变换、行移位变换、列混合变换和轮密钥加变换。
2 高速AES密码算法硬件结构设计
2.1 适用于CBC模式的硬件结构选择
分组密码算法对数据进行加/解密操作时,有多种不同的工作模式,其中ECB(Electronic Code Book)和CBC是两种常用的工作模式。
ECB模式中各明/密文分组独立处理、实现简单。但ECB模式无法隐蔽明文数据的格式规律和统计特性,无法抵抗组的重放、嵌入和删除等攻击,使密码分析者可以按组进行分析,这对长报文而言并不安全。CBC工作模式中加密算法的输入是当前明文分组与前一密文分组的“异或”。其能够隐蔽明文数据的格式规律和统计特性,使相同的明文分组未必蕴涵着相同的密文分组,可以有效克服ECB模式的弱点。
为使AES密码芯片能够有效支持分组密码CBC模式,在实现时要对其硬件结构设计进行充分的考量。
分组密码算法的硬件实现结构通常可以分为两种——循环迭代结构和全流水结构。
图1(a)所示,循环迭代结构将明文分组接入AES运算模块进行Nr轮迭代运算后输出,关键路径为经过数据选择器和AES运算模块到轮数据寄存器的延迟,其共需Nr个时钟周期完成加/解密运算。对于分组密码CBC模式而言,下一明文分组等待Nr个时钟周期后与当前明文分组的密文结果先进行“异或”,再开始加/解密运算。
图1(b)所示,全流水结构以在每轮运算之间插入流水寄存器的方式实现,其关键路径与循环迭代结构相同。在输入数据连续,即每个时钟周期输入1个明文分组的情况下,当前明文分组与下一明文分组连续输入时,下一明文分组在没有得到当前明文分组对应的密文结果之前就输入进行计算,这显然不能满足分组密码CBC模式的工作条件。在输入数据不连续(即下一明文分组在得到当前明文分组的密文结果后,先“异或”再进行加/解密运算)的情况下,下一明文分组需要等待Nr个时钟周期才能进行加/解密运算。此时,芯片的吞吐率与采用循环迭代结构实现时相同。
但在占用面积资源方面,采用全流水结构时,电路结构中需要Nr个128 bit位宽的轮数据寄存器和Nr个AES运算模块,占用面积较大。采用循环迭代结构实现时,电路结构中只需1个128 bit位宽的轮数据寄存器和1个AES运算模块通过硬连线进行迭代就可实现,占用面积较小。
因此,为有效支持分组密码CBC模式,同时考虑到资源占用问题,本设计采用循环迭代结构来实现AES密码算法。
2.2 整体架构设计
本设计的架构设计主要分为(ENCRYPT/DECRYPT)加/解密模块和(EXPANDKEY)密钥扩展模块两大部分。
如图2所示,输入数据寄存器直接接入与密钥扩展模块输出的128 bit轮密钥进行“异或”操作,而后数据依次进入(ShiftRow)行移位变换模块、(Sub&Mix)字列合并变换模块,并将运算结果存入轮数据寄存器。以此类推,每一轮的轮寄存器当中存入的都是其相应轮数的运算结果。若为最后一轮时,数据直接与最后一轮密钥相“异或”进入输出寄存器。
例如,第1列32 bit列向量中Column1的第i个字节通过硬连线接入(S&M Table i)字列合并查找表i中(i=1,2,3,4),对查找表的结果进行“异或”后,输出该32 bit列向量经过字节代替变换与列混合变换后的结果。
2.4 密钥扩展模块设计
由于AES密码算法的密钥扩展算法是以字为单位进行操作的,所以要将128 bit、192 bit和256 bit的密钥存入4、6和8个不同的32 bit位宽寄存器中。之后初始密钥数据按照密钥扩展算法被扩展成4(Nr+1)个字的阵列,记其为W[0],W[1],…,W[4Nr+3]。
如图4所示,经ModeSel信号选择后,电路可完成3种不同密钥长度的AES密钥扩展算法。对于128 bit、192 bit和256 bit的密钥长度,本设计一个时钟周期分别能够输出4、6和8个字的轮密钥。
初始密钥输入到不同个数的32 bit位宽输入密钥寄存器中,经密钥扩展运算后并置输出至KEY.OUT,同时返回迭代,通过数据选择器选择作为下一轮密钥扩展算法的输入。其分别需要经过10、9和8个时钟周期完成密钥扩展运算。
为减小整个芯片的关键路径,本设计采用预先生成密钥扩展模块设计,在电路接收到初始密钥之后,在状态机控制信号的控制下预先生成加/解密模块所需要的Nr轮密钥序列,并将每轮的128 bit密钥存入相应的寄存器当中,在使用时结合状态机不同轮数的选择信号,将每轮的轮密钥输出至加/解密模块以完成相应轮数的加/解密运算。这样一来,在使用时只需结合相应的选择信号从这些寄存器中选择相应的轮密钥,不需要在线生成轮密钥。因此可以减小整个芯片的关键路径,提高时钟频率。
3 实验结果
在0.13 μm CMOS工艺条件下,利用综合工具对本设计进行逻辑综合优化。仿真结果显示,本设计的关键路径为1.28 ns,最高时钟频率为781 MHz,在这一时钟频率下,在密钥长度分别为128 bit、192 bit和256 bit时,最大数据吞吐率分别可以达到9.9 Gb/s、8.3 Gb/s和7.1 Gb/s。
表1所示为本设计与相关文献中AES硬件设计在工艺、面积、最高时钟频率、吞吐率和性能面积比等方面的仿真结果对比情况。
在0.13 μm CMOS工艺下,LIN S Y[4]提出了同样支持ECB、CBC模式的高数据吞吐率AES密码芯片;HAMALAINENP[5]设计实现了小面积、低功耗的AES算法核,Yan Weiwei[6]实现了可重构的AES算法,本设计在数据吞吐率方面较其均有显著的提升。HODJAT A[1]和MATHEW S K[2]以流水线方式实现AES算法,虽然数据吞吐率较高,但不支持CBC模式,安全性较低。
本设计基于改进AES算法,在算法级对电路进行优化,将字节代替变换和列混合变换整合为一次查表完成,缩短了关键路径,提高了最高时钟频率和数据吞吐率。同时采用轮间循环迭代结构设计,占用相对较少的面积。仿真结果证明,本设计在密码处理速率上有较高的指标,在支持密钥长度为128 bit、192 bit和256 bit AES算法的同时,支持分组密码工作中的ECB、CBC模式,可以有效满足当前人们对于芯片在通信网络、数据存储加密等应用场景中的高速数据处理需求,并可以作为一个独立的IP核嵌入到SoC芯片中。
参考文献
[1] HODJAT A,VERBAUWHEDE I.Area-throughput trade-offs for fully pipelined 30 to 70 G/s AES processors[J].Computers,IEEE Transactions on.2006,55(4):366-372.
[2] MATHEW S K,SHEIKH F,KOUNAVIS M,et al.53 Gb/s Native GF(24)2 composite-field AES-encrypt/decrypt accelerator for content-protection in 45 nm high-performance microprocessors[C].VLSI Circuits(VLSIC),2010 IEEE Symposium on.2010.
[3] Wang Maoyin,SU C P,HORNG C L,et al.Single-and multi-core configurable AES architecturs for flexible security[J].Very Large Scale Integration (VLSI) Systems,IEEE Transactions on.2010,18(4):541-552.
[4] LIN S Y,HUANG C T.A high-throughput low-power AES cipher for network applications[C].Design Automation Conference,2007.ASP-DAC′07.Asia and South Pacific,2007.
[5] HAMALAINEN P,ALHO T,HANNIKAINEN M,et al.Design and implementation of low-area and low power AES encryption hardware core[C].Digital System Design:Architectures,Methods and Tools,2006.DSD 2006. 9th EUROMICRO Conference,2006.
[6] Yan Weiwei,YOU K,Han Jun.Low-cost reconfigurable VLSI implementation of the SMS4 and AES algorithms[C].ASIC,2009.ASICON′09.IEEE 8th International Conference,2009.