热度 8
2013-3-25 09:09
1873 次阅读|
0 个评论
翻译第二弹,原文《Efficient Implementation of AES IP》,有兴趣的共同探讨一下 摘要: 本文将给出采用ASIC设计方法和FPGA设计方法实现的具有不同结构的AES IP。对于ASIC方法进行的设计,AES IP的性能(如面积、功耗、延时)通过采用TSMC0.35um工艺库和TSMC0.18um工艺库进行了对比。采用FPGA方法实现的AES IP性能采用Altera和Xilinx开发板进行了对比性的评估。通过进行列变换/预处理反列变换等对比性处理,本文给出的结构的硬件较之已有的结构,其实现面积更小。由于在主处理器和单个AES模块间I/O瓶颈的问题,本文给出了可重构带宽的方法实现共享结构,以增强系统性能。 关键字: 高效编码单元 列变换 FPGA 有限域 单元基本库 一:简介 如今,采用数字密码学进行数字信号处理和通信已经成为一种约定俗成标准,且广泛应用在信息保护中,防止经济上的损失,防止诈骗,以确保每个人的隐私安全。高级加密标准(Advanced Encryption Standard,AES),又称 Rijndael加密法,是美国联邦政府采用的一种区块加密标准。它经过五年的甄选流程,由高级加密标准由美国国家标准与技术研究院 (NIST)于2001年发布于FIPS PUB 197,并且成为有效的标准。 加密解密变换可以采用软件和硬件的方式实现。采用软件方式时,物理安全和实现速度会受到限制,在实际的应用中可能得不到很好的应用。而相比之下,采用硬件实现可以达到更好的物理安全性能,达到高的吞吐量提供更优越的性能。传统硬件实现的缺点是灵活性不够。场可编程逻辑门阵列(FPGA)在硬件设计中更具有吸引力,因为它可以提供可重构的灵活性,物理安全性,潜在的更高的性能,这些都是软件实现所不具备的。 就硬件实现的性能而言,有必要对AES主要的操作,即加密过程和解密过程进行优化。另外,主处理器和AES共同操作会对硬件性能的评估带来很大影响。例如,每条指令超过2倍的数据流较之32bit处理器,能在一个64bit的数据路径中很好的处理。由于处理器结构中拥有不同的数据路径,会使AES芯片中的数据开关出现瓶颈,而这些数据采用128bit的AES算法。采用可重构的带宽进行AES模块的共享能够提高性能,本文将给出次方法。 二:AES 背景知识回顾 Rijndael(高级加密算法)原始设计方法分组密码,采用可变块长度和可变密钥长度实现。块长度和密钥长度可以独立的采用128位,192位或者256位。AES中重复轮次数是根据密钥长度定的。例如,当密钥长度采用128位,192位或者256位时,对应的重复轮次数为10,12和14。AES在一轮变换中采用4*4字节数据块进行处理,在每一轮中进行4次不同的可逆变换,SubBytes(字节替换)、ShiftRows(行位移变换)、MixColumns(列混合变换)和 AddRoundKey(轮钥变换)。开始时,输入数据和密钥采用AddRoundKey(轮钥变换)方式加在一起,在进行过轮钥相加之后,再进行Nr轮的加密。在轮操作中产生的中间变换叫做state,state信息然后被恢复,SubBytes(字节替换)、ShiftRows(行位移变换)、MixColumns(列混合变换)和 AddRoundKey(轮钥变换)按照一定的顺序执行。刚开始的Nr-1轮是相同的。每轮包含着这四个步骤,除了在最后一轮的时候跳过MixColumns(列混合变换)这一步骤。上述的四个变换都有相应的反变换以便译码过程可以按照相反操作顺序进行。 SubBytes 替换用一个代替表替换单个字节。S-box操作包含两个变换:可逆惩罚变换,基于有限域GF(2^8)中的不可约多项式:m(x) = x^8 + x^4 + X^3 + x + 1和基于有限域GF(2)中的仿射变换,仿射变换可表示如下: 反SubBytes采用字节相减的方法,有对应的反变换表。反仿射变换可表示为: 其中bi代表一个字节中的第i个比特。ShiftRows(行位移变换)通过旋转 4字节行的4组字节进行序列置换,根据行的位置,对S-box行中的1,2,3和4行中的内容相应的左移0,1,2和3个字节。在反ShiftRows(行位移变换)中,根据行偏移中的偏移量进行相应的右移操作。MixColumns(列混合变换)对state中每列中的四个字节进行操作,用域加和域乘的组合来替换字节。每一列是有限域GF(2^8)中多项式的系数,由该系数组成的多项式在取模多项式x^4+1下与p(x)相乘,p(x)如下: 在反MixColumns(列混合变换)中与多项式p-1(x)相乘,p-1(x)表示如下: 在轮钥相加过程中,一个轮密钥采用bit异或操作应用到state中。 三:AES主操作 如等式(1)和等式(2),仿射变换和反仿射变换,是一系列的异或操作,SubBytes(字节替换)和反SubBytes(字节替换)能够集成以减少硬件消耗。集成的SubBytes(字节替换)和反SubBytes(字节替换)的结构如图1所示。 S-box盒在加密和解密过程中是公用的,SubBytes(字节替换)的有效利用可以大量节省面积的消耗。公式(4)中的系数比起公式(3)中的系数而言要复杂多了。这表示反MixColumns(列混合变换)的硬件结构复杂度比起MixColumns(列混合变换)要大的多。为了减少设计的复杂度,反MixColumns(列混合变换)的设计可以采用分解的方法,以便可以和MixColumns(列混合变换)的硬件进行共享。对于并行的MixColumns(列混合变换)进行分解如下: 对一系列的反MixColumns(列混合变换)进行分解: 如以上的式子,一系列的分解可以实现有效的乘法,因为d(x)中的两个系数是0。 如果新的多项式的次数大于7时,那么这个关于x的多项式的分解过程是一个1bit的左移过程和与一个不可约多项式的相加过程,此多项式为: 。对于A属于 有限域GF(2^8)表示一系列的bit串B7B6B5B4B3B2B1B0,乘法结果可以表示如下: 基本的xtime模式如图2: 对于32bits的输入,字W=W3W2W1W0,每个Wi是8个字节,基于等式3的MixColumns(列混合变换)可以表示为: 数组中的头一个字节操作可以表示为: 基于公式(9)-(11),MixColumns(列混合变换)的实现结构可如图3所示。 对于反MixColumns(列混合变换),等式(8)可以重写为: 反MixColumns(列混合变换)预处理过程的结构是基于公式(12),如图4所示。集成的MixColumns(列混合变换)和反MixColumns(列混合变换)的功能块如图5所示。 如图6所示,提出了一种可重构带宽分享模型来增强AES性能。在AddRoundKey(轮钥变换)前设计了一种带宽控制电路来从系统总线上获得数据。带宽控制能够和处理器模块很好的匹配,而处理器控制着AES模块。所提出的结构的主要优点是能够改善由于在主处理器和AES模块之间的I/O瓶颈问题,提高系统性能。这些特征能够使AES模块优化I/O数据接口。 四:完成结果 采用TSMC 0.35um和TSMC 0.18um工艺库对IP模块进行了RTL级代码的门级综合。综合时的verilog代码采用Moldelsim SE 6.0进行的仿真,并用了数据存储器和指令存储器协助仿真。采用Synopsys PrimePower功耗计算功能获得开关能力。对于FPGA的执行,采用xilinx Virtex和Altera Stratix GX系列芯片实现。AES模块检验平台包括一个ARM7TDMA处理器,采用Xilinx VirtexE进行控制。主要的程序包括密钥扩展,密钥选择。密钥扩展的软件的实现包括XOR,字节转换和Roon操作,这些都是在ARM7TDMA处理器上实现的,产生的轮密钥存储在处理器中的存储器内。对AES模块而言,本文测试了两个不同结构的模块。第一个模块执行的是加密和解密的操作,并没用集成功能模块。在第二个模块中S-box和反S-box被集成在内,为字节变换和反字节变换服务。集成的S-box模块执行了S-box和反S-box功能,并采用了查询表的方式。同时也集成了列变换和反列变换,以验证相应的变换。 ASIC完成的实验结果总结在表I中,表II是FPGA的实现结果。单元类型,面积,总功耗,动态功耗,漏电功耗,开关功耗等采用的是Synopsys PrimePower分析获得,也一并总结在表I。表II总结了FPGA的实现结果,包括分块数,查询表,逻辑单元,总功耗(Xpower工具得到),扇入扇出。结果总结在表III,对列变换和反列变换的不同结构进行了对比。 五:总结 对AES模块而言,精确解释最终的结果是很困难的,因为不同的平台需要对应不同的映射算法。然而,从面积性能的观点而言,功能集成的AES模块明显优于没有功能集成的模块。例如,采用TSMC 0.18um的单元库,对于实现加密和解密操作的硬件数,功能集成的模块比没有功能集成的少29%。对于Xilinx VirtexE/Altera Stratix GX实现,相比于AES1的性能上,AES2节省了近50%,节省了30%在LUTs上,节省了近33%。最终结果表明,所提出的集成了列变换和反列变换的结构相比相关的工作,会比没有集成列变换和反列变换在面积上更好的提升。 六:致谢 本研究由国家科学委员会支持,在资金NSC-95-2622-E-214-005-CC3支持下。