一种基于CPU+FPGA的加解密方法及系统与流程

文档序号:20838842发布日期:2020-05-22 17:13阅读:348来源:国知局
一种基于CPU+FPGA的加解密方法及系统与流程

本发明涉及加解密领域,具体的说,涉及了一种基于cpu+fpga的加解密方法及系统。



背景技术:

目前实现国密算法的技术很成熟,既多种满足sm3杂凑算法或sm4对称算法需求的国密专用算法芯片,也存在多种sm3杂凑算法或sm4对称算法的软算法核以及基于fpga的算法加速实现方式。其中,基于硬件实现的国密算法专用芯片有高性能、高稳定性的特点,但存在算法不能更改,集成多种算法时占用硬件空间大等问题,很容易造成资源浪费;基于纯软件的国密算法比较灵活,但是性能上完全不能跟专用芯片相比。

基于fpga的算法加速方法是结合fpga的高速并行运算能力,提高算法性能,目前基于fpga的处理一般为利用算法ip核或者专用芯片进行国密运算,这种方法极大提高了算法性能,但当前基于fpga的算法处理存在以下问题:(1)单独基于fpga的处理方式不能解决复杂的算法问题;(2)算法固定不能随意更改,目前基于fpga的算法处理一般调用ip核或者算法专用芯片,如需改变算法,需换ip核或者算法芯片;(3)基于fpga的处理方式在使用配套的flash或rom芯片进行配置时,容易利用flash或rom芯片回读程序,造成算法泄露,具有一定的安全隐患。

为了解决以上存在的问题,人们一直在寻求一种理想的技术解决方案。



技术实现要素:

本发明的目的是针对现有技术的不足,从而提供了一种基于cpu+fpga的加解密方法及系统。

为了实现上述目的,本发明所采用的技术方案是:一种基于cpu+fpga的加解密方法,包括以下步骤:

步骤1,cpu上电配置fpga;

步骤2,fpga根据cpu发送的算法模式、加/解密指令、算法参数和使能信号对待处理数据进行加/解密处理并向cpu返回处理结果。

基于上述,步骤1中cpu上电配置fpga的具体步骤为:

步骤1.1,上电初始化;

步骤1.2,读取flash中内置的二进制fpga配置文件,调用内置解密算法解密二进制fpga配置文件,得到配置数据;

步骤1.3,驱动fpga的配置管脚,根据fpga配置时序将配置数据写入fpga;

步骤1.4,判断fpga配置done信号是否为高电平,若否,则返回执行步骤1.2,否则完成pfga配置。

基于上述,将二进制fpga配置文件内置于flash中的步骤为:

fpga开发工具生成配置数据;

上位机端的加密程序对配置数据加密后生成二进制fpga配置文件;

cpu将二进制fpga配置文件烧写至flash中。

基于上述,步骤2的具体分为:

cpu端

步骤2.1,cpu接收上位机下发的算法模式、算法参数、加/解密指令、密钥和待处理数据,判断中断是否响应,若响应,则通过gpio口向fpga发送算法模式、加/解密指令和使能信号;

步骤2.2,cpu通过数据总线将待处理数据、密钥、算法参数发送给fpga;

步骤2.3,等待中断响应,并在检测到中断响应时通过数据总线从fpga中读取加/解密结果;

fpga端

步骤2.4,fpga接收算法模式、加/解密指令和使能信号;

步骤2.5,fpga通过数据总线接收待处理数据、密钥和算法参数,根据加解密指令、密钥和算法参数采用算法模式对待处理数据进行加/解密算法处理,获得加/解密结果。

基于上述,所述算法模式为sm4对称算法,该算法模式下,步骤2.2中,cpu通过数据总线将待处理数据、密钥、算法参数发送给fpga;

步骤2.5中,fpga通过数据总线接收待处理数据、密钥和算法参数并存入fifo中;算法模块从fifo中读出sm4对称算法的算法参数、密钥和待处理数据,通过轮函数同时对密钥及待处理数据进行迭代处理,获得加/解密结果;

fpga将加/解密结果存入fifo中,并通过gpio口告知cpu已处理完成,待cpu通过数据总线从fifo中读出加/解密结果

基于上述,所述算法模式为sm3杂凑算法,该算法模式下,步骤2.2中,cpu将杂凑算法参数传给fpga,并将要进行杂凑处理的数据填充打包处理后和密钥一起发送给fpga,填充数据长度为512的倍数;

