基于可编程逻辑器件的加密方法及系统与流程

文档序号:12125728阅读:191来源:国知局

本发明涉及一种加密方法及系统,尤其涉及一种基于可编程逻辑器件的加密方法及系统。



背景技术:

在现代电子系统设计中,由于可编程逻辑器件(FPGA)的卓越性能、灵活方便的可升级特性,而得到了广泛的应用。由于大规模高密度可编程逻辑器件多采用SRAM工艺,要求每次上电,对FPGA器件进行重配置,这就使得可以通过监视配置的位数据流,进行克隆设计。因此,在关键、核心设备中,必须采用加密技术进行保护。

通常,采用SRAM工艺的FPGA芯片的的配置方法主要有三种:由计算机通过下载电缆配置、用专用配置芯片(如Altera公司的EPCX系列芯片)配置、采用存储器加微控制器的方法配置。第一种方法适合调试设计时要用,第二种和第三种在实际产品中使用较多。第二种方法的优点在于外围电路非常简单,体积较小,适用于不需要频繁升级的产品;第三种方法的优点在于成本较低,升级性能好。以上几种方法在系统加电时,都需要将配置的比特流数据按照确定的时序写入SRAM工艺的FPGA。因此,采用一定的电路对配置FPGA的数据引脚进行采样,即可得到配置数据流信息。利用记录下来的配置数据可对另一块FPGA芯片进行配置,就实现了对FPGA内部设计电路的克隆。

现在已有的保密方法有几种:

基于PC软件方法:

基于PC软件的保密方法,一般应用产品需要和PC机软件配合使用的场合,软件采用读取PC机CPU ID号,硬盘ID号等措施生成一个唯一的机器码,产品厂商根据用户生成的机器码来生成一个授权码,软件会吧机器码和授权码进行过算法运算后比较,如果吻合证明为合法用户;如果用户机器更换,需要重新申请授权码;国内研究软件破解者众多,成本开销小,有一台PC既可以研究,门槛低,被破解容易;

基于外挂单片机MCU的方法:

该方法将一部分简单的算法功能防止在MCU中,FPGA产品需要和MCU通信才能完成一个完整的功能体现,但是MCU得运算能力有限,(频率几十MHZ,8051内核)所执行的算法复杂度有限,同时采用通用型MCU,社会上研究该型MCU破解者众多,是的破解容易,破解成本低。

基于外挂加密芯片的方法:

该放在产品中外挂加密芯片,在加密芯片中预烧录一个产品ID,加密芯片内置随机数发生器,用随机数对ID加密后将随机数和加密后的数据一起传给FPGA进行验证;验证失败为非法产品;该方法在原理是几乎没有什么漏洞,破解比较困难;但是现实状态确实很容易破解,原因1、该型加密芯片,采用IIC或者SPI总线结构通信,单bit模式数据传输,传输波特率一般只有几十KBPS,换算出来每秒中只有几K字节的数据通信,对于破解这来说,数据量太小,分析难度不大;原因2、因为数据量小,可以采用欺骗法,使用逻辑分析仪将加密芯片和FPGA芯片之间的通信数据录制下来,用另外一个芯片(单片机/FPGA/CPLD)模拟加密芯片发送同样的数据(几K字节的数据量),原产品的FPGA芯片不能识别当前是否为欺骗状态,这样只要原加密芯片烧录的ID即可破解产品。



技术实现要素:

本发明解决的技术问题是:构建一种基于可编程逻辑器件的加密方法及系统,克服现有技术破解容易,破解成本低的技术问题。

本发明的技术方案是:构建一种基于可编程逻辑器件的加密方法,包括如下步骤:

预存多组加密数字:在可编程逻辑器件预存多组用于加密的加密数字,在待加密产品中预存同样的多组加密数字;

生成加密数据流:在可编程逻辑器件中利用加密算法对某一组加密数字进行加密生成加密数据流,在待加密产品中用相应的加密算法对预存的同一组加密数字进行加密生成加密数据流;

验证加密数据流,将可编程逻辑器件中生成的加密数据流和待加密产品中生成的加密数据流进行比较验证。

