CN116933295A - Fpga固件加密方法、装置 - Google Patents
Fpga固件加密方法、装置 Download PDFInfo
- Publication number
- CN116933295A CN116933295A CN202311187770.7A CN202311187770A CN116933295A CN 116933295 A CN116933295 A CN 116933295A CN 202311187770 A CN202311187770 A CN 202311187770A CN 116933295 A CN116933295 A CN 116933295A
- Authority
- CN
- China
- Prior art keywords
- firmware
- encryption
- fpga
- chip
- functional
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
- 238000000034 method Methods 0.000 title claims abstract description 37
- 230000009286 beneficial effect Effects 0.000 abstract description 2
- 230000006870 function Effects 0.000 description 11
- 238000013461 design Methods 0.000 description 3
- 238000010586 diagram Methods 0.000 description 3
- 238000012360 testing method Methods 0.000 description 3
- 238000012545 processing Methods 0.000 description 2
- 230000003068 static effect Effects 0.000 description 2
- 238000011161 development Methods 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 230000010354 integration Effects 0.000 description 1
- 230000009191 jumping Effects 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 238000003860 storage Methods 0.000 description 1
- 238000003466 welding Methods 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/60—Protecting data
- G06F21/602—Providing cryptographic facilities or services
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/70—Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer
- G06F21/71—Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure computing or processing of information
- G06F21/72—Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure computing or processing of information in cryptographic circuits
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Computer Hardware Design (AREA)
- Physics & Mathematics (AREA)
- Software Systems (AREA)
- Computer Security & Cryptography (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Health & Medical Sciences (AREA)
- General Health & Medical Sciences (AREA)
- Bioethics (AREA)
- Mathematical Physics (AREA)
- Stored Programmes (AREA)
Abstract
本发明涉及一种FPGA固件加密方法和装置,该FPGA固件存放在FLASH芯片上,其包括用于配置所述FPGA芯片的功能固件,所述FPGA固件加密方法包括如下步骤:所述功能固件运行时先查找所述FLASH芯片的指定地址位的加密完成标志;如果能够找到所述加密完成标志,则继续比较所述功能固件生成的第一加密数据与所述FLASH芯片的指定地址位存放的第二加密数据是否相同;如果所述第一加密数据与所述第二加密数据相同,所述功能固件正常运行;如果所述第一加密数据与所述第二加密数据不同,所述功能固件退出运行。本发明的有益效果在于,至少一个发明的实施例提供了一种低成本的、不限于高端芯片的任何支持multiboot(多镜像)功能的FPGA芯片的FPGA固件加密方案。
Description
技术领域
本发明数据安全技术领域,涉及一种FPGA固件加密方法、装置。
背景技术
FPGA具有集成度高、可以重新配置的特点,因此在硬件电路中采用FPGA,不仅可以缩小电路的面积,而且可以通过对FPGA的重新配置以更新电路的功能,缩短了以往修改硬件电路必须重新制板的开发周期并降低了成本,极大地提高整个系统的灵活性,因此基于FPGA的数字系统取得了飞速的发展,得到了广泛应用。但市场上常见的FPGA内部电路是基于SRAM工艺的,掉电后不能保存配置数据,因此上电时必须读取外部存储器中的配置数据才可以正常工作。配置数据一般存放在FLASH芯片里面很容易被窃取,因可以对FPGA的设计进行克隆,对FPGA设计的开发者和所有者造成极大的损失。
为了保护FPGA的配置数据的安全,现有加密技术以Xilinx(赛灵思)公司的7系列Xilinx FPGA芯片为例,是将加密密钥存储在片上专用RAM中,可以选择存放在BBRAM或eFUSE,加密密钥只能通过JTAG端口编程到设备上,在配置时对传入的比特流进行解密。7系列AES加密逻辑采用256位加密密钥。片上AES解密逻辑不能用于比特流解密之外的任何用途,AES解密逻辑对用户设计不可用,不能用于解密配置比特流以外的数据。此种加密方式固然不错,但有以下几个问题:1、只能用在中高端7系列以上的芯片中,低端芯片,例如6系列则不可用此种方式;2、BBRAM保存加密key的方式,需要板子电池供电,电池没电,则无法工作。况且,板子上设计电池也增加额外成本以及空间浪费。3、采用eFUSE保存key,这个烧录是一次性(OTP)的,烧录后无法再次更改key,万一key忘记,那么则无法后来升级固件。如果参数设置不当,则还会造成板子被烧毁的风险。4、无论哪种保存方式,都不适合批量固件烧录,因为每一片板子都要分别用JTAG烧录key,无法大规模量产,只适合小批量样品生成处理。
发明内容
本发明至少一个方面给出了一种FPGA固件加密方法,所述FPGA固件存放在FLASH芯片上,所述FPGA固件包括用于配置所述FPGA芯片的功能固件,所述FPGA固件加密方法包括如下步骤:
所述功能固件运行时先查找所述FLASH芯片的指定地址位的加密完成标志;
如果能够找到所述加密完成标志,则继续比较所述功能固件生成的第一加密数据与所述FLASH芯片的指定地址位存放的第二加密数据是否相同;
如果所述第一加密数据与所述第二加密数据相同,所述功能固件正常运行;如果所述第一加密数据与所述第二加密数据不同,所述功能固件退出运行;
其中,所述第一标志数据与所述第二标志数据是基于两种源数据采用相同的加密算法生成,所述源数据选自FPGA芯片唯一ID、FLASH芯片唯一ID、一个固定数中的任意一种。
本发明至少一个方面还给出了一种FPGA固件加密装置,所述装置包括至少一个处理器;以及存储器,其存储有指令,当通过至少一个处理器来执行该指令时,实施按照本发明所述的方法的步骤。
本发明的有益效果在于,至少一个发明的实施例提供了一种低成本的、不限于高端芯片的任何支持multiboot(多镜像)功能的FPGA芯片的FPGA固件加密方案。
附图说明
图1一些实施例的FLASH芯片和FPGA芯片的工作原理拓扑图;
图2一些实施例的FPGA固件加密方法的示意图;
图3一些实施例的FPGA固件加密方法的示意图;
图4一些实施例的FPGA固件加密装置的示意图;
其中,图2和图3的multiboot表示多镜像,可由多镜像更新模块实现multiboot功能。
具体实施方式
现在将参考所附附图来解释本公开的各方面。只要在这些方面中描述的部件的形状、相对位置和其他方面未明确限定,本公开的范围就不仅仅局限于所示出的部件,所示出的部件仅用于说明的目的。另外,虽然阐述了许多细节,但应当理解,本公开的一些方面可在没有这些细节的情况下被实施。在其他情况下,未详细示出熟知的电路、结构和技术,以免模糊对该描述的理解。
术语解释
RAM(Random Access Memory)是指随机存取存储器。
SRAM(Static Random-Access Memory)是指静态随机存取存储器。
JTAG(Joint Test Action Group,联合测试工作组),是一种国际标准测试协议(IEEE 1149.1兼容),主要用于芯片内部测试。
固件(Firmware)是写入FPGA芯片中的驱动程序。
请参考图1、图2所示,本发明的一些实施例涉及一种FPGA固件加密方法,所述FPGA固件存放在FLASH芯片1上,所述FPGA固件包括用于配置所述FPGA芯片2的功能固件,所述FPGA固件加密方法包括如下步骤:
S1:所述功能固件运行时先查找所述FLASH芯片的指定地址位的加密完成标志;
S2:如果能够找到所述加密完成标志,则继续比较所述功能固件生成的第一加密数据与所述FLASH芯片的指定地址位存放的第二加密数据是否相同;
S3:如果所述第一加密数据与所述第二加密数据相同,所述功能固件正常运行;如果所述第一加密数据与所述第二加密数据不同,所述功能固件退出运行;
其中,所述第一加密数据与所述第二加密数据是基于两种源数据采用相同的加密算法生成,所述源数据选自FPGA芯片唯一ID、FLASH芯片唯一ID、一个固定数中的任意一种。
这些实施例的技术方案中,结合图3-1所示,可以获取FPGA芯片以及FLASH芯片的唯一码(或称之为DNA ID),即获取FPGA芯片本身的DNA ID(56bit)以及FLASH芯片本身的唯一ID(64 bit)数据,例如Xilinx全系列芯片、Micron或者其他厂家的25系列FLASH芯片,利用这些唯一码进行加密。如果某个芯片不支持获取唯一码功能,可用一个固定数代替即可,但必须有一个芯片支持唯一码。本发明的功能固件的具体功能不做限定,例如可以为网卡功能,其正常运行表示网口可以启动,其退出运行表示关闭网口启动。
本发明的一些实施例涉及的FPGA固件加密方法,S1步骤之后,如果没能找到所述加密完成标志,则继续如下步骤:
所述功能固件通过所述FPGA芯片的多镜像更新模块跳转到存放在所述FLASH芯片上的加密固件(亦称为加密固件程序)的地址;
如果存在所述加密固件,则生成所述第二加密数据并存放到所述FLASH芯片的所述加密完成标志对应的指定地址位;如果不存在所述加密固件,则所述功能固件退出运行,并输出加载所述加密固件失败提示。
在这些实施例中,结合图3-2所示,如果上一步没有获取到加密完成标志(例如AA995588),说明功能固件是第一次运行,那么通过多镜像更新模块(具有multiboot功能)跳转到存放加密固件程序的位置来运行,加密固件程序主要是生成加密完成标志(亦称为加密完成标志,例如AA995588)以及第二加密数据。
本发明的一些实施例涉及的FPGA固件加密方法,所述第二加密数据存放到所述FLASH芯片的所述加密完成标志对应的指定地址位之后,还包括:
擦除存放在所述FLASH芯片上的所述加密固件。
本发明的一些实施例涉及的FPGA固件加密方法,所述两种源数据包括如下至少一组:
FPGA芯片唯一ID、FLASH芯片唯一ID;FPGA芯片唯一ID和一个固定数;或者,FLASH芯片唯一ID和一个固定数。
本发明的一些实施例涉及的FPGA固件加密方法,所述FPGA固件存放在FLASH芯片上,包括:
将所述功能固件和所述加密固件生成固件文件,其中,所述功能固件放在所述固件文件的FLASH 0位地址、将所述加密固件放在所述固件文件的FLASH高位地址;
将所述固件文件烧录到FLASH芯片上。
在这些实施例中,提供了批量生产方法。首先,把前述两个固件生成mcs固件文件,把功能固件放在flash地址0的位置,加密固件放在flash高位地址部分,例如:24'hE00000(flash地址,该地址要和主功能固件里面multiboot要跳转的地址一致)。再把这个mcs文件通过烧录功能批量烧录到flash芯片上去。然后焊接到FPGA电路板上,在FPGA上电第一次运行,即可自动运行加密固件,并自动删除自己,并存放了AA995588标志位以及加密后的数据。第二次开机后,主功能固件即可正常运行,而非法复制的固件,则由于FPGA芯片的DNAID或者flash芯片ID不同,则无法正常执行,达到加密的目的。
本发明的一些实施例涉及的FPGA固件加密方法,所述固件文件中所述加密固件存放的FLASH高位地址与所述功能固件存放的所述加密固件的地址一致。
本发明的一些实施例涉及的FPGA固件加密方法,所述算法包括但不限于AES、DES、自定义算法,其中,自定义算法为对称算法。本发明可选的实施例中,加密主动权完全在用户,只要可以还原数据即可。比如,加密的时候+1,解密的时候-1均可。
本发明的一些实施例涉及的FPGA固件加密方法,如果存在所述加密固件,则生成所述第二加密数据并存放到所述FLASH芯片的所述加密完成标志对应的指定地址位之后,包括如下步骤:
所述功能固件重新运行查找所述FLASH芯片的指定地址位的所述加密完成标志。
本发明的一些实施例涉及的FPGA固件加密方法,擦除存放在所述FLASH芯片上的所述加密固件之后,还包括如下步骤:
所述加密固件通过所述FPGA芯片的多镜像更新模块跳转到存放在FLASH芯片上的所述功能固件的地址。
如图4所示,本发明的一些实施例涉及的FPGA固件加密装置100,所述装置包括至少一个处理器200;以及存储器300,其存储有指令,当通过至少一个处理器来执行该指令时,实施按照本发明实施例所述的方法的步骤。
已经描述了主题的特定实施方式。其他实施方式在以下权利要求的范围内。例如,在权利要求中记载的活动可以以不同的顺序执行并且仍旧实现期望的结果。作为一个实例,为了实现期望的结果,附图中描述的处理不必须要求示出的特定顺序或者顺序次序。在特定实现中,多任务处理和并行处理可以是有优势的。
Claims (10)
1.一种FPGA固件加密方法,所述FPGA固件存储在FLASH芯片上,所述FPGA固件包括用于配置所述FPGA芯片的功能固件,其特征在于,所述FPGA固件加密方法包括如下步骤:
所述功能固件运行时先查找所述FLASH芯片的指定地址位的加密完成标志;
如果能够找到所述加密完成标志,则继续比较所述功能固件生成的第一加密数据与所述FLASH芯片的指定地址位存放的第二加密数据是否相同;
如果所述第一加密数据与所述第二加密数据相同,所述功能固件正常运行;如果所述第一加密数据与所述第二加密数据不同,所述功能固件退出运行;
其中,所述第一加密数据与所述第二加密数据是基于两种源数据采用相同的加密算法生成,所述源数据选自FPGA芯片唯一ID、FLASH芯片唯一ID、一个固定数中的任意一种。
2.如权利要求1所述的FPGA固件加密方法,其特征在于,所述功能固件如果没能找到所述加密完成标志,则继续如下步骤:
所述功能固件通过所述FPGA芯片的多镜像更新模块跳转到存放在所述FLASH芯片上的加密固件的地址;
如果存在所述加密固件,则生成所述第二加密数据并存放到所述FLASH芯片的所述加密完成标志对应的指定地址位;如果不存在所述加密固件,则所述功能固件退出运行,并输出加载所述加密固件失败提示。
3.如权利要求2所述的FPGA固件加密方法,其特征在于,所述第二加密数据存放到所述FLASH芯片的所述加密完成标志对应的指定地址位之后,还包括如下步骤:
擦除存放在所述FLASH芯片上的所述加密固件。
4.如权利要求1~3任一项所述的FPGA固件加密方法,其特征在于,所述两种源数据包括如下至少一组:
FPGA芯片唯一ID、FLASH芯片唯一ID;FPGA芯片唯一ID和一个固定数;或者,FLASH芯片唯一ID和一个固定数。
5.如权利要求2~3任一项所述的FPGA固件加密方法,其特征在于,所述FPGA固件存放在FLASH芯片上,包括如下步骤:
将所述功能固件和所述加密固件生成固件文件,所述功能固件存放在所述固件文件的FLASH 0位地址、将所述加密固件存放在所述固件文件的FLASH高位地址;
将所述固件文件烧录到FLASH芯片上。
6.如权利要求5所述的FPGA固件加密方法,其特征在于,
所述固件文件中所述加密固件存放的FLASH高位地址与所述功能固件存放的所述加密固件的地址一致。
7.如权利要求1~3任一项所述的FPGA固件加密方法,其特征在于,所述加密算法包括但不限于AES、DES、自定义算法。
8.如权利要求2~3任一项所述的FPGA固件加密方法,其特征在于,如果存在所述加密固件,则生成所述第二加密数据并存放到所述FLASH芯片的所述加密完成标志对应的指定地址位之后,包括如下步骤:
所述功能固件重新运行查找所述FLASH芯片的指定地址位的所述加密完成标志。
9.如权利要求3所述的FPGA固件加密方法,其特征在于,擦除存放在所述FLASH芯片上的所述加密固件之后,还包括如下步骤:
所述加密固件通过所述FPGA芯片的多镜像更新模块跳转到存放在FLASH芯片上的所述功能固件的地址。
10.一种FPGA固件加密装置,其特征在于,所述装置包括至少一个处理器;以及存储器,其存储有指令,当通过至少一个处理器来执行该指令时,实施按照权利要求1-9任一项所述的方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202311187770.7A CN116933295A (zh) | 2023-09-15 | 2023-09-15 | Fpga固件加密方法、装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202311187770.7A CN116933295A (zh) | 2023-09-15 | 2023-09-15 | Fpga固件加密方法、装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN116933295A true CN116933295A (zh) | 2023-10-24 |
Family
ID=88386419
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202311187770.7A Pending CN116933295A (zh) | 2023-09-15 | 2023-09-15 | Fpga固件加密方法、装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN116933295A (zh) |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104537320A (zh) * | 2014-12-05 | 2015-04-22 | 深圳市雷赛软件技术有限公司 | 芯片自动加密方法和系统 |
US20170180137A1 (en) * | 2015-12-21 | 2017-06-22 | Electro Industries/Gauge Tech | Providing security in an intelligent electronic device |
CN112231649A (zh) * | 2020-10-19 | 2021-01-15 | 迅镭智能(广州)科技有限公司 | 一种固件加密处理方法、装置、设备及介质 |
US20210303702A1 (en) * | 2020-03-30 | 2021-09-30 | Yu-Cheng Lai | Protection system and protection method for software and firmware or information |
CN115080929A (zh) * | 2022-07-20 | 2022-09-20 | 深圳研控自动化科技股份有限公司 | Fpga程序的加密方法、解密方法、系统以及存储介质 |
-
2023
- 2023-09-15 CN CN202311187770.7A patent/CN116933295A/zh active Pending
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104537320A (zh) * | 2014-12-05 | 2015-04-22 | 深圳市雷赛软件技术有限公司 | 芯片自动加密方法和系统 |
US20170180137A1 (en) * | 2015-12-21 | 2017-06-22 | Electro Industries/Gauge Tech | Providing security in an intelligent electronic device |
US20210303702A1 (en) * | 2020-03-30 | 2021-09-30 | Yu-Cheng Lai | Protection system and protection method for software and firmware or information |
CN112231649A (zh) * | 2020-10-19 | 2021-01-15 | 迅镭智能(广州)科技有限公司 | 一种固件加密处理方法、装置、设备及介质 |
CN115080929A (zh) * | 2022-07-20 | 2022-09-20 | 深圳研控自动化科技股份有限公司 | Fpga程序的加密方法、解密方法、系统以及存储介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US12008246B2 (en) | Secure executable code update for a securely-bootable processing chip | |
CN108269605B (zh) | 安全器件状态设备和方法 | |
US7454169B2 (en) | Method and apparatus for use in securing an electronic device such as a cell phone | |
CA2536611C (en) | Method and system for securing data utilizing redundant secure key storage | |
US7975151B2 (en) | Decryption key table access control on ASIC or ASSP | |
JP6902584B2 (ja) | ブートプログラム、情報処理装置、情報処理システム、情報処理方法、半導体装置、およびプログラム | |
KR100666328B1 (ko) | 온 칩 메모리를 이용한 기밀 정보 보안 장치 및 보안 방법 | |
JP2010525417A (ja) | 擬似乱数生成器のための初期シード管理 | |
WO2008071572A1 (en) | Virtual secure on-chip one time programming | |
KR20140002638A (ko) | 개선된 시동 작동을 갖는 물리적 복제 불가 기능부 | |
CN110851886B (zh) | 存储装置 | |
CN103617401A (zh) | 一种数据文件保护方法及装置 | |
US11663145B2 (en) | Off-chip memory address scrambling apparatus and method for system on chip | |
US9460312B2 (en) | Data integrity protection from rollback attacks for use with systems employing message authentication code tags | |
US8397081B2 (en) | Device and method for securing software | |
CN112131537B (zh) | 一种对zynq芯片程序镜像文件的加解密的方法 | |
CN116933295A (zh) | Fpga固件加密方法、装置 | |
US11966748B2 (en) | Dynamic boot configuration | |
US11509461B2 (en) | System and method for obfuscating opcode commands in a semiconductor device | |
CN114553399B (zh) | 芯片内置密钥的派生方法及其装置 | |
JP2021190081A (ja) | 機密データを保護することが可能な電子機器 | |
WO2021259501A1 (en) | Security component and method of operation | |
CN117852105A (zh) | 基于硬件增强的芯片安全管理方法、装置、终端及介质 | |
US20230188326A1 (en) | System on chip, security system, and method of performing authentication | |
JP2017224131A (ja) | 組み込み機器および検査装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination |