基于AXIStream接口的AES加密模块设计与验证

时间:2022-07-02 12:04:18

基于AXIStream接口的AES加密模块设计与验证

摘要:结合具体项目对信息安全的需求,研究了AES算法的实现过程。针对算法涉及的数论知识及实现步骤,对加解密算法进行了综合优化。在此基础上,设计了一种基于axistream接口的加密IP核,该IP核主要是针对实际项目中需要对流数据进行快速可靠的加密要求所设计的。结合实际项目场景以及AXIStream接口特点,IP核的设计可最大限度地减少资源消耗。IP核使用两个通道分别进行加密与解密的并行实现,经过Testbench模型仿真测试以及开发板真实环境的测试,其吞吐率可达1.12Gb/s,完全符合对速率要求较高的项目应用要求。

关键词关键词:aes加密算法;IP核;AXIStream

DOIDOI:10.11907/rjdk.162271

中图分类号:TP309.7文献标识码:A文章编号文章编号:16727800(2017)001015402

引言

随着集成电路的发展、FPGA结构与功能的改变,基于FPGA的开发模式也发生了很多变化。从传统使用单一的逻辑编程,发展到如今在SOC上大量使用各种知识产权核(IP核)进行设计。特别是在2011年,Xilinx推出了Zynq7000首款可扩展处理平台(EPP)[1],将业界标准的ARM双核CortexA9 Core处理系统与Xilinx可扩展的28nm FPGA架构整合在一起。因此,可以预见未来的开发模式将为“嵌入式+FPGA”。文献[2]、[3]提出了基于AXI总线的IP核设计,但其仅采用AXI总线中的AXI4接口,而在一些对速率要求比较苛刻的项目中,所用IP核的接口必须是更为高效的AXIStream接口。在设计加密IP核的同时,需要结合实际IP核所要运用的项目场景,考虑可能连接的IP核,最大化地使用官方IP核,进行自定义IP核的最优化设计,而这些在目前许多加密IP核设计中很难找到。

本文IP核的设计思想是在某军工项目的调试过程中得到的,其设计的IP核并不是简单地和SOC相连,而是通过AXISteam接口与DMA的IP核相连,对DMA输出的数据进行加密,加密后的事务同样通过AXIStream总线发送给其它总线矩阵。DMA有一定缓冲区,由于加解密IP核与DMA相连,通过计算分析,自定义的加解密IP核不需要任何额外的存储空间进行加解密数据存储,进一步简化了IP核设计。

1AXIStream接口介绍

AXIStream接口是一种用来连接需要交换数据的两个部件的标准接口,它可以用于连接一个产生数据的主机和一个接收数据的从机,也可以用于连接多个主机和从机。AXIStream接口符合AXI(Advanced Xetensible Interface)总线标准。AXI是一种总协议,该协议是ARM公司提出的AMBA(Advanced Microcontroller Bus Architecture)3.0协议中最重要的部分,是一种面向高性能、高带宽、低延迟的片内总线[4]。AXI 总线有读地址和控制、读数据、写地址和控制、写数据、写响应5个通道。AXI总线包括AXI4、AXILite和AXIStream接口,其中AXI4和AXILite有完整的5个通道,AXIStream不包含地址通道,只有3个通道。AXI4主要面向高性能地址映射通信的需求;AXI4Lite是一个简单的吞吐量地址映射性通信总线;AXIStream接口不存在地址映射,所以它的突发数据量是不受限制的,这也导致了基于AXIStream接口的IP核较一般AXI接口的IP核传输速率更快。AXIStream主要应用于高速数据流的传输。

2AES算法基本原理

美国国家标准技术研究所(NIST)在2001了高级加密标准(AES),用于取代之前的DES[5]。AES算法使用对称密钥,其加解密的密钥相同,其实现也非常方便快捷。AES算法可以使用128bit、192bit或256bit的密钥一次性加密128bit的分组长度。本文仅对128bit密钥加密128bit分组的情况进行介绍。AES的加密过程包括字节替换、行移位、列混淆、轮密钥加4个过程,而解密过程正好是4个步骤的逆过程:逆字节替换、逆行移位、逆列混淆和轮密钥加。无论是加密过程中明文与密钥的运算,还是解密过程中密文与密钥的运算都是以4*4的矩阵为单位进行轮循环运算,并且都是在有限域上进行计算。

