基于梯度提升算法的RTL硬件木马检测方法与流程

文档序号:17479405发布日期:2019-04-20 06:20阅读:619来源:国知局
基于梯度提升算法的RTL硬件木马检测方法与流程

本发明涉及集成电路的设计制造领域,具体为提出一种基于机器学习算法的rtl硬件木马检测方法。



背景技术:

rtl为registertransferlevel,指的是寄存器传输级电路。

当今集成电路技术深刻推动了社会的变革,结构复杂、功能强大的集成电路芯片在越来越多的领域扮演着非常关键的角色,这使得人们对其安全性的关注越来越高。但是随着芯片结构越来越复杂以及芯片设计制造过程的全球化发展,保证集成电路芯片在设计制造过程中的安全可靠成为了一项非常有挑战性的工作。

集成电路芯片在设计过程中首先需要根据设计功能用硬件描述语言进行功能描述,然后经过逻辑综合得到门级网表,最后经过布局和布线得到硬件设计版图。随着集成电路产业的发展,芯片产品的设计周期越来越短,在芯片设计过程中使用第三方ip核以提高效率成为大势所趋。但是这也给产品的设计带来潜在的风险:如果第三方的ip核存在恶意的木马电路,那么对于规模庞大的集成电路用户很难判断并识别其中的木马电路。

硬件木马电路一般具有较高的隐蔽性,未激活情况下不会影响电路正常功能,激活条件苛刻,触发概率低。这一特点使得传统设计过程中的仿真验证等手段很难检测到木马电路的存在。很多传统的硬件木马检测技术针对这一特点展开:比如uci技术[1]通过动态仿真寻找恒等信号作为可疑信号;fanci技术[2]通过评估信号对输出的影响,将对输出影响较小的信号作为可疑信号;veritrust技术[3]通过分析逻辑表达式将冗余项作为可疑信号。新兴的技术手段基于门级网表采用机器学习的方式,基于人工处理标注的数据集,通过训练获得模型,检测电路中的可疑信号;另外,也有在寄存器传输级基于子图匹配的方式与木马样本库进行比对,实现硬件木马检测的方法[6]

然而上述检测方法存在一些问题。对于传统的检测方式:第一是动态仿真需要的时间过长,特别是随着电路规模增加,测试信号增多时,检测时间也会明显增加;第二是此类方法采用固定不变的检测方式,攻击者可以采用有针对性的对抗手段,比如detrust技术[7]可以让上述传统检测手段失效。对于基于门级网表的机器学习检测技术:一方面现有方法的检测准确率有限,存在较高的误报率;另一方面基于门级网表的检测手段不够及时,即使发现木马在门级剔除木马电路也比较困难。在rtl的检测方法中,基于木马样本库进行控制流图子图匹配的方式虽然具备一定的检测效果,但是该方法中根据木马类型对匹配指标进行了加权处理,在实际应用中如何确定加权系数存在较大困难。

参考文献:

[1].m.hicks,m.finnicum,s.t.king,m.m.k.martinandj.m.smith.overcominganuntrustedcomputingbase:detectingandremovingmalicioushardwareautomatically.inieeesymposiumonsecurityandprivacy(sp),2010.

[2].waksman,a.,m.suozzo,ands.sethumadhavan.fanci:identificationofstealthymaliciouslogicusingbooleanfunctionalanalysis.inproceedingsofthe2013acmsigsacconferenceoncomputer&communicationssecurity.2013.

[3].j.zhang,f.yuan,l.wei,y.liuandq.xu.veritrust:verificationforhardwaretrust.ieeetransactionsoncomputer-aideddesignofintegratedcircuitsandsystems,2015.34(7):1148-1161.

[4].k.hasegawa,m.oya,m.yanagisawaandn.togawa.hardwaretrojansclassificationforgate-levelnetlistsbasedonmachinelearning.inieee22ndinternationalsymposiumonon-linetestingandrobustsystemdesign(iolts),2016.

[5].hasegawa,k.,m.yanagisawa,andn.togawa.hardwaretrojansclassificationforgate-levelnetlistsusingmulti-layerneuralnetworks.inieee23rdinternationalsymposiumonon-linetestingandrobustsystemdesign(iolts),2017.

[6].piccolboni,l.,a.menon,andg.pravadelli,efficientcontrol-flowsubgraphmatchingfordetectinghardwaretrojansinrtlmodels.acmtransactionsonembeddedcomputingsystems(tecs),2017.16(5s):137:1-137:19.

