一种基于FPGA的国密算法加速处理系统
技术领域
本发明涉及网络信息安全领域,具体涉及一种基于FPGA的国密算法加速处理系统。
背景技术
随着互联网技术的不断发展,人们对网络环境和网络信息资源的依赖程度日益加深,信息安全问题成了维护网络安全的重中之重。国家安全局发布的国密算法是中国自主研发的商用密码算法和规范,包含公开的SM2、SM3、SM4算法,用来保障商用密码的安全。如今,密码芯片越来越多的被应用在智能卡中,如何通过国密算法有效地保障智能卡的安全,更高效地完成相应的密码任务,成为近期业界研究的热点。
由于对高速传输性能要求的不断加深,业界对FPGA(Field-Programmable GateArray)和GPU(Graphics Processing Unit)在加速平台中的应用都极为重视,两者在高数据传输量和高并行的应用场景下都有极佳的表现,且速度均优于CPU,但对于通信密集型的数据处理任务来说,FPGA要优于GPU,且具有稳定又极低的延迟和功耗。
硬件平台主要有专用集成电路ASIC(Application Specific IntegratedCircuit)和现场可编程门阵列FPGA。采用ASIC专用芯片实现的密码算法模块结构固定,在特定的应用场景下有较好的计算效率。但其专用性也导致其灵活性差,一旦完成设计,当需求发生一些变更或调整时,只能重新设计,成本投入很高;硬件设计的高门槛也使得其设计开发周期长,开发难度大。相比于ASIC,FPGA的设计周期短,并具有拥有灵活的可编程性、可重构性等特点;且在性能方面,FPGA的高速性能接近于ASIC。此外,FPGA的性能功耗比远高于GPU及CPU。因此,基于FPGA的加速卡及FPGA云服务器渐渐成为学术界及产业界的研究热点。
选用FPGA来实现国密算法的专用加速结构逐渐成为新一代加密技术研究的重点方向。CPU+FPGA的联合设计可以充分发挥二者的优势,其中FPGA用于特定算法的加速,CPU进行流程和上层控制,此组合具有更高的单位功耗性能和更低的时延,也是未来加速应用发展的趋势。
关于国密算法的硬件实现业界已获得了一些成果,包括SM2、SM3、SM4等,如Z8IDA芯片、LKT4305芯片,但都是采用了I2C总线模式,只有400Kbps左右的吞吐率。
第一种技术方案:高带宽数字内容保护技术HDCP(High-Bandwidth DigitalContent Protection)的传输认证体系实现了基于RSA、SHA256、HMAC、AES算法的传输认证系统,传输采用了I2C总线模式。
第二种技术方案:基于国密算法SM2、SM3、SM4的SoC安全模块的软硬件协同设计实现保密通信的系统方案,其中国密算法SM2、SM3、SM4的实现由软硬件协同完成,通信采用了AHB(Advanced High Performance Bus)总线设计方案。
第三种技术方案:采用WISHBONE总线通过PCIE接口进行数据传输的系统方案,该方案面向SHA256和AES128密码算法的应用,理论上能够达到较高的吞吐率。
第四种技术方案:面向安全哈希标准的FPGA验证架构,包含了SHA-1和SHA-2(SHA-224、SHA-256、SHA-384、SHA-512)哈希算法。验证采用Xilinx厂家的Virtex-6VC6VLT240T-1FPGA评估板,该板卡上配有Microblaze精简指令集(RISC),通过Xilinx嵌入式开发工具包EDK(Embedded Development Kit)简化了外围设备,最后采用一个通用异步收发寄存器UART(Universal Asynchrononus Receiver Transmitter)与服务器端进行数据通信。
综上所述,目前面向密码加速处理的硬件平台主要存在吞吐率低、扩展性差的缺点。
发明内容
本发明针对当前技术中存在的问题,提供了一套应用于国密算法场景的加速处理系统,通过该系统及方法可以实现高吞吐率、高灵活性的国密算法任务。服务器软件和FPGA硬件之间采用PCIE协议进行通信,PCIE接收控制模块以DDR作为大容量缓存,通过DMA写操作将数据高速的传输至系统内存并进行相应的后续处理;DDR用来缓存通过DMA读操作从系统内存中读出来的数据。用户逻辑控制模块汇集了来自用户定义的国密算法(SM2、SM3、SM4)IP核的中断请求并将其发送到PCIE端,同时可处理DMA控制模块发送来的中断请求。
本发明的技术方案为:一种基于FPGA的国密算法加速处理系统,用于对发送到服务器的需国密算法处理的数据包进行处理,其特征在于,所述系统包括通过PCIE核接口接入服务器的FPGA,所述FPGA用于通过DMA读操作将服务器内存的需国密算法处理的数据包经PCIE核接口高速传输至FPGA的大容量缓存DDR,通过对应的由用户定义的国密算法IP核实现需国密算法处理的数据包的处理,形成经国密算法处理的数据包并传输至DDR,通过DMA写操作将DDR内的经国密算法处理的数据包通过PCIE核接口传送至服务器端内存。
作为上述系统的一种改进,所述FPGA包括:接收引擎、DMA控制模块、用户逻辑控制模块、发送缓存、接收缓存、内存控制模块、多个独立的国密算法处理模块和发送引擎;
所述接收引擎,用于接收服务器内存通过PCIE核接口发送的TLP包,根据PCI-Express协议对TLP包进行解封装,得到内存读请求并存入DMA控制模块,还用于接收DMA控制模块发送的DMA读操作,通过PCIE核接口从服务器内存读入需国密算法处理的数据包;
所述DMA控制模块包括DMA接收控制寄存器和DMA发送控制寄存器;所述DMA接收控制寄存器用于存放内存读请求;启动DMA读操作发送至接收引擎;所述DMA发送控制寄存器用于存储内存写请求,启动DMA写操作发送至发送引擎;
所述用户逻辑控制模块,用于对DMA接收控制寄存器和DMA发送控制寄存器进行读取访问,向内存控制模块发送读写控制信息;还用于将接收引擎的需国密算法处理的数据包发送至接收缓存;将通过国密算法模块处理后的数据包通过发送缓存传递给发送引擎;
所述内存控制模块:用于根据接收的读写控制信息控制内存接口生成器,将接收缓存内的需国密算法处理的数据包写入DDR;将从DDR内的经国密算法处理的数据包发送至发送缓存;
所述国密算法处理模块:用于从DDR的中读取需国密算法处理的数据包,并选择相应通道的国密算法对其进行处理,形成经国密算法处理的数据包并发送至DDR;
所述发送引擎:用于接收DMA控制模块发送的DMA写操作,根据PCI-Express协议将经国密算法处理的数据包进行封装,再通过PCIE核接口发送至服务器内存。
作为上述系统的一种改进,所述FPGA还包括PCIE核接口配置模块:用于对PCIE核接口进行初始化配置,完成服务器和FPGA的数据传输对接。
作为上述系统的一种改进,所述国密算法处理模块包括:
通道控制单元:用于读取FPGA内存DDR内需国密算法处理的数据包并发送至接收FIFO;用于将发送FIFO内的经国密算法处理的数据包发送至FPGA的内存DDR;
接收FIFO,用于缓存需国密算法处理的数据包;
国密算法IP核:用于对接收FIFO内的需国密算法处理的数据包根据国密算法进行处理,并将经国密算法处理的数据包送入发送FIFO;
发送FIFO,用于缓存经国密算法处理的数据包。
作为上述系统的一种改进,所述国密算法包括SM2、SM3和SM4。
与现有技术相比,本发明的优势在于:
1、本发明提供了一整套基于FPGA的国密算法SM2、SM3、SM4的加速处理系统,包含了从服务器端到FPGA端的整个流程,可以直接通过在用户层调用各个IP实现相应任务。与业界密码算法FPGA加速平台相比,具有很高的吞吐率;
2、本发明的加速处理系统具有良好的可重用性,可扩展性,具有很好的推广使用价值;
3、本发明提出的系统既有很好的可扩展性,又有很高的吞吐率;同时,本发明采用自顶向下的设计方法,提供了完整的模块分层和结构体系,方便实现相应的国密算法加速处理。
附图说明
图1是本发明的基于FPGA的国密算法加速处理系统的框架设计图;
图2是本发明的系统的上行/下行数据传输流程。
具体实施方式
下面结合附图进一步说明本发明的技术方案,这些实施例是用于说明本发明而不限于限制本发明的范围。
国密算法(SM2/SM3/SM4),主要用于商用信息的加密保护、安全认证等,随着高速网络的发展,基于国密对网络数据包进行高速加解密的需求变得很迫切。而目前市场的国产加密芯片(Z8IDA芯片、LKT4305芯片)采用了I2C总线的传输方式,吞吐率很低。其它公开报道的国密硬件实现方案未能达到高速网络所需的吞吐率,且由于自身系统架构的限制,可扩展性差,不方便扩展成多种国密引擎。
本发明公开了一种基于FPGA的国密算法加速处理系统及方法,系统分为服务器端和FPGA端两部分,FPGA端通过PCIE IP核和DMA控制器完成与服务器端的高速数据通信。该系统主要包括PCIE核接口模块、发送/接收引擎模块(Tx/Rx Engine)、DMA(Direct MemoryAccess)控制模块、输入/输出缓存模块(Tx/Rx FIFO)、内存控制模块、用户逻辑控制模块、算法通道控制模块、国密算法IP模块以及服务器端软件模块。DMA控制模块调控完成数据块在各个相邻模块之间的高速传输;算法通道控制模块提供用户数据接口通道和控制信号,为国密算法IP各个模块提供FIFO接口以完成与用户逻辑控制模块之间的数据交互,通过控制不同的通道,可灵活设置多个由用户定义的IP核(SM2、SM3、SM4)实现国密算法加速。本发明提供了一套完整的国密算法硬件加速系统及方法,并能达到较高的吞吐率,且系统扩展性好。
如图1所示,本发明提出了一种基于FPGA的国密算法加速处理系统,包括服务器和FPGA,服务器作为整个系统的控制端位于宿主端,包含CPU以及存储单元主要完成软件端代码驱动的运行、硬件部分的控制、以及上层API的调用。FPGA端的可编程逻辑单元是整个系统的硬件加速部分,DMA控制模块完成通过PCIE接口进行的高速数据传输任务,用户逻辑控制模块完成用户数据缓存以及和DDR之间的高速缓存任务,国密算法通道控制模块则可以加载不同的IP核设计,根据需求固化对应的IP核来实现国密任务,且IP核具有相当高的并行性。
整个系统逻辑划分为9个模块,各个模块主要工作如下:
(1)服务器端软件模块:软件模块包含用户模块与内核模块。
对于用户模块,包含应用程序与运行库API两部分,用户通过调用运行库提供的硬件编程接口来实现能够运行在硬件加速平台上的程序。
内核模块是软件层次的最底层,主要用来提供硬件加速系统以及其他IP Core在Linux操作系统下正常运行的支持,使用本发明加速系统之前,需先加载相应模块到内核。
(2)PCIE核接口模块(PCIE Endpoint Block Plus):该模块完成PCIE核的初始化配置以及服务器端和FPGA端的数据传输信号对接。
(3)发送/接收引擎模块(Tx/Rx Engine):发送模块按照PCI-Express协议将服务器端传送来的原始数据和寄存器信息封装成事务包(TLP)传输到PCIE核接口模块;接收模块按照协议将从PCIE核接口模块收取的TLP包解封装,并根据TLPs的头标中的信息将数据分流,分别写入DMA控制模块中。
(4)DMA控制模块(DMA Controller):DMA控制模块由中断寄存器、DMA控制寄存器构成。DMA接收控制寄存器用来接收存放内存读请求MRd(Memory Read Request)操作的DMA控制信息,包括内存读请求地址寄存器、读长度寄存器、读包数寄存器、读完成包数寄存器。DMA发送控制寄存器用来存储内存写请求MWR(Memory Write Request)的DMA控制信息,包括内存写请求地址寄存器、写长度寄存器和写包数寄存器。
(5)输入输出缓存模块(Tx/Rx FIFO):设立两个独立的FIFO数据通道可以完成提高数据传输率、处理大量数据流、缓存数据等功能。发送FIFO用于PCIE发送引擎模块到用户逻辑模块传输数据时的缓存;接收FIFO用于用户逻辑模块到PCIE接收引擎模块传输数据时的缓存。
(6)用户逻辑控制模块:配置和读取DMA控制寄存器、控制数据的输入输出、以及与内存控制模块的数据交互。用户逻辑控制模块通过读取寄存器的值来控制中断和数据传输。
(7)内存控制模块:用户逻辑控制模块根据配置信息控制MIG完成对DDR的数据读写操作,实现外部存储设备数据与处理器端存储器的数据交换。
(8)算法通道控制模块:提供了用户数据接口通道和控制信号,由于每个用户算法的IP核都具有各自接收和发送数据的FIFO,因此国密算法通道控制模块还需要处理异步时钟域。为了避免拖延PCIE链路,仅在接收FIFO(Rx)中有足够的空间时才响应下行请求。同理,当发送FIFO(Tx)中有足够的数据后,PCIE上行传输才响应。
(9)国密算法IP模块:将用户自定义的算法内容封装成IP核,本发明中即为SM2、SM3、SM4算法,每个IP都有各自的FIFO用于通道控制。其中SM2、SM3、SM4算法HDL的优化可利用进位保存加法器CSA(Carry save adder)、超前进位加法器CLA(Carry look aheadadder)等优化方法来减小延时,同时在FPGA芯片逻辑单元数量的允许下,采用流水线并行处理的结构来提高吞吐率。
IP核之间完全独立。用户逻辑控制模块需完成缓存模块的逻辑设计,包括数据格式转换和同步缓存设计。
本发明实施例中的加速系统包括FPGA和服务器两部分,服务器端包含了CPU和内存以完成上位机端的软件代码运行和硬件部分的控制,FPGA端首先通过PCIE IP核和DMA控制器完成和服务器端的高速数据传输,其中使用DDR4芯片来实现大容量缓存,最后设置多个由用户定义的IP核(SM2、SM3、SM4)实现国密算法任务。
FPGA芯片选用Xilinx厂商的系列芯片,芯片内集成PCIE接口IP核、高速收发器GTP/GTX,以及各类通信接口。本发明的硬件平台与上位机通过PCIE通信,PCIE通道配置可根据片上PCIE接口设置相应通道IP核,该核由Xilinx提供;DMA模块通过PCIE核与上位机进行通信,同时根据采用Xilinx提供的IP核,配置信息控制MIG(Memory InterfaceGenerator)完成对DDR的数据读取操作。
基于FPGA的面向国密算法应用的加速处理系统的设计步骤如下:
S01:分析国密算法SM2、SM3、SM4的特点,梳理算法流程,确定算法设计。
S02:根据国密算法SM2、SM3、SM4的计算过程,通过优化硬件描述语言HDL(Hardware Description Language),提出针对三个算法的最优HDL。
S03:根据国密算法SM2、SM3、SM4的特点和FPGA的资源,确定算法的IP核以及IP核结构。
S04:完成PCIE核传输逻辑设计,包括接收/发送逻辑设计、DMA控制逻辑设计,实现以PCIE板卡为主发起的高速DMA读写设计;
S05:完成DDR存储接口设计,包括上下行FIFO设计和MIG设计,实现DDR的读写操作;
S06:完成整个高速存储系统的数据传输处理和功能验证,保证FPGA端到服务器端数据传输的正确性以及高效性;
S07:移植整个平台到硬件FPGA上,包含各个硬件IP,在官方提供的软件驱动基础上编写各个硬件设备的驱动;
S08:在用户层调用各个硬件IP核,形成整个国密算法加速系统。
图2是整个加速系统的数据传输流程示意图。用户端发送需国密算法处理的数据包,经PCIE接口通过DMA写操作将数据包写入数据缓冲区,用户逻辑控制模块根据配置的MIG完成对DDR的写数据操作,算法通道控制模块读取DDR中的数据,作为国密算法IP模块的初始数据进行相应的算法计算与处理,之后,将结果数据通过FIFO写入DDR,用户逻辑控制模块又将DDR中所存的结果数据送到DMA读操作模块,再通过PCIE接口上传至服务端内存。
最后所应说明的是,以上实施例仅用以说明本发明的技术方案而非限制。尽管参照实施例对本发明进行了详细说明,本领域的普通技术人员应当理解,对本发明的技术方案进行修改或者等同替换,都不脱离本发明技术方案的精神和范围,其均应涵盖在本发明的权利要求范围当中。