首页 / 专利库 / 电脑安全 / 补丁管理 / 补丁 / 一种针对FPGA固件的精准逆向工程方法

一种针对FPGA固件的精准逆向工程方法

阅读:1023发布:2020-06-09

专利汇可以提供一种针对FPGA固件的精准逆向工程方法专利检索,专利查询,专利分析的服务。并且本 发明 公开了一种针对FPGA 固件 的精准逆向工程方法,包括如下步骤:S1、截获比特流数据,并将其保存为比特流文件;S2、使用EDA工具获取FPGA结构信息,根据FPGA结构信息,使用映射生成器生成比特流映射信息,并将FPGA结构信息和比特流映射信息输入 数据库 ;S3、根据比特流映射信息,使用比特流逆向工具将比特流文件进行逆向,并还原成网表文件;S4、结合FPGA结构信息,使用网表逆向工具从网表文件中恢复出功能等价的RTL代码,并输出代码文件。本发明解决了 现有技术 存在的FPGA逆向工程精确度低、完整度不足以及FPGA设计的安全性与可靠性低的问题。,下面是一种针对FPGA固件的精准逆向工程方法专利的具体信息内容。

1.一种针对FPGA固件的精准逆向工程方法,其特征在于,包括如下步骤:
S1:截获比特流数据,将其保存为比特流文件;
S2:使用EDA工具获取FPGA结构信息,根据FPGA结构信息,使用映射生成器生成比特流映射信息,并将FPGA结构信息和比特流映射信息输入数据库
S3:根据比特流映射信息,使用比特流逆向工具将比特流文件进行逆向,并还原成网表文件;
S4:结合FPGA结构信息,使用网表逆向工具从网表文件中恢复出功能等价的RTL代码,并输出代码文件。
2.根据权利要求1所述的针对FPGA固件的精准逆向工程方法,其特征在于,所述步骤S2中,映射生成器的工作方法,包括如下步骤:
S2-1:进行初始化:初始化映射生成器,并生成空白网表;
S2-2:进行Tile测试:从FPGA的每种类型的FPGA结构组成单元Tile中各选一个,生成测试Tile组,将测试Tile组中每个Tile所有的待测试元件添加到空白网表进行测试,得到所有待测试元件的映射信息;
S2-3:计算偏移量:选择测试Tile组中一个Tile作为基准Tile,选择一个与基准Tile同类型的Tile作为待测Tile,将基准Tile与待测Tile配置成相同工作模式并分别加入空白网表中,生成比特流并计算基准Tile与待测Tile对应的控制比特集合地址之间的偏移量;
S2-4:遍历偏移量信息:将测试Tile组作为基准Tile组,将其它所有Tile作为测试Tile,遍历计算每个基准Tile与同类型的所有测试Tile之间的偏移量,得到偏移量信息;
S2-5:存储比特流映射信息:将步骤S2-2得到的元件映射信息与偏移量信息作为比特流映射信息存储到数据库,并输出比特流。
3.根据权利要求1所述的针对FPGA固件的精准逆向工程方法,其特征在于,所述步骤S3中,比特流逆向工具的工作方法,包括如下步骤:
S3-1:进行初始化:初始化比特流逆向工具,读取截获到的比特流,加载数据库中的比特流映射信息;
S3-2:还原连接信息:根据比特流映射信息,找到所有打开的可编程互联点PIP,根据PIP恢复出所有信号网络,并且基于深度优先搜索算法实现连接信息的还原并得到完整的连接信息;
S3-3:打信息补丁:分析所有Tile中相邻元件之间的相关性,并为在映射信息测试中缺失的信息打上补丁;
S3-4:逆向元件信息:根据比特流文件、比特流映射信息和补丁信息来确定每个元件的工作状态,得到元件功能信息,实现元件的逆向;
S3-5:输出网表文件:输出生成网表文件,将步骤S3-2得到的连接信息和元件功能信息整合到网表文件,输出网表文件。
4.根据权利要求1所述的针对FPGA固件的精准逆向工程方法,其特征在于,所述步骤S4中,网表逆向工具的工作方法,包括如下步骤:
S4-1:进行初始化:初始化网表逆向工具,使用网表逆向工具读取网表文件,并将连接信息的结构和元件功能信息的结构转换成预设数据结构,并且加载FPGA结构信息;
S4-2:进行端口分类:根据步骤S4-1处理后的连接信息和元件功能信息,将PAD元件进行I/O端口分类;
S4-3:提取路径:根据I/O端口的类型,从网表文件中提取信号路径簇;
S4-4:生成代码:使用与元件的功能相同的RTL代码替换信号路径簇中的元件,并结合FPGA结构信息、信号路径簇的结构和属性将RTL代码进行整合;
S4-5:输出代码文件:生成代码文件,将所有RTL代码整合到代码文件中,检测并移除重复的端口定义声明,输出代码文件。