[7].zhang,j.,f.yuan,andq.xu.detrust:defeatinghardwaretrustverificationwithstealthyimplicitly-triggeredhardwaretrojans.inproceedingsofthe2014acmsigsacconferenceoncomputerandcommunicationssecurity,2014.



技术实现要素:

本发明要解决的技术问题是实现高效准确的硬件木马检测,及时发现硬件寄存器传输级(rtl)设计中存在的恶意木马电路,提升硬件设计的可靠性。

为解决上述技术问题,本发明提出一种基于梯度提升算法的rtl硬件木马检测方法,包括以下步骤:

s1、利用木马样本库lib中硬件木马电路设计训练木马检测模型m;

1.1、依次提取每个硬件木马电路设计中各信号节点的向量化特征;

1.2、对每个信号节点的向量化特征进行标注,形成训练数据;

1.3、将训练数据分成训练集和测试集,并利用训练集进行木马检测模型m的训练,利用测试集检验木马检测模型m的训练效果,最终获得木马检测模型m;

s2、利用步骤1.3构建的硬件木马检测模型m对待测电路duv进行检测:

提取待测电路duv中各个信号节点的向量化特征作为木马检测模型m的输入,木马检测模型m输出检测结果;

作为本发明基于梯度提升算法的rtl硬件木马检测方法的改进:

所述步骤1.1依次提取每个硬件木马电路设计中各信号节点的向量化特征的方法为:

1)、提取硬件木马电路设计/待测电路duv抽象语法树;

2)、基于步骤1)所得的抽象语法树对硬件木马电路设计/待测电路duv进行电路特征的构造和提取,构成每个信号节点的向量化特征;

作为本发明基于梯度提升算法的rtl硬件木马检测方法的进一步改进:

所述步骤1)中提取硬件木马电路设计/待测电路duv抽象语法树的方法为:

以硬件木马电路设计/待测电路duv本身作为该抽象语法树的根节点;

将硬件木马电路设计/待测电路duv中的各个电路模块解析为一级子节点,电路模块与一级子节点一一对应;

将电路模块的内部电路解析为对应一级子节点的次级子节点,次级子节点至少包括信号节点和操作节点;

所述信号节点为电路设计rtl实现中数据的解析结果,操作节点是电路设计中语句的解析结果;

所述信号节点可以分为输入输出信号节点(ionode)、寄存器信号节点(regnode)和连接线信号节点(wirenode)三种类型;

所述操作节点对应于rtl源码中的信号行为描述,其后继子节点为其他的操作节点、信号节点或者常数(constantvalue);

作为本发明基于梯度提升算法的rtl硬件木马检测方法的进一步改进:

所述步骤2)中基于所得的抽象语法树对硬件木马电路设计/待测电路duv进行电路特征的构造和提取的方法为:

所述电路特征由粗粒度特征和细粒度特征构造获得;

所述粗粒度特征从电路模块层面构造,细粒度特征从硬件木马电路设计/待测电路duv的信号层面构造;

每个信号节点的向量化特征由其细粒度特征和该信号节点所对应电路模块的粗粒度特征结合构成:

作为本发明基于梯度提升算法的rtl硬件木马检测方法的进一步改进:

所述粗粒度特征包括操作类型数、时序操作比例、分支操作比例、电路实例比例、模块非i/o信号比例和模块寄存器信号比例6个特征量;

所述细粒度特征包括常量信号、时序相关信号、分支相关信号、时序触发信号和条件信号5个特征量;

作为本发明基于梯度提升算法的rtl硬件木马检测方法的进一步改进:

所述电路模块包括木马电路模块和正常电路模块;

所述步骤1.2中对每个信号节点的向量化特征进行标注,形成训练数据的方法为:

用flag标注步骤1.1所获取的每个信号节点的向量化特征,

当判断该信号节点为木马电路模块的节点,flag记为true,

当判断该信号节点为正常电路模块的节点,flag记为false;

所述训练数据为完成标注的向量化特征;

作为本发明基于梯度提升算法的rtl硬件木马检测方法的进一步改进:

所述步骤1.3中将训练数据分成训练集和测试集的方法为:

从所得训练数据中随机抽取60%~80%作为训练集,剩余20%~40%作为测试集;

所述木马检测模型m基于梯度提升算法实现的xgboost框架训练获得,梯度提升采用基分类器ⅰ,通过在损失函数的梯度下降方向加入基分类器ⅱ来提升分类效果,通过超参数配置选择损失函数和参数范围;

作为本发明基于梯度提升算法的rtl硬件木马检测方法的进一步改进:

所述基分类器ⅰ和基分类器ⅱ均为决策树模型;

所述超参数包括xgboost框架中的objective参数、eval_metric参数、max_depth参数、min_child_weight参数、gamma参数和num_boost_round参数;

