CN107807812A - 一种基于hdl代码的硬件脆弱性评估方法 - Google Patents
一种基于hdl代码的硬件脆弱性评估方法 Download PDFInfo
- Publication number
- CN107807812A CN107807812A CN201711103362.3A CN201711103362A CN107807812A CN 107807812 A CN107807812 A CN 107807812A CN 201711103362 A CN201711103362 A CN 201711103362A CN 107807812 A CN107807812 A CN 107807812A
- Authority
- CN
- China
- Prior art keywords
- fragility
- module
- program
- hdl
- hardware
- 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
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/30—Creation or generation of source code
- G06F8/34—Graphical or visual programming
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/36—Preventing errors by testing or debugging software
- G06F11/3604—Software analysis for verifying properties of programs
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/36—Preventing errors by testing or debugging software
- G06F11/362—Software debugging
- G06F11/3624—Software debugging by performing operations on the source code, e.g. via a compiler
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Computer Hardware Design (AREA)
- Quality & Reliability (AREA)
- Stored Programmes (AREA)
Abstract
本发明公开了一种基于HDL代码的硬件脆弱性评估方法,以HDL开发的程序作为语法语义解析的输入,通过建立各个HDL模块的连接拓扑关系,并在此基础上计算各条边的脆弱性权值,以评估各模块的脆弱性大小,并进一步对各模块进行脆弱性等级划分。本发明为HDL程序的硬件脆弱性检测提供了指导,便于后续程序开发中加强设计,以提高程序系统的稳定性和可靠性。
Description
技术领域
本发明属于硬件安全技术领域,具体涉及一种基于HDL代码的硬件脆弱性评估方法的设计。
背景技术
基于FPGA和ASIC的广泛应用,硬件描述语言(HDL,Hardware DescriptionLanguage)的程序开发越来越多,使用HDL程序的安全性和可靠性越来越难以保证。正如各种各样的软件安全漏洞一样,HDL的程序开发流程中也存在各种各样的安全漏洞和设计缺陷。HDL语言与软件语言在语义上有一定相似,因此可以借鉴和利用软件脆弱性的分析研究方法,这为HDL程序的硬件脆弱性提供了一个方向。
软件分析以分析过程“是否需要运行软件”为准则,将软件分析技术划分为静态分析技术与动态分析技术两大类。不过,动态检测方法无法准确定位问题的发生位置,检测问题的覆盖率和检测的效率也都不够理想。相比而言,静态检测方法只需要分析软件的源代码便可准确定位软件中存在的安全缺陷,具有成本低、自动化等特点,更适合应用于大规模、复杂的软件系统的检测工作。
从脆弱性分析方法来看,已有的软件脆弱性分析方式主要有4种,分别是:模糊测试(Fuzzing)、污点分析、模型检测、符号执行。
Fang等人提出了模糊测试的方法,它通过提供随机输入数据,监视分析异常结果来试图发现软件的脆弱性;Halford等人提出了污点注入的方法,将非信任源的数据标记为污点,对污点数据进行跟踪,以此达到发现软件脆弱性的目的;Tsitovich等人提出模型检测的方法,通过对待检验的系统建模方法来发现软件的脆弱性;King等人提出符号执行的方法,使用输入变量的符号值模拟执行程序进而分析软件的脆弱性。
这些方法都能在一定程度上挖掘软件程序的漏洞,然而,HDL程序依赖硬件电路实现,不同HDL程序的硬件电路则不同;高级语言程序依赖CPU计算实现,不同的高级语言程序只是指令的执行顺序不同,而底层硬件电路是相同的。因此,高级语言程序的脆弱性主要是指令执行顺序的脆弱性,HDL程序的脆弱性主要是底层硬件电路的脆弱性。
在HDL程序中,各模块之间都是通过各种输入输出接口连接的,这些模块之间的连接可称为链路。一个模块程序运行所需的数据信号和控制信号可能来自多个模块,并且这个模块处理完后的数据会通过相应的输出链路与其他模块相连接。一般地,重要性越高的模块,它就会有更多的链路与其他模块相连接;而对于两个互连的模块来说,连接它们的链路所包含的输入输出接口数目越多,潜在脆弱性也就越高,受到攻击后产生错误以及发生错误传递的概率也就越高。
发明内容
本发明的目的是提出一种基于HDL代码的硬件脆弱性评估方法,以便评估程序中各模块的硬件脆弱性,提高HDL程序的稳定性和可靠性。
本发明的技术方案为:一种基于HDL代码的硬件脆弱性评估方法,包括以下步骤:
S1、编写脚本程序,把一个HDL程序文件作为脚本程序的输入,识别HDL程序中的模块数量,并分析与每个模块关联的边的数目。
S2、提出HDL程序的硬件脆弱性分析策略,计算每条边的脆弱性权值,建立脆弱性权值拓扑图。
脆弱性权值的计算公式为:
其中Vi和Vj分别表示HDL程序中的第i个模块与第j个模块,i=0,1,...,n-1,j=0,1,...,n-1,n为HDL程序中的模块数量,TD(·)表示与模块关联的边的数目,vij表示模块Vi和Vj连接边的脆弱性权值。a为重要性系数,若模块的程序来源是程序员自己编写的程序,则a=0.8;若模块的程序来源是调用IP核编写的程序,则a=1。pij为模块Vi和Vj连接边的初始权值,即模块Vi和Vj连接边所表示链路的相关接口数量。w为脆弱性修正值,h为输入接口到各模块的跳数。
S3、构建HDL程序的硬件脆弱性评价体系,根据脆弱性权值拓扑图对各模块进行硬件脆弱性分级,其中HDL程序的硬件脆弱性评价体系具体为:
根据HDL程序的脆弱性权值拓扑图得到每条边的脆弱性,由于脆弱性越高的边所连接的两个模块脆弱性也越高,因此根据边的脆弱性对模块的脆弱性进行等级划分,分为脆弱性高、中、低三个级别,每个级别的相应比例分别为20%、30%和50%。
S4、编写图形界面,展示HDL程序中的模块连接关系以及各模块的硬件脆弱性级别。
本发明的有益效果是:本发明通过给定一个HDL程序,可评估出模块连接图中各条边的脆弱性大小,进而确定各模块的潜在脆弱性,为HDL程序的硬件脆弱性检测提供了指导,便于后续程序开发中加强设计,以提高程序系统的稳定性和可靠性。
附图说明
图1所示为本发明实施例提供的一种基于HDL代码的硬件脆弱性评估方法流程图。
图2所示为本发明实施例提供的HDL程序功能模块连接拓扑图。
图3所示为本发明实施例提供的HDL程序模块连接图。
图4所示为本发明实施例提供的带有脆弱性信息的HDL程序模块连接图。
图5所示为本发明实施例提供的脆弱性分级后的HDL程序模块连接图。
具体实施方式
现在将参考附图来详细描述本发明的示例性实施方式。应当理解,附图中示出和描述的实施方式仅仅是示例性的,意在阐释本发明的原理和精神,而并非限制本发明的范围。
本发明实施例提供了一种基于HDL代码的硬件脆弱性评估方法,从分析不同模块之间链路的脆弱性出发,来逐级评估程序的脆弱性。为了便于展开研究,本发明实施例借助“图”的概念,首先通过代码解析,建立起程序模块的抽象连接拓扑,然后基于模块连接拓扑及链路、模块的重要性程度,来评估程序各模块的语法脆弱性。
如图1所示,本发明实施例提供的一种基于HDL代码的硬件脆弱性评估方法包括以下步骤S1-S4:
S1、编写脚本程序,把一个HDL程序文件作为脚本程序的输入,识别HDL程序中的模块数量,并分析与每个模块关联的边的数目。
如图2所示,本发明实施例借助“图”的概念,建立HDL程序功能模块连接拓扑图,图2中第个i顶点,即代表第i个模块Vi,i=0,1,...,n-1,n为HDL程序中的模块数量。
S2、提出HDL程序的硬件脆弱性分析策略,计算每条边的脆弱性权值,建立脆弱性权值拓扑图。
本发明实施例中,根据代码脆弱性评估准则评估每一个模块Vi的脆弱性。在图中,每一条边附有初始权值,对于HDL程序中的第i个模块Vi与第j个模块Vj,其初始权值pij表示模块Vi和Vj连接边所表示链路的相关接口数量。pij越高的边,其重要性就越高,所以边的重要性与初始权值的关系可表示为:
sij=apij (1)
其中sij为模块Vi和Vj连接边的重要性,a为重要性系数。
本发明实施例中,将与模块Vi相关联的边的数目TD(Vi)作为节点的度,TD(Vi)和公式(1)分别表征了节点与边的重要性。
由于本发明的原则是首先确定出脆弱性最高的边,再根据边的脆弱性来确定节点的脆弱性,即脆弱性越高的边,其所依附的两个节点脆弱性越高,为了体现这一项思想,更精确地由边的脆弱性得到节点脆弱性,有必要在公式(1)中把节点的度这一因素考虑进去。
因此,公式(1)可修正为:
然而,在公式(2)中,等式左边仍然是边的重要性sij,而非边的脆弱性vij。这是因为公式(2)中等式右边的表达式仍然无法完整反映出边的脆弱性。事实上,关于HDL程序的脆弱性,还有两个极其重要的因素:一个是模块的程序来源,另一个是外部输入。
首先,模块的程序来源指的是程序员自己编写的程序还是调用IP,而外部输入指的是数据输入、控制输入、时钟输入等各种接口。对于程序来说,输入输出是脆弱性的根源,脆弱性利用者只有通过输入输出才能实现对程序的非法进入和控制。因此,对于程序员自己编写的程序,置信度高,令其重要性系数a=0.8;对应地,通过调用IP核编写的程序,容易存在硬件木马,容易被脆弱性利用者非法控制,应令其重要性系数a=1,以使其对应的脆弱性权值为1,如公式(3)所示:
其次,边的初始权值pij以及公式(2)中定义的边的重要性权值均只是根据模块之间的内部关系定义的,它描述了程序模块的内在脆弱性,但并未考虑到程序模块脆弱性触发的关键,即外部输入。一个孤立的程序系统即使具有脆弱性,也不会存在安全隐患;只有连接在网络空间中的程序才可能会受到攻击,而这都是通过外部各种输入输出接口实现的。因此,程序的外部输入输出接口具有额外的脆弱性。
对于直接依附于外部网络接口节点的边,应在公式(2)中增加一个脆弱性修正值w,那么公式(2)中边的重要性权值修正为:
此外,考虑到脆弱性通过外部输入接口向系统内部渗透,对于间接依附于外部网络接口节点的边,其重要性权值修正为:
其中h为输入接口到各模块的跳数。
综合公式(2)~(5),即可得到程序模块连接拓扑中最终的边的脆弱性权值,即:
根据公式(6)得到边的脆弱性权值,可得到程序模块脆弱性较高的脆弱性源,即脆弱性权值越高的边,其所依附的节点脆弱性就越高。把上述方法应用于图2所示的HDL程序功能模块连接拓扑图,最终可得HDL程序的脆弱性权值拓扑图。
S3、构建HDL程序的硬件脆弱性评价体系,根据脆弱性权值拓扑图对各模块进行硬件脆弱性分级,其中HDL程序的硬件脆弱性评价体系具体为:
根据HDL程序的脆弱性权值拓扑图得到每条边的脆弱性,由于脆弱性越高的边所连接的两个模块脆弱性也越高,因此根据边的脆弱性对模块的脆弱性进行等级划分,分为脆弱性高、中、低三个级别,每个级别的相应比例分别为20%、30%和50%。
S4、编写图形界面,展示HDL程序中的模块连接关系以及各模块的硬件脆弱性级别。
下面以一个具体实例对本发明提供的一种基于HDL代码的硬件脆弱性评估方法作进一步描述:
将一个用Verilog HDL实现的mesh4×4片上网络程序作为脚本程序的输入,分析出一共含有20个模块,各模块的名称与度如表1所示,各模块之间的连接拓扑如图3所示。
表1
经步骤S2的计算与分析,得到图3中各条边上的脆弱性大小如表2所示,把脆弱性信息添加在图3中后如图4所示。
表2
边的序号 | 对应的模块序号 | 两模块间的端口个数 | 边的脆弱性大小 |
1 | 0、9 | 20 | 18.4 |
2 | 1、9 | 20 | 20.0 |
3 | 1、16 | 36 | 32.0 |
4 | 1、18 | 8 | 9.6 |
5 | 2、9 | 20 | 18.4 |
6 | 5、6 | 68 | 57.6 |
7 | 5、7 | 1 | 4.0 |
8 | 5、13 | 32 | 28.8 |
9 | 6、7 | 1 | 3.2 |
10 | 9、18 | 20 | 20. |
11 | 13、18 | 20 | 18.4 |
12 | 15、16 | 4 | 4.8 |
通过步骤S3,按照高、中、低三个级别对各模块进行脆弱性进行等级划分,如图5所示。从图中可以看出,深灰的节点表示脆弱性为最高的模块,占模块总数量的20%。模块5和6分别为Data_Record和Data_Generator,分别为数据记录和数据产生模块,脆弱性最高,受到攻击的可能性最大。一旦受到攻击,将对整个HDL程序产生不可估计的严重影响。浅灰的节点表示脆弱性为中等的模块,占模块总数量的30%。模块1、13和16分别为Arbiter_1st、mux4_1和Single_Input_Port,分别对应仲裁、复用器、输入的功能,脆弱性级别也应引起重视。无填充的节点表示脆弱性最低的模块,占模块总数量的50%。模块0、2、7、9、15、18分别对应模块Allocation、arb_inst、Poisson、Credit_Manager、Route_Compute、fifo。经分析,这些模块的硬件脆弱性最小,表明收到攻击的概率最小。
本领域的普通技术人员将会意识到,这里所述的实施例是为了帮助读者理解本发明的原理,应被理解为本发明的保护范围并不局限于这样的特别陈述和实施例。本领域的普通技术人员可以根据本发明公开的这些技术启示做出各种不脱离本发明实质的其它各种具体变形和组合,这些变形和组合仍然在本发明的保护范围内。
Claims (5)
1.一种基于HDL代码的硬件脆弱性评估方法,其特征在于,包括以下步骤:
S1、编写脚本程序,把一个HDL程序文件作为脚本程序的输入,识别HDL程序中的模块数量,并分析与每个模块关联的边的数目;
S2、提出HDL程序的硬件脆弱性分析策略,计算每条边的脆弱性权值,建立脆弱性权值拓扑图;
S3、构建HDL程序的硬件脆弱性评价体系,根据脆弱性权值拓扑图对各模块进行硬件脆弱性分级;
S4、编写图形界面,展示HDL程序中的模块连接关系以及各模块的硬件脆弱性级别。
2.根据权利要求1所述的硬件脆弱性评估方法,其特征在于,所述步骤S2中边的脆弱性权值的计算公式为:
其中Vi和Vj分别表示HDL程序中的第i个模块与第j个模块,i=0,1,...,n-1,j=0,1,...,n-1,n为HDL程序中的模块数量,TD(·)表示与模块关联的边的数目,vij表示模块Vi和Vj连接边的脆弱性权值,a为重要性系数,pij为模块Vi和Vj连接边的初始权值,w为脆弱性修正值,h为输入接口到各模块的跳数。
3.根据权利要求2所述的硬件脆弱性评估方法,其特征在于,所述重要性系数a的确定方法为:
若模块的程序来源是程序员自己编写的程序,则a=0.8;若模块的程序来源是调用IP核编写的程序,则a=1。
4.根据权利要求2所述的硬件脆弱性评估方法,其特征在于,所述初始权值pij为模块Vi和Vj连接边所表示链路的相关接口数量。
5.根据权利要求1所述的硬件脆弱性评估方法,其特征在于,所述步骤S3中HDL程序的硬件脆弱性评价体系具体为:
根据HDL程序的脆弱性权值拓扑图得到每条边的脆弱性,由于脆弱性越高的边所连接的两个模块脆弱性也越高,因此根据边的脆弱性对模块的脆弱性进行等级划分,分为脆弱性高、中、低三个级别,每个级别的相应比例分别为20%、30%和50%。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201711103362.3A CN107807812A (zh) | 2017-11-10 | 2017-11-10 | 一种基于hdl代码的硬件脆弱性评估方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201711103362.3A CN107807812A (zh) | 2017-11-10 | 2017-11-10 | 一种基于hdl代码的硬件脆弱性评估方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN107807812A true CN107807812A (zh) | 2018-03-16 |
Family
ID=61583052
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201711103362.3A Pending CN107807812A (zh) | 2017-11-10 | 2017-11-10 | 一种基于hdl代码的硬件脆弱性评估方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN107807812A (zh) |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108846283A (zh) * | 2018-06-15 | 2018-11-20 | 北京航空航天大学 | 一种硬件木马实时检测系统及其设计方法 |
CN111428246A (zh) * | 2020-03-30 | 2020-07-17 | 电子科技大学 | 面向自主芯片硬件安全的逻辑漏洞深度挖掘方法 |
CN114676438A (zh) * | 2022-04-15 | 2022-06-28 | 电子科技大学 | 面向硬件系统多维脆弱性的快速探测方法 |
CN116450517A (zh) * | 2023-04-19 | 2023-07-18 | 中物院成都科学技术发展中心 | 基于侧信道信息的hdl脆弱性分析工具的评估方法 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103116540A (zh) * | 2013-01-23 | 2013-05-22 | 电子科技大学 | 基于全局超级块支配图的动态符号执行方法及其装置 |
CN105429133A (zh) * | 2015-12-07 | 2016-03-23 | 国网智能电网研究院 | 一种面向信息网络攻击的电网脆弱性节点评估方法 |
CN105991521A (zh) * | 2015-01-30 | 2016-10-05 | 阿里巴巴集团控股有限公司 | 网络风险评估方法和装置 |
CN106789190A (zh) * | 2016-12-05 | 2017-05-31 | 国网河南省电力公司信息通信公司 | 一种电力通信网脆弱性评估及路由优化方法 |
-
2017
- 2017-11-10 CN CN201711103362.3A patent/CN107807812A/zh active Pending
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103116540A (zh) * | 2013-01-23 | 2013-05-22 | 电子科技大学 | 基于全局超级块支配图的动态符号执行方法及其装置 |
CN105991521A (zh) * | 2015-01-30 | 2016-10-05 | 阿里巴巴集团控股有限公司 | 网络风险评估方法和装置 |
CN105429133A (zh) * | 2015-12-07 | 2016-03-23 | 国网智能电网研究院 | 一种面向信息网络攻击的电网脆弱性节点评估方法 |
CN106789190A (zh) * | 2016-12-05 | 2017-05-31 | 国网河南省电力公司信息通信公司 | 一种电力通信网脆弱性评估及路由优化方法 |
Non-Patent Citations (1)
Title |
---|
敖宇 等: ""基于电路连接拓扑的硬件系统脆弱性评估算法"", 《现代电子技术》 * |
Cited By (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108846283A (zh) * | 2018-06-15 | 2018-11-20 | 北京航空航天大学 | 一种硬件木马实时检测系统及其设计方法 |
CN108846283B (zh) * | 2018-06-15 | 2021-11-02 | 北京航空航天大学 | 一种硬件木马实时检测系统及其设计方法 |
CN111428246A (zh) * | 2020-03-30 | 2020-07-17 | 电子科技大学 | 面向自主芯片硬件安全的逻辑漏洞深度挖掘方法 |
CN111428246B (zh) * | 2020-03-30 | 2023-04-18 | 电子科技大学 | 面向自主芯片硬件安全的逻辑漏洞深度挖掘方法 |
CN114676438A (zh) * | 2022-04-15 | 2022-06-28 | 电子科技大学 | 面向硬件系统多维脆弱性的快速探测方法 |
CN116450517A (zh) * | 2023-04-19 | 2023-07-18 | 中物院成都科学技术发展中心 | 基于侧信道信息的hdl脆弱性分析工具的评估方法 |
CN116450517B (zh) * | 2023-04-19 | 2024-03-22 | 中物院成都科学技术发展中心 | 基于侧信道信息的hdl脆弱性分析工具的评估方法 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
Ding et al. | Detecting violations of differential privacy | |
US6742166B2 (en) | System and method for evaluating functional coverage linked to a verification test plan | |
CN107807812A (zh) | 一种基于hdl代码的硬件脆弱性评估方法 | |
Guo et al. | Scalable SoC trust verification using integrated theorem proving and model checking | |
Phan et al. | Quantifying information leaks using reliability analysis | |
US7188061B2 (en) | Simulation monitors based on temporal formulas | |
CN100416575C (zh) | 用于集成电路设计的验证系统和方法 | |
CN106027577A (zh) | 一种异常访问行为检测方法及装置 | |
CN106570399A (zh) | 一种跨App组件间隐私泄露的检测方法 | |
Yasaei et al. | Hardware trojan detection using graph neural networks | |
Liu et al. | Automatic generation of assertions from system level design using data mining | |
Fern et al. | Detecting hardware trojans in unspecified functionality using mutation testing | |
Guo et al. | Automatic code converter enhanced PCH framework for SoC trust verification | |
WO2000072145A9 (en) | Analyzing an extended finite state machine system model | |
CN107783877A (zh) | 基于变异分析的硬件木马有效激活的测试向量生成方法 | |
US10515169B1 (en) | System, method, and computer program product for computing formal coverage data compatible with dynamic verification | |
Krieg et al. | A process for the detection of design-level hardware Trojans using verification methods | |
Wolf et al. | Intervals in software execution cost analysis | |
Chockler | Causality and responsibility for formal verification and beyond | |
CN114297063A (zh) | 针对源代码的自动化形式化建模与验证的方法与系统 | |
Abarbanel-Vinov et al. | On the effective deployment of functional formal verification | |
Chen et al. | Detection method of Golden Chip-Free Hardware Trojan based on the combination of ResNeXt structure and attention mechanism | |
US10546083B1 (en) | System, method, and computer program product for improving coverage accuracy in formal verification | |
CN106096403A (zh) | 一种软件隐私泄露行为的分析方法及装置 | |
Fern et al. | Mining mutation testing simulation traces for security and testbench debugging |
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 | ||
RJ01 | Rejection of invention patent application after publication | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20180316 |