步骤2.5中,fpga通过数据总线接收sm3杂凑算法参数、填充数据和密钥存入fifo中;fpga从fifo读取sm3杂凑算法参数存入ram模块,将填充数据每512比特分组读出,并进行消息扩展及压缩运算;

算法处理完成后,fpga将加/解密结果和杂凑值存入fifo中,通过gpio口告知cpu,待cpu通过数据总线从fifo中读出加/解密结果。

本发明还提供一种基于cpu+fpga的加解密系统,包括:

cpu与flash连接,读取flash中内置的二进制fpga配置文件,并调用内置解密算法解密二进制fpga配置文件,得到配置数据;

cpu与fpga连接,驱动fpga的配置管脚,根据fpga配置时序将配置数据写入fpga,并在fpga配置done信号为高电平时结束配置,在fpga配置done信号为低电平时重新进行fpga的配置;

fpga包括gpio口、fifo模块、算法运算模块和ram模块,所述gpio口与cpu相连,用于接收cpu下发的算法模式、加/解密指令和使能信号;所述fifo模块通过数据总线与cpu连接,在fpga接收到使能信号后被激活,以接收cpu发送的待处理数据、密钥、算法参数以及向cpu发送加/解密结果;所述ram模块,用于存储算法参数;所述算法运算模块,用于存储cpu下发的算法模式、加/解密指令,并根据加/解密指令采用算法模式对待处理数据进行加/解密处理。

基于上述,所述算法模式包括sm3杂凑算法或sm4对称算法。

基于上述,还包括上位机,所述上位机内置有fpga开发工具和加密程序,所述fpga开发工具用于生成配置数据;所述加密程序用于对配置数据加密以生成二进制fpga配置文件;

所述上位机通过pcie接口与cpu上位机相连,接收上位机发送的算法模式、算法参数、加/解密指令、密钥和待处理数据以及向上位机发送加/解密结果。

本发明相对现有技术具有突出的实质性特点和显著的进步,具体的说,针对fpga没有复杂的算法处理能力,本发明通过cpu+fpga模式的处理方式将复杂运算放入dsp完成,拓展了算法可重构能力;针对算法固定不可重构性,本发明利用fpga的可重构特点,将加密算法移植到fpga上实现,相比cpu大大提高了算法的处理速度,同时避免了使用ip核或者算法专用芯片,实现了算法的可重构性;针对fpga使用配套flash或rom烧写程序容易被回读问题,fpga配置文件先由加密程序加密,加密后的文件由cpu烧写进flash,上电时采用cpu上电配置fpga,保证了fpga程序不能被配置芯片回读,确保了加密的可靠性。

附图说明

图1是本发明的流程示意图。

图2是本发明fpga上电过程示意图。

图3是本发明fpga算法处理过程示意图。

具体实施方式

下面通过具体实施方式,对本发明的技术方案做进一步的详细描述。

实施例1

一种基于cpu+fpga的加解密方法,如图1所示,包括以下步骤:

步骤1,cpu上电配置fpga;如图2所示,cpu上电配置fpga包括准备阶段和配置阶段,

准备阶段

fpga开发工具生成配置数据;

上位机端的加密程序对配置数据加密后生成二进制fpga配置文件;

cpu将二进制fpga配置文件烧写至flash中;

配置阶段

步骤1.1,上电初始化;

步骤1.2,读取flash中内置的二进制fpga配置文件,调用内置解密算法解密二进制fpga配置文件,得到配置数据;

步骤1.3,驱动fpga的配置管脚,根据fpga配置时序将配置数据写入fpga;

步骤1.4,判断fpga配置done信号是否为高电平,若否,则返回执行步骤1.2,否则完成pfga配置;

步骤2,fpga根据cpu发送的算法模式、加/解密指令、算法参数和使能信号对待处理数据进行加/解密处理并向cpu返回处理结果。

如图3所示,fpga算法处理过程具体如下:

cpu端

步骤2.1,cpu接收上位机下发的算法模式、算法参数、加/解密指令、密钥和待处理数据,判断中断是否响应,若响应,则通过gpio口向fpga发送算法模式、加/解密指令和使能信号;优选的,本实施例中所述算法模式为sm4对称算法;

步骤2.2,cpu通过数据总线将待处理数据、密钥、算法参数发送给fpga;