配置方法如下:

将objective参数配置为“binary:logistic”、配置木马检测模型m的损失函数为logistic函数、并将eval_metric参数配置为“auc”;

配置max_depth参数(默认值为6)控制基分类器ⅱ的最大深度、配置min_child_weight参数(默认值为1)控制决策树叶子节点的最小权重,配置gamma参数控制该决策树叶子节点产生的条件(默认值为0);

配置num_boost_round参数控制木马检测模型m更新迭代的次数;

注:训练过程中通过调节xgboost框架中的num_boost_round参数控制木马检测模型m更新迭代的次数,通过观察每一轮的auc得分变化趋势确定:num_boost_round参数过小,木马检测模型m欠拟合,参数过大木马检测模型m容易过拟合,一般选择auc得分峰值对应的num_boost_round值用于最终的木马检测模型m;

作为本发明基于梯度提升算法的rtl硬件木马检测方法的进一步改进:

所述max_depth,min_child_weight和gamma参数根据木马检测模型m的检测效果采用控制变量法进行调整;

作为本发明基于梯度提升算法的rtl硬件木马检测方法的进一步改进:

收集硬件木马电路设计,并将其添加至木马样本库lib,从而更新木马样本库lib;

针对现有技术,本发明的技术优势是:

1、本发明具有较高的检测准确率,误报率低;

2、本发明采用静态的检测方式,检测速度块;另外在rtl进行检测可以在设计早期发现问题,提升安全性;

3、本发明采用机器学习的方式,木马样本库可以灵活更新,实用性强。

附图说明

下面结合附图对本发明的具体实施方式作进一步详细说明。

图1为本发明基于梯度提升算法的rtl硬件木马检测方法的工作流程示意图。

图2为图1提取抽象语法树步骤中抽象语法树和rtl源码对应关系示意图。

图3为图1电路特征特征提取步骤中细粒度特征提取的示意图。

图4为实施例1中利用本发明基于梯度提升算法的rtl硬件木马检测方法进行检测的结果图。

具体实施方式

下面结合具体实施例对本发明进行进一步描述,但本发明的保护范围并不仅限于此。

实施例1、基于梯度提升算法的rtl硬件木马检测方法,如图1~4所示,包括以下内容:

首先将待测电路duv进行提取抽象语法树处理,并根据所提取的抽象语法树对待测电路duv进行电路特征的构造和提取,获得该待测电路duv中每个信号节点的向量化特征;之后将所得向量化特征输入至木马检测模型m,由木马检测模型m进行检测,并输出各信号节点对应的标签,从而获得对应信号节点的木马检测结果。

本发明采用的木马样本库lib由若干种包含不同类型硬件木马电路设计的rtl实现构成;

本实施例基于trust-hub网站中公开的rtl硬件木马电路设计对aes加密电路进行了硬件木马检测。针对trust-hub中的21个aes电路(高级加密标准)的rtl实现,将其中20个构成本实施例的木马样本库lib,剩余1个作为待测电路duv进行检测。

在实际检测中,可以根据实际需要收集硬件木马电路设计,建立木马样本库lib;

注:上述硬件木马电路设计包含正常电路模块和木马电路模块,下述中统称为电路模块,且其中的木马电路模块信息已知。

如图1所示,具体工作内容包括如下步骤:

步骤1、利用木马样本库lib中硬件木马电路设计(下文中简称为电路设计)训练木马检测模型m,步骤如下:

t1、提取抽象语法树;

对木马样本库lib中各电路设计依次进行提取抽象语法树处理:

每个电路设计提取抽象语法树处理步骤均相同,故下述仅详细介绍一个电路设计提取抽象语法树处理的步骤,电路的rtl源码(rtlsourcecode)和抽象语法树(ast)的对应关系如图2所示:

以电路设计本身作为该抽象语法树的根节点(rootnode);

将电路设计中的各个电路模块解析为一级子节点(modulenode),电路模块与一级子节点一一对应,如图2中module1、module2、module3所示;

将电路模块的内部电路解析为对应一级子节点的次级子节点,次级子节点主要包括信号节点(datanode)和操作节点(opearationnode),另外有实例节点(instancenode)作为操作节点的一种特例;

实例节点作为操作节点的一种特例,对应于rtl源码中其他电路模块的实例;

信号节点为电路设计rtl实现中数据的解析结果,操作节点是电路设计中语句的解析结果;与rtl代码相对应,操作节点可以将信号节点或者其他操作节点作为自己的子节点。