本发明的进一步技术方案是:在生成加密数据流步骤中,加密生成加密数据流为滚动加密,即,加密算法对初始某组加密数字生成加密数据流,间隔一段时间,再运用加密算法对上次生成的加密数据流加密生成新的加密数据流。

本发明的进一步技术方案是:设置滚动加密次数,对某一组加密数字滚动加密到设定次数后,变换成另一组加密数字进行滚动加密。

本发明的进一步技术方案是:所述加密数字为随机数字。

本发明的进一步技术方案是:还包括在可编程逻辑器件中设置对待加密产品时钟信号进行记数的振荡器。

本发明的进一步技术方案是:存储多组加密数字的存储模块内置在所述可编程逻辑器件中。

本发明的技术方案是:构建一种基于可编程逻辑器件的加密系统,包括可编程逻辑器件、待加密产品,所述可编程逻辑器件包括存储加密数字的第一存储模块、第一加密模块,所述待加密产品包括存储加密数字的第二存储模块、第二加密模块、验证模块,所述第一存储模块预存多组用于加密的加密数字,所述第二存储模块在待加密产品中预存同样的多组加密数字,所述第一加密模块在利用加密算法对某一组加密数字进行加密生成加密数据流,所述第二加密模块用相应的加密算法对预存的同一组加密数字进行加密生成加密数据流;所述验证模块将所述第一加密模块加密生成的加密数据流和所述第二加密模块加密生成的加密数据流进行比较验证。

本发明的进一步技术方案是:所述第一加密模块和所述第二加密模块为滚动加密模块,所述第一加密模块和所述第二加密模块利用加密算法对初始某组加密数字生成加密数据流,间隔一段时间,再运用加密算法对上次生成的加密数据流加密生成新的加密数据流。

本发明的进一步技术方案是:所述第一加密模块和所述第二加密模块设置滚动加密次数,对某一组加密数字滚动加密到设定次数后,变换成另一组加密数字进行滚动加密。

本发明的进一步技术方案是:所述可编程逻辑器件包括对待加密产品时钟信号进行记数的振荡器。

本发明的技术效果是:构建一种基于可编程逻辑器件的加密方法及系统,在可编程逻辑器件预存多组用于加密的加密数字,在待加密产品中预存同样的多组加密数字;在可编程逻辑器件中利用加密算法对某一组加密数字进行加密生成加密数据流,在待加密产品中用相应的加密算法对预存的同一组加密数字进行加密生成加密数据流;将可编程逻辑器件中生成的加密数据流和待加密产品中生成的加密数据流进行比较验证。本发明专利的可编程逻辑器件配置信息和用户闪存存储区域,均是内置在CPLD芯片内部,无法通过简单的外部探测手段来获取这些信息,可编程逻辑器件厂商亦重点考虑这些数据的安全性。

附图说明

图1为本发明的结构示意图。

具体实施方式

下面结合具体实施例,对本发明技术方案进一步说明。

本发明的具体实施方式是:构建一种基于可编程逻辑器件的加密方法,包括如下步骤:

预存多组加密数字:在可编程逻辑器件预存多组用于加密的加密数字,在待加密产品中预存同样的多组用于加密的加密数字。

具体实施过程如下:在待加密产品上设置一个可编程逻辑器件,在可编程逻辑器件预存多组用于加密的加密数字。可编程逻辑器件的配置信息存储在可编程逻辑器件芯片内置存储器中,无法通过简单的数据探测法来录制配置信息。在待加密产品中预存同样的多组用于加密的加密数字,可编程逻辑器件中的加密数字和待加密产品中预存加密数字在加密数字本身以及顺序上也相同。具体实施中,所述加密数字可以为随机数字。存储多组加密数字的存储模块内置在所述可编程逻辑器件中。

生成加密数据流:在可编程逻辑器件中利用加密算法对某一组加密数字进行加密生成加密数据流,在待加密产品中用相应的加密算法对预存的同一组加密数字进行加密生成加密数据流。

具体实施过程如下:在可编程逻辑器件中利用加密算法对某一组加密数字进行加密生成加密数据流,加密算法可以用通常的加密算法,也可以设计一套私有加密算法,私有加密算法可以大大提高解密难度。通过加密算法对某一组加密数字进行加密生成加密数据流。同样,在待加密产品中用相应的加密算法对预存的同一组加密数字进行加密生成加密数据流。

