一种门延时差异的FPGA加密方法转让专利

申请号 : CN201710887955.7

文献号 : CN107577965B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 张华波

申请人 : 天津津航计算技术研究所

摘要 :

本发明涉及一种门延时差异的FPGA加密方法,涉及时频测量技术领域。本发明提出了一种FPGA加密方法,该方法以FPGA自身门延时差异为理论基础、实现对FPGA程序加密,不但能节省开发成本,同时提高了电路集成化程度、降低了电路功耗。

权利要求 :

1.一种门延时差异的FPGA加密方法,其特征在于,包括以下步骤:

步骤1、产生单脉冲信号:系统上电后,FPGA产生一个单脉冲信号;

步骤2、脉冲检测:所述单脉冲信号分成PULSE1和PULSE2两路,PULSE2直接输入脉冲检测模块对脉冲进行检测并记录下被检测到的时刻,PULSE1经延时模块后再输入另一个脉冲检测模块进行检测,并记录下被检测到的时刻;

步骤3、计算脉冲延时差:计数器对两次检测到的脉冲信号时间差进行计算得到延时输入比较模块,比较模块对该延时与测量仪测得的、做修正处理后得到的延时进行比对,根据比较结果产生相应的标识信号;

步骤4、加密目标程序:标识信号输入被加密的目标程序,根据标识信号是否有效决定程序是否运行,达到加密的目的。

2.如权利要求1所述的方法,其特征在于,步骤1中,系统上电后,还通过外部晶振产生时钟信号CLK0,CLK0经FPGA内部的PLL倍频后产生采样时钟CLK,设其周期为TCLK;与此同时FPGA产生一个脉宽为100ns的所述单脉冲信号。

3.如权利要求2所述的方法,其特征在于,步骤2中,延时模块由若干级联非门组成,对PULSE1进行延时;检测PULSE2的脉冲检测模块利用采样时钟CLK不断检测PULSE2的上升沿,上升沿一旦到来,立即启动计数器开始计数;而检测PULSE1的脉冲检测模块利用采样时钟CLK不断检测PULSE1的上升沿,上升沿一旦到来,立即停止计数器,假设计数器的计数值为N,则延时模块对脉冲信号的延时TD表示为:TD=N×TCLK                         (1)。

4.如权利要求3所述的方法,其特征在于,步骤3中,计数器得到的延时值TD输入到比较模块中与测量仪测得的,做修正处理后得到的值TD’进行比较,判断两值是否相等,若TD=TD’,则标识信号Flag有效,反之则无效。

5.如权利要求4所述的方法,其特征在于,步骤4中,标志信号Flag作为被加密的目标程序的控制变量,当它有效时,被加密的目标程序运行,否则不运行,实现对程序的加密。

6.如权利要求1至5中任一项所述的方法,其特征在于,所述测量仪为MTIM712。

7.如权利要求1至5中任一项所述的方法,其特征在于,所述延时模块由100个级联非门组成。

8.如权利要求1至5中任一项所述的方法,所述延时模块由1000个级联非门组成。

9.如权利要求4所述的方法,其特征在于,所述修正处理为向上取整。

说明书 :

一种门延时差异的FPGA加密方法

技术领域

[0001] 本发明涉及时频测量技术领域,具体涉及一种门延时差异的 FPGA加密方法。

背景技术

[0002] 半导体工艺的不断进步,带动了芯片技术的迅猛发展,现场可编 程门阵列(Field Programmable Gate Array,FPGA)成为这一领域的佼 佼者,FPGA作为一种可编程逻辑器件,是在PAL、GAL、CPLD等 可编程器的基础上进一步发展起来的产物,作为专用集成电路领域中 的一种半定制电路而出现。FPGA的诞生,既解决了定制电路的不足, 又克服了原有可编程器件门电路数量有限的缺点,在计算机硬件、通 信、航空航天和汽车电子等领域有着广泛的应用。
[0003] 当前,行业内出现了许多针对FPGA的加密方法,如基于SRAM 的加密、基于CPLD的加密[申请号:201410603250.4][申请号: 201420643533.7]等,这些加密方法都是通过借助第三方加密工具来达 到加密的目的。第三方加密工具的引入,不但增加了开发成本,而且 增大了电路体积和功耗,在电子线路集成化越来越高的今天,缩小电 路体积、降低功耗已是大势所趋。

发明内容

[0004] (一)要解决的技术问题
[0005] 本发明要解决的技术问题是:如何实现对FPGA程序的加密。
[0006] (二)技术方案
[0007] 为了解决上述技术问题,本发明提供了一种门延时差异的FPGA 加密方法,包括以下步骤:
[0008] 步骤1、产生单脉冲信号:系统上电后,FPGA产生一个单脉冲 信号;
[0009] 步骤2、脉冲检测:所述单脉冲信号分成PULSE1和PULSE2两 路,PULSE2直接输入脉冲检测模块对脉冲进行检测并记录下被检测 到的时刻,PULSE1经延时模块后再输入另一个脉冲检测模块进行检 测,并记录下被检测到的时刻;
[0010] 步骤3、计算脉冲延时差:计数器对两次检测到的脉冲信号时间 差进行计算并作相应处理后得到延时输入比较模块,比较模块对该延 时与测量仪测得的延时进行比对,根据比较结果产生相应的标识信 号;
[0011] 步骤4、加密目标程序:标识信号输入被加密的目标程序,根据 标识信号是否有效决定程序是否运行,达到加密的目的。
[0012] 优选地,步骤1中,系统上电后,还通过外部晶振产生时钟信号 CLK0,CLK0经FPGA内部的PLL倍频后产生采样时钟CLK,设其 周期为TCLK;与此同时FPGA产生一个脉宽为100ns的所述单脉冲信 号。
[0013] 优选地,步骤2中,延时模块由若干级联非门组成,对PULSE1 进行延时;检测PULSE2的脉冲检测模块利用采样时钟CLK不断检 测PULSE2的上升沿,上升沿一旦到来,立即启动计数器开始计数; 而检测PULSE1的脉冲检测模块利用采样时钟CLK不断检测 PULSE1的上升沿,上升沿一旦到来,立即停止计数器,假设计数器 的计数值为N,则延时模块对脉冲信号的延时TD表示为:
[0014] TD=N×TCLK    (1)。
[0015] 优选地,步骤3中,计数器得到的延时值TD输入到比较模块中 与测量仪测得的,做修正处理后的值TD’进行比较,判断两值是否相 等,若TD=TD’,则标识信号Flag有效,反之则无效。
[0016] 优选地,步骤4中,标志信号Flag作为被加密的目标程序的控 制变量,当它有效时,被加密的目标程序运行,否则不运行,实现对 程序的加密。
[0017] (三)有益效果
[0018] 本发明提出了一种FPGA加密方法,该方法以FPGA自身门延时 差异为理论基础、实现对FPGA程序加密,不但能节省开发成本,同 时提高了电路集成化程度、降低了电路功耗。

附图说明

[0019] 图1是本发明的方法主要流程图;
[0020] 图2是本发明的方法原理框图;
[0021] 图3是本发明实施例的逻辑流程图;
[0022] 图4是FPGA1一个非门对信号的延时图;
[0023] 图5是FPGA1 100个级联非门对信号的延时图;
[0024] 图6是FPGA1 1000个级联非门对信号的延时图;
[0025] 图7是FPGA2 1000个级联非门对信号的延时图;
[0026] 图8是FPGA3 1000个级联非门对信号的延时图。

具体实施方式

