CN106407810B - 一种基于递归下降算法的rtl级硬件木马检测方法 - Google Patents
一种基于递归下降算法的rtl级硬件木马检测方法 Download PDFInfo
- Publication number
- CN106407810B CN106407810B CN201610854016.8A CN201610854016A CN106407810B CN 106407810 B CN106407810 B CN 106407810B CN 201610854016 A CN201610854016 A CN 201610854016A CN 106407810 B CN106407810 B CN 106407810B
- Authority
- CN
- China
- Prior art keywords
- word
- module
- statement
- rtl
- reading
- 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.)
- Active
Links
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/50—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
- G06F21/55—Detecting local intrusion or implementing counter-measures
- G06F21/56—Computer malware detection or handling, e.g. anti-virus arrangements
- G06F21/561—Virus type analysis
-
- 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/50—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
- G06F21/55—Detecting local intrusion or implementing counter-measures
- G06F21/56—Computer malware detection or handling, e.g. anti-virus arrangements
- G06F21/562—Static detection
- G06F21/563—Static detection by source code analysis
Landscapes
- Engineering & Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Computer Hardware Design (AREA)
- General Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Health & Medical Sciences (AREA)
- Virology (AREA)
- General Health & Medical Sciences (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
本发明涉及一种基于递归下降算法的RTL级硬件木马检测方法,该检测方法是根据木马模型设计RTL代码规则,指定词语类型,包括模块声明词、模块结束声明词、信号声明词、逻辑功能块声明词、中间词和终结词,对RTL文件采用递归下降算法进行分析,找到符合规则的木马模块。本发明的检测方法是针对指定类型的RTL代码级硬件木马,相对于传统的在芯片上检测硬件木马的方法,大大缩短了试验时间,能够快速有效的检测出RTL代码级硬件木马,并准确定位木马所在位置,提高了工作效率。
Description
技术领域
本发明涉及RTL级代码安全性分析技术领域,尤其是一种基于递归下降算法的RTL级硬件木马检测方法。
背景技术
近年来发生的“斯诺登棱镜门”和“伊朗震网”等事件表明集成电路内的硬件木马可以作为一种武器来进行信息战、网络战,甚至物理摧毁军事装备与关键设施,严重威胁着国家安全。随着集成电路设计的日益复杂,制造成本日趋高昂,集成电路产业正朝着全球化合作的趋势发展,在未来相当长的一段时间内,集成电路仍将面对来源众多的且不可控的第三方IP,国外的EDA软件,以及不可控的晶圆制造的威胁。在这些环节中,集成电路很可能被人为恶意的修改形成后门漏洞。因此,需采取有效措施来对集成电路内的硬件木马进行有效识别,保证集成电路的安全可信。
国内外对硬件木马检测的研究都是针对纯硬件的木马检测方法,目前主要有破坏性检测,系统运行检测,逻辑测试和旁路分析四种。其中研究最多的就是基于旁路分析的硬件木马检测方法。旁路分析是利用芯片工作时的旁路信息(如电磁辐射,电流或者电路延时等信息)来对木马进行检测。其原理是因为电路中植入的硬件木马会对芯片的一些旁路信号,如电流,频率或路径延时产生影响,因此通过观察芯片的旁路信号并与原始芯片的旁路信息作比较,进而检测出芯片中是否有硬件木马的存在。对电路进行基于旁路分析的硬件木马检测的最大优点是可以使硬件木马在不被触发的情形下被检测出来,但是其也有显著的缺点,即当待测电路的规模很大,电路内部被植入的硬件木马的规模很小,一些旁路信息,比如电流和路径延时,其变化幅度极小,考虑到测量过程中引入的噪声,以及芯片制造过程中由于工艺漂移带来的噪声,这种极小的旁路信号变化将无法被实际测量出来或者即使被测量出来也难以确定是由于硬件木马引起的,还是由于测量噪声、工艺漂移噪声引起的。
芯片在进行RTL设计时,由于设计疏忽或者不善,有可能形成能够被人恶意利用的漏洞,例如可以被利用的直接访问电路内部机密信息的测试端口,电路内部从安全区域到非安全区域的信号直接传输等。但针对RTL级或者门级的代码安全性研究基本处于空白,因此针对上述这一类设计缺陷,开展安全路径验证技术,检测RTL代码中是否存在可被外部非法访问,以及不符合安全规则定义的路径,保障RTL代码中不含有这种隐藏的可以泄露电路内部机密信息的路径,具有一定的可行性和现实意义。为了保障芯片在主要的产业链环节上都能防御后门漏洞,降低芯片受到的安全性威胁,有必要开发芯片代码级安全性分析与检测方法。
发明内容
本发明要解决的技术问题是克服现有的缺陷,提供一种基于递归下降算法的RTL级硬件木马检测方法,该方法是针对指定类型的RTL代码级硬件木马,相对于传统的在芯片上检测硬件木马的方法,大大缩短了试验时间,能够快速有效的检测出RTL代码级硬件木马,并准确定位木马所在位置,提高了工作效率。
为了解决上述技术问题,本发明提供了如下的技术方案:
本发明一种基于递归下降算法的RTL级硬件木马检测方法,该检测方法是根据木马模型设计RTL代码规则,指定词语类型,包括模块声明词、模块结束声明词、信号声明词、逻辑功能块声明词、中间词和终结词,对RTL文件采用递归下降算法进行分析,找到符合规则的木马模块。
进一步地,该检测方法的具体步骤如下:
(1)从RTL文件第一行开始按行读取内容,对读取的内容取词进行分析,分析完成后,返回行位置,再读取下一行语句,对读取的内容取词进行分析,直到读完RTL文件;其中取词进行分析是指对词语类型进行判断,当词为模块声明词时,进入模块分析;
(2)模块分析时,读一行语句,对读取的内容取词进行分析,分析完后,返回行位置,再读取下一行语句,对读取的内容取词进行分析,重复操作直到词为模块结束声明词,结束当前模块分析循环;其中取词进行分析是指对词语根据词类型进行不同处理,若词为信号声明词,则进入构建信号集合方法,若词为逻辑功能块声明词,则进入逻辑功能分析,若词为模块结束声明词,则结束当前模块分析循环;
(3)逻辑功能分析时,读一行语句,对读取的内容取词进行分析,当词为中间词时,继续往下按行读语句、取词,直到获取的词为终结词;获取的词为终结词时,进入终结词分析模块,若满足是木马条件,终结词所在RTL代码模块是木马模块,否则终结词所在RTL代码模块不是木马模块。
进一步地,步骤(1)、(2)、(3)中读取的一行内容不包含注释语句,每读取一行语句,行位置标记往后一行,一次分析RTL文件每行必须且只读一次。
进一步地,步骤(1)、(2)、(3)中对读取的内容取词是指对读取的内容,获取一个词语或符号;第一次对语句取词时,获得第一个词,之后每次对该语句取词,获得上次取词的下一个词。
进一步地,步骤(2)中构建信号集合方法是将信号声明词声明的信号添加到一个集合中,组成所在模块的信号集合。
进一步地,步骤(3)中的终结词分析模块是指根据木马规则对语句进行分析,判断是否符合木马规则。
本发明采用以上技术方案,与现有技术相比,具有以下技术效果:
本发明通过制定代码规则,寻找指定类型的硬件木马,相对于传统的在芯片上检测硬件木马的方法,大大缩短了试验时间,能够快速有效的检测出RTL代码级硬件木马,并准确定位木马所在位置,提高了工作效率。
附图说明
图1为本发明检测方法的流程图。
具体实施方式
本发明所列举的实施例,只是用于帮助理解本发明,不应理解为对本发明保护范围的限定,对于本技术领域的普通技术人员来说,在不脱离本发明思想的前提下,还可以对本发明进行改进和修饰,这些改进和修饰也落入本发明权利要求保护的范围内。
下面结合附图对本发明作进一步说明。
本发明提供了一种基于递归下降算法的RTL级硬件木马检测方法,根据木马模型设计RTL代码规则,指定词语类型,包括模块声明词、模块结束声明词、信号声明词、逻辑功能块声明词、中间词和终结词,对RTL文件进行分析,找到符合规则的木马模块。
本发明检测方法的流程如图1所示,包括如下步骤:
步骤1:从RTL文件第一行开始按行读取内容,所得到的内容为该行去掉注释语句的内容,每读取一行语句,行位置标记到下一行。
对读取的内容取词进行分析,即对词语类型进行判断,当词为模块声明词时,进入模块分析,分析完成后,返回行位置;为其他词类型时不进行处理。继续读取下一行语句,对读取的内容取词进行分析,直到读完该RTL文件;一次分析过程中RTL文件每行必须且只读一次。
步骤2:模块分析时,读一行语句,对读取的内容取词进行分析,分析完后,返回行位置,再读取下一行语句,对读取的内容取词进行分析,重复以上操作直到词为模块结束声明词,结束当前模块分析循环。
取词进行分析是指根据词类型进行不同处理,若词为信号声明词,则进入构建信号集合方法,即将信号声明词声明的信号添加到一个集合中,组成所在模块的信号集合;若为逻辑功能块声明词,进入逻辑功能分析,若词为模块结束声明词,结束当前模块分析循环。
步骤3:逻辑功能分析时,读一行语句并对读取的内容取词进行分析,当词为中间词时,继续往下按行读语句、取词,直到获取的词为终结词。
获取的词为终结词时,进入终结词分析模块,若满足是木马模块条件,该终结词所在RTL代码模块是木马模块;否则该终结词所在RTL代码模块不是木马模块。
其中终结词分析模块是指根据木马规则对语句进行分析,判断是否符合木马规则。
上述步骤1、2、3中对读取的内容取词,是指对读取的内容,获取一个词语或符号;第一次对语句取词时,获得第一个词,之后每次对该语句取词,获得上次取词的下一个词。
本发明的实施例选择一份可处理的RTL文件来进行硬件木马检测,该RTL文件的内容如下:
对上述RTL文件的检测方法为:首先确定要查找的硬件木马类型,如要查找累加器模块实现的时间炸弹时,要查找的模块为累加器,那么需要了解累加器代码规则;然后定义各类别词语集合,定义模块声明词‘module’,模块结束声明词‘endmodule’,信号声明词为‘input’、‘output’和‘reg’,进入模块的逻辑功能块声明词‘always’和‘assign’,‘if’、‘else’和‘begin’为中间词,模块中所有定义的信号为终结词。
从头开始对上述文件进行分析,第一行内容为注释,读取内容为空,读取下一行内容也为空,往下读取代码直到第16行,读取该行代码得到的内容非空,得到内容为:
module top(clk,rst,din,dout1,dout2,dout3);
对这行语句取词,第一次取词‘module’,第二次取词‘top’,第三次取词‘(’,获得‘(’。
取词得到‘module’为模块声明词,定义了‘top’模块,进入模块分析。
模块分析时,读一行语句,得到内容为:
input clk;
对这行语句取词,得到‘input’为信号声明词,定义了信号‘clk’,将信号‘clk’添加到一个模块‘top’的信号集合。往下按行读取RTL代码,第19到28的非空行都是添加信号到模块的信号集合。
第31行语句取词,得到‘always’为逻辑功能块声明词,进入逻辑功能分析。读一行语句取词为‘if’,为中间词,往下读语句取词,得到‘count1’为模块中定义的信号,符合是终结词的条件,对这行语句进行分析,赋值信号不包含终结词信号,不符合木马条件。继续往下读语句,取词‘else’为中间词,读下一行语句,对读取内容取词,得到‘count1’为模块中定义的信号,符合是终结词的条件,对这行语句进行分析,赋值信号包含终结词信号和加运算,符合木马条件,则第31到35行描述的逻辑功能块可能有木马电路。到此行时,该逻辑功能模块读取结束,返回模块分析。当分析到第56行时,取词为‘endmodule’,是模块结束声明词,结束当前模块分析循环,进入步骤1中文件分析,直到RTL文件结束。
Claims (5)
1.一种基于递归下降算法的RTL级硬件木马检测方法,其特征在于,所述检测方法是根据木马模型设计RTL代码规则,指定词语类型,包括模块声明词、模块结束声明词、信号声明词、逻辑功能块声明词、中间词和终结词,对RTL文件采用递归下降算法进行分析,找到符合规则的木马模块;
所述检测方法的具体步骤如下:
(1)从RTL文件第一行开始按行读取内容,对读取的内容取词进行分析,分析完成后,返回行位置,再读取下一行语句,对读取的内容取词进行分析,直到读完RTL文件;其中取词进行分析是指对词语类型进行判断,当词为模块声明词时,进入模块分析;
(2)模块分析时,读一行语句,对读取的内容取词进行分析,分析完后,返回行位置,再读取下一行语句,对读取的内容取词进行分析,重复操作直到词为模块结束声明词,结束当前模块分析循环;其中取词进行分析是指对词语根据词类型进行不同处理,若词为信号声明词,则进入构建信号集合方法,若词为逻辑功能块声明词,则进入逻辑功能分析,若词为模块结束声明词,则结束当前模块分析循环;
(3)逻辑功能分析时,读一行语句,对读取的内容取词进行分析,当词为中间词时,继续往下按行读语句、取词,直到获取的词为终结词;获取的词为终结词时,进入终结词分析模块,若满足是木马条件,终结词所在RTL代码模块是木马模块,否则终结词所在RTL代码模块不是木马模块。
2.根据权利要求1所述的基于递归下降算法的RTL级硬件木马检测方法,其特征在于,所述步骤(1)、(2)、(3)中读取的一行内容不包含注释语句,每读取一行语句,行位置标记往后一行,一次分析RTL文件每行必须且只读一次。
3.根据权利要求1所述的基于递归下降算法的RTL级硬件木马检测方法,其特征在于,所述步骤(1)、(2)、(3)中对读取的内容取词是指对读取的内容,获取一个词语或符号;第一次对语句取词时,获得第一个词,之后每次对该语句取词,获得上次取词的下一个词。
4.根据权利要求1所述的基于递归下降算法的RTL级硬件木马检测方法,其特征在于,所述步骤(2)中构建信号集合方法是将信号声明词声明的信号添加到一个集合中,组成所在模块的信号集合。
5.根据权利要求1所述的基于递归下降算法的RTL级硬件木马检测方法,其特征在于,所述步骤(3)中的终结词分析模块是指根据木马规则对语句进行分析,判断是否符合木马规则。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610854016.8A CN106407810B (zh) | 2016-09-27 | 2016-09-27 | 一种基于递归下降算法的rtl级硬件木马检测方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610854016.8A CN106407810B (zh) | 2016-09-27 | 2016-09-27 | 一种基于递归下降算法的rtl级硬件木马检测方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN106407810A CN106407810A (zh) | 2017-02-15 |
CN106407810B true CN106407810B (zh) | 2019-05-10 |
Family
ID=57997038
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201610854016.8A Active CN106407810B (zh) | 2016-09-27 | 2016-09-27 | 一种基于递归下降算法的rtl级硬件木马检测方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN106407810B (zh) |
Families Citing this family (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107545194B (zh) * | 2017-08-01 | 2019-07-16 | 华南理工大学 | 片上网络中应对硬件木马的检测及防御方法 |
CN108363878A (zh) * | 2018-02-27 | 2018-08-03 | 中国电子科技集团公司第五十八研究所 | 电路安全性验证方法及计算机可读存储介质 |
CN109711159B (zh) * | 2018-11-26 | 2020-11-10 | 北京计算机技术及应用研究所 | 一种基于信息流的ip核rtl级代码安全漏洞检测方法 |
CN109492337B (zh) * | 2018-12-17 | 2023-02-03 | 北京计算机技术及应用研究所 | 一种可编程逻辑器件的信息流追踪模型生成方法 |
CN112257369B (zh) * | 2020-12-21 | 2021-03-16 | 上海国微思尔芯技术股份有限公司 | 一种逻辑设计分割方法及系统 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102034042A (zh) * | 2010-12-13 | 2011-04-27 | 四川大学 | 基于函数调用关系图特征的恶意代码检测新方法 |
CN104239616A (zh) * | 2014-09-02 | 2014-12-24 | 工业和信息化部电子第五研究所 | 集成电路的设计方法及硬件木马检测方法 |
EP3038006A1 (en) * | 2014-12-24 | 2016-06-29 | Kaspersky Lab, ZAO | System and method for distributed detection of malware |
CN105807204A (zh) * | 2016-03-08 | 2016-07-27 | 天津大学 | 基于频谱细化的硬件木马检测方法 |
-
2016
- 2016-09-27 CN CN201610854016.8A patent/CN106407810B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102034042A (zh) * | 2010-12-13 | 2011-04-27 | 四川大学 | 基于函数调用关系图特征的恶意代码检测新方法 |
CN104239616A (zh) * | 2014-09-02 | 2014-12-24 | 工业和信息化部电子第五研究所 | 集成电路的设计方法及硬件木马检测方法 |
EP3038006A1 (en) * | 2014-12-24 | 2016-06-29 | Kaspersky Lab, ZAO | System and method for distributed detection of malware |
CN105807204A (zh) * | 2016-03-08 | 2016-07-27 | 天津大学 | 基于频谱细化的硬件木马检测方法 |
Non-Patent Citations (1)
Title |
---|
基于系统函数序列的恶意代码同源分析;官强;《中国优秀硕士学位论文全文数据库信息科技辑》;20150115(第01期);I138-110 |
Also Published As
Publication number | Publication date |
---|---|
CN106407810A (zh) | 2017-02-15 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN106407810B (zh) | 一种基于递归下降算法的rtl级硬件木马检测方法 | |
CN104239616B (zh) | 集成电路的设计方法及硬件木马检测方法 | |
CN103544436B (zh) | 一种钓鱼网站鉴别系统和方法 | |
Han et al. | Hardware trojans detection at register transfer level based on machine learning | |
CN107659570A (zh) | 基于机器学习与动静态分析的Webshell检测方法及系统 | |
CN109190372A (zh) | 一种基于字节码的JavaScript恶意代码检测模型 | |
CN106934275B (zh) | 一种基于个人信息的口令强度评测方法 | |
CN105205396A (zh) | 一种基于深度学习的安卓恶意代码检测系统及其方法 | |
CN107656839A (zh) | 集成电路安全性评估与检测方法 | |
CN106126235A (zh) | 一种复用代码库构建方法、复用代码快速溯源方法及系统 | |
CN110414277B (zh) | 基于多特征参数的门级硬件木马检测方法 | |
CN101266550A (zh) | 一种恶意代码检测方法 | |
CN107480561B (zh) | 基于少态节点遍历的硬件木马检测方法 | |
CN103793652A (zh) | 一种基于静态分析的应用系统代码安全扫描装置 | |
CN103177215A (zh) | 基于软件控制流特征的计算机恶意软件检测新方法 | |
CN110427755A (zh) | 一种识别脚本文件的方法及装置 | |
CN106598866A (zh) | 一种基于smali中间语言的静态检测系统及方法 | |
CN109657461B (zh) | 基于梯度提升算法的rtl硬件木马检测方法 | |
CN110287735A (zh) | 基于芯片网表特征的木马感染电路识别方法 | |
CN104850804B (zh) | 基于电路特征分析的硬件木马检测方法 | |
CN107239694A (zh) | 一种基于用户评论的Android应用权限推理方法及装置 | |
CN103577323A (zh) | 基于动态关键指令序列胎记的软件抄袭检测方法 | |
CN107958154A (zh) | 一种恶意软件检测装置及方法 | |
CN105718795A (zh) | Linux下基于特征码的恶意代码取证方法及系统 | |
CN109815705A (zh) | 一种基于扫描链特征分析的硬件木马检测方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |