一种RTL硬件木马测试向量的生成方法技术

技术编号:16604130 阅读:67 留言:0更新日期:2017-11-22 14:15
本发明专利技术公开了一种RTL硬件木马测试向量的生成方法,主要包括生成控制流程图;并发符号执行;可满足性求解和生成测试向量。本发明专利技术采用静态分析Veri log代码的方法,采用多线程并发技术实现Veri log代码的并发符号执行,从而达到快速生成高路径覆盖率的测试向量的目的。

A test vector generation method for RTL hardware Trojan horse

The invention discloses a method for generating RTL hardware Trojan test vector, mainly including generating control flow chart, concurrent symbol execution, satisfiability solving and generating test vector. The invention adopts the method of static analysis of Veri log code, Veri log code concurrent symbolic realization using multi-threaded concurrent execution technology, so as to achieve rapid test vector generation high path coverage to.

【技术实现步骤摘要】
一种RTL硬件木马测试向量的生成方法
本专利技术涉及集成电路测试领域,具体涉及到一种RTL硬件木马测试向量的生成方法,可针对条件触发型硬件木马的特征快速生成具有高路径覆盖率、并包含可激活条件触发型硬件木马的测试向量。
技术介绍
在数字集成电路设计中,不同的设计环节对应着不同抽象层次的设计。抽象程度从高到低,分别是功能规范、算法级/微体系结构级设计、寄存器传输级设计(register-transferlevel,RTL)、门级(gatelevel)设计和物理级设计。硬件木马可以分布在不同的抽象层次上,主要有系统级、行为描述级、寄存器传输级、门级、晶体管级和物理级。NJacob等人在文献“HardwareTrojans_currentchallengesandapproaches”中分析了目前硬件木马可能插入的阶段,已经提出的硬件木马较多的集中在功能设计阶段(寄存器传输级)。目前的硬件木马检测技术中,只有很少的文献对功能设计阶段和物理设计阶段(门级)进行检测,绝大数的文献都集中在制造阶段的检测;功能设计阶段检测的技术使用的是形式化验证技术,物理设计阶段使用的功能分析,制造阶段使用的检测技术主要是侧信道分析和结构修改。侧信道分析是一种非破坏性的检测技术,主要分析电路中的时序、功率、电磁、热等信号,根据与黄金模板的比对发现木马。旁路分析能有效检测出较大规模的硬件木马,但容易受到工艺变量和各种噪声的影响,难以检测出小规模硬件木马。针对门级安全检测的门级信息流技术对原始门级网表生成包含信息流的门级信息流逻辑的门级网表,但是其新生成的门级网表复杂度与原始门级网表相比,高了近2^n倍,大大限制了其在实际中的应用。寄存器传输级的硬件木马检测,近年来有一些新的方法提出。倪林等在文献“基于特征匹配的IP软核硬件木马检测”中提出一种硬件木马检查方法,该方法通过分析RTL级代码书写规则,从硬件木马在RTL级IP软核中实现的角度出发,基于Trust-Hub构建硬件木马特征识别库,通过分析硬件木马典型的逻辑结构和行为特征,对硬件木马特征库和待测IP软核进行逻辑抽象,进而完成IP软核硬件木马识别。特征匹配的方法需根据大量的硬件木马样板,创建特征库,然后做匹配。这种源自软件安全测试的方法无法发现新的恶意代码。候波等在文献“基于测试向量的硬件木马检测方法及系统”中了一种方法,通过获取集成电路中各电路节点的翻转信息和覆盖信息,将翻转信息和覆盖信息分别满足预设低翻转条件和预设低覆盖条件的电路节点选取为候选木马节点,根据候选木马节点的信息从测试向量中选取最终测试向量。从这些文献可以分析出,主要的寄存器传输级安全检测方法集中在特征匹配、形式化验证、测试生成方面。形式化验证方法则在应对大规模复杂设计时仍然有很大的分析难度。测试生成方法仍然是一种非常重要的检测手段。由于采用穷举的方式对所有的输入值进行检测是不现实的,因此测试生成方法的关键问题在于测试向量空间不断增大的情况下,如何有效地生成测试向量值。因此寄存器传输级的安全检测,与测试生成方法密切相关。VVAcharya等人在文献“BranchGuidedFunctionalTestGenerationattheRTL”中采用了符号执行的方法对RTL级的硬件描述语言进行了分析。其基本思想是将verilog代码转换成C/C++,然后使用相对较为成熟的C/C++语言的符号执行方法进行分析,然后再将分析生成的测试向量重新用回到verilog代码中。这种方法没有直接对verilog代码进行分析,采用代码转换的方式,难以做到和原始verilog设计的完全一致。
技术实现思路
针对现有技术的不足,本专利技术旨在提供一种RTL硬件木马测试向量的生成方法,用以解决检测条件触发型硬件木马的测试生成问题。该方法采用静态分析Verilog代码的方法,采用多线程并发技术实现Verilog代码的并发符号执行,从而达到快速生成高路径覆盖率的测试向量的目的。为了实现上述目的,本专利技术采用如下技术方案:一种RTL硬件木马测试向量的生成方法,包括如下步骤:S1生成verilog代码的控制流图CFG;S2根据步骤S1生成的控制流图CFG,对待分析的模块文件使用并发符号执行技术,得到指定路径条件pc下输出变量的符号执行表达式,即<pc,exp>;S3对步骤S2中得到的路径条件pc进行可满足性求解,得到可满足的路径条件集合及其对应的输入变量取值,生成测试向量;S4依据步骤S3中得到的测试向量,由<pc,exp>的映射关系,求解出输出变量在可满足性求解的路径条件pc下对应的符号执行表达式exp的取值;得到<测试向量,输出向量>的映射关系。需要说明的是,步骤S1中,通过定义语句结点类型,生成语句结点,建立语句结点的前驱和后继关系,生成控制流图。进一步需要说明的是,步骤S1具体包括如下步骤:S1.1设计的语句结点类型有:ALWAYS,ALWAYS_END,IF,ELSE,IF_END,CASE,CASEX,CASEZ,CASE_ITEM,CASE_END,FOR,FOR_END,TASK,TASK_END,ASSIGN_BLOCK,ASSIGN_NONBLOCK,ASSIGN_CONTINUOUS,INSTANTIATION;另外,整个代码的开始增加一个ENTER结点,结束增加一个EXIT结点,不确定类型是NONE结点,其中always,if,case(casex,casez),for,task所对应的结点为控制结点,ENTER和EXIT是控制结点,阻塞赋值、非阻塞赋值和连续赋值为赋值结点;采用开源的antrl4以及TerenceParr撰写的verilog2001.g4,解析verilog寄存器传输级设计代码的语法,依次提取每条verilog语句进行分析;设计生成控制流图的语句结点;一条语句对应控制流图中的一个结点,语句结点的类型针对verilog可综合的语句设定;为了能够有效区分出不同模块文件中的变量,将所有分析的变量名改为如下形式:模块名_M_原变量名;S1.2根据语句结点类型建立语句结点之间的前驱和后继关系:语句结点之间的控制流关系体现在控制结点之间以及控制结点和赋值结点之间的连接,对于赋值结点之间的连接,不表示控制关系,只是表示出赋值结点代表的语句在代码中的位置关系,添加的ENTER结点是整个代码的开始结点,EXIT结点是整个代码的结束结点,Always语句段,例化语句和连续赋值语句之间是并行关系,Always语句段内的if、case、for语句之间存在着语法相关的控制区间和控制顺序的关系;根据控制区间和控制关系确定出各个语句结点之间的前驱和后继关系;S1.3依据每个语句结点之间的前驱和后继关系,采用广度优先遍历,生成verilog代码的控制流图CFG。需要说明的是,步骤S2具体如下:S2.1循环处理每一个例化语句,获取例化模块对应的子模块文件名,得到子模块文件的符号执行结果;S2.2根据例化语句端口变量映射关系,将子模块端口变量名替换成待分析的模块文件端口变量名,同时将pc和exp中包含的子模块端口变量名替换成待分析的模块文件端口变量名;S2.3待分析的模块文件进行符号执行操作,同时将路径条件pc本文档来自技高网
...
一种RTL硬件木马测试向量的生成方法