[0027] 为使本发明的目的、内容、和优点更加清楚,下面结合附图和实 施例,对本发明的具体实施方式作进一步详细描述。
[0028] 经大量测试发现,FPGA内一个非门对信号的延时大约为 0.3ns-0.4ns,当FPGA内部若干个非门级联时,其对信号的延时并不是 每一个非门延时简单的线性叠加,不同FPGA内部相同数量的级联非 门对信号的延时存在差异,而差异的大小取决于级联非门的数量。图 4-图8是利用精密时间间隔测量仪MTIM712测得的不同FPGA级联非 门对信号的延时情况。实验中所用的三个FPGA器件FPGA1、FPGA2 和FPGA3,皆为Altera公司CycloneII系列同一一批次芯片,测量仪 MTIM712测量精度为100ps。
[0029] 从图6-图8可见,若以延时的平均值作为标准延时,FPGA1、FPGA2、FPGA3在1000个级联非门下测得的延时分别为371.3ns、 357.8ns、365.6ns。由此可见,相同系列和批次、不同的FPGA内部即 使拥有相同数量的级联非门,其对信号的延时也不同。
[0030] 基于上述发现,本发明提出了一种以FPGA自身门延时差异为理 论基础、实现对FPGA程序加密的方法,其加密方法实现流程如图1 至图3所示。
[0031] 步骤1:系统上电,外部晶振产生的时钟信号CLK0经FPGA内部 的PLL倍频后产生高频采样时钟CLK,设其周期为TCLK;与此同时 FPGA产生一个脉宽为100ns的脉冲信号;
[0032] 步骤2:脉冲信号分为PULSE1和PULSE2两路:PULSE1输入延时 模块,延时模块由若干级联非门组成,对PULSE1进行延时;PULSE2 则直接输入到脉冲检测模块1,脉冲检测模块1利用高频采样时钟CLK 不断检测PULSE2的上升沿,上升沿一旦到来,立即启动计数器开始 计数;
[0033] 步骤3:PULSE1经延时模块后,输入到脉冲检测模块2进行检测; 脉冲检测模块2利用高频采样时钟CLK不断检测PULSE1的上升沿,上 升沿一旦到来,立即停止计数器。假设计数器的计数值为N。则延时 模块对脉冲信号的延时TD可以表示为:
[0034] TD=N×TCLK    (1)
[0035] 步骤4:计数器得到的延时值TD输入到判断模块中与测量仪测得 的、做修正处理(向上取整)后得到的值TD’进行比较,判断两值是 否相等。若TD=TD’,则标识信号Flag有效,反之则无效。
[0036] 步骤5:标志信号Flag作为被加密的目标程序的控制变量,当它 有效时,被加密的目标程序运行,否则不运行,实现对程序的加密。
[0037] 由于任意FPGA内部相同数量级联非门对信号的延时不同,且每 个FPGA都对应某一唯一的延时值,因此在对不同FPGA进行加密时, 加密程序会有差异。如级联非门为1000时,FPGA1、FPGA2、FPAGA3 的延时分别为371.3ns、357.8ns、365.6ns,因此在进行加密时,判断 模块中用于与TD比较的值TD’应分别是371.3ns、357.8ns、365.6ns。
[0038] 修正延时的主要原因是任何FPGA器件都有最大工作频率的限 制,采样时钟频率不可能无限大,延时的修正将直接影响加密的成败。
[0039] 上述测得在1000个级联非门下,FPGA1、FPGA2、FPAGA3的延 时分别为371.3ns、357.8ns、365.6ns。设采样时钟为500MHz,则其分 辨率为2ns,因此利用该时钟测得的延时不可能和测量仪MTIM712测 得的延时371.3ns、357.8ns、365.6ns相等。故对延时的修正是本加密 方法必不可少的环节。将上述延时371.3ns、357.8ns、365.6ns分别修 正为372ns、
358ns、366ns后,利用500MHz采样时钟进行计数得到的 延时值便可与之相等。
[0040] 本发明的加密方法不但能节省开发成本,同时提高了电路集成化 程度、降低了电路功耗,本发明的加密方法已在多款FPGA产品上得 到验证,在工程技术领域具有重要的实用价值。
[0041] 加密的成败将受到某些客观因素的影响,主要有如下两点:
[0042] 1)采样时钟频率。采样时钟频率是影响本加密方法的重要因素。 当采样时钟频率为100MHz时,其分辨率仅为10ns,仅能区分10ns以 上的延时;采样时钟频率为1GHz时,分辨率为1ns,则能区分1ns以上 的延时。因此,采样时钟频率越高,分辨率越高,则越能够区分微小 的延时。
[0043] 2)FPGA老化。FPGA老化也是影响加密成败的另一个潜在因素, 随着FPGA工作年限增加,其内部电路结构将出现老化现象,其对信 号的延时也会出现一定程度的偏移。当前加密成功的程序,在运行一 定时间后,可能会由于器件的老化而导致程序不能正常工作,需重新 加密。
[0044] 以上所述仅是本发明的优选实施方式,应当指出,对于本技术领 域的普通技术人员来说,在不脱离本发明技术原理的前提下,还可以 做出若干改进和变形,这些改进和变形也应视为本发明的保护范围。