专利名称:一种基于fpga的多芯片并行加密方法
技术领域:
本发明涉及多芯片数据加密卡的并行运算技术,运用多片加密芯片并行工作的原 理,可以实现数据加密卡运算速度的成倍增长,数据加密卡的运算速度接近相同数量密码 芯片的运算能力之和。
背景技术:
随着网络信息化的发展,现阶段网络通信流量呈现出几何级数的增长,网络信息 安全中的加密技术也对于高性能加密模块的需求也越来越迫切。传统的加密卡,都是采用 PCI总线接口,采用DSP控制单片密码芯片完成加解密。目前,受制于密码芯片自身的加解 密速度限制,单片密码芯片的速度很难在短期内得到提升。为了能够满足日益增长的网络 通信流量的要求,必须采用其他方法,尽可能的提高加密卡的加解密速度。
发明内容
发明目的本发明是一项用于提高加密卡运算速度的技术,利用基于FPGA的多密码芯片并 行运算技术,可以实现应用单片FPGA芯片控制四片及以上的密码芯片同时并行运算,解决 单片加密芯片在速度上的瓶颈。此外,传统的加密卡采用PCI总线,PCI总线实际只能支持 双向200Mbps左右的带宽,无法满足高性能加密卡的要求,因此利用FPGA内部集成有PCI Express接口总线,可以实现更高速度的数据传输,解决总线的传输瓶颈。技术方案通常情况下,数据加密卡都是采用DSP加上PCI传输接口的方式。这种方式下, 一片DSP只能控制一片密码芯片,PCI总线的传输速度最高只能达到双向传输数据速度 200Mbps。随着现在网络报文数据量以几何级方式的增长,受制于密码芯片速度难以在短 期内得到提升,以及PCI总线传输速度的限制,传统的DSP加上PCI传输的接口的方式难 以满足新的网络报文数据加密的需求。因此,提出一种新的处理数据加解密的方法,即利 用FPGA并行工作的原理,应用四片及以上的密码芯片同时并行工作,利用FPGA自身集成的 PCI Express总线,提供高传输带宽。实现多芯片的并行加密传输,速度可以高达多片芯片 独立加解密速度之和,可以满足高速网络报文加密的要求。本发明采用如下技术方案1.主机首先通过PCI Express接口,将待加密的明文数据送给数据加密卡上的 FPGA芯片。2.由数据加密卡的FPGA芯片把收到的待加密明文编队,根据四个密码芯片的工 作状态判断,当有密码芯片处于空闲状态的时候,FPGA芯片就将数据发给空闲的密码芯片, 同时设置该密码芯片为工作忙状态。FPGA内的状态机循环判断密码芯片是否完成加密,当 密码芯片完成加密后,FPGA从密码芯片内读出加密后的数据,同时将密码芯片设置为空闲 状态,为下一次加密做准备。
3
3.FPGA通过PCI Express接口将加密完后的数据传送给主机。4.应用同样的方法,主机将密文送给数据加密卡,由数据加密卡的CPU控制密码 芯片解密,可以将解密后的明文返回主机,从而实现数据加解密的功能。利用FPGA的多线程并行处理能力以及PCI Express接口的高传输带宽,可以实现 多片密码芯片的高速并行运算,且每片密码芯片都可以满负荷运算。利用这种方法,可以在 不提高密码芯片自身速度的情况下,成倍提高数据加密卡的运算速度。有益效果本发明提供了一种技术,利用FPGA的多线程并行处理能力以实现多片密码芯片 的调度并行运算;利用FPGA带有的PCI Express接口,实现数据加密卡与主机之间数据的 高速传输;利用网络报文分组的特性解决CBC模式下的并行加解密问题;利用密码芯片乒 乓调度算法,使得每片密码芯片都可以满负荷运算。利用本发明的这些技术方法,可以在不 提高密码芯片自身速度的情况下,成倍提高数据加密卡的运算速度,具有广阔的应用前景。本发明可以实现多片密码芯片并行工作,且每片密码芯片都可以实现满负荷工 作。即可以在单块数据加密卡上实现加解密速度成倍的增长,满足了大流量数据加密对高 性能数据加密卡的需求。本发明不仅可以应用于提高数据加密卡的性能,同样也适用于其他需要并行处理 的计算机系统中,可以为其他需要利用并行处理技术提高性能的系统提供解决方案。
图1是高速数据加密卡原理图;图2是网络加密通信示意图;图3是CBC模式下的加密流程图;图4是乒乓调度算法示意图。
具体实施例方式
本发明主要用于解决系统对数据加解密速度要求较高的场合。适用于对于加解密 有高速需求的,单片加密芯片的加解密能力无法满足系统要求的情况。根据本发明设计的高速数据加密卡主要是用在网络通讯加密机上,如图2所示。 将高速数据加密卡插入网络通讯主机的PCI Express插槽,作为网络通讯主机的一个加密 模块使用。网络通讯主机可以根据需要对经过该主机的报文选择是否加密。如果经过主机 的报文需要加密,则主机将报文通过PCI Express接口传递给数据加密卡,由数据加密卡对 报文进行加密。加密完成后,数据加密卡再把数据通过PCI Express接口返回给主机,最后 主机再将加密后的数据发给网络对端的另一台网络通讯加密机。对端的网络通讯主机收到 加密的报文以后,再将数据通过PCI Express接口传递给对该机上的数据加密卡,由数据加 密卡解密后,对端主机得到解密后的数据。通过这个流程,两端的网络通讯密码机实现对网 络传输的报文进行加密。利用FPGA实现多片密码芯片的并行加解密运算需要采用以下多项关键技术。1.选用内部集成有PCI Express模块的高性能FPGAFPGA为高速加密卡的主控制器,本发明选用内部集成有PCI Express模块的高性能FPGA。凭借FPGA的高性能以及多引脚,可以在FPGA外部连接四个或者更多的密码芯片, 实现对多个密码芯片的控制。该FPGA芯片内部集成有PCI Express模块。利用FPGA的 PCI Express接口,可以实现加解密数据在主机与FPGA之间的高速传输,PCI Express接口 高达32GBps的传输速度,足可以满足现阶段高速加密卡的需求。2. CBC模式下的连续数据的并行加密本发明的高速加密卡采用四片密码芯片并行运算,为了克服电子密码本模式 (ECB模式)的安全性缺陷,加密卡采用密码分组链接模式(CBC模式),CBC模式运算方 法如图3所示。CBC模式下,后续数据的加密依赖前一次加密结果作为后一组报文加密的 IV(Initialization Vector)向量,因此,后一组数据必须要等前一组数据加密完成后方能 再进行加密。受制于这种连续性加密的要求,大段连续的明文无法通过多片密码芯片并行 运算的方法进行加密,必须要进行特殊处理。在本方法中,利用了网络报文的特性,采用分 段加密的方法。大段数据在网络传输中会被分片,切割成多组报文,网卡再将多组报文分批 发送出去。可以利用网络报文传输的这种特性通过对大段明文数据进行分组,对每个分组 单独进行加密处理,利用这种方式,可以实现多片密码芯片的并行加密。3.密码芯片的乒乓调度报文首先由PCI Express接口输入FPGA,由FPGA对报文进行调度,判断当前有无 加密芯片工作队列有空余。如果有则送往该加密芯片工作队列,否则等待。此外,FPGA再 分别控制每个加密芯片的运算。加密芯片运算完成后,再将报文通过PCI Express接口返 回给主机。FPGA支持4密码芯片全速工作。每个密码芯片对应2个接收缓存buf_rO、buf_rl 和2个发送缓存buf_t0、buf_tl,大小均为2KB字节。buf_r0与buf_t0相对应,密码芯片 从buf_r0得到数据,计算结果存入buf_t0。同理buf_rl与buf_tl相对应。系统以2KB数 据包单元进行乒乓操作。如图4所示在TO时间单位,主机往FPGA内的buf_r0写入数据包vecO。在T1时间单位,主机往FPGA内的buf_rl写入数据包vecl ;密码芯片从buf_r0读 取数据vecO,操作完毕将计算结果写入buf_t0。在T2时间单位,主机从FPGA内的buf_t0读出数据包vecO ;主机往FPGA内的buf_ r0写入数据包Vec2;密码芯片从buf_rl读取数据vecl,操作完毕将计算结果写入buf_tl。在T3时间单位,主机从FPGA内的buf_tl读出数据包vecl ;主机往FPGA内的buf_ rl写入数据包Vec3;密码芯片从buf_r0读取数据vec2,操作完毕将计算结果写入buf_t0。从这个流程可以看出密码芯片从T1时间段开始即可连续不间断全速进行加解密 工作。
权利要求
一种基于FPGA的多芯片并行加密方法,其特征在于,包括以下步骤1)主机通过PCI Express接口,将待加密的明文数据送给数据加密卡上的FPGA芯片;2)由数据加密卡上的FPGA芯片把收到的待加密明文编队,根据四个密码芯片的工作状态判断,当有密码芯片处于空闲状态的时候,FPGA芯片就将数据发给空闲的密码芯片,同时设置该密码芯片为工作忙状态;FPGA内的状态机循环判断密码芯片是否完成加密,当密码芯片完成加密后,FPGA从密码芯片内读出加密后的数据,同时将密码芯片设置为空闲状态,为下一次加密做准备;3)FPGA通过PCI Express接口将加密完后的数据传送给主机;4)应用同样的方法,主机将密文送给数据加密卡,由数据加密卡的CPU控制密码芯片解密,可以将解密后的明文返回主机,从而实现数据加解密的功能。
2.根据权利要求1所述的一种基于FPGA的多芯片并行加密方法,其特征在于,所述 FPGA芯片内部集成有PCI Express模块。
3.根据权利要求1所述的一种基于FPGA的多芯片并行加密方法,其特征在于,所述数 据加密卡采用密码分组链接模式进行加密。
4.根据权利要求1所述的一种基于FPGA的多芯片并行加密方法,其特征在于,所述数 据加密卡采用以乒乓调度方式控制密码芯片进行加密。
全文摘要
本发明公开了一种基于FPGA的多芯片并行加密方法。主机通过PCI Express接口,将待加密的明文数据送给数据加密卡上的FPGA芯片。由数据加密卡的FPGA芯片把收到的待加密明文编队,根据四个密码芯片的工作状态判断,当有密码芯片处于空闲状态的时候,FPGA芯片就将数据发给空闲的密码芯片,同时设置该密码芯片为工作忙状态。FPGA内的状态机循环判断密码芯片是否完成加密,当密码芯片完成加密后,FPGA从密码芯片内读出加密后的数据,同时将密码芯片设置为空闲状态。FPGA通过PCI Express接口将加密完后的数据传送给主机。本发明可以在不提高密码芯片自身速度的情况下,成倍提高数据加密卡的运算速度。
文档编号G05B19/05GK101854353SQ20101015925
公开日2010年10月6日 申请日期2010年4月28日 优先权日2010年4月28日
发明者张涛, 曾荣, 林为民, 秦超, 邵志鹏, 陈亚东 申请人:国网电力科学研究院