一种FPGA异步加解密系统及方法与流程

文档序号:20188677发布日期:2020-03-27 19:25阅读:299来源:国知局
一种FPGA异步加解密系统及方法与流程

本发明涉及计算机技术领域,尤其涉及一种fpga异步加解密系统及方法。



背景技术:

传统上,xilinx平台的运算单元是xilinx主控芯片,其加解密业务主要通过串行方式进行处理,即一次只能处理一包数据;同时,xilinx平台的加解密业务与主业务之间的关系也为串行模式,该串行模式将会使加解密业务与主业务之间相互制约,降低了各自业务处理的效率。

fpga(field-programmablegatearray),即现场可编程门阵列,它是在pal、gal、cpld等可编程器件的基础上进一步发展的产物。它是作为专用集成电路领域中的一种半定制电路而出现的,既解决了定制电路的不足,又克服了原有可编程器件门电路数有限的缺点。实际上,fpga是靠控制每个时钟周期(cycle)来驱动信号与寄存器传输的,也就是说可以通过时钟来精确控制任务。而且,fpga是并行执行的,每个时钟周期可以同时执行上百万个数据流任务,fpga打破了顺序执行的模式,在每个时钟周期内完成更多的处理任务。

因此,如何将fpga技术引用到xilinx平台的加解密业务中以提高处理效率是当前亟待解决的问题。



技术实现要素:

鉴于上述内容,有必要提供一种fpga异步加解密系统及方法,使其能够提升基于xilinx平台下的数据包加解密性能。

本发明第一方面提出一种fpga异步加解密系统,包括:主处理业务模块、环形队列模块和fpga加解密模块,所述主处理业务模块与环形队列模块电连接,所述环形队列模块与fpga加解密模块电连接;

所述主处理业务模块,用于获取待处理的数据包,并查找与外部对应的会话以获取密钥,然后将待处理的数据包和密钥发送至所述环形队列模块;同时还用于将处理过的数据包发外处理;

所述环形队列模块,包括第一环形队列和第二环形队列,所述第一环形队列用于接收来自所述主处理业务模块的待处理的数据包和密钥,以供所述fpga加解密模块读取;所述第二环形队列用于接收来自所述fpga加解密模块处理过的数据包,以供所述主处理业务模块读取;

所述fpga加解密模块,包括至少一个加解密通道,至少一个加解密通道分别采用所述密钥对各自接收的待处理的数据包进行并行加解密处理。

本方案中,所述fpga加解密模块还包括hmac计算通道,其用于对至少一个加解密通道加密过的数据包进行计算处理,以得出对应的散列消息鉴别码;并用于对所述第一环形队列中的待解密处理的数据包进行解密验证。

优选的,所述hmac计算通道采用sm3、sha-1、sha-256、sha-512、md5中的一种或几种算法进行计算。

本方案中,所述fpga异步加解密系统还包括收包接口和发包接口,所述主处理业务模块分别与所述收包接口和所述发包接口进行电连接,所述主处理业务模块通过调用所述收包接口进行接收待处理的数据包,并通过调用所述发包接口进行向外发送处理过的数据包。

优选的,至少一个加解密通道分别采用sm4、des、aes中的一种或几种算法对数据包进行加解密处理。

优选的,所述加解密通道的数量为两个。

本发明第二方面还提出一种fpga异步加解密方法,应用于上述的一种fpga异步加解密系统,所述方法包括:

主处理业务模块获取待处理的数据包,并查找与外部对应的会话以获取密钥,然后将待处理的数据包和密钥发送至第一环形队列;

所述第一环形队列接收来自所述主处理业务模块的待处理的数据包和密钥,以供fpga加解密模块读取;

所述fpga加解密模块从所述第一环形队列中读取待处理的数据包和密钥,并由至少一个加解密通道分别采用所述密钥对各自接收的待处理的数据包进行并行加解密处理,然后将处理过的数据包发送至第二环形队列;

所述第二环形队列接收来自所述fpga加解密模块处理过的数据包,以供所述主处理业务模块读取;

所述主处理业务模块从所述第二环形队列中读取处理过的数据包,并进行发外处理。

进一步的,由至少一个加解密通道分别采用所述密钥对各自接收的待处理的数据包进行并行加解密处理,还包括:

至少一个加解密通道分别接收来自第一环形队列的待加密处理的数据包,并采用所述密钥对其进行加密处理;