【技术保护点】
一种RTL硬件木马测试向量的生成方法,其特征在于,包括如下步骤:S1生成verilog代码的控制流图CFG;S2根据步骤S1生成的控制流图CFG,对待分析的模块文件使用并发符号执行技术,得到指定路径条件pc下输出变量的符号执行表达式,即<pc,exp>;S3对步骤S2中得到的路径条件pc进行可满足性求解,得到可满足的路径条件集合及其对应的输入变量取值,生成测试向量;S4依据步骤S3中得到的测试向量,由<pc,exp>的映射关系,求解出输出变量在可满足性求解的路径条件pc下对应的符号执行表达式exp的取值;得到<测试向量,输出向量>的映射关系。

【技术特征摘要】
1.一种RTL硬件木马测试向量的生成方法,其特征在于,包括如下步骤:S1生成verilog代码的控制流图CFG;S2根据步骤S1生成的控制流图CFG,对待分析的模块文件使用并发符号执行技术,得到指定路径条件pc下输出变量的符号执行表达式,即<pc,exp>;S3对步骤S2中得到的路径条件pc进行可满足性求解,得到可满足的路径条件集合及其对应的输入变量取值,生成测试向量;S4依据步骤S3中得到的测试向量,由<pc,exp>的映射关系,求解出输出变量在可满足性求解的路径条件pc下对应的符号执行表达式exp的取值;得到<测试向量,输出向量>的映射关系。2.根据权利要求1所述的RTL硬件木马测试向量的生成方法,其特征在于:步骤S1中,通过定义语句结点类型,生成语句结点,建立语句结点的前驱和后继关系,生成控制流图。3.根据权利要求2所述的RTL硬件木马测试向量的生成方法,其特征在于:步骤S1具体包括如下步骤:S1.1设计的语句结点类型有:ALWAYS,ALWAYS_END,IF,ELSE,IF_END,CASE,CASEX,CASEZ,CASE_ITEM,CASE_END,FOR,FOR_END,TASK,TASK_END,ASSIGN_BLOCK,ASSIGN_NONBLOCK,ASSIGN_CONTINUOUS,INSTANTIATION;另外,整个代码的开始增加一个ENTER结点,结束增加一个EXIT结点,不确定类型是NONE结点,其中always,if,case(casex,casez),for,task所对应的结点为控制结点,ENTER和EXIT是控制结点,阻塞赋值、非阻塞赋值和连续赋值为赋值结点;采用开源的antrl4以及TerenceParr撰写的verilog2001.g4,解析verilog寄存器传输级设计代码的语法,依次提取每条verilog语句进行分析;设计生成控制流图的语句结点;一条语句对应控制流图中的一个结点,语句结点的类型针对verilog可综合的语句设定;为了能够有效区分出不同模块文件中的变量,将所有分析的变量名改为如下形式:模块名_M_原变量名;S1.2根据语句结点类型建立语句结点之间的前驱和后继关系:语句结点之间的控制流关系体现在控制结点之间以及控制结点和赋值结点之间的连接,对于赋值结点之间的连接,不表示控制关系,只是表示出赋值结点代表的语句在代码中的位置关系,添加的ENTER结点是整个代码的开始结点,EXIT结点是整个代码的结束结点,Always语句段,例化语句和连续赋值语句之间是并行关系,Always语句段内的if、case、for语句之间存在着语法相关的控制区间和控制顺序的关系;根据控制区间和控制关系确定出各个语句结点之间的前驱和后继关系;S1.3依据每个语句结点之间的前驱和后继关系,采用广度优先遍历,生成verilog代码...

【专利技术属性】
技术研发人员:沈利香慕德俊时翔徐强邢业新何松袁晓宇
申请(专利权)人:西北工业大学
类型:发明
国别省市:陕西,61

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1