0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

AES算法的流水线性能在可重构平台上的优化实现方法研究

电子设计 来源:郭婷 作者:电子设计 2019-05-03 09:08 次阅读

1 、AES-RijndaeI算法总体结构

AES-Rijndael算法是一个替换一置换网络结构的分组密码算法。它的设计基于有限域上的多项式运算,密码算法的主体结构由4部分组成:SubBytes,进行S-盒非线性变换;ShiftRows,状态矩阵的水平置换;MixCol-umns,执行有限域GF(28)上的矩阵乘运算;AddRoundK-eys,通过简单异或运算使子密钥与状态矩阵发生联系。算法经过Nr轮变换,将一个128位明文分组加密成为一个128位的密文分组。这里Nr是一个与密钥长度相关的常数。对于128位密钥的情况,Nr的值为 10。除了最后一轮外,其他每一轮加密过程都相同。最后一轮加密中省去了 MixColumns变换,以抵抗某些特殊密码分析。

2 、循环展开和流水线优化

对于前述AES加密过程的实现,如图1(a)所示,我们针对可重构平台下4个变换函数的实现方法进行了优化,优化后的加密过程时钟频率达到了127.9 MHz。这样,对于一个128位明文分组的加密需要11个时钟周期,因此,其加密速率为1.49 Gb/s。这一速率已经能满足绝大多数应用的需要,然而为了满足一些更高速应用的需要,可以通过改变加密处理过程体系结构进一步优化相应设计。要提高加密速率,最简单的方法是使用循环展开技术将迭代加密的结构展开,并将多份加密轮变换电路的输入输出首尾相连,如图1(b)所示。这样可以节省寄存器建立延迟和选路器的传输延迟时间,从而加快加密变换处理的速度。然而,这种方法会消耗大量的逻辑资源,并且性能提高得不多。根据我们的实验,循环展开后的芯片速度比迭代结构增加了17%,然而所消耗的逻辑资源却是迭代结构的6倍。因此,这一优化方法的效率是极其低的;只有在对性能要求很高,但资源又充分的情况下才能采用。

AES算法的流水线性能在可重构平台上的优化实现方法研究

另外一种优化方法是使用流水线技术。它是将关键执行路径切分为多级短的执行步,并在各执行步电路间插入寄存器存储上一级执行结果。这样,虽然关键执行路径没有变短,但电路可以在一个较少的时钟周期内同时处理多个数据块的加密,从而提高了并发程度,因此,加密速率也就能大大提高。在设计加密算法处理流水线的过程中,最常用的是轮间流水线技术。轮问流水线技术是将循环展开结构按各加密轮切分为一系列的流水线,其中每一轮加密变换为一级。在流水线的各级之间插入寄存器,寄存器由同步时钟来控制,每次时钟触发,就保存上一次的变换结果,同时将之前保存的结果送流水线处理部件处理并将结果保存到下一级寄存器中,如图1(c)所示。根据我们的实验结果(见图3),轮间流水线结构的设计,加密速率是迭代结构的12倍;同时资源消耗也大量增长,是迭代结构的7倍。由实验结果可见,轮间流水线技术是一种对分组加密算法很有效的优化技术。特别是当算法中加密轮函数较为简单的情况下,轮间流水线技术是相当适用的;但是,对于一些轮函数复杂,加密轮数较少的算法,轮问流水线技术的优化效果就不是很突出了。

Chodowiec等人提出了轮内流水线技术,以优化这类加密变换轮较为复杂的算法。轮内流水线将加密轮分割为多级,在每一级间插入寄存器,以实现流水线,如图2(a)所示。这种方法的优点在于所增加的资源消耗很少,仅需多级寄存器;然而也存在缺点,轮内流水线很难平衡各级间的延迟,而整体时钟的频率只能由最长流水线的延迟决定。我们的实验将AES加密函数按其组成模块分割为4级流水线,要将其分为更多级也是可以做到的,但较为困难,因为类似S一盒这样的长结构很难再分,而它们的延迟将决定总体时钟的频率。

AES算法的流水线性能在可重构平台上的优化实现方法研究

根据图3所示实验结果,轮内流水线结构的执行效率比迭代结构的执行效率高5倍,而所需资源反而比迭代结构减少11%。经分析,轮间流水线结构加入了模块问寄存器,所需资源应该增加,而实际综合结果却是减少。为此我们详细分析了两模块中各结构的综合报告。从报告的数据看,应该是逻辑综合软件对设计的优化,使得轮间流水线结构所需资源反而减少。

AES算法的流水线性能在可重构平台上的优化实现方法研究

为了达到极高的加密速度,将轮内流水线和轮外流水线结合使用,设计了混和轮内外流水线结构。混合轮内外流水线结构具有极短的流水线单级延迟,因而时钟频率可以提高到212.5 MHz。同时,混合轮内外流水线结构能够在每一时钟周期内完成一个数据分组的加密,这样,加密的速度就可以达到27.1 Gb/s。这一速度是目前有关AES的高速加密芯片实现的报告中数据较高的。为了达到这样高的加密速度,所需要的资源也是相当可观的。逻辑综合结果显示,完成这一设计需要17 887个逻辑单元,如图4所示。这相当于4块Xilinx XC2V1000 FPGA的容量。同时,我们也*估了各种实现结构的效率,用速率资源比,即每秒所能进行加密的Mb数除以设计所需的逻辑单元数目得到的比值作为结构的效率。从图5可以看到,轮内循环结构是最高效的一种设计,其比值为3.49;而循环展开结构效率最低,仅0.12。因此,在逻辑资源相对有限的条件下,选择使用轮内循环是比较合适的。