hmac计算通道对至少一个加解密通道加密处理过的数据包分别进行计算,以得出对应的散列消息鉴别码,然后将加密处理过的数据包和对应的散列消息鉴别码一并发送至第二环形队列;

所述第二环形队列接收加密处理过的数据包和对应的散列消息鉴别码,以供所述主处理业务模块读取;

所述主处理业务模块从所述第二环形队列中读取加密处理过的数据包和对应的散列消息鉴别码,并进行发外处理。

进一步的,由至少一个加解密通道分别采用所述密钥对各自接收的待处理的数据包进行并行加解密处理,还包括:

hmac计算通道接收来自第一环形队列的待解密处理的数据包,并进行解密验证;

待验证通过后,至少一个加解密通道分别采用所述密钥对各自接收的待解密处理的数据包进行解密处理,然后将解密处理过的数据包发送至第二环形队列;

所述第二环形队列接收解密处理过的数据包,以供所述主处理业务模块读取;

所述主处理业务模块从所述第二环形队列中读取解密处理过的数据包,并进行业务处理。

本方案中,至少一个加解密通道分别采用sm4、des、aes中的一种或几种算法对数据包进行加解密处理;所述hmac计算通道采用sm3、sha-1、sha-256、sha-512、md5中的一种或几种算法进行计算。

本发明的fpga异步加解密系统及方法通过主处理业务模块获取待处理的数据包,并查找与外部对应的会话以获取密钥,然后将待处理的数据包和密钥发送至第一环形队列;所述第一环形队列接收来自所述主处理业务模块的待处理的数据包和密钥,以供fpga加解密模块读取;所述fpga加解密模块从所述第一环形队列中读取待处理的数据包和密钥,并由至少一个加解密通道分别采用所述密钥对各自接收的待处理的数据包进行并行加解密处理,然后将处理过的数据包发送至第二环形队列;所述第二环形队列接收来自所述fpga加解密模块处理过的数据包,以供所述主处理业务模块读取;所述主处理业务模块从所述第二环形队列中读取处理过的数据包,并进行发外处理。本发明的主处理业务模块和fpga加解密模块能够各自使用各自的运算单元,实现主业务与加解密业务的并行处理;同时,fpga加解密模块通过设计多个加解密通道以对多个数据包并进处理,提高了fpga加解密模块的处理效率,并使得基于xilinx平台下的数据包加解密的性能得以明显提升。

本发明的附加方面和优点将在下面的描述部分中变得明显,或通过本发明的实践了解到。

附图说明

本发明的上述和/或附加的方面和优点从结合下面附图对实施例的描述中将变得明显和容易理解,其中:

图1示出本发明一种fpga异步加解密系统进行加密处理过程的框图;

图2示出本发明一种fpga异步加解密系统进行解密处理过程的框图;

图3示出本发明一种fpga异步加解密方法的流程图;

图4示出本发明一实施例ipsecvpn网关的应用场景部署图;

图5示出本发明一实施例的用户态收发包模块、ipsec主模块及fpga模块之间的交互流程图。

具体实施方式

下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。

需要说明的是,当一个组件被认为是“连接”另一个组件,它可以是直接连接到另一个组件或者可能同时存在居中组件。

除非另有定义,本文所使用的所有的技术和科学术语与属于本发明的技术领域的技术人员通常理解的含义相同。本文中在本发明的说明书中所使用的术语只是为了描述具体的实施例的目的,不是旨在于限制本发明。

请同时参阅图1和图2,本发明第一方面提出一种fpga异步加解密系统,包括:主处理业务模块、环形队列模块和fpga加解密模块,所述主处理业务模块与环形队列模块电连接,所述环形队列模块与fpga加解密模块电连接;

所述主处理业务模块,用于获取待处理的数据包,并查找与外部对应的会话以获取密钥,然后将待处理的数据包和密钥发送至所述环形队列模块;同时还用于将处理过的数据包发外处理;

所述环形队列模块,包括第一环形队列和第二环形队列,所述第一环形队列用于接收来自所述主处理业务模块的待处理的数据包和密钥,以供所述fpga加解密模块读取;所述第二环形队列用于接收来自所述fpga加解密模块处理过的数据包,以供所述主处理业务模块读取;