说明书全文

一种针对FPGA固件的精准逆向工程方法

技术领域

[0001] 本发明属于硬件安全技术领域,具体涉及一种针对FPGA固件的精准逆向工程方法。

背景技术

[0002] FPGA(Field Programmable Gate Array),即现场可编程阵列,它是在PAL、GAL、CPLD等可编程器件的基础上进一步发展的产物。它是作为专用集成电路(ASIC)领域中的一种半定制电路而出现的,既解决了定制电路的不足,又克服了原有可编程器件门电路数有限的缺点。几乎所有的FPGA固件(比特流)的具体格式都是不公开的,而FPGA的用户只能获取比特流文件,而不能获取与其功能等价的网表文件以及RTL代码文件。
[0003] 近些年来FPGA被广泛应用于各种各样的领域中,但是也因此引起了硬件黑客的注意,各种针对FPGA的攻击层出不穷,硬件木攻击就是其中一种。一些黑客已经往FPGA中成功插入了硬件木马。例如在FPGA固件(比特流)中查找到空白的区域并且通过修改比特流在这些区域中插入木马。另外存在一种新的硬件木马并且将其隐藏于RTL代码中。同时也有一些基于RTL代码的硬件木马检测技术被提出,但是这些技术在实际应用到FPGA上时都受限于无法获取与比特流功能等效的RTL代码而无法检测其中的硬件木马。
[0004] 现有技术存在以下问题:
[0005] (1)无法获取与比特流功能等效的RTL代码而无法检测其中的硬件木马,FPGA设计的安全性与可靠性低;
[0006] (2)现有技术主要集中在将比特流文件还原成网表文件,没有工作着眼于将从比特流逆向出的网表还原成为功能等价的RTL代码文件,逆向工程完整度不足。
[0007] (3)现有技术无法对FPGA固件进行精确的还原,精确度低。

发明内容

[0008] 针对现有技术中的上述不足,本发明为了解决上述问题,提供一种高效率、高实用性与高精确度的针对FPGA固件的精准逆向工程方法,提高了FPGA设计的安全性与可靠性,解决了现有技术存在的FPGA逆向工程精确度低、完整度不足以及FPGA设计的安全性与可靠性低的问题。
[0009] 为了达到上述发明目的,本发明采用的技术方案为:
[0010] 一种针对FPGA固件的精准逆向工程方法,包括如下步骤:
[0011] S1:截获比特流数据,并将其保存为比特流文件;
[0012] S2:使用EDA工具获取FPGA结构信息,根据FPGA结构信息,使用映射生成器生成比特流映射信息,并将FPGA结构信息和比特流映射信息输入数据库
[0013] S3:根据比特流映射信息,使用比特流逆向工具将比特流文件进行逆向,并还原成网表文件;
[0014] S4:结合FPGA结构信息,使用网表逆向工具从网表文件中恢复出功能等价的RTL代码,并输出代码文件。
[0015] 进一步地,步骤S2中,映射生成器的工作方法,包括如下步骤:
[0016] S2-1:进行初始化:初始化映射生成器,并生成空白网表;
[0017] S2-2:进行Tile测试:从FPGA的每种类型的FPGA结构组成单元Tile中各选一个,生成测试Tile组,将测试Tile组中每个Tile所有的待测试元件添加到空白网表进行测试,得到所有待测试元件的映射信息;
[0018] S2-3:计算偏移量:选择测试Tile组中一个Tile作为基准Tile,选择一个与基准Tile同类型的Tile作为待测Tile,将基准Tile与待测Tile配置成相同工作模式并分别加入空白网表中,生成比特流并计算基准Tile与待测Tile对应的控制比特集合地址之间的偏移量;
[0019] S2-4:遍历偏移量信息:将测试Tile组作为基准Tile组,将其它所有Tile作为测试Tile,遍历计算每个基准Tile与同类型的所有测试Tile之间的偏移量,得到偏移量信息;
[0020] S2-5:存储比特流映射信息:将步骤S2-2得到的元件映射信息与偏移量信息作为比特流映射信息存储到数据库,并输出比特流。
[0021] 进一步地,步骤S3中,比特流逆向工具的工作方法,包括如下步骤:
[0022] S3-1:进行初始化:初始化比特流逆向工具,读取截获到的比特流,加载数据库中的比特流映射信息;
[0023] S3-2:还原连接信息:根据比特流映射信息,找到所有打开的可编程互联点PIP,根据PIP恢复出所有信号网络,并且基于深度优先搜索算法实现连接信息的还原并得到完整的连接信息;
[0024] S3-3:打信息补丁:分析所有Tile中相邻元件之间的相关性,并为在映射信息测试中缺失的信息打上补丁;
[0025] S3-4:逆向元件信息:根据比特流文件、比特流映射信息和补丁信息来确定每个元件的工作状态,得到元件功能信息,实现元件的逆向;
[0026] S3-5:输出网表文件:输出生成网表文件,将步骤S3-2得到的连接信息和元件功能信息整合到网表文件,输出网表文件。
[0027] 进一步地,步骤S4中,网表逆向工具的工作方法,包括如下步骤:
[0028] S4-1:进行初始化:初始化网表逆向工具,使用网表逆向工具读取网表文件,并将连接信息的结构和元件功能信息的结构转换成预设数据结构,并且加载FPGA结构信息;
[0029] S4-2:进行端口分类:根据步骤S4-1处理后的连接信息和元件功能信息,将PAD元件进行I/O端口分类;
[0030] S4-3:提取路径:根据I/O端口的类型,从网表文件中提取信号路径簇;
[0031] S4-4:生成代码:使用与元件的功能相同的RTL代码替换信号路径簇中的元件,并结合FPGA结构信息、信号路径簇的结构和属性将RTL代码进行整合;
[0032] S4-5:输出代码文件:生成代码文件,将所有RTL代码整合到代码文件中,检测并移除重复的端口定义声明,输出代码文件。
[0033] 本方案的有益效果为:
[0034] 本发明提供的针对FPGA固件的精准逆向工程技术测试出了精准的比特流映射信息,并且通过设计的逆向工程工具,将FPGA固件高精度还原成为功能等价的网表及代码,提高了精确度和实用性,从而有助于FPGA内部硬件木马检测,提高了FPGA固件设计的安全性与可靠性。附图说明
[0035] 图1为针对FPGA固件的精准逆向工程方法流程图
[0036] 图2为映射生成器的工作方法流程图;
[0037] 图3为比特流逆向工具的工作方法流程图;
[0038] 图4为网表逆向工具的工作方法流程图;
[0039] 图5为测试结果图。