注:电路模块中信号节点可以理解为程序语言中变量的声明,操作节点对声明的变量进行操作,其信号节点会作为操作节点的子节点。操作节点下的信号节点可以理解为对应电路模块下信号节点的克隆体。

信号节点可以分为输入输出信号节点(ionode)、寄存器信号节点(regnode)和连接线信号节点(wirenode)三种类型;

操作节点对应于rtl源码中的信号行为描述,其后继子节点可以为其他的操作节点(opearationnode)、信号节点(datanode)或者常数(constantvalue);

对电路设计中所有rtl代码进行解析后可以获得该电路设计对应的抽象语法树。

t2、电路特征提取:

基于步骤t1所得的抽象语法树对电路设计进行电路特征提取;

本发明从粗、细两个粒度定义了电路特征,其中粗粒度特征以电路模块为基本单位,细粒度特征以各个电路模块的信号节点为基本单位。

粗粒度特征从抽象语法树中的一级子节点出发,对于每一个电路模块计算一组特征值,即,粗粒度特征;该粗粒度特征包括:操作类型数optypes、时序操作比例opsequential、分支操作比例opbranch、电路实例比例opinstance、模块非i/o信号比例opnio和模块寄存器信号比例opreg共计6个特征量,各个特征量采用浮点数表示。

操作类型数表示在对应模块的所有操作节点中,不同类型的操作节点的数目;

时序操作比例表示模块的所有操作节点中,时序操作所占的比例;分支操作比例和电路实例比例分别表示分支操作和电路实例在模块所有操作节点中所占的比例;

非i/o信号比例和寄存器信号比例分别表示模块中非i/o信号节点和寄存器信号节点在模块所有信号节点中所占比例。

注:粗粒度特征针对单个木马电路模块计算,并作为电路模块内所有信号节点的特征;

细粒度特征从抽象语法树中的一级子节点的信号节点出发,对于每一个信号节点计算一组特征值,即,细粒度特征;该细粒度特征包括:常量信号dataconst、时序相关信号datasequential、分支相关信号databranch、时序触发信号datatrigger和条件信号datacondition共计5个特征量,各个特征量采用整型数表示。

各信号节点的细粒度特征表示该信号和特定操作的相关性,图3以rst和tj_trig信号为例,给出了信号节点的细粒度特征和抽象语法树以及rtl源码的对应关系,其中信号节点rst作为分支操作节点if的子节点,因而其databranch特征为1;信号节点tj_trig多次作为操作节点if的子节点,因而其databranch特征为4;表明在操作节点中找该信号节点是不是操作的子节点。

注:信号节点tj_trig是操作节点if子节点(nonblocksubstitution操作节点)的子节点,所以也是if的子节点。

对于每一个信号节点,将其细粒度特征和该信号节点所对应电路模块的粗粒度特征结合,共同构成该信号节点的向量化特征:

[name,module,optypes,opsequential,opbranch,opinstance,opnio,opreg,dataconst,datasequential,databranch,datatrigger,datacondition]。

t3、木马数据标注构建训练集;

根据电路设计中的已知信息,判断步骤t1所获取的信号节点中属于木马电路的节点,然后对所有信号节点的向量化特征用flag进行标注;当判断该信号节点为木马电路模块的节点(木马节点),flag记为true,当判断该信号节点为正常电路模块的节点(正常信号节点),flag记为false,形成训练数据:

[name,module,optypes,opsequential,opbranch,opinstance,opnio,opreg,dataconst,datasequential,databranch,datatrigger,datacondition,flag]。

注:训练数据为完成标注的向量化特征。

训练过程将训练数据按照固定比例划分为训练集和测试集,如从所得训练数据中随机抽取60%~80%作为训练集,剩余20%~40%作为测试集。

训练集用于每一轮木马检测模型m参数的训练,测试集用于检验木马检测模型m的训练效果,本实施例中将训练数据按照7:3的比例划分为训练集和测试集。

t4、木马检测模型m训练:基于步骤t3获得训练集采用机器学习方法训练木马检测模型m;

木马检测模型m基于梯度提升算法实现的xgboost框架训练获得,梯度提升采用决策树模型作为基分类器ⅰ,通过在损失函数的梯度下降方向加入新的决策树模型作为基分类器ⅱ来提升分类效果,通过超参数配置选择合适的损失函数和参数范围;

注:xgboost框架、决策树模型均是现有技术,故不再本说明书中对其进行详细介绍。

超参数配置如下:

木马检测可以抽象为二分类问题,故本发明将xgboost框架中的objective参数配置为“binary:logistic”,配置木马检测模型m的损失函数为logistic函数;