所述fpga加解密模块,包括至少一个加解密通道,至少一个加解密通道分别采用所述密钥对各自接收的待处理的数据包进行并行加解密处理。

优选的,至少一个加解密通道分别采用sm4、des、aes中的一种或几种加解密算法对数据包进行加解密处理。

根据本发明的实施例,当第一环形队列接收来自所述主处理业务模块的待处理的数据包和密钥后,进行暂存处理,第一环形队列中可以同时暂存多个待处理的数据包,且多个待处理的数据包按照“先进先出”的方式被至少一个加解密通道读取;每一个加解密通道对数据包进行逐个处理,即处理完一个数据包后,才可处理下一个数据包,当某个加解密通道完成对当前数据包的加解密处理后,即可从第一环形队列中读取下一个待处理的数据包。

优选的,所述加解密通道的数量为两个,也可以根据用户以及实际环境的需求将加解密通道的数量调整为三个、四个或五个,但不限于此。

通过设计多个加解密通道,各个加解密通道能够单独对自己接收的数据包进行加解密处理,且加解密通道之间互不干扰,从而实现多个加解密通道对多个数据包的并进处理,提高了fpga加解密模块的处理效率。

根据本发明的实施例,所述fpga加解密模块还包括hmac计算通道,其用于对至少一个加解密通道加密过的数据包进行计算处理,以得出对应的散列消息鉴别码;并用于对所述第一环形队列中的待解密处理的数据包进行解密验证。可以理解,当服务器接收到用户发来的处理过的数据包和对应的散列消息鉴别码后,对处理过的数据包同样进行hmac计算,并得出对应的散列消息鉴别码,然后将其与用户发来的散列消息鉴别码进行比对,如果比对一致,则服务器对接收的数据包校验成功,反之,则校验失败。

优选的,所述hmac计算通道可以采用sm3、sha-1、sha-256、sha-512、md5中的一种或几种算法进行计算,但不限于此。

根据本发明的实施例,所述fpga异步加解密系统还包括收包接口和发包接口,所述主处理业务模块分别与所述收包接口和所述发包接口进行电连接,所述主处理业务模块通过调用所述收包接口进行接收待处理的数据包,并通过调用所述发包接口进行向外发送处理过的数据包。

图3示出本发明一种fpga异步加解密方法的流程图。

如图3所示,本发明第二方面还提出一种fpga异步加解密方法,应用于上述的一种fpga异步加解密系统,所述方法包括:

s1,主处理业务模块获取待处理的数据包,并查找与外部对应的会话以获取密钥,然后将待处理的数据包和密钥发送至第一环形队列;

s2,所述第一环形队列接收来自所述主处理业务模块的待处理的数据包和密钥,以供fpga加解密模块读取;

s3,所述fpga加解密模块从所述第一环形队列中读取待处理的数据包和密钥,并由至少一个加解密通道分别采用所述密钥对各自接收的待处理的数据包进行并行加解密处理,然后将处理过的数据包发送至第二环形队列;

s4,所述第二环形队列接收来自所述fpga加解密模块处理过的数据包,以供所述主处理业务模块读取;

s5,所述主处理业务模块从所述第二环形队列中读取处理过的数据包,并进行发外处理。

根据本发明的实施例,由至少一个加解密通道分别采用所述密钥对各自接收的待处理的数据包进行并行加解密处理,还包括:

至少一个加解密通道分别接收来自第一环形队列的待加密处理的数据包,并采用所述密钥对其进行加密处理;

hmac计算通道对至少一个加解密通道加密处理过的数据包分别进行计算,以得出对应的散列消息鉴别码,然后将加密处理过的数据包和对应的散列消息鉴别码一并发送至第二环形队列;

所述第二环形队列接收加密处理过的数据包和对应的散列消息鉴别码,以供所述主处理业务模块读取;

所述主处理业务模块从所述第二环形队列中读取加密处理过的数据包和对应的散列消息鉴别码,并进行发外处理。

需要说明的是,hmac计算通道结合加密处理过的数据包和共享密钥进行散列计算,以得到第一散列消息鉴别码。当外界的服务器接收到加密处理过的数据包和对应的散列消息鉴别码时,将数据包和共享密钥进行散列计算,并得到第二散列消息鉴别码。将计算得到的第二散列消息鉴别码与接收得到的第一散列消息鉴别码进行比对,若一致,则验证通过;否者,验证失败。

