AES算法的快速硬件设计与实现
时间:11-09
来源:互联网
点击:
3 AES算法的快速实现
3.1 AES算法的硬件实现方式
AES算法的轮操作特点使得其硬件实现可以有多种方式:(1)串行运算:轮函数用组合逻辑实现,10轮迭代过程直接相连,前一轮结果直接作为下一轮的输入,1个时钟周期内完成一个分组运算,吞吐量可以达到最佳状态。(2)基本迭代:采用反馈模式,所有迭代只用一个轮函数,10个时钟周期完成一个分组运算。(3)轮内流水线:在每一个轮函数中插入寄存器,将一轮运算分成多个操作段,每个时钟完成一个操作段,这种方式被很多人讨论并使用,其优点是可以提高算法运行的时钟频率。
在以上几种AES算法实现方式中,方式(1)由于10个轮函数同时工作,不但需要大量的寄存器资源和组合逻辑资源的支持,而且还增加了延时,一般的FPGA芯片难以满足容量的要求,时钟频率也非常低,所以这种方法不适合加密算法的硬件实现。方式(2)实现简单,资源占用较少,但每个分组运算时间比较长,吞吐量仍然相对较低。在方式(3)中,由于加密算法的轮操作特点使得轮内各级流水部件不能同时执行,增加了算法运行的时钟数目。轮内流水线级数越多,时钟数目也越多。虽然算法仿真频率可以达到很高,但由于受硬件加密系统全局时钟的影响,吞吐量并没有明显提高。
在对以上算法的几种实现方式进行分析后,本文基于流水线技术,提出一种更快速的AES算法的FPGA实现方案。该方案即使在全局时钟频率较低的情况下,也能获得很高的吞吐量。
3.2 流水线设计
AES算法结构简单,只需要逻辑运算和查找表运算。笔者通过优化设计轮函数,使得基本迭代方式下的时钟频率远高于PCI接口的时钟频率33MHz。本文在满足算法时钟频率的基础上,通过降低算法分组数据的处理时间来提高吞吐量。具体做法是:采用两级轮外流水线,将AES算法的10轮迭代过程分为前后两个操作段,每个操作段可作为一级流水线,在操作段内部,每轮之间以反馈(FB)方式完成5轮基本迭代,前一个操作段结束后,将结果直接送入第二个操作段,同时去处理下一个分组数据,两个操作段互不影响,并行执行。考虑到实际应用中数据总线宽度(如PCI总线)通常为32位,这里将AES算法IP核的数据宽度设置为32位,4个时钟输入/输出一个分组数据。为了与每一级流水线5轮迭代过程相匹配,在输入/输出分组数据的第5n个时钟内执行一轮空操作,使得输入明文数据、输出密文结果、第一级流水线和第二级流水线四步操作同时执行,从而实现图3所示的流水线过程。在得到第一个分组结果后,每5个时钟就会产生一个分组结果,从外部看起来,完成一个分组仅需要5个时钟。
3.3 实验结果与性能分析
将设计在QuartusⅡ4.2软件中综合,仿真最高频率为78.38MHz,完全可以满足较低全局时钟频率的要求。整个系统设计采用33MHz时钟,实验测试结果表明,吞吐量已达到810Mbps。如果提高全局时钟频率,则吞吐量会超过1Gbps。
根据AES算法的特点及硬件加密系统的特点,给出了AES算法IP核的快速硬件设计方案。采用流水线技术和优化设计,在较低频率下,可以获得很高数据吞吐量,使加密算法的FPGA实现过程不再是传输速度的瓶颈。整个设计具有很强的实用性,运行稳定,且效果良好。对于AES算法分组长度和密钥长度为192bit和256bit的情况,由于分组长度不同,执行轮数有所增加。要实现流水线操作并在资源使用和吞吐量方面达到较好的效果,还需要进一步优化设计,这也是今后研究的方向。
3.1 AES算法的硬件实现方式
AES算法的轮操作特点使得其硬件实现可以有多种方式:(1)串行运算:轮函数用组合逻辑实现,10轮迭代过程直接相连,前一轮结果直接作为下一轮的输入,1个时钟周期内完成一个分组运算,吞吐量可以达到最佳状态。(2)基本迭代:采用反馈模式,所有迭代只用一个轮函数,10个时钟周期完成一个分组运算。(3)轮内流水线:在每一个轮函数中插入寄存器,将一轮运算分成多个操作段,每个时钟完成一个操作段,这种方式被很多人讨论并使用,其优点是可以提高算法运行的时钟频率。
在以上几种AES算法实现方式中,方式(1)由于10个轮函数同时工作,不但需要大量的寄存器资源和组合逻辑资源的支持,而且还增加了延时,一般的FPGA芯片难以满足容量的要求,时钟频率也非常低,所以这种方法不适合加密算法的硬件实现。方式(2)实现简单,资源占用较少,但每个分组运算时间比较长,吞吐量仍然相对较低。在方式(3)中,由于加密算法的轮操作特点使得轮内各级流水部件不能同时执行,增加了算法运行的时钟数目。轮内流水线级数越多,时钟数目也越多。虽然算法仿真频率可以达到很高,但由于受硬件加密系统全局时钟的影响,吞吐量并没有明显提高。
在对以上算法的几种实现方式进行分析后,本文基于流水线技术,提出一种更快速的AES算法的FPGA实现方案。该方案即使在全局时钟频率较低的情况下,也能获得很高的吞吐量。
3.2 流水线设计
AES算法结构简单,只需要逻辑运算和查找表运算。笔者通过优化设计轮函数,使得基本迭代方式下的时钟频率远高于PCI接口的时钟频率33MHz。本文在满足算法时钟频率的基础上,通过降低算法分组数据的处理时间来提高吞吐量。具体做法是:采用两级轮外流水线,将AES算法的10轮迭代过程分为前后两个操作段,每个操作段可作为一级流水线,在操作段内部,每轮之间以反馈(FB)方式完成5轮基本迭代,前一个操作段结束后,将结果直接送入第二个操作段,同时去处理下一个分组数据,两个操作段互不影响,并行执行。考虑到实际应用中数据总线宽度(如PCI总线)通常为32位,这里将AES算法IP核的数据宽度设置为32位,4个时钟输入/输出一个分组数据。为了与每一级流水线5轮迭代过程相匹配,在输入/输出分组数据的第5n个时钟内执行一轮空操作,使得输入明文数据、输出密文结果、第一级流水线和第二级流水线四步操作同时执行,从而实现图3所示的流水线过程。在得到第一个分组结果后,每5个时钟就会产生一个分组结果,从外部看起来,完成一个分组仅需要5个时钟。
3.3 实验结果与性能分析
将设计在QuartusⅡ4.2软件中综合,仿真最高频率为78.38MHz,完全可以满足较低全局时钟频率的要求。整个系统设计采用33MHz时钟,实验测试结果表明,吞吐量已达到810Mbps。如果提高全局时钟频率,则吞吐量会超过1Gbps。
根据AES算法的特点及硬件加密系统的特点,给出了AES算法IP核的快速硬件设计方案。采用流水线技术和优化设计,在较低频率下,可以获得很高数据吞吐量,使加密算法的FPGA实现过程不再是传输速度的瓶颈。整个设计具有很强的实用性,运行稳定,且效果良好。对于AES算法分组长度和密钥长度为192bit和256bit的情况,由于分组长度不同,执行轮数有所增加。要实现流水线操作并在资源使用和吞吐量方面达到较好的效果,还需要进一步优化设计,这也是今后研究的方向。
集成电路 FPGA 仿真 电路 Altera Quartus Verilog 总线 相关文章:
- 周立功:如何兼顾学习ARM与FPGA(05-23)
- 初学者如何学习FPGA(08-06)
- 为何、如何学习FPGA(05-23)
- FPGA 重复配置和测试的实现(08-14)
- 适用于消费性市场的nano FPGA技术(09-27)
- 赛灵思“授之以渔”理论:危机中如何巧降成本(06-04)