一种FPGA安全运行系统及方法与流程

文档序号:18398079发布日期:2019-08-09 23:36阅读:197来源:国知局
一种FPGA安全运行系统及方法与流程

本发明涉及计算机技术领域,尤其涉及一种fpga安全运行系统及方法。



背景技术:

fpga(field-programmablegatearray),即现场可编程门阵列,它是在pal、gal、cpld等可编程器件的基础上进一步发展的产物。它是作为专用集成电路领域中的一种半定制电路而出现的,既解决了定制电路的不足,又克服了原有可编程器件门电路数有限的缺点。

现有的fpga芯片通常外接有一个flash存储器,并使用该flash存储器来存储fpga程序,当需要启动fpga芯片时,需要先将flash存储器中的fpga程序写入fpga芯片。然而,采用上述方式来存储fpga程序,容易使他人从flash存储器读取出fpga程序,不利于形成对fpga程序的安全保护。



技术实现要素:

鉴于上述内容,有必要提供一种fpga安全运行系统及方法,其能够对fpga程序进行安全存储,并通过该fpga程序实现对fpga芯片的安全运行。

本发明第一方面提出一种fpga安全运行系统,其包括:arm模块和fpga芯片;

所述arm模块,用于接收编译生成的fpga程序数据并进行存储处理,其包括加解密模块、flash存储器和第一认证模块,所述加解密模块用于对接收的fpga程序数据加密处理以得到对应的密文数据,且当运行fpga芯片时,所述加解密模块还用于对密文数据进行解密处理,以待fpga芯片下载获取,所述flash存储器用于对所述密文数据进行存储处理;

所述fpga芯片,能够从arm模块获取fpga程序数据,其包括第二认证模块,所述fpga芯片通过第二认证模块与所述arm模块的第一认证模块进行认证,待认证成功后,所述fpga芯片根据所述fpga程序数据进行执行任务。

本方案中,所述系统还包括:sram接口,用于连接fpga芯片与arm模块,所述fpga芯片通过sram接口与arm模块进行认证通信。

进一步的,所述fpga芯片还包括计数器,所述计数器在fpga芯片开机工作时开始计数,当接收到arm模块的认证指示后,所述计数器生成当前时间点的随机数,并将其通过sram接口传送给arm模块。

进一步的,所述fpga芯片与arm模块分别存储有一个共享密钥,所述第一认证模块和第二认证模块分别基于该共享密钥并通过相应的摘要算法来计算随机数的摘要值。

本方案中,所述系统还包括:上位机,用于读取编译生成的fpga程序数据,并将所述fpga程序数据传送至所述arm模块。

进一步的,所述上位机将fpga程序数据分割成多个指定长度的数据包,并通过串口通信的方式将多个数据包依序传送给arm模块。

本方案中,所述第一认证模块和第二认证模块能够适用于sm3、md5、sha-256、sha-512的一种或几种摘要算法;所述加解密模块能够适用于sm4、des、3des、aes的一种或几种加解密算法。

本发明第二方面还提出一种fpga安全运行方法,应用于上述的fpga安全运行系统,所述方法包括:

将编译生成的fpga程序数据传送至arm模块;

所述arm模块接收所述fpga程序数据,通过加解密模块进行加密处理以得到对应的密文数据,并存储于flash存储器中;

待运行fpga芯片时,所述arm模块将密文数据从flash存储器中读出,并通过加解密模块对所述密文数据进行解密处理,以得到fpga程序数据,然后将其传送给fpga芯片;

待fpga芯片接收完fpga程序数据时,所述fpga芯片通过第二认证模块与所述arm模块的第一认证模块进行认证;

当认证成功时,则fpga芯片根据fpga程序数据进行执行任务,当认证不成功时,则fpga芯片停止执行任务。

本方案中,所述方法还包括:

上位机读取编译生成的fpga程序数据,并将fpga程序数据分割成多个指定长度的数据包;

上位机通过串口通信将第一个数据包传送给arm模块,所述arm模块对第一个数据包进行crc校验;

待校验无误时,将第一个数据包进行加密处理以得到对应的密文并存储在flash存储器中;

重复上两步动作,对剩余的数据包分别进行加密后存储在flash存储器中;

待运行fpga芯片时,所述arm模块从flash存储器中一一读取所有数据包并进行解密处理。

本方案中,所述fpga芯片通过第二认证模块与所述arm模块的第一认证模块进行认证,还包括:

所述fpga芯片根据arm模块的认证指示,促使计数器生成随机数,所述fpga芯片将所述随机数通过sram接口传送给arm模块;

所述arm模块的第一认证模块接收所述随机数,根据预置的共享密钥并通过相应的摘要算法计算所述随机数的第一摘要值;同时,所述fpga芯片的第二认证模块根据预置的共享密钥并通过相应的摘要算法计算所述随机数的第二摘要值;

所述arm模块将第一摘要值传送给fpga芯片,第二认证模块对比第一摘要值是否与第二摘要值一致,以使所述fpga芯片对arm模块进行认证。

本发明的fpga安全运行系统及方法通过将编译生成的fpga程序数据传送至arm模块;然后所述arm模块接收所述fpga程序数据,通过加解密模块进行加密处理以得到对应的密文数据,并存储于flash存储器中;待运行fpga芯片时,所述arm模块将密文数据从flash存储器中读出,并通过加解密模块对所述密文数据进行解密处理,以得到fpga程序数据,然后将其传送给fpga芯片;待fpga芯片接收完fpga程序数据时,所述fpga芯片通过第二认证模块与所述arm模块的第一认证模块进行认证;当认证成功时,则fpga芯片根据fpga程序数据进行执行任务,当认证不成功时,则fpga芯片停止执行任务。本发明通过将fpga程序数据加密后存储在arm模块的flash存储器中,实现对fpga程序数据的安全存储,有效防止他人窃取fpga程序数据;同时,本发明的fpga芯片在获取fpga程序数据后,还需要进行认证,待认证成功之后,才能执行任务,确保fpga芯片能够安全运行。

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

附图说明

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

图1示出本发明一种fpga安全运行系统的框图;

图2示出本发明一种fpga安全运行方法的流程图。

具体实施方式

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

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

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

图1示出本发明一种fpga安全运行系统的框图。

如图1所示,本发明第一方面提出一种fpga安全运行系统,包括:arm模块和fpga芯片;

所述arm模块,用于接收编译生成的fpga程序数据并进行存储处理,其包括加解密模块、flash存储器和第一认证模块,所述加解密模块用于对接收的fpga程序数据加密处理以得到对应的密文数据,且当运行fpga芯片时,所述加解密模块还用于对密文数据进行解密处理,以待fpga芯片下载获取,所述flash存储器用于对所述密文数据进行存储处理;

所述fpga芯片,能够从arm模块获取fpga程序数据,其包括第二认证模块,所述fpga芯片通过第二认证模块与所述arm模块的第一认证模块进行认证,待认证成功后,所述fpga芯片根据所述fpga程序数据进行执行任务。

根据本发明的实施例,所述fpga程序数据保存在arm模块的flash存储器中,且掉电不丢失。相较于传统的fpga芯片通过外接一个存储器来保存自己的fpga程序数据的方式,本发明能够有效降低他人窃取fpga程序数据的概率。

根据本发明的实施例,所述fpga安全运行系统还包括上位机,其用于读取编译生成的fpga程序数据,并将所述fpga程序数据传送至所述arm模块。

进一步的,所述上位机可以将fpga程序数据分割成多个指定长度的数据包,并通过串口通信的方式将多个数据包依序传送给arm模块。

具体的,由编译器编译生成fpga程序数据的bin文件(即二进制文件),通过上位机把bin文件读取出来。arm模块定时向上位机请求指定长度的数据包,上位机将指定长度的数据包下发给arm模块,期间采用串口通信。优选的,数据包以字节为单位,且每一数据包均加有crc校验码。

可以理解,所述上位机为安装在pc/手机上的一个软件工具,其主要用于读取编译器编译生成的bin文件,并将读出的fpga程序数据通过串口通信协议传送给arm模块;在其他实施例中,所述上位机也可以省略设置,并采用其他方式将编译生成的fpga程序数据传送给arm模块。

arm模块每收到一个数据包,通过crc校验码进行校验,待校验无误后,再通过加密算法加密后,写到flash存储器中,并继续请求下一个数据包,直到fpga程序数据传输完毕,并存入flash存储器中。可以理解,flash存储器中的数据是加密后的fpga程序数据,即使他人获取加密后的fpga程序数据,也无法运用,从而有效提高了对fpga程序数据保护的安全性。

需要说明的是,arm模块把加密后的fpga程序数据以多包的方式保存在flash存储器中。由于fpga芯片和arm模块共用一个电源,一上电,arm模块拉低指定的gpio电平以使fpga芯片进入从串配置模式,等待接收属于自己的fpga程序数据;同时,arm模块将加密后的fpga程序数据一包一包的从flash存储器读出来,然后通过解密算法解密后,通过从串配置模式将fpga程序数据发给fpga芯片。所述从串配置模式是指在串行模式下,需要微处理器或微控制器等通过同步串行接口将配置数据串行写入fpga芯片。

具体的,所述arm模块和fpga芯片均布局在pcb板上,且二者通过从串配置模式的数据线进行连接,该数据线布在pcb板的中间层,以实现对该数据线的物理防护,有效降低他人在arm模块与fpga芯片之间截获fpga程序数据的可能性,进一步提升了数据传输的安全系数。

需要说明的是,当fpga芯片下载完fpga程序数据后,arm模块拉高指定的gpio电平用来复位fpga芯片,然后可使fpga芯片开机工作。

根据本发明的实施例,所述fpga安全运行系统还包括:sram接口,用于连接fpga芯片与arm模块,所述fpga芯片通过sram接口与arm模块进行认证通信。

进一步的,所述fpga芯片还包括计数器,所述计数器在fpga芯片开机工作时开始计数,当接收到arm模块的认证指示后,所述计数器生成当前时间点的随机数,并将其通过sram接口传送给arm模块。

需要说明的是,所述fpga芯片与arm模块分别预存有一个共享密钥,所述第一认证模块和第二认证模块分别基于该共享密钥并通过相应的摘要算法来计算随机数的摘要值。优选的,所述共享密钥的长度为1024bits,但不限于此。

需要说明的是,所述fpga芯片开机后一直在计数,arm模块在一秒的随机时间内,拉高指定的gpio,表示开始认证,此时计数器生成当前时间的随机数,同时fpga芯片通过sram接口把随机数传送给arm模块。arm模块接收到随机数并通过摘要算法(hmac)计算得到第一摘要值,并通过sram接口将第一摘要值传给fpga芯片;与此同时,fpga芯片将随机数通过同样的摘要算法得到第二摘要值,并将其与第一摘要值比较,如果相同则认证成功,且fpga芯片可以继续执行任务;如果不同则认证失败,且fpga芯片不可以继续执行任务。优选的,所述第一摘要值和第二摘要值的长度分别为32字节,但不限于此。

需要说明的是,所述第一认证模块和第二认证模块能够适用于sm3、md5、sha-256、sha-512的一种或几种摘要算法。优选的,所述第一认证模块和第二认证模块均采用sm3摘要算法。

需要说明的是,所述加解密模块能够适用于sm4、des、3des、aes的一种或几种加解密算法。优选的,所述加解密模块采用sm4加解密算法。

图2示出本发明一种fpga安全运行方法的流程图。

如图2所示,本发明第二方面还提出一种fpga安全运行方法,应用于上述的fpga安全运行系统,所述方法包括:

s201,将编译生成的fpga程序数据传送至arm模块;

s202,所述arm模块接收所述fpga程序数据,通过加解密模块进行加密处理以得到对应的密文数据,并存储于flash存储器中;

s203,待运行fpga芯片时,所述arm模块将密文数据从flash存储器中读出,并通过加解密模块对所述密文数据进行解密处理,以得到fpga程序数据,然后将其传送给fpga芯片;

s204,待fpga芯片接收完fpga程序数据时,所述fpga芯片通过第二认证模块与所述arm模块的第一认证模块进行认证;

s205,当认证成功时,则fpga芯片根据fpga程序数据进行执行任务,当认证不成功时,则fpga芯片停止执行任务。

需要说明的是,在第一次运行fpga芯片时,需要执行上述步骤s201-s205;稍后再次运行fpga芯片时,由于fpga程序数据已存入arm模块的flash存储器中,且掉电不丢失,则无需再执行步骤s201-s202,从步骤s203开始执行即可。

根据本发明的实施例,所述fpga安全运行方法,还包括:

上位机读取编译生成的fpga程序数据,并将fpga程序数据分割成多个指定长度的数据包;

上位机通过串口通信将第一个数据包传送给arm模块,所述arm模块对第一个数据包进行crc校验;

待校验无误时,将第一个数据包进行加密处理以得到对应的密文并存储在flash存储器中;

重复上两步动作,对剩余的数据包分别进行加密后存储在flash存储器中;

待运行fpga芯片时,所述arm模块从flash存储器中一一读取所有数据包并进行解密处理。

根据本发明的实施例,所述fpga芯片通过第二认证模块与所述arm模块的第一认证模块进行认证,还包括:

所述fpga芯片根据arm模块的认证指示,促使计数器生成随机数,所述fpga芯片将所述随机数通过sram接口传送给arm模块;

所述arm模块的第一认证模块接收所述随机数,根据预置的共享密钥并通过相应的摘要算法计算所述随机数的第一摘要值;同时,所述fpga芯片的第二认证模块根据预置的共享密钥并通过相应的摘要算法计算所述随机数的第二摘要值;

所述arm模块将第一摘要值传送给fpga芯片,第二认证模块对比第一摘要值是否与第二摘要值一致,以使所述fpga芯片对arm模块进行认证。

本发明的fpga安全运行系统及方法通过将编译生成的fpga程序数据传送至arm模块;然后所述arm模块接收所述fpga程序数据,通过加解密模块进行加密处理以得到对应的密文数据,并存储于flash存储器中;待运行fpga芯片时,所述arm模块将密文数据从flash存储器中读出,并通过加解密模块对所述密文数据进行解密处理,以得到fpga程序数据,然后将其传送给fpga芯片;待fpga芯片接收完fpga程序数据时,所述fpga芯片通过第二认证模块与所述arm模块的第一认证模块进行认证;当认证成功时,则fpga芯片根据fpga程序数据进行执行任务,当认证不成功时,则fpga芯片停止执行任务。本发明通过将fpga程序数据加密后存储在arm模块的flash存储器中,实现对fpga程序数据的安全存储,有效防止他人窃取fpga程序数据;同时,本发明的fpga芯片在获取fpga程序数据后,还需要进行认证,待认证成功之后,才能执行任务,确保fpga芯片能够安全运行。

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

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