验证加密数据流,将可编程逻辑器件中生成的加密数据流和待加密产品中生成的加密数据流进行比较验证。

具体实施过程如下:将可编程逻辑器件中生成的加密数据流传送到待加密产品中,待加密产品接收加密数据流,然后将其与自身芯片中采用加密算法产生的加密数据流进行比较验证,若验证通过,则为本产品,若验证不通过,则不为本产品。本发明实例例中,可编程逻辑器件以32位数据总线模式,速度为100MHZ以上与待加密产品的芯片进行通信,并将加密后的数据传送给待加密产品的芯片做验证。

本发明的优选实施方式是:在生成加密数据流步骤中,加密生成加密数据流为滚动加密,即,加密算法对初始某组加密数字生成加密数据流,间隔一段时间,再运用加密算法对上次生成的加密数据流加密生成新的加密数据流。同样,待加密产品的芯片也以同样的的间隔时间,运用同样的加密算法对上次生成的加密数据流加密生成新的加密数据流。在滚动加密过程中,可编程逻辑器件和待加密产品的芯片使用的加密数字、滚动加密时间间隔以及加密算法均一样,这样,在一定时间内,滚动加密的次数也一样,滚动加密产生的加密数据流也一样,通过验证,即可以得知真假,达到产品加密效果。具体实施例中,还包括在可编程逻辑器件中设置对待加密产品时钟信号进行记数的振荡器。可编程逻辑器件中设置有内置振荡器,使用内置振荡器对产品的时钟信号源(一般为晶振)进行计数,如果发现计数值小于预期值,则判定为外部时钟信号源被人为的降低了频率,产品处于被研究被破解状态,CPLD内部加密算法理解切换加密参数,输出错误的数据,将破解者导向错误的道路。

本发明的优选实施方式是:设置滚动加密次数,对某一组加密数字滚动加密到设定次数后,变换成另一组加密数字进行滚动加密。本发明专利中,通过设置滚动加密次数,次数设置更加增加了解密的难度,不同的次数设置,会导致后续产生的结果不一样,特别是变换加密数字的时间不一样,打乱加密过程,增加了加密难度。

具体实施例中,可编程逻辑器件内部用户存储区存储256组加密数字,每一组加密数字为32位;每一组加密数字使用10秒钟后轮换下一组,则所有的加密数字需要256*10=2560秒轮换一次,32位总线,100MHZ的速度,每秒有400MByte的数据流,2560秒则有2560*400=1024000MByte的数据,合计1000Gbyte的数据;现如今没有一种仪器可以在100MHZ的速度下,有连续录制1000GByte的数据能力,即时有这样的仪器,也有很高的价格成本;同时,录制了1000GByte的数据,采用别的芯片来模拟发送这个1000Gbyte的达到欺骗FPGA的方法,其代价也是高昂的,1000GByte的数据,现在只有PC机硬盘能够同时存放的下,还有配置硬盘读取装置,模拟可编程逻辑器件的接口发送这1000GByte的数据,也有很大的难度。

如图1所示,本发明的具体实施方式是:构建一种基于可编程逻辑器件的加密系统,包括可编程逻辑器件1、待加密产品2,所述可编程逻辑器件1包括存储加密数字的第一存储模块11、第一加密模块12,所述待加密产品2包括存储加密数字的第二存储模块21、第二加密模块22、验证模块23,所述第一存储模块11预存多组用于加密的加密数字,所述第二存储模块21在待加密产品中预存同样的多组加密数字,所述第一加密模块12在利用加密算法对某一组加密数字进行加密生成加密数据流,所述第二加密模块22用相应的加密算法对预存的同一组加密数字进行加密生成加密数据流;所述验证模块23将所述第一加密模块12加密生成的加密数据流和所述第二加密模块22加密生成的加密数据流进行比较验证。

