FPGA程序的加密方法、解密方法、系统以及存储介质与流程

文档序号:31604944发布日期:2022-09-21 10:17阅读:1060来源:国知局
FPGA程序的加密方法、解密方法、系统以及存储介质与流程
fpga程序的加密方法、解密方法、系统以及存储介质
技术领域
1.本发明涉及芯片加密解密技术领域,尤其涉及一种fpga程序的加密方法、解密方法、系统以及存储介质。


背景技术:

2.fpga(field programmable gate array,现场可编程逻辑门阵列)芯片,是专用集成电路中的一种半定制电路芯片,其具有硬件可编程、组合灵活性较高、计算能力强、功耗低等优势,广泛应用在各种电子产品中。厂商为了避免产品被破解,研发成果被窃取,通常都要对产品中的芯片进行加密。
3.对于使用fpga芯片的产品,由于fpga芯片的主要性能都用作计算处理,对于一般的fpga芯片,其锁存器的空间较小,通常不能在fpga芯片中烧录占用内存较大的加密程序,考虑到开发成本,针对fpga芯片的加密通常都是外置spi flash(serial peripheral interface flash,一种串行外围设备接口的nor-flash程序),通过spi flash程序,从外部对fpga芯片进行加密。
4.在相关技术方案中,外置的spi flash程序中的加密算法通常为aes加密算法,然而,这种技术方案的缺陷在于,由于其生成的比特流文件不具备唯一性,容易通过抄板和复制等手段被抄袭,当spi flash软件中算法的密钥被破解时,所有外置该spi flash软件的fpga芯片就都会被破解,从而连锁导致所有基于该fpga芯片开发的设备也就都被破解了。因此,如何生成具有唯一性的加密密钥,即使密钥被完全复制后破解也无法用于其他基于该fpga芯片开发的产品或系统,是当前亟待解决的问题。
5.上述内容仅用于辅助理解本发明的技术方案,并不代表承认上述内容是现有技术。


技术实现要素:

6.本发明的主要目的在于提供一种fpga程序的加密方法,旨在解决如何生成具有唯一性的加密密钥的问题。
7.为实现上述目的,本发明提供的一种fpga程序的加密方法,所述fpga程序的加密方法包括:基于第一采样时钟和第二被采样时钟的时钟信号,生成所述fpga程序的随机码,其中,所述第一采样时钟和所述第二被采样时钟之间存在随机相位差;根据所述随机码生成随机种子,以及根据所述随机码生成所述fpga程序的随机地址;将所述随机地址赋予所述fpga程序的初始加密数据;将带有所述随机地址的所述初始加密数据,作为目标加密数据填充至所述fpga程序。
8.可选地,所述基于第一采样时钟和第二被采样时钟的时钟信号,生成所述fpga程
序的随机码的步骤包括:当所述第一采样时钟的晶振起振时,获取所述晶振起振时生成的第一时钟信号;根据所述第一时钟信号采集所述第二被采样时钟,确定第二时钟信号;基于预设采样长度截取所述第二时钟信号;将截取后的所述第二时钟信号,按照预设编码逻辑生成所述随机码,其中,所述随机码与所述第二时钟信号的位数相同。
9.可选地,所述根据所述第一时钟信号采集所述第二被采样时钟,确定第二时钟信号的步骤包括:确定预设时间段内所述第一时钟信号的采样频率;根据所述采样频率采集所述第二被采样时钟,确定第一采样时钟和第二被采样时钟之间的相位差,其中,当所述第一采样时钟的晶振的起振时刻不同,所述相位差也不同;根据所述相位差确定所述第二时钟信号。
10.可选地,所述基于第一采样时钟和第二被采样时钟的时钟信号,生成所述fpga程序的随机码的步骤之前,还包括:在所述fpga程序初次运行时,调用解码程序,以对所述fpga程序进行解码;当未检测到所述解码程序对应的加密程序时,返回执行所述基于第一采样时钟和第二被采样时钟的时钟信号,生成所述fpga程序的随机码的步骤。
11.可选地,所述将带有所述随机地址的所述初始加密数据,作为目标加密数据填充至所述fpga程序的步骤之后,还包括:跳转回所述fpga程序的起始地址,并重新执行加密后的所述fpga程序;调用所述fpga程序的解码程序。
12.可选地,所述将所述随机地址赋予所述fpga程序的初始加密数据的步骤之前,还包括:获取所述fpga程序中需要加密的目标明文信息,将所述目标明文信息变为二进制序列;将所述二进制序列分组,并将每一组的所述二进制序列排列成信息矩阵;根据所述信息矩阵中的每两位信息序列构成的碱基对,确定碱基信息矩阵;获取预设dna序列,并将所述dna序列排列为碱基转换矩阵;根据所述碱基转换矩阵,确定所述碱基信息矩阵对应的碱基信息序列;基于预设引物生成规则,生成所述碱基信息序列对应的引物;将所述引物填充至所述碱基信息序列的前部和后部,得到所述初始加密数据。
13.此外,为实现上述目的,本发明提供的一种fpga程序的解密方法,所述fpga程序的解密方法包括:获取所述fpga程序中的目标加密数据;根据所述目标加密数据中的随机地址,确定所述目标加密数据对应的初始加密数据;将所述初始加密数据和预设加密模块中的参考加密数据进行比对,其中,在所述初始加密数据和所述参考加密数据比对成功时,执行所述fpga程序的主程序。
14.此外,为实现上述目的,本发明还提供一种程序加密系统,所述程序加密系统包
括:存储器、处理器及存储在所述存储器上并可在所述处理器上运行的fpga程序的加密程序,所述fpga程序的加密程序被所述处理器执行时实现如上所述的fpga程序的加密方法的步骤。
15.此外,为实现上述目的,本发明还提供一种程序解密系统,所述程序解密系统包括:存储器、处理器及存储在所述存储器上并可在所述处理器上运行的fpga程序的解密程序,所述fpga程序的解密程序被所述处理器执行时实现如上所述的fpga程序的解密方法的步骤。
16.此外,为实现上述目的,本发明还提供一种计算机可读存储介质,所述计算机可读存储介质上存储有fpga程序的加密程序和fpga程序的解密程序,所述fpga程序的加密程序被处理器执行时实现如上所述的程序加密方法的步骤,所述fpga程序的解密程序被处理器执行时实现如上所述的程序解密方法的步骤。
17.本发明实施例提供一种fpga程序的加密方法、解密方法、系统以及可读存储介质,其中,所述加密方法包括:基于第一采样时钟和第二被采样时钟的时钟信号,生成所述fpga程序的随机码,其中,所述第一采样时钟和所述第二被采样时钟之间存在随机相位差;根据所述随机码生成随机种子,以及根据所述随机码生成所述fpga程序的随机地址;将所述随机地址赋予所述fpga程序的初始加密数据;将带有所述随机地址的所述初始加密数据,作为目标加密数据填充至所述fpga程序。通过对每一个fpga 程序都生成一个唯一的加密数据,降低了被他人破解的可能性,增强了程序的安全性。
附图说明
18.图1为本发明fpga程序的加密、解密系统涉及的硬件架构示意图;图2为本发明fpga程序中的fpga 解密部分示意图;图3为本发明实施例涉及的程序加密系统的硬件架构示意图;图4为本发明fpga程序的加密方法的第一实施例的流程示意图;图5为本发明实施例涉及的程序解密系统的硬件架构示意图;图6为本发明fpga程序的解密方法的第二实施例的流程示意图;本发明目的的实现、功能特点及优点将结合实施例,参照附图做进一步说明。
具体实施方式
19.本技术提供一种fpge程序加密、解密方法,至少具有以下几种特点:1、提高了通用性,不使用额外的加密芯片和加密卡,利于推广与使用。
20.2 、利用了真随机码,整个spi flash任意一个部分都成为fpga程序部分,对spi flash任何区域修改都可能引起fpga程序无法运行。
21.3、程序在第一次上电时,fpga加密程序将完成自加密整个过程,并根据真随机码对每一片fpga 的spi flash进行不同的修改,复制任何一个spi flash程序都无法用于另外的fpga程序。
22.4、加密部分程序不占用fpga本身任何资源,在提高加密复杂性的前提下,比其他方案节省了更多资源。
23.应当理解,本发明的附图中显示了本发明的示例性实施例,可以以各种形式实现
本发明而不应被这里阐述的实施例所限制。相反,提供这些实施例是为了能够更透彻地理解本发明,并且能够将本发明的范围完整的传达给本领域的技术人员。
24.参照图1,图1为本发明fpga程序的加密、解密系统涉及的硬件架构示意图,其主要包括mcu模块和fpga模块两个部分,晶振用于振动产生振荡信号,spi flash用于存储fpga加密程序和fpga主程序两个部分,mcu模块通过内置的mcu时钟产生伪随机数并向fpga模块发送,fpga模块包括主程序部分和fpga解码部分,mcu模块和fpga模块之间通过并行通信连接,外挂的spi flash加密程序和fpga 程序之间通过spi总线连接,fpga在加密完成后向mcu发送外部中断,使其内部的mcu时钟停止工作。
25.对于spi flash,其特点在于芯片内执行,其内的加密程序读取到fpga模块中运行,当fpga模块加载完加密程序之后,又通过multi-boot模块将fpga的主程序加载至fpga模块中,可选地,在一些实施方式中,当fpga模块加载完加密程序,生成加密数据之后,会擦除该加密程序,不仅可以防止外部获取到该加密程序,也避免了加密程序占用fpga模块的内存空间。
26.对于fpga 解密部分,参照图2,dna读取模块通过原语或其他手段获取一个fpga唯一id号(一般为64位),dna加密模块通过dna加密算法对主程序进行加密,得到初始加密数据,并对其位宽进行缩小或者放大,dna校对模块用于将dna加密模块中的初始加密数据和外挂的spi flash加密程序得到的加密数据进行比对(具体的比对方式在后面的实施例中详细说明),在对比成功后,通过multi-boot模块跳转至fpga的主程序中的特定程序区域,若比对失败,则重启运行spi flash的fpga加密程序。
27.作为一种实现方案,程序加密系统的硬件架构可以如图3所示。
28.本发明实施例方案涉及的是fpga程序的程序加密系统的硬件架构,所述硬件架构包括:处理器101,例如cpu,存储器102,通信总线103。其中,通信总线103用于实现这些组件之间的连接通信。
29.存储器102可以是高速ram存储器,也可以是稳定的存储器(non-volatile memory),例如磁盘存储器。如图3所示,作为一种计算机可读存储介质的存储器102中可以包括fpga程序的加密程序;而处理器101可以用于调用存储器102中存储的fpga程序的加密程序,并执行以下操作:基于第一采样时钟和第二被采样时钟的时钟信号,生成所述fpga程序的随机码,其中,所述第一采样时钟和所述第二被采样时钟之间存在随机相位差;根据所述随机码生成随机种子,以及根据所述随机码生成所述fpga程序的随机地址;将所述随机地址赋予所述fpga程序的初始加密数据;将带有所述随机地址的所述初始加密数据,作为目标加密数据填充至所述fpga程序。
30.在一实施例中,处理器101可以用于调用存储器102中存储的fpga程序的加密程序,并执行以下操作:当所述第一采样时钟的晶振起振时,获取所述晶振起振时生成的第一时钟信号;根据所述第一时钟信号采集所述第二被采样时钟,确定第二时钟信号;基于预设采样长度截取所述第二时钟信号;
将截取后的所述第二时钟信号,按照预设编码逻辑生成所述随机码,其中,所述随机码与所述第二时钟信号的位数相同。
31.在一实施例中,处理器101可以用于调用存储器102中存储的fpga程序的加密程序,并执行以下操作:确定预设时间段内所述第一时钟信号的采样频率;根据所述采样频率采集所述第二被采样时钟,确定第一采样时钟和第二被采样时钟之间的相位差,其中,当所述第一采样时钟的晶振的起振时刻不同,所述相位差也不同;根据所述相位差确定所述第二时钟信号。
32.在一实施例中,处理器101可以用于调用存储器102中存储的fpga程序的加密程序,并执行以下操作:在所述fpga程序初次运行时,调用解码程序,以对所述fpga程序进行解码;当未检测到所述解码程序对应的加密程序时,返回执行所述基于第一采样时钟和第二被采样时钟的时钟信号,生成所述fpga程序的随机码的步骤。
33.在一实施例中,处理器101可以用于调用存储器102中存储的fpga程序的加密程序,并执行以下操作:跳转回所述fpga程序的起始地址,并重新执行加密后的所述fpga程序;调用所述fpga程序的解码程序。
34.在一实施例中,处理器101可以用于调用存储器102中存储的fpga程序的加密程序,并执行以下操作:获取所述fpga程序中需要加密的目标明文信息,将所述目标明文信息变为二进制序列;将所述二进制序列分组,并将每一组的所述二进制序列排列成信息矩阵;根据所述信息矩阵中的每两位信息序列构成的碱基对,确定碱基信息矩阵;获取预设dna序列,并将所述dna序列排列为碱基转换矩阵;根据所述碱基转换矩阵,确定所述碱基信息矩阵对应的碱基信息序列;基于预设引物生成规则,生成所述碱基信息序列对应的引物;将所述引物填充至所述碱基信息序列的前部和后部,得到所述初始加密数据。
35.基于上述基于芯片加密解密技术的程序加密系统的硬件架构,提出本发明fpga程序的加密方法的实施例。
36.下面对spi flash中的fpga程序的加密流程进行说明:参照图4,在第一实施例中,所述fpga程序的加密方法包括以下步骤:步骤s10,基于第一采样时钟和第二被采样时钟的时钟信号,生成所述fpga程序的随机码,其中,所述第一采样时钟和所述第二被采样时钟之间存在随机相位差;在本实施例中,利用fpga端的外部晶振产生的慢时钟(即第一时钟)通过内部的触发器逻辑去采用mcu内部晶振产生的快时钟(即第二被采样时钟)信号,因为起振时间不同而产生的随机相位差,慢时钟采样快时钟,欠采样导致时钟数据采集的不确定性(例如,建立和保持时间不满足导致的亚稳态)来生成随机种子。随机种子(random seed)是一种以随机数作为对象,以真随机数(种子)为初始条件的随机数。随机序列也是一种真随机数,其在位数上和随机种子相等,是由随机种子按照一定规则生成的序列。
37.可选地,在一些实施方式中,当第一采样时钟的外部晶振起振时,获取外部晶振起振时生成的第一时钟信号,根据所述第一时钟信号采集所述第二被采样时钟,从而确定第二时钟信号,再基于预设采样长度截取所述第二时钟信号,将截取后的所述第二时钟信号,按照预设编码逻辑生成与第二时钟信号位数相同的随机码。
38.可选地,在一些实施方式中,第一采样时钟可以为pll时钟,第二被采样时钟可以为mcu采样时钟,pll时钟的采样频率为mcu采样时钟的3—5倍,生成一个64位的随机码。
39.步骤s20,根据所述随机种子生成随机码,并根据所述随机种子生成所述fpga程序的随机地址;在生成随机码之后,将随机码发送至mcu模块中,通过一定计算即可生成随机种子,并根据随机种子生成fpga中的初始加密数据在fpga加密程序(即spi flash)的随机地址。
40.步骤s30,将所述随机地址赋予所述fpga程序的初始加密数据;在生成随机地址之后,根据随机地址确定fpga程序的初始加密数据,初始加密数据是在fpga程序执行本实施例中的fpga程序的加密方法之前预先加密的数据。需要说明的是,初始加密数据是fpga模块中通过较为现有的加密算法得到的加密数据。
41.可选地,初始加密数据的加密方式可以为dna加密,通过将fpga程序中需要加密的部分,即目标明文信息,变为二进制序列,然后对二进制序列分为若干组,将每一组序列排成一信息矩阵,将矩阵中的每两位信息序列构成的碱基对进行转换,得到加密后的碱基信息矩阵,再获取若干包含碱基信息的dna序列,将该dna序列排列组合为碱基转换矩阵,再将碱基转换矩阵转换为对应的碱基信息序列,根据引物生成规则生成该碱基信息序列对应的引物,将引物填充至该序列的前部和后部,从而将目标文明信息加密为初始加密数据。
42.在得到初始加密数据之后,将随机地址赋予fpga程序的初始加密数据,由于随机地址是具有真随机性的,因此每一个fpga程序的随机地址都是不同的,增加了初始加密数据的不确定性,从而更加难以破解fpga程序,并且由于随机地址的不可复制性,即便破解了这一随机地址的fpga程序,也无法应用到其他fpga程序中。
43.步骤s40,将带有所述随机地址的所述初始加密数据,作为目标加密数据填充至所述fpga程序。
44.在将初始加密数据赋予随机地址之后,将带有随机地址的初始加密数据,作为目标加密数据,将目标加密数据按照随机地址写入并填充至fpga程序中,从而完成整个fpga程序的真随机加密。
45.可选地,在填充完毕之后,还执行将整个spi flash中的fpga 加密程序清除的操作,即目标加密数据填充的部分即为被擦除的fpga的加密程序部分,然后通过multi-boot模块跳转至fpga的主程序中的起始地址,在主程序中执行fpga的解密步骤。在另一些实施方式中,fpga加密程序的清除操作还可以在步骤s20中的生成随机码操作之后执行。擦除加密程序的目的在于,一方面减少程序占用的内存资源,另一方面防止他人通过获取spi flash中的加密程序来破解该fpga程序。
46.在本实施例提供的技术方案中,通过两个不同频率且相位差不定的采样时钟生成随机码,然后根据随机码生成随机种子,再根据随机种子生成随机地址,将随机地址赋予预先加密得到的初始加密数据,将随机码和带有随机地址的加密数据作为目标加密数据填充
至fpga程序中,完成对fpga程序的加密。使得每一个fpga程序都对应一个唯一的加密数据,难以破解。并且由于随机地址的唯一性,不同的fpga程序的目标加密数据都不相同,增加了破解成本,从而间接的降低了被他人破解的可能性,增强了程序的安全性。
47.下面对spi flash中的fpga程序的解密流程进行说明:作为另一种实现方案,程序解密系统的硬件架构可以如图5所示。
48.本发明实施例方案涉及的是程序解密系统的硬件架构,所述硬件架构包括:处理器101,例如cpu,存储器102,通信总线103。其中,通信总线103用于实现这些组件之间的连接通信。
49.存储器102可以是高速ram存储器,也可以是稳定的存储器(non-volatile memory),例如磁盘存储器。如图1所示,作为一种计算机可读存储介质的存储器102中可以包括fpga程序的解密程序;而处理器101可以用于调用存储器102中存储的fpga程序的解密程序,并执行以下操作:获取所述fpga程序中的目标加密数据;根据所述目标加密数据中的随机地址和随机码,确定所述目标加密数据对应的初始加密数据;将所述初始加密数据和预设加密模块中的参考加密数据进行比对,其中,在所述初始加密数据和所述参考加密数据比对成功时,执行所述fpga程序的主程序。
50.基于上述基于芯片加密解密技术的程序解密系统的硬件架构,提出本发明fpga程序的解密方法的实施例。
51.参照图6,在第二实施例中,所述fpga程序的解密方法包括以下步骤:步骤s50,获取所述fpga程序中的目标加密数据;在本实施例中,在系统初次上电时,fpga模块会执行fpga的解码模块,解码模块获取fpga程序中的目标加密数据。
52.需要说明的是,在初次上电时,fpga程序还未执行第一实施例中的fpga加密程序,目标加密数据还未生成,因此在第一次比对时会比对失败,在比对失败后,multi-boot模块会跳转至spi flash中执行fpga的加密程序,在执行完得到目标加密数据之后,即可完成本实施中的获取目标加密数据步骤。
53.步骤s60,根据所述目标加密数据中的随机地址,确定所述目标加密数据对应的初始加密数据;在获取到目标加密数据之后,目标加密数据中包括随机码、随机地址以及带有随机地址的初始加密数据几个部分,解密模块能够读取出目标加密数据中的随机地址,通过随机地址确定出初始加密数据在系统中的存储位置,从而获取位于随机地址对应的存储位置的初始加密数据。
54.需要说明的是,在解密过程中,由于目标加密数据填充至fpga程序中,与fpga程序作为一个整体,且由于随机地址的存在,外部难以获取到加密数据在程序中的确切位置,而对于本技术中的解密模块来说,随机地址是在生成的时候就发送至解密模块中的,对于解密模块而言,随机地址实际上并不“随机”,而是一个确切的地址。因此,在解密流程中,解密模块只需要根据随机地址读取到目标加密数据在fpga程序中的对应位置,然后根据目标加密数据的随机码读取到对应的初始加密数据。
55.步骤s70,将所述初始加密数据和预设加密模块中的参考加密数据进行比对,其中,在所述初始加密数据和所述参考加密数据比对成功时,执行所述fpga程序的主程序。
56.在确定出初始加密数据之后,将初始加密数据和预设加密模块中的参考加密数据进行比对。参考加密数据是预设在fpga解码程序的校对模块中的数据,在加密程序中生成初始加密数据之后,将该初始加密数据发送至解码程序中作为参考加密数据。当获取到目标加密数据之后,解析得到目标加密数据中的初始加密数据,并与之前得到的参考加密数据进行对比。
57.由于这些操作都是在系统内部进行,理论上从目标加密数据中解析得到的初始加密数据和解密模块中的参考加密数据都是一致的,若比对一致则表示解码成功,允许调用multi-boot模块跳转到fpga的主程序区域。
58.需要说明的是,由于随机地址和随机码都是由真随机数构成的,因此每个fpga程序中生成的目标加密数据都是不同的,因此,即便该程序被破解,也无法应用到其它采用相同加密方式的fpga程序中。并且,当fpga程序受到来自外部的破解时,对于外部来说,每个fpga程序中的加密数据的存储地址都是随机的,且fpga程序与加密数据为一整体,因此获取目标加密数据的过程也存在一定难度,增加了破解成本。
59.在本实施例提供的技术方案中,通过解密模块获取到目标加密数据,通过目标加密数据的随机地址和随机码确定出初始加密数据,将初始加密数据和预先接收到的参考加密数据进行别对,当比对成功时判断为解密完成,再执行主程序。由于随机地址和随机码的存在,增加了破解成本从而间接的降低了被他人破解的可能性,增强了程序的安全性。
60.此外,本发明还提供程序解密系统,所述程序解密系统包括:存储器、处理器及存储在所述存储器上并可在所述处理器上运行的fpga程序的解密程序,所述fpga程序的解密程序被所述处理器执行时实现如上所述的fpga程序的解密方法的步骤。
61.此外,本领域普通技术人员可以理解的是实现上述实施例的方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成。该计算机程序包括程序指令,计算机程序可存储于一存储介质中,该存储介质为计算机可读存储介质。该程序指令被程序加密系统和程序解密系统中的至少一个处理器执行,以实现上述方法的实施例的流程步骤。
62.因此,本发明还提供一种计算机可读存储介质,所述计算机可读存储介质存储有fpga程序的加密程序和fpga程序的解密程序,所述fpga程序的加密程序被处理器执行时实现如上所述的程序加密方法的步骤,所述fpga程序的解密程序被处理器执行时实现如上所述的程序解密方法的步骤。
63.其中,所述计算机可读存储介质可以是u盘、移动硬盘、只读存储器(read-only memory,rom)、磁碟或者光盘等各种可以存储程序代码的计算机可读存储介质。
64.需要说明的是,在本文中,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者装置不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者装置所固有的要素。在没有更多限制的情况下,由语句“包括一个
……”
限定的要素,并不排除在包括该要素的过程、方法、物品或者装置中还存在另外的相同要素。
65.通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到上述实施例方法可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下
前者是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在如上所述的一个计算机可读存储介质(如rom/ram、磁碟、光盘)中,包括若干指令用以使得一台终端设备(可以是手机,计算机,服务器,空调器,或者网络设备等)执行本发明各个实施例所述的方法。
66.以上仅为本发明的优选实施例,并非因此限制本发明的专利范围,凡是利用本发明说明书及附图内容所作的等效结构或等效流程变换,或直接或间接运用在其他相关的技术领域,均同理包括在本发明的专利保护范围内。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1