由于训练数据中木马节点占总节点数比重较小,将eval_metric参数配置为“auc”使用auc(areaundercurve)准则对木马检测模型m进行验证,该准则可以更全面反映木马检测模型m的预测效果;

xgboost框架中max_depth参数(默认值为6)控制新产生的基分类器ⅱ的最大深度、配置min_child_weight参数(默认值为1)控制新产生的基分类器ⅱ的决策树叶子节点的最小权重,gamma参数控制该决策树叶子节点产生的条件(默认值为0)。

上述参数根据木马检测模型m的检测效果采用控制变量法在默认值附近调整来最终确定,具体过程如下:

第一步根据初始配置参数(即,各参数的默认值),将训练数据输入xgboost框架进行训练,对训练得到的模型用测试集验证检测效果,检测效果用auc得分来衡量,auc得分取值范围为0-1,越接近1表示检测效果越好。

第二步根据auc得分分别调整max_depth,min_child_weight和gamma参数的取值,使得检测模型可以有较好的效果。在本实施例中,参数max_depth最终取值为6,参数min_child_weight最终取值为20,参数gamma最终取值为0.3。

注:机器学习中的调参过程,根据实际效果调整超参数。

训练过程中通过调节xgboost框架中的num_boost_round参数控制木马检测模型m更新迭代的次数,通过观察每一轮的auc得分变化趋势确定:num_boost_round参数过小,木马检测模型m欠拟合,参数过大木马检测模型m容易过拟合,一般选择auc得分峰值对应的num_boost_round值用于最终的木马检测模型m,本实施例最终采用的num_boost_round取值为500。

通过训练获得的木马检测模型m用于后续的待测电路检测阶段p中。

当获得新的硬件木马电路设计(新木马)后,可以将新的硬件木马电路设计样本添加到木马样本库lib中,实现对木马样本库lib的更新(如图1中木马样本库更新过程r所示);之后重新执行上述步骤t1~t4的训练过程后可以获得新的硬件木马检测模型m。

步骤2、利用步骤t4构建的硬件木马检测模型m对待测电路duv进行检测,最终输出待测电路duv中各个信号节点对应的标签,具体包括以下步骤:

p1、提取抽象语法树:针对待测电路duv进行抽象语法树解析。

此步骤的输入为待测电路duv的rtl实现,抽象语法树的提取过程与步骤t1相同。

p2、电路特征的构造与提取:基于步骤p1所得待测电路duv的抽象语法树进行特征提取。

此步骤特征提取过程与步骤t2的相同,最终得到待测电路中各个信号节点的向量化特征:

[name,module,optypes,opsequential,opbranch,opinstance,opnio,opreg,dataconst,datasequential,databranch,datatrigger,datacondition]。

p3、基于步骤t4所得的木马检测模型m对待测电路duv进行检测。

木马检测模型m的输入为步骤p2所得待测电路duv中各信号节点对应的向量化特征,输出结果为各个信号节点对应的标签:

输出标签为true表示该节点为可疑信号节点,即,木马节点,输出标签为false表示该节点为正常信号节点。

对于所有的21个电路依次作为待测电路duv进行一次上述检测过程,最后可以获得本发明实施例对于每一个电路的检测效果。

在评估检测效果的时候,同时考虑了检测的发现率和误报率两个维度,分别用真阳率tpr和真阴率tnr两个指标来表征:

记木马信号节点为阳性p,正常信号节点为阴性n;

当检测模型将木马信号节点判定为阳性节点时记为tp,判断为阴性节点时记为fn;

当检测模型将正常信号节点判定为阴性节点时记为tn,判断为阳性节点时记为fp;

真阳率tpr表示所有阳性节点中判断正确的比例,用于反映模型的发现率,取值越高表示发现率越高,最高取1,计算公式为:

真阴率tnr表示所有阴性节点中判断正确的比例,用于反映模型的误报率,取值越高表示误报率越低,最高取1,计算公式为:

图4为本发明的实施例对于trust-hub中不同电路的木马检测效果。

从统计结果中可以看出所有电路的平均tpr可以达到100%,表示所有待测电路中的木马电路均可以被检测到;平均tnr可以达到89%以上,表示木马检测模型m的误报率比较低。同时,本发明中木马样本库还可以随着新木马的出现而更新,具有较强的实用性;并且检测时间一般仅需数秒,与动态检测方法相比时间开销较低,检测效率高。

最后还需要值得注意的是,以上列举的仅仅是本发明的具体实施例。显然本发明不仅限于以上实施例。本领域的普通技术人员能从本发明公开的内容直接导出或者联想到的所有变形,均认为是本发明的保护范围。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1