3.2 子密钥的生成
DES算法每一轮次迭代都需要一个子密钥,采用流水线实现DES算法,就需要提前生成子密钥,随流水线进程发送给各个模块。输入密钥分别经置换选择1、第n轮的循环左移和置换选择2这3个步骤后得到第n轮的子密钥。如果用VHDL按照每一轮次循环移位的位数一步步得到16轮次迭代的子密钥,那么16轮次子密钥的生成需要做56x28次移位运算,同时需要56个寄存器存放每一轮子密钥的中间结果,这样不仅语言描述复杂,占有较多的硬件资源,而且每轮次密钥移位次数不同,需要的运算时间不同,会给算法的迭代运算带来更大的等待延迟。因此,通过分析得到生成每一轮子密钥时,相对输入密钥所需移位的数目,直接将各个子密钥提前生成。这样不仅降低了资源消耗,提高算法的执行速度,也消除了各个圈子密钥之问的相关性。
3.3 S盒的设计 S盒的设计是DES算法关键部分,S盒设计的优劣将影响整个算法性能。在采用FPGA实现时,应从资源和速度的角度出发,有效利用FPGA可配置属性,充分考虑器件内部结构,尽可能使两者都达到最优。S盒是一个4x16的二维数组,根据输入的6位地址数据确定输出,中间4位数据确定列,两边2位确定行,所产生的行列数据对应的地址空间中存放的就是输出的4位数据。为了利用FPGA内部的4输入查找表结构,可重新设计S盒的逻辑描述,即先固定2个变量,而使另外4个变量发生变化。实现时使用双重case语句,外层使用2个变量,对应S盒输入的第1、6位。内层使用4个变量,对应S盒输入的第2、3、4、5位。形成一个6输入、4输出的查找表。这样就可以充分利用FPGA的内部资源,提高综合效率,加快算法执行速度。
3.4 子密钥延迟控制
图3中的子密钥延迟控制单元可完成子密钥的延迟控制,它由一系列寄存器构成。通过时钟触发数据块依次向下传输给各级流水线,子密钥依次存入下一级寄存器,在相应数据块加密时从寄存器读取,便实现16个不同数据块同时加密。在新更换密钥时,各个子密钥分别存入寄存器(i,1),随时钟触发依次在流水线寄存器中流动,以前在流水线上继续使用的子密钥也同时在流水线寄存器中随数据块流动,通过合理使用寄存器,完成数据块和子密钥的同步,准确快速分发子密钥,实现密钥的动态更换。
4 仿真结果
采用VHDL作为设计逻辑描述.以OuartusⅡ作为设计开发工具,以Ahera公司Cyclone EPlCl2F324C6为目标器件,逻辑综合结果表明系统共占用4 368个逻辑单元(LE),系统的最高时钟频率为222.77 MHz,对信息的加密速度为222.77x64 Mb/s=14.26 Gb/s。由表1给出的DES算法有关硬件和软件实现性能对比结果表明,该系统的数据加密速度是最快的,是软件实现的112倍.同时其资源消耗指标也较理想。
假设需要加密的明文M=0123456789ABCDEF H,密钥K=133457799BBCDFFl H,经过初始置换,16轮迭代加密,逆初始置换,最终的加密密文应为:85E813540FOA8405H,其时序仿真结果如图4所示,仿真结果表明,系统完全实现DES算法的流水加密功能。
5 结语
在分析DES算法原理的基础上,详细阐述了一个基于VHDL描述、FPGA实现的DES加密算法系统的设计和仿真结果。该系统与传统软件加密系统相比,设计灵活,处理速度快,密钥可动态刷新,抗解密强度高,稳定性好,重用性强,升级方便。