根据本发明的实施例,由至少一个加解密通道分别采用所述密钥对各自接收的待处理的数据包进行并行加解密处理,还包括:

hmac计算通道接收来自第一环形队列的待解密处理的数据包,并进行解密验证;

待验证通过后,至少一个加解密通道分别采用所述密钥对各自接收的待解密处理的数据包进行解密处理,然后将解密处理过的数据包发送至第二环形队列;

所述第二环形队列接收解密处理过的数据包,以供所述主处理业务模块读取;

所述主处理业务模块从所述第二环形队列中读取解密处理过的数据包,并进行业务处理。

需要说明的是,hmac计算通道在接收待解密处理的数据包,同时还应接收到对应的第三散列消息鉴别码,然后结合待解密处理的数据包和共享密钥进行散列计算,以得到第四散列消息鉴别码。将计算得到的第四散列消息鉴别码与接收得到的第三散列消息鉴别码进行比对,若一致,则验证通过;否者,验证失败。

为了更好的解释本发明的技术方案,下面将通过一个实施例进行详细说明。

本实施例基于xilinx7010平台(嵌入式开发平台)的硬件平台构建ipsecvpn网关,ipsecvpn网关内嵌有本发明的fpga异步加解密系统,实现了内网与外网的数据加解密交换,ipsecvpn网关优选部署方式如图4所示,在银行内部数据服务器与外网之间部署ipsecvpn中心网关,并在atm机与外网之间部署有ipsecvpn接入网关。

如图5所示,本实施例的xilinx平台包括如下几部分:

(1)ipsec主模块,ipsec主模块主要完成ipsec协议的密钥握手协商、密钥分发,其次通过用户态收发包模块提供的收发接口、fpga模块提供接口的调用完成数据包的收发和加解密功能,其主要步骤为:

调用收包接口收包;

查找对应的会话获取密钥;

将密钥、数据包传送至fpga模块收队列;

从fpga模块发队列中读取加密后的数据包;

封装隧道头、调用发包接口进行发送。

(2)用户态收发包模块,用户态收发包模块采用用户态轮询dma内存,实现数据包的收发。

其中,收包流程具体步骤为:

初始化连续内存,初始化网卡相关寄存器;

申请收包环形队列,从连续内存上申请数据包绑定环形队列;

设置网卡收包基地址,启动网卡;

轮询收包环形队列,判断当前节点状态,若就绪,则将包地址传给ipsec主模块处理,否则返回等待下次轮询。

发包流程具体步骤为:

初始化连续内存,初始化网卡相关寄存器、申请发包环形队列;

从ipsec主模块读取待发送的数据包,将包放入发包环形队列;

将网卡发送寄存器置位;

返回继续等待发送数据包输入。

(3)fpga加解密模块,fpga加解密模块采用多路并发处理,同时处理多路数据包,通过双环形队列与ipsec主模块进行交互,具体步骤为:

从接收环形队列(即第一环形队列)中读取多个数据包,放入两个加密通道中待加密;

加密通道加密后,放入hmac计算通道进行hmac计算;

完成后放入发送环形队列(即第二环形队列),待ipsec主模块读取。

本发明的fpga异步加解密系统及方法通过主处理业务模块获取待处理的数据包,并查找与外部对应的会话以获取密钥,然后将待处理的数据包和密钥发送至第一环形队列;所述第一环形队列接收来自所述主处理业务模块的待处理的数据包和密钥,以供fpga加解密模块读取;所述fpga加解密模块从所述第一环形队列中读取待处理的数据包和密钥,并由至少一个加解密通道分别采用所述密钥对各自接收的待处理的数据包进行并行加解密处理,然后将处理过的数据包发送至第二环形队列;所述第二环形队列接收来自所述fpga加解密模块处理过的数据包,以供所述主处理业务模块读取;所述主处理业务模块从所述第二环形队列中读取处理过的数据包,并进行发外处理。本发明的主处理业务模块和fpga加解密模块能够各自使用各自的运算单元,实现主业务与加解密业务的并行处理;同时,fpga加解密模块通过设计多个加解密通道以对多个数据包并进处理,提高了fpga加解密模块的处理效率,并使得基于xilinx平台下的数据包加解密的性能得以明显提升。

以上所述仅为本发明的优选实施例而已,并不用于限制本发明,对于本领域的技术人员来说,本发明可以有各种更改和变化。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1