步骤2.3,等待中断响应,并在检测到中断响应时通过数据总线从fpga中读取加/解密结果;

fpga端

步骤2.4,fpga接收算法模式、加/解密指令和使能信号;

步骤2.5,fpga通过数据总线接收待处理数据、密钥和算法参数,根据加解密指令、密钥和算法参数采用算法模式对待处理数据进行加/解密算法处理,获得加/解密结果;

具体的,步骤2.5的步骤为:

fpga通过数据总线接收待处理数据、密钥和算法参数并存入fifo中;

算法模块从fifo中读出sm4对称算法的算法参数、密钥和待处理数据,通过轮函数同时对密钥及待处理数据进行迭代处理,获得加/解密结果;

fpga将加/解密结果存入fifo中,并通过gpio口告知cpu已处理完成,待cpu通过数据总线从fifo中读出加/解密结果。

针对fpga没有复杂的算法处理能力,本发明通过cpu+fpga模式的处理方式将复杂运算放入dsp完成,拓展了算法可重构能力;针对算法固定不可重构性,本发明利用fpga的可重构特点,将加密算法移植到fpga上实现,相比cpu大大提高了算法的处理速度,同时避免了使用ip核或者算法专用芯片,实现了算法的可重构性;针对fpga使用配套flash或rom烧写程序容易被回读问题,fpga配置文件先由加密程序加密,加密后的文件由cpu烧写进flash,上电时采用cpu上电配置fpga,保证了fpga程序不能被配置芯片回读,确保了加密的可靠性。

实施例2

本实施例与实施例1的区别之处在于:

所述算法模式为sm3杂凑算法,该算法模式下,步骤2.2中,cpu将杂凑算法参数传给fpga,并将要进行杂凑处理的数据填充打包处理后和密钥一起发送给fpga,填充数据长度为512的倍数;

步骤2.5中,fpga通过数据总线接收sm3杂凑算法参数、填充数据和密钥存入fifo中;fpga从fifo读取sm3杂凑算法参数存入ram模块,将填充数据每512比特分组读出,并进行消息扩展及压缩运算,获得加/解密结果;

fpga将加/解密结果存入fifo中,通过gpio口告知cpu,待cpu通过数据总线从fifo中读出加/解密结果。

实施例3

本实施例提供一种基于cpu+fpga的加解密系统,包括:

上位机,所述上位机内置有fpga开发工具和加密程序,所述fpga开发工具用于生成配置数据;所述加密程序用于对配置数据加密以生成二进制fpga配置文件;

所述上位机通过pcie接口与cpu上位机相连,接收上位机发送的算法模式、算法参数、加/解密指令、密钥和待处理数据以及向上位机发送加/解密结果;

cpu与flash连接,读取flash中内置的二进制fpga配置文件,并调用内置解密算法解密二进制fpga配置文件,得到配置数据;

cpu与fpga连接,驱动fpga的配置管脚,根据fpga配置时序将配置数据写入fpga,并在fpga配置done信号为高电平时结束配置,在fpga配置done信号为低电平时重新进行fpga的配置;

fpga包括gpio口、fifo模块、算法运算模块和ram模块,所述gpio口与cpu相连,用于接收cpu下发的算法模式、加/解密指令和使能信号;所述fifo模块通过数据总线与cpu连接,在fpga接收到使能信号后被激活,以接收cpu发送的待处理数据、密钥、算法参数以及向cpu发送加/解密结果;所述ram模块,用于存储算法参数;所述算法运算模块,用于存储cpu下发的算法模式、加/解密指令,并根据加/解密指令采用算法模式对待处理数据进行加/解密处理。

具体的,所述算法模式包括sm3杂凑算法或sm4对称算法。

需要理解的是,fpga中算法运算模块可以根据需要修改为sm3杂凑算法或sm4对称算法,具有很大的灵活性和可复用性。ram中存储的算法参数同样可修改,随用随改,灵活性高。

最后应当说明的是:以上实施例仅用以说明本发明的技术方案而非对其限制;尽管参照较佳实施例对本发明进行了详细的说明,所属领域的普通技术人员应当理解:依然可以对本发明的具体实施方式进行修改或者对部分技术特征进行等同替换;而不脱离本发明技术方案的精神,其均应涵盖在本发明请求保护的技术方案范围当中。

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