如图1所示,本发明的优选实施方式是:在待加密产品2上设置一个可编程逻辑器件1,在可编程逻辑器件1预存多组用于加密的加密数字。可编程逻辑器件的配置信息存储在可编程逻辑器件芯片内置存储器中。所述第一存储模块11预存多组用于加密的加密数字,所述第二存储模块21在待加密产品中预存同样的多组加密数字。可编程逻辑器件1中的加密数字和待加密产品2中预存加密数字在加密数字本身以及顺序上也相同。具体实施中,所述加密数字可以为随机数字。存储多组加密数字的存储模块内置在所述可编程逻辑器件1中。在可编程逻辑器件1中,所述第一加密模块12在利用加密算法对某一组加密数字进行加密生成加密数据流,加密算法可以用通常的加密算法,也可以设计一套私有加密算法,私有加密算法可以大大提高解密难度。通过加密算法对某一组加密数字进行加密生成加密数据流。同样,所述第二加密模块22用相应的加密算法对预存的同一组加密数字进行加密生成加密数据流。将可编程逻辑器件1中生成的加密数据流传送到待加密产品2中,待加密产品2接收加密数据流,所述验证模块23将所述第一加密模块12加密生成的加密数据流和所述第二加密模块22加密生成的加密数据流进行比较验证。若验证通过,则为本产品,若验证不通过,则不为本产品。本发明实例中,可编程逻辑器件1以32位数据总线模式,速度为100MHZ以上与待加密产品的芯片进行通信,并将加密后的数据传送给待加密产品2的芯片做验证。

本发明的优选实施方式是:所述第一加密模块12和所述第二加密模块22为滚动加密模块,所述第一加密模块12和所述第二加密模块22利用加密算法对初始某组加密数字生成加密数据流,间隔一段时间,再运用加密算法对上次生成的加密数据流加密生成新的加密数据流。加密生成加密数据流为滚动加密,即,加密算法对初始某组加密数字生成加密数据流,间隔一段时间,再运用加密算法对上次生成的加密数据流加密生成新的加密数据流。同样,待加密产品2的芯片也以同样的的间隔时间,运用同样的加密算法对上次生成的加密数据流加密生成新的加密数据流。在滚动加密过程中,可编程逻辑器件1和待加密产品2的芯片使用的加密数字、滚动加密时间间隔以及加密算法均一样,这样,在一定时间内,滚动加密的次数也一样,滚动加密产生的加密数据流也一样,通过验证,即可以得知真假,达到产品加密效果。

本发明的优选实施方式是:还包括在可编程逻辑器件1中设置对待加密产品时钟信号进行记数的振荡器。可编程逻辑器件1中设置有内置振荡器,使用内置振荡器对产品的时钟信号源(一般为晶振)进行计数,如果发现计数值小于预期值,则判定为外部时钟信号源被人为的降低了频率,产品处于被研究被破解状态,CPLD内部加密算法理解切换加密参数,输出错误的数据,将破解者导向错误的道路。

本发明的优选实施方式是:所述第一加密模块12和所述第二加密模块22设置滚动加密次数,对某一组加密数字滚动加密到设定次数后,变换成另一组加密数字进行滚动加密。本发明专利中,通过设置滚动加密次数,次数设置更加增加了解密的难度,不同的次数设置,会导致后续产生的结果不一样,特别是变换加密数字的时间不一样,打乱加密过程,增加了加密难度。

本发明的技术效果是:构建一种基于可编程逻辑器件1的加密方法及系统,在可编程逻辑器件1预存多组用于加密的加密数字,在待加密产品2中预存同样的多组加密数字;在可编程逻辑器件1中利用加密算法对某一组加密数字进行加密生成加密数据流,在待加密产品1中用相应的加密算法对预存的同一组加密数字进行加密生成加密数据流;将可编程逻辑器件1中生成的加密数据流和待加密产品2中生成的加密数据流进行比较验证。本发明专利的可编程逻辑器件1配置信息和用户闪存存储区域,均是内置在可编程逻辑器件1芯片内部,无法通过简单的外部探测手段来获取这些信息,可编程逻辑器件1厂商亦重点考虑这些数据的安全性。

以上内容是结合具体的优选实施方式对本发明所作的进一步详细说明,不能认定本发明的具体实施只局限于这些说明。对于本发明所属技术领域的普通技术人员来说,在不脱离本发明构思的前提下,还可以做出若干简单推演或替换,都应当视为属于本发明的保护范围。

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