具体实施方式

[0040] 下面对本发明的具体实施方式进行描述,以便于本技术领域的技术人员理解本发明,但应该清楚,本发明不限于具体实施方式的范围,对本技术领域的普通技术人员来讲,只要各种变化在所附的权利要求限定和确定的本发明的精神和范围内,这些变化是显而易见的,一切利用本发明构思的发明创造均在保护之列。
[0041] 一种针对FPGA固件的精准逆向工程方法,如图1所示,包括如下步骤:
[0042] S1:截获比特流数据,并将其保存为比特流文件,由于Xilinx的FPGA都是SRAM型的FPGA,由于其易失性所以往往将比特流存储在外部的非易失性存储器例如FLASH中;
[0043] S2:通过Xilinx官方的电子设计自动化EDA工具ISE提供的命令行程序xdl.exe中的-report指定FPGA型号命令获取FPGA结构信息,具体为后缀名为xdlrc的文本文件,其中包含了对于FPGA中所有的资源的数目、位置以及可能的工作模式的信息,根据FPGA结构信息,使用映射生成器生成比特流映射信息,并将FPGA结构信息和比特流映射信息输入数据库;
[0044] 映射生成器的工作方法,如图2所示,包括如下步骤:
[0045] S2-1:进行初始化:初始化映射生成器,并生成空白的映射网表,并在整个测试过程中都关闭了设计规则校验DRC;
[0046] S2-2:进行Tile测试:从FPGA的每种类型的Tile中各选一个,生成测试Tile组,将测试Tile组中每个Tile所有的待测试元件添加到映射网表进行测试,得到待测试元件的映射信息;
[0047] SS2-3:计算偏移量:选择测试Tile组中一个Tile作为基准Tile,选择一个与基准Tile同类型的Tile作为待测Tile,将基准Tile与待测Tile配置成相同工作模式并分别加入空白网表中,生成比特流并计算基准Tile与待测Tile对应的控制比特集合地址之间的偏移量;
[0048] S2-4:遍历偏移量信息:将测试Tile组作为基准Tile组,将其它所有Tile作为测试Tile,遍历计算每个基准Tile与同类型的所有测试Tile之间的偏移量,得到偏移量信息;
[0049] S2-5:存储比特流映射信息:将步骤S2-2得到的映射信息与偏移量信息作为比特流映射信息存储到数据库,并输出比特流;
[0050] S3:根据比特流映射信息,使用比特流逆向工具将比特流文件进行逆向,并还原成网表文件;
[0051] 比特流逆向工具的工作方法,如图3所示,包括如下步骤:
[0052] S3-1:进行初始化:初始化比特流逆向工具,使用比特流逆向工具截获并读取比特流,加载数据库中的比特流映射信息;
[0053] S3-2:还原连接信息:根据比特流映射信息,找到所有打开的可编程互联点PIP,根据PIP恢复出所有信号网络,信号网络是由一系列的连接所组成用来将源元件输出端口输出的信号传送的其他元件的输入端口,实现连接的逆向并得到连接信息;
[0054] S3-3:打信息补丁:由于分离元件时造成信息丢失,分析所有Tile中相邻元件之间的相关性,并为缺少的信息打上补丁;
[0055] S3-4:逆向元件信息:根据比特流文件、比特流映射信息和补丁信息来确定每个元件的工作状态,得到元件功能信息,实现元件的逆向;
[0056] S3-5:输出网表文件:输出生成网表文件,将步骤S3-2得到的连接信息和元件功能信息整合到网表文件,输出网表文件;
[0057] S4:根据FPGA结构信息,使用网表逆向工具从网表文件中恢复出功能等价的RTL代码,并输出代码文件;
[0058] 网表逆向工具的工作方法,如图4所示,包括如下步骤:
[0059] S4-1:进行初始化:初始化网表逆向工具,使用网表逆向工具读取网表文件,并将连接信息的结构和元件功能信息的结构转换成预设数据结构;
[0060] S4-2:进行端口分类:根据步骤S4-1处理后的连接信息和元件功能信息,将PAD元件进行I/O端口分类;首先将网表中的所有PAD元件根据其实现功能分类为两种模式:输入与输出。如果一个PAD元件是一个信号网络的源元件那么其就被定义为输入端口,否则其就是一个输出端口;
[0061] S4-3:提取路径:根据I/O端口的类型,从网表文件中提取信号路径簇;一个信号路径簇包含了多条向信号路径,而这些信号路径则是从不同的输入端口开始,结束于同一个输出端口;
[0062] S4-4:生成代码:使用与元件的功能相同的RTL代码替换信号路径簇中的元件,并结合FPGA结构信息、信号路径簇的结构和属性将RTL代码进行整合;
[0063] S4-5:输出代码文件:生成代码文件,将所有RTL代码整合到代码文件中,检测并移除重复的端口定义声明,输出代码文件。
[0064] 本发明实施例中,对工具链进行测试。测试的基准代码是从两个标准测试集ISCAS85和ISCAS89中选取的,并且还选择了一个实际应用8051软核。Xilinx系列的Spartan-6xc6slx9作为我们的目标芯片,而ISE则是被用来编译这些基准代码生成比特流。我们的工具链运行环境为一台具有主频为3.4GHz的Intel I-3双核处理器,3.0GB内存和Windows-7 32位操作系统的PC。
[0065] 如图5所示,LE是所使用逻辑元件的数目,PS是所使用PIP连接的数目,得到比特流逆向工具对于比特流文件逆向结果很好,逆向出的网表与源网表完全一致,并且时间消耗也在可以接受的范围之内,验证了本针对FPGA固件的精准逆向工程方法的有效性及准确性。
[0066] 本发明提供的针对FPGA固件的精准逆向工程技术测试出了精准的比特流映射信息,并且通过设计的逆向工程工具,将FPGA固件高精度还原成为功能等价的网表及代码,提高了精确度和实用性,从而有助于FPGA内部硬件木马检测,提高了FPGA固件设计的安全性与可靠性。
高效检索全球专利

专利汇是专利免费检索,专利查询,专利分析-国家发明专利查询检索分析平台,是提供专利分析,专利查询,专利检索等数据服务功能的知识产权数据服务商。

我们的产品包含105个国家的1.26亿组数据,免费查、免费专利分析。

申请试用

分析报告

专利汇分析报告产品可以对行业情报数据进行梳理分析,涉及维度包括行业专利基本状况分析、地域分析、技术分析、发明人分析、申请人分析、专利权人分析、失效分析、核心专利分析、法律分析、研发重点分析、企业专利处境分析、技术处境分析、专利寿命分析、企业定位分析、引证分析等超过60个分析角度,系统通过AI智能系统对图表进行解读,只需1分钟,一键生成行业专利分析报告。

申请试用

QQ群二维码
意见反馈