新闻中心

EEPW首页 > 嵌入式系统 > 设计应用 > AES算法的快速硬件设计与实现

AES算法的快速硬件设计与实现

作者:北京电子科技学院 李雪梅时间:2008-07-10来源:电子设计应用收藏

  2.3 轮函数优化设计

本文引用地址:http://www.amcfsurvey.com/article/85545.htm

  优化轮函数设计,减少轮函数的延时,是提高算法时钟频率的关键。本文通过对轮函数中Substitute Byte、Shift Row和Mix Column变换进行优化来提高 算法的时钟频率。

  轮函数中Substitute Byte(S-Box)是对一个字节的非线性操作。使用Verilog HDL描述S-Box通常有两种方法:(1)使用case语句进行行为描述,综合后占用LE资源;(2)使用中的存储器资源。算法的S- Box是一个8入8出的查找表,如果用LE实现,则在Cyclone芯片中每个S-Box需要208个LE,算法的并行运算需要32个S-Box,共6656个LE,不但占用大量的硬件资源,而且使结构复杂,增加了延时。而用存储器资源实现S-Box,不需占用其他硬件资源,并且可以减少延时,是个很好的选择。本文即采用这种方法,并充分利用器件资源:Cyclone器件中每个memory block可以设计为一个256×16bit的ROM,将加/解密过程的S-Box设计在同一个ROM内,加密S-Box内容置于ROM的前8bit,解密S-Box内容置于ROM的后8bit,这样可以使memory block的数目比分别使用ROM设计时减少一半,大幅提高了资源利用率。Shift Row的硬件实现非常简单,只是连线操作。为了进一步降低由于连线引起的延时,将Substitute Byte与Shift Row合为一体,使两部分延时仅取决于S-Box的ROM。Mix Column变换被定义为系数在有限域GF(28)上的四次多项式矩阵乘法[4],输入列向量(X0,X1,X2,X3),输出列向量(Y0,Y1,Y2,Y3),加密过程是在GF(28)上乘以01、02、03,解密过程相对复杂,是在GF(28)上乘以09、0E、0B、0D。为了简化设计以便于实现,可将矩阵乘法展开并整理,得到以下结果:

  加密Mix Column:

  解密Mix Column:

  式中a是对一个字节的变换函数,其Verilog HDL描述为:

  a={b[6:0],1′b0}^(8′h1b&{8{b[7]}});

  经过整理,简化了Mix Column实现过程,节约了硬件资源。Add Round Key只是简单的异或,占用资源较少。优化设计后轮函数的最大延时仅8.6ns,为提高整个设计的时钟频率提供了保障。

  3 算法的快速实现

  3.1 AES算法的硬件实现方式

  AES算法的轮操作特点使得其硬件实现可以有多种方式[3]:(1) 串行运算:轮函数用组合逻辑实现,10轮迭代过程直接相连,前一轮结果直接作为下一轮的输入,1个时钟周期内完成一个分组运算,吞吐量可以达到最佳状态。 (2)基本迭代:采用反馈模式,所有迭代只用一个轮函数,10个时钟周期完成一个分组运算。(3)轮内流水线:在每一个轮函数中插入寄存器,将一轮运算分成多个操作段,每个时钟完成一个操作段,这种方式被很多人讨论并使用,其优点是可以提高算法运行的时钟频率。

  在以上几种AES算法实现方式中,方式(1)由于10个轮函数同时工作,不但需要大量的寄存器资源和组合逻辑资源的支持,而且还增加了延时,一般的芯片难以满足容量的要求,时钟频率也非常低,所以这种方法不适合加密算法的硬件实现。方式(2)实现简单,资源占用较少,但每个分组运算时间比较长,吞吐量仍然相对较低。在方式 (3)中,由于加密算法的轮操作特点使得轮内各级流水部件不能同时执行,增加了算法运行的时钟数目。轮内流水线级数越多,时钟数目也越多。虽然算法仿真频率可以达到很高,但由于受硬件加密系统全局时钟的影响,吞吐量并没有明显提高。

  在对以上算法的几种实现方式进行分析后,本文基于流水线技术,提出一种更快速的AES算法的FPGA实现方案。该方案即使在全局时钟频率较低的情况下,也能获得很高的吞吐量。



评论


相关推荐

技术专区

关闭