Chodowiec等人提出了轮内流水线技术,以优化这类加密变换轮较为复杂的算法。轮内流水线将加密轮分割为多级,在每一级间插入寄存器,以实现流水线,如图2(a)所示。这种方法的优点在于所增加的资源消耗很少,仅需多级寄存器;然而也存在缺点,轮内流水线很难平衡各级间的延迟,而整体时钟的频率只能由最长流水线的延迟决定。我们的实验将AES加密函数按其组成模块分割为4级流水线,要将其分为更多级也是可以做到的,但较为困难,因为类似S一盒这样的长结构很难再分,而它们的延迟将决定总体时钟的频率。
根据图3所示实验结果,轮内流水线结构的执行效率比迭代结构的执行效率高5倍,而所需资源反而比迭代结构减少11%。经分析,轮间流水线结构加入了模块问寄存器,所需资源应该增加,而实际综合结果却是减少。为此我们详细分析了两模块中各结构的综合报告。从报告的数据看,应该是逻辑综合软件对设计的优化,使得轮间流水线结构所需资源反而减少。
为了达到极高的加密速度,将轮内流水线和轮外流水线结合使用,设计了混和轮内外流水线结构。混合轮内外流水线结构具有极短的流水线单级延迟,因而时钟频率可以提高到212.5 MHz。同时,混合轮内外流水线结构能够在每一时钟周期内完成一个数据分组的加密,这样,加密的速度就可以达到27.1 Gb/s。这一速度是目前有关AES的高速加密芯片实现的报告中数据较高的。为了达到这样高的加密速度,所需要的资源也是相当可观的。逻辑综合结果显示,完成这一设计需要17 887个逻辑单元,如图4所示。这相当于4块Xilinx XC2V1000 FPGA的容量。同时,我们也评估了各种实现结构的效率,用速率资源比,即每秒所能进行加密的Mb数除以设计所需的逻辑单元数目得到的比值作为结构的效率。从图5可以看到,轮内循环结构是最高效的一种设计,其比值为3.49;而循环展开结构效率最低,仅0.12。因此,在逻辑资源相对有限的条件下,选择使用轮内循环是比较合适的。
3 结 论
综上所述,除对AES加密算法基本运算变换的优化外,算法的整体实现结构对其加密性能的影响是很重要的一个方面。一般情况下,在对效率要求不是很高的环境中,迭代结构实现简单,所需资源最少,因而较为合适;但要达到更高的加密效率,并且希望实现代价较低的情况下,采用轮内流水线结构是一个较为合理的折中方案;只有当有大量资源可用并且追求最高的加密性能时,才有必要采用轮内轮间多级混合流水线结构。