专利名称:一种采用多密码芯片并行数据处理的方法
技术领域:
本发明涉及数据加解密技术,尤其涉及一种采用多密码芯片并行数据处理以提高系统加解密速度的方法。
背景技术:
密码处理的高效性一直是密码算法使用中的制约因素,采用国产密码芯片代替软件实现密码算法是提高密码处理性能的有效方法。由于国产芯片在设计技术与生产水平等多方面因素的影响,密码芯片的数据处理速度还远不能满足大型安全应用需求的高速增长。目前提高密码运算处理速度的方法主要有以下两种常用的方法。一种是采用多块带有PIC接口的密码卡,这样在具有PCI总线的系统中数据可以直接通过多块密码卡进行并行处理,有效提高数据的加解密速度,这种方法在文献《多卡并行加密VPN的性能分析》(华中科技大学学报第33卷第5期2005年5月)有相关介绍。但是这种做法通常需要采用性能非常高的CPU系统,同时需要定制多个PCI接口,造成系统设计的灵活性降低,而且随着密码卡数量的线性增加,会造成系统CPU的资源完全被占有,导致系统的处理性能急速下降,造成系统不可用。另一种是采用国外的高性能密码处理芯片,但是由于我国商用密码的管理规定,在军队、电力、政府、银行、水利等关系到国家安全的行业,应采用国产密码芯片进行数据通信的机密性保护。
发明内容
1、发明目的 本发明的主要目的在于提供一种多密码芯片并行数据处理的方法,能够在占用较小CPU资源的情形下提高密码卡的数据加解密处理速度。
2、技术方案 本发明的目的可以通过采用如下的技术措施来实现,设计一种多密码芯片的数据并行处理装置,包括 PCI桥接口电路用于实现PCI主设备与从设备之间的桥接扩展,通过该桥接电路,可以实现多主设备扩展控制多个从PCI设备。允许多个PCI从设备通过DMA方式实现分时数据传输,提高数据的传输效率。该接口电路是实现并行数据处理的基本要素。
DSP处理器接口控制电路用于连接DSP处理器与密码芯片之间,作为DSP处理器和密码芯片之间的数据传输通道。DSP处理器从主CPU中读取数据之后,把需要加密的数据通过该接口电路写入密码芯片中。待密码芯片完成数据加密后,再由DSP通过该接口电路读入加密后的数据。
DSP处理器多个DSP处理器独立运行工作。每块DSP处理器,单独控制一个密码芯片。采用DMA方式直接从系统主内存中通过PCI把要进行加解密的数据接收到其缓冲区中进行处理。并判断数据类型、大小等有关信息,然后根据数据具体情况将其馈入加解密芯片进行处理。
中断共享电路为了解决一根中断线能够提供给多块DSP处理器共享使用,设计了中断共享电路。该电路用于分析各块DSP处理器的工作状况,提供给DSP处理器独立的中断信号接口,使得多块DSP处理器可以实现共享一根PCI中断控制线。
对于单片报文数据处理的操作步骤如下所示 1)上层PCI主CPU在收到需要进行加密处理的报文数据后,首先通过PCI桥接电路连接到各个DSP处理单元上,判断哪个DSP处理单元当时处于空闲状态。在判断完成后,将待加密数据写入对应的交换缓冲区,通过中断方式通知该DSP处理单元取数据。
2)该DSP处理单元在接收到中断通知之后,以DMA方式从交换缓冲区中读入数据。然后通过接口控制电路,根据时序要求,将数据写入密码芯片中,启动数据加密。
3)密码芯片根据算法要求进行数据加密,加密完成后,通过接口信号提示DSP处理器数据加密完成。
4)DSP处理器在数据加密完成之后,从密码芯片中读出密文数据。再通过PCI桥接电路,将密文数据写回主CPU的交换缓冲区。在完成处理器完成数据写入操作后,通过中断共享电路提示主CPU数据加密完成。
5)主处理器从交换缓冲区中读出加密完成的数据。
以上步骤是单片对数据的加密过程,数据的解密过程也同加密过程类似 1)主CPU在收到需要进行解密处理的报文数据后,先将数据写入数据交换缓冲区,通过中断方式通知DSP处理单元取数据。
2)该DSP处理单元在接收到中断通知之后,以DMA方式从交换缓冲区中读入数据。根据数据流中的控制字节,判断该数据是需要解密,先将解密密钥写入密码芯片中,再将需要解密的数据写入,启动数据解密。
3)密码芯片根据算法要求进行数据解密,解密完成后,通过接口信号提示DSP处理器数据处理完成。
4)DSP处理器从密码芯片中读出解密后的明文数据。再通过PCI桥接电路,将明文数据写回主CPU的交换缓冲区。在完成处理器完成数据写入操作后,通过中断共享电路提示主CPU数据处理完成。
5)主处理器从交换缓冲区中读出解密后的数据。
从处理流程上看,报文数据的加密和解密基本上采用同样的流程,区别仅仅在于DSP处理器在控制加密芯片进行加密或者解密操作的时候,写入加密的芯片的控制字是加密的命令,还是解密的命令。
以上步骤只是单片数据的加密、解密过程,对于大量数据的加解密处理过程,则采用如下并行处理技术 1)主CPU在接受到大量待加密数据之后,首先将数据进行分片处理。将大量的报文数据分成小片待加密数据。
2)然后主CPU将小片的待加密数据依此送入每个DSP处理单元交换缓冲区,通知DSP处理单元完成各自的小片数据加密,在DSP处理单元完成数据加密之后,将分片的密文数据送回主CPU的交换缓冲区。
3)待各个DSP处理单元完成数据加密工作之后,主CPU再将加密好的小片密文数据重新组合成大的密文数据。
4)在DSP处理单元进行数据加密处理的过程中,主CPU可以根据每个加密单元的处理能力动态的分配待加密数据,使每个DSP处理单元都能够得到饱和工作状态。
由于加密和解密操作从数据处理的过程来看是同样的,因此,该操作步骤同样也适用于密文数据的解密过程。具体过程为 1)将接受到密文数据分成小片加密数据; 2)将小片加密数据依此送入每个DSP处理单元交换缓冲区,通知DSP处理单元完成各自的小片数据解密,在DSP处理单元完成数据解密之后,将分片的原始数据送回主CPU的交换缓冲区; 3)将小片原始数据重新组合成大的原始数据。
3、有益效果 与现有的提高加解密速度的放法相比,本发明多密码芯片的数据并行处理装置及数据的并行高速加密方法具有如下优点系统运行不占用额外的主CPU资源,所有的加解密运算都在DSP处理器中进行,通过多片加密芯片与DSP的并行处理,实现了加解密速度的极大提高。本发明中的另一个创新点是PCI总线扩展及中断复用,有效地避免了主机端PCI总线资源及中断资源不足的问题。
图1是本发明的系统结构框图。
图2是本发明的详细数据处理流程图。
具体实施例方式 下面结合附图和实施例对本发明作进一步说明 从图1、图2可以看出,一种基于多密码芯片的并行数据处理装置由多块对称加密芯片构成多个通路的加脱密通道,并由接口控制电路来对加密芯片的时序进行控制。PCI总线扩展芯片用来扩展一个PCI BUS1,避免了主机平台PCI BUS0设备负载能力的不足。在PCI BUS1上,挂接多片DSP处理器芯片,由该芯片来完成对并行的多路加密芯片进行IO处理。
DSP芯片内有一片64K的内部数据RAM,主机host透过PCI总线,可以用突发形式访问该片RAM,并且该DSP具有PCI的Master能力。在实际的软件设计中,CPU把原始数据放在一片本地内存中,并且用mailbox的形式通知DSP有数据等待片理,DSP芯片会自己以DMA的方式把数据从主机host的内存中拉到自己的缓冲来,并且馈入到对称加密芯片中处理,处理完毕后,DSP把数据传到host的本地内存中,并以中断的形式来通知host数据处理完毕。
下面将以4片加密并行处理为例对多芯片高速并行处理的工作方式进行说明。
首先用户将数据通过用户层接口(User APP Interface)写入驱动的Raw DataIn数据输入区。然后由主机的Buffer管理器(Host Buf Manager)进行通道选择,以决定将输入的用户数据送入到哪个数据通道。在数据通道选择完成后,主机会将数据拷贝到本地相对应通道的Host Outbuf缓冲区,数据拷贝完成后,说明主机已为一个通道准备好了一个待处理的数据包。此时,主机的Host BufManager会给相应通道的DSP发一个消息包(mail box),表明该数据包的位置和大小。相应通道的DSP会以DMA的突发(burst)模式,透过PCI总线,把该包拉到它自己数据输入区Dsp Inbuf中,然后交由加密芯片进行加脱密处理,加脱密的分组数据会放到DSP的Outbuf区。当一个数据包全部处理完毕后,相应通道的DSP以DMA突发传输的形式,将该包透过PCI传到主机的Inbuf区,并发送中断告诉主机的CPU,表明已经有一个数据包处理完毕。主机的HostBuffer Manager收到中断通知信号后,会根据四个通道中包的优先级(先进先出)来决定把哪个包送往用户层的DataOut区,用户通过用户层接口进行一次读操作,读出处理完毕的数据包。以上就是一个完整的数据包处理流程。
从该设计中我们可以看到,CPU以该方式对加密芯片操作,完全利用了PCI的吞吐能力,高达132MB,1056BPS,是直接对单片加密芯片操作的7倍左右,也即,相同的数据量,CPU只需化原来1/7的IO时间;其实,CPU并未参与实际的IO操作,完全由DSP来做IO操作,此时,虽然PCI总线及内存总线被DSP占用,但CPU可以非常有效地进行中断响应等操作,因此,该设计使得系统对CPU的要求大大降低。
本设计提高加密卡的工作速度的另一个关键点,是多加密芯片的并行处理机制,以弥补单芯片处理能力不足的问题。本设计我们采用四片加密芯片进行加解密运算,在DSP上划分了7个2K的inbuffer和out buffer,主机上也有相对应的7个outbuffer和inbuffer。这样整个并行处理单元就可以同时容纳4*7=28个待处理的数据包,并且同时支持4个包作加解密运算。同时,因为PCI的传输速度远远大于加密芯片的IO速度,所以如果用户层的数据足够多,加密芯片不会有片刻的空闲周期。对ECB加密模式,可以把数据的分组放到各个通道中进行处理,在CBC工作模式,由于一个分组的数据处理结果是与上一个分组的结果相关的。所以,一个包里的多个分组不可能拆分到多个芯片中处理,但是,数据包与包之间是独立的。因此,我们将包分散到各个通道中进行处理。并行处理的另一个关键点是处理通道的负载均衡,通过系统软件的设计避免一个通道忙碌另一个通道空闲的情况出现。在实际的设计中,我们在软件中对DSP的64K data ram中对划分的7个2K的数据包Inbuf和7个2K的数据包Outbuf进行判断,当一个通道的空闲BUFFER多于其他通道时,它就是最空闲的一个通道,下一次数据的处理通道就是它。每收到一个要处理的包,在打入通道之前,通过判断来找到一个最空闲的通道。
权利要求
1、一种采用多密码芯片并行数据处理的方法,包括
数据的输入和数据输出步骤;
其特征在于,所述并行数据处理的方法还包括
1)主CPU在接到输入的待加密的数据后,将带加密数据作分片处理;
2)主CPU判断DSP处理单元负载状态后,将分片后的小片数据包送入DSP处理单元空闲缓存最多的DSP处理单元的交换缓冲区,由该DSP处理单元将分片后的数据加密,并将加密后的数据送回主CPU的交换缓冲区;
3)主CPU将加密后的小片密文数据重新合成为大的密文数据;
4)将接受到密文数据分成小片加密数据;
5)将小片加密数据依此送入每个DSP处理单元交换缓冲区,通知DSP处理单元完成各自的小片数据解密,在DSP处理单元完成数据解密之后,将分片的原始数据送回主CPU的交换缓冲区;
6)将小片原始数据重新组合成大的原始数据。
2、一种根据权利要求1所述的多密码芯片并行数据处理的方法,其特征在于,通过PCI桥接口电路扩展PCI总线。
3、一种根据权利要求2所述的多密码芯片并行数据处理的方法,其特征在于,扩展的PCI总线的数量至少为一个。
4、一种根据权利要求1所述的多密码芯片并行数据处理的方法,其特征在于,每个DSP处理器单独控制一个密码芯片,采用DMA的方式,通过PCI从系统主内存中接收待加密的数据,并馈入加密芯片进行处理。
5、一种根据权利要求1所述的多密码芯片并行数据处理的方法,其特征在于,通过中断共享电路实现一根PCI中断控制线控制所有的DSP处理器。
全文摘要
本发明涉及数据加解密技术,尤其涉及一种采用多密码芯片并行数据处理以提高系统加解密速度的方法。本发明多密码芯片的数据并行处理装置及数据的并行高速加密方法具有如下优点系统运行不占用额外的主CPU资源,所有的加解密运算都在DSP处理器中进行,通过多片加密芯片与DSP的并行处理,实现了加解密速度的极大提高。
文档编号H04L9/00GK101290569SQ20081002550
公开日2008年10月22日 申请日期2008年5月6日 优先权日2008年5月6日
发明者刚 俞, 峰 林 申请人:国网南京自动化研究院, 南京南瑞集团公司