3AXIStream接口加密模块设计

该加密IP核的设计来源是用DMA进行数据传输的项目,所以设计的IP核对外接口是与DMA的IP核进行匹配,图1为自定义IP核与DMA的连接示意图。从图中可以看出,AXIStream接口比AXI4、AXILite接口的连接线要少,因此无论是硬件还是软件实现起来都更加方便。

AES的IP核设计了4个AXIStream接口,s_axis_rxd_en和m_axis_txd_en用于数据的接收并且发送加密数据,s_axis_rxd_de和m_axis_txd_de用于接收加密数据并且发送解密后的数据。

AES的IP核设计不仅在接口方面要考虑与DMA的对接,更重要的是在进行IP核内部设计时,要考虑到DMA的特点以及其它拥有流接口的IP核特点,并同时考虑到FPGA内部资源的充分利用以及损耗情况。AES加密算法的优化设计如下:

(1) 很多AES的IP核设计,如文献[6]提出的设计,由于数据位宽不匹配,需要给IP核设置一系列的FIFO进行数据缓存。这不但造成了FPGA资源的消耗,而且也会给设计上带来更多困难。 Xilinx提供的DMA给出了最多23bit的缓存,可以用于数据的暂时存储区,待数据位宽为128bit后,再传输到AES的IP核内进行加密。

(2) AES的字节替换需要用到S盒,普通AESO计中的S盒一般使用查找表形式,加解密需要两个不同的S盒,这将消耗很大的逻辑资源。所以,根据FPGA的基本结构特点使用RAM块进行S盒设计,通过地址访问的方式实现字节置换。RAM块是FPGA内部的块资源,资源使用时不会损耗任何逻辑资源。

(3) 使用一次生成所有扩展密钥的方式。扩展密钥总共只需176字节进行存储,虽然消耗了少量资源,却可以节省等待密钥生成的时间。

(4) 深入研究AES的加解密流程发现,虽然AES的解密过程与加密过程有所不同,但是通过合适的变换,可以将AES加解密过程使用同一套流程实现,从而减少了硬件实现难度,降低了资源消耗。

4仿真波形与测试

设计使用Xilinx最新的开发集成环境Vivado进行逻辑实现以及相关的仿真测试。设计采用层次化设计思想,将复杂的设计简化为模块化设计,不但使代码的编写和管理更加方便,而且有利于加解密的并行化实现。

由于FPGA的综合实现耗时周期较长,所以设计时先采用不需要硬件的Testbench模型进行功能仿真测试。图2为功能仿真测试结果,输入数据包括128bit明文与128bit密钥,在一个时钟周期中即可对数据进行一轮AES加密操作。通过对加密结果的分析,所设计的基于AXIStream接口的AES IP核可以成功实现对数据的加密功能。

为了获取IP核的真实加密速率,使用Vivado搭建了基本的硬件测试平台。MicroBlaze是Xilinx提供的一个处理器软核,利用其产生明文数据和初始密钥。MicroBlaze通过DMA将明文和密钥传输到AES的IP核进行加密,其使用的硬件平台为Artix-7开发板。通过测试计算,在FPGA主时钟为200MHZ、总线宽度为64bit的条件下,AES加密模块的加密速度可达3.04Gb/s,而整体系统的加密速度可达1.12Gb/s。设计的AES加密IP核总共只需要1 392个Slice LUTs、189个Slice Registers。与文献[2]的门数高达13.5K,文献[7]需要3 012个Slice LUTs相比,可看出优化后的加解密算法能够有效减少资源消耗。

加密模块与整体系统的加密速率不同是由DMA的传输造成的。Xilinx提供的DMA在32bit位宽、100MHZ系统中的极限传输速率为400Mb/s。由此可以判断,在200MHZ、64bit位宽的系统中,DMA核最高的理论传输速率只能达到1.6Gb/s,所以整个系统的加密速度只能达到1.12Gb/s。

上一篇:基于ARMAGARCH模型的资金流预测方法 下一篇:一种自动初始化水平集的高频能量最小化三维分...