DIY编程器网
标题:
基于FPGA的AES算法芯片设计实现
[打印本页]
作者:
liyf
时间:
2012-1-17 15:00
标题:
基于FPGA的AES算法芯片设计实现
引言密码模块作为安全保密系统的重要组成部分,其核心任务就是加密数据。分组密码算法AES以其高效率、低开销、实现简单等特点目前被广泛应用于密码模块的研制中。密码模块一般被设计成外接在主机串口或并口的一个硬件设备或是一块插卡,具有速度快,低时延的特点。而从整体发展趋势来看,嵌入式密码模块由于灵活,适用于多种用户终端、通信设备和武器平台,将会得到更加广泛的应用。基于FPGA实现的嵌入式密码模块与以往的主流硬件实现方式(如DSP芯片、单片机)相比,具有低成本、高速度、微功耗、微小封装以及保密性强等优点,与ASIC相比具有设计灵活、成本低、周期短等优点。另一个明显的优点在于:在对时间代价和空间代价的取舍上,基于FPGA实现的加密技术提供了多种实现方案,分别对时间代价和空间代价有不同的偏重,有利于在各种应用环境中进行优化。硬件实现无论是ASIC方案还是FPGA方案,数据处理速度的提高都离不开优化技术,包括算法轮函数和设计结构的优化。AES算法的快速实现方案包括:优化 S盒的结构(如使用复合域、查表等方法),列混合与密钥加的结合,以及采用流水线技术等。表1为几种典型的AES算法实现性能对比情况。AES算法结构AES是一个迭代型的分组密码,包含了轮变换对状态的重复作用。用State表示待加密状态,CipherKey表示初始加密密钥,ExpandedKey表示扩展密钥,其加密过程描述如下:Round(State,ExpandedKey) --轮变换{SubByte(State); --字节代替表1几种典型的AES算法实现性能对比ShiftRow(State); --行移位MixColumn(State); --列混合AddRoundKey(State,ExpandedKey
); --密钥加}AES(State,CipherKey)--主函数{KeyExpansion(CipherKey,ExpandedKey); --密钥扩展AddRoundKey(State,ExpandedKey[0]); --模加轮密钥For(i=1;i FinalRound(State,ExpandedKey[Nr]); --末轮运算}在AES的单轮运算中包含了SubByte(字节代替)、ShiftRow(行移位)、MixColumn(列混合)、AddRoundKey(密钥加)四个步骤。图1所示为单轮运算的加/脱密结构。
图1 单轮运算的加/脱密结构AES算法芯片IP核的完整结构包括:接口模块,密钥扩展模块,控制模块,加/脱密模块。各模块之间的统一调度、协调配合是芯片性能的保证。然而制约芯片吞吐率的瓶颈是加/脱密模块的实现。本文在第三部分着重分析了加/脱密模块实现方案。
加/脱密模块实现方案对于分组密码芯片加/脱密模块的实现,有迭代结构、轮展开结构和并行流水线结构等方法。迭代结构需要n(n为加/脱密轮数)个时钟周期完成一个分组的加/ 脱密操作。这种结构占用面积最小,速度较慢。而轮展开结构能够有效提高加/脱密速率,却需要大量占用存储单元和布线资源,因而面积最大。在设计芯片时,我们需要采用一种速度和面积的有效折衷方案,使得在满足速率要求的前提下尽可能减少资源占用。并行流水线结构就是这样一种方案。流水线技术其实质就是在适当的地方加入寄存器,将前面的运算结果或输入数据暂存,并在下一个时钟到来时将寄存值作为后一级运算的输入。流水线处理如同生产装配线那样,将操作执行工作量分成若干个时间上均衡的操作段,从流水线的起点连续地输入,流水线的各操作段以重叠方式执行。这使得操作执行速度只与流水线输入的速度有关,而与处理所需的时间无关。AES分组密码在非反馈模式下,后续块的加密与前块的加密结果无关,即所有块的加密可并发执行,因而采用流水结构能显著提高性能。流水线的引入可以采用轮内流水线结构或者轮间流水线结构来实现。轮内流水线结构把在一个时钟周期内欲完成的运算划分为若干子运算(模加运算、查表和各级移位相加运算),采用寄存输出模式,这种方式既可缩短延时路径,提高时钟频率,又可使各子运算同时进行。这样一来虽然速度有可能提高,但是增加了控制的复杂度同时占用大量的存储单元,这对于FPGA实现来说将是很大的负担,所以本设计采用轮间流水线结构来实现。图2为轮内流水线结构和轮间流水线结构对比。以 10轮运算为例,可以按轮数(3、3、3、1)拆分为4个流水段,即:第1-3轮为第1段,第4-6轮为第2段,第7-9轮为第3段,第10轮为第4段。为了使各流水段的时间片均衡,在第4段内部需要加入锁存器使输出与前3段匹配。用VHDL语言描述实现这个流水线式电路的代码如下:Proc1:process(Data_in)beginA[tr][td]
[/td][/tr][/table]图4 加密过程时序?结合FPGA的结构特点,本设计实现的IP核具有如下特点:接口设计灵活,外部接口的设计和定义可以根据不同加密芯片的接口设计要求现场改动。资源占用小,脱密电路采用与加密电路部分复用的结构实现,从而节省了资源。设计支持重用,在算法实现顶层设计时采用了模块化设计方法,结构清晰,可以根据不同的功能需求进行改动,利于设计重用
欢迎光临 DIY编程器网 (http://diybcq.com/)
Powered by Discuz! X3.2