AES算法的流水线性能在可重构平台上的优化实现方法研究

3 、结 论

综上所述,除对AES加密算法基本运算变换的优化外,算法的整体实现结构对其加密性能的影响是很重要的一个方面。一般情况下,在对效率要求不是很高的环境中,迭代结构实现简单,所需资源最少,因而较为合适;但要达到更高的加密效率,并且希望实现代价较低的情况下,采用轮内流水线结构是一个较为合理的折中方案;只有当有大量资源可用并且追求最高的加密性能时,才有必要采用轮内轮间多级混合流水线结构。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 芯片
    +关注

    关注

    454

    文章

    50677

    浏览量

    423005
  • 寄存器
    +关注

    关注

    31

    文章

    5334

    浏览量

    120208
收藏 人收藏

    评论

    相关推荐

    基于粒子群算法的自适应LMS滤波器设计及重构硬件实现

    空间,从而获得全局优化的系数.设计的滤波器应用于系统的跟踪响应中,并在基于重构硬件的平台上实现自适应滤波器.从收敛和失调
    发表于 04-26 16:13

    重构平台AES算法流水线性能怎么优化

    重构平台AES算法流水线性能怎么优化
    发表于 04-28 06:46

    现代RISC中的流水线技术

    作Stretch计算机)。后来的CDC 6600同时采用了流水线和多功能部件。到了20世纪80年代,流水线技术成为RISC处理器设计方法中最基本的技术之一。RISC设计方法的大部分技术
    发表于 03-01 17:52

    基于FPGA的AES加密算法的高速实现

    介绍AES算法的原理以及基于FPGA的高速实现。结合算法和FPGA的特点,采用查表法优化处理了字节代换运算、列混合运算。同时,为了提高系统工
    发表于 07-17 18:09 46次下载

    什么是流水线技术

    什么是流水线技术 流水线技术
    发表于 02-04 10:21 3927次阅读

    YHFT-DX高性能DSP指令控制流水线设计与优化

    摘要:YHFT-DX是国防科技大学设计的一款高性能定点DSP。论文设计并实现了YHFT-DX指令控制流水线,提出了在YHFT-DX超长指令字结构中跨取指包边界派发和指令预取的方法,有效
    发表于 02-28 15:22 36次下载

    电镀流水线的PLC控制

    电镀流水线的PLC控制电镀流水线的PLC控制电镀流水线的PLC控制
    发表于 02-17 17:13 36次下载

    一种针对重构处理器流水线简化编程的设计范式

    一种针对重构处理器流水线简化编程的设计范式_周君宇
    发表于 01-07 21:39 0次下载

    分布式调度算法流水线单位产能优化设计_李世光

    分布式调度算法流水线单位产能优化设计_李世光
    发表于 01-12 20:03 0次下载

    电能计量设备自动检定流水线调度优化研究_方彦军

    电能计量设备自动检定流水线调度优化研究_方彦军
    发表于 01-18 20:23 1次下载

    面向RCSP的AES算法软件流水实现方法

    针对轮函数在分组密码实现过程中耗时过长的问题,提出了面向重构密码流处理器( RCSP)的高级加密标准( AES算法软件
    发表于 12-01 17:15 1次下载

    浅谈GPU的渲染流水线实现

    颜色表示了不同阶段的可配置性或可编程性:绿色表示该流水线阶段是完全可编程控制的,黄色表示该流水线阶段可以配置但不是可编程的,蓝色表示该流水线阶段是由GPU固定实现的,开发者没有任何控制
    发表于 05-04 09:16 3826次阅读
    浅谈GPU的渲染<b class='flag-5'>流水线</b><b class='flag-5'>实现</b>

    各种流水线特点及常见流水线设计方式

    按照流水线的输送方式大体可以分为:皮带流水装配线、板链线、倍速链、插件线、网带线、悬挂线及滚筒流水线这七类流水线
    的头像 发表于 07-05 11:12 7326次阅读
    各种<b class='flag-5'>流水线</b>特点及常见<b class='flag-5'>流水线</b>设计方式

    嵌入式_流水线

    流水线一、定义流水线是指在程序执行时多条指令重叠进行操作的一种准并行处理实现技术。各种部件同时处理是针对不同指令而言的,他们同时为多条指令的不同部分进行工作。• 把一个重复的过程分解
    发表于 10-20 20:51 6次下载
    嵌入式_<b class='flag-5'>流水线</b>

    什么是流水线 Jenkins的流水线详解

    jenkins 有 2 种流水线分为声明式流水线与脚本化流水线,脚本化流水线是 jenkins 旧版本使用的流水线脚本,新版本 Jenkin
    发表于 05-17 16:57 1080次阅读