一种硬件木马的检测方法及装置转让专利

申请号 : CN201910193263.1

文献号 : CN109948374B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 佟鑫闫华钰李莹陈岚

申请人 : 中国科学院微电子研究所

摘要 :

本申请提供了一种硬件木马的检测方法及装置,获取目标电路的指令集功耗数据;对指令集功耗数据进行预处理,并计算预处理后的指令集功耗数据的中位数;判断预处理后的指令集功耗数据的中位数是否大于预设无木马电路功耗值;若是,将预处理后的指令集功耗数据输入到线性SVM训练上边界模型中进行处理,得到目标电路的硬件木马检测结果;若否,将预处理后的指令集功耗数据输入到线性SVM训练下边界模型中进行处理,得到目标电路的硬件木马检测结果。本发明使用SVM机器学习算法对指令集功耗数据进行分类以检测硬件木马,提高了硬件木马检测的准确率。

权利要求 :

1.一种硬件木马的检测方法,其特征在于,包括:

获取目标电路的指令集功耗数据;

对指令集功耗数据进行预处理,并计算预处理后的指令集功耗数据的中位数;

判断预处理后的指令集功耗数据的中位数是否大于预设无木马电路功耗值;

若是,将预处理后的指令集功耗数据输入到线性SVM训练上边界模型中进行处理,得到目标电路的硬件木马检测结果;

若否,将预处理后的指令集功耗数据输入到线性SVM训练下边界模型中进行处理,得到目标电路的硬件木马检测结果;

其中,得到线性SVM训练上边界模型和线性SVM训练下边界模型过程包括:获取训练集和验证集,所述训练集和所述验证集分别包括不同指令、不同操作数和不同木马类型对应的功耗数据组;

分别计算所述训练集和所述验证集中每个功耗数据组的中位数;

利用中位数大于所述预设无木马电路功耗值的所述训练集中的功耗数据组对SVM模型进行训练,得到所述线性SVM训练上边界模型,并利用中位数不大于所述预设无木马电路功耗值的所述训练集中的功耗数据组对SVM模型进行训练,得到所述线性SVM训练下边界模型。

2.根据权利要求1所述的方法,其特征在于,所述目标电路的硬件木马检测结果为无硬件木马或有硬件木马,当所述目标电路的硬件木马检测结果为有硬件木马时,所述目标电路的硬件木马检测结果还包括木马类型。

3.根据权利要求1所述的方法,其特征在于,所述对指令集功耗数据进行预处理,包括:对指令集功耗数据进行去离群点处理,并对去离群点处理后的指令集功耗数据进行归一化处理。

4.根据权利要求1所述的方法,其特征在于,所述方法还包括:利用中位数大于所述预设无木马电路功耗值的所述验证集中的功耗数据组对所述线性SVM训练上边界模型进行验证,利用中位数不大于所述预设无木马电路功耗值的所述验证集中的功耗数据组对所述线性SVM训练下边界模型进行验证;

对所述线性SVM训练上边界模型和所述线性SVM训练下边界模型的准确率进行计算,并当准确率大于第一预设值时停止对模型的训练。

5.根据权利要求4所述的方法,其特征在于,所述获取训练集和验证集,包括:对多个不同指令、不同操作数和不同木马类型对应的功耗数据组预处理;

对预处理后的功耗数据组进行标记,标记结果包括木马组数据和正常组数据;

对标记后的功耗数据组进行分组抽样,每次抽出一组木马组数据作为验证集,其余的作为训练集。

6.根据权利要求5所述的方法,其特征在于,所述对所述线性SVM训练上边界模型和所述线性SVM训练下边界模型的准确率进行计算,包括:对于每一次验证,当标记结果为正常组数据,检测结果为正常组数据时,将验证结果标记为真正类;

当标记结果为正常组数据,检测结果为木马组数据时,将验证结果标记为假负类;

当标记结果为木马组数据,检测结果为正常组数据时,将验证结果标记为假正类;

当标记结果为木马组数据,检测结果为木马组数据时,将验证结果标记为真负类;

计算所述线性SVM训练上边界模型的真正类数量和真负类数量、以及所述线性SVM训练下边界模型的真正类数量和真负类数量的和值,得到第一和值;

计算所述线性SVM训练上边界模型的真正类数量、假负类数量、假正类数量和真负类数量、以及所述线性SVM训练下边界模型的真正类数量、假负类数量、假正类数量和真负类数量的和值,得到第二和值;

计算所述第一和值和所述第二和值的比值,得到所述线性SVM训练上边界模型和所述线性SVM训练下边界模型的准确率。

7.一种硬件木马的检测装置,其特征在于,包括:

检测数据获取单元,用于获取目标电路的指令集功耗数据;

预处理单元,用于对指令集功耗数据进行预处理,并计算预处理后的指令集功耗数据的中位数;

判断单元,用于判断预处理后的指令集功耗数据的中位数是否大于预设无木马电路功耗值;

若是,触发第一检测单元,用于将预处理后的指令集功耗数据输入到线性SVM训练上边界模型中进行处理,得到目标电路的硬件木马检测结果;

若否,触发第二检测单元,用于将预处理后的指令集功耗数据输入到线性SVM训练下边界模型中进行处理,得到目标电路的硬件木马检测结果;

训练数据获取单元,用于获取训练集和验证集,所述训练集和所述验证集分别包括不同指令、不同操作数和不同木马类型对应的功耗数据组;

中位数计算单元,用于分别计算所述训练集和所述验证集中每个功耗数据组的中位数;

模型训练单元,用于利用中位数大于所述预设无木马电路功耗值的所述训练集中的功耗数据组对SVM模型进行训练,得到所述线性SVM训练上边界模型,并利用中位数不大于所述预设无木马电路功耗值的所述训练集中的功耗数据组对SVM模型进行训练,得到所述线性SVM训练下边界模型。

8.根据权利要求7所述的装置,其特征在于,所述目标电路的硬件木马检测结果为无硬件木马或有硬件木马,当所述目标电路的硬件木马检测结果为有硬件木马时,所述目标电路的硬件木马检测结果还包括木马类型。

9.根据权利要求7所述的装置,其特征在于,所述预处理单元,具体用于对指令集功耗数据进行去离群点处理,并对去离群点处理后的指令集功耗数据进行归一化处理。

10.根据权利要求7所述的装置,其特征在于,所述装置还包括:模型验证单元,用于利用中位数大于所述预设无木马电路功耗值的所述验证集中的功耗数据组对所述线性SVM训练上边界模型进行验证,利用中位数不大于所述预设无木马电路功耗值的所述验证集中的功耗数据组对所述线性SVM训练下边界模型进行验证;

准确率计算单元,用于对所述线性SVM训练上边界模型和所述线性SVM训练下边界模型的准确率进行计算,并当准确率大于第一预设值时停止对模型的训练。

说明书 :

一种硬件木马的检测方法及装置

技术领域

[0001] 本发明涉及集成电路安全技术领域,更具体的,涉及一种硬件木马的检测方法及装置。

背景技术

[0002] 集成电路(IC)全球化与设计制造分离已成为IC工业界的趋势,随之而来的是攻击者可以在设计或制造阶段植入恶意的电路——硬件木马(Hardware Trojans,HTs),以窃取保密信息、监视或控制核心功能或使系统失效,而且由于硬件木马仅在特定条件下被触发,极难被检测,因此近年来硬件木马受到了广泛的关注。
[0003] 2005年起研究人员相继提出了上百种检测硬件木马的技术方法,其中非破坏性方法,特别是旁路检测手段最为瞩目。但在特定模式下触发的硬件木马所产生的影响,可能小到被工艺偏差(process variation,PV)和正常功能掩盖;一些违反运行时间操作的秘密木马甚至可以基于设计规则绕过验证,从而严重降低旁路检测手段的性能。

发明内容

[0004] 有鉴于此,本发明提供了一种硬件木马的检测方法及装置,使用SVM机器学习算法对指令集功耗数据进行分类以检测硬件木马,提高硬件木马检测的准确率。
[0005] 为了实现上述发明目的,本发明提供的具体技术方案如下:
[0006] 一种硬件木马的检测方法,包括:
[0007] 获取目标电路的指令集功耗数据;
[0008] 对指令集功耗数据进行预处理,并计算预处理后的指令集功耗数据的中位数;
[0009] 判断预处理后的指令集功耗数据的中位数是否大于预设无木马电路功耗值;
[0010] 若是,将预处理后的指令集功耗数据输入到线性SVM训练上边界模型中进行处理,得到目标电路的硬件木马检测结果;
[0011] 若否,将预处理后的指令集功耗数据输入到线性SVM训练下边界模型中进行处理,得到目标电路的硬件木马检测结果。
[0012] 可选的,所述目标电路的硬件木马检测结果为无硬件木马或有硬件木马,当所述目标电路的硬件木马检测结果为有硬件木马时,所述目标电路的硬件木马检测结果还包括木马类型。
[0013] 可选的,所述对指令集功耗数据进行预处理,包括:
[0014] 对指令集功耗数据进行去离群点处理,并对去离群点处理后的指令集功耗数据进行归一化处理。
[0015] 可选的,所述方法还包括:
[0016] 获取训练集和验证集,所述训练集和所述验证集分别包括不同指令、不同操作数和不同木马类型对应的功耗数据组;
[0017] 分别计算所述训练集和所述验证集中每个功耗数据组的中位数;
[0018] 利用中位数大于所述预设无木马电路功耗值的所述训练集中的功耗数据组对SVM模型进行训练,得到所述线性SVM训练上边界模型,并利用中位数不大于所述预设无木马电路功耗值的所述训练集中的功耗数据组对SVM模型进行训练,得到所述线性SVM训练下边界模型;
[0019] 利用中位数大于所述预设无木马电路功耗值的所述验证集中的功耗数据组对所述线性SVM训练上边界模型进行验证,利用中位数不大于所述预设无木马电路功耗值的所述验证集中的功耗数据组对所述线性SVM训练下边界模型进行验证;
[0020] 对所述线性SVM训练上边界模型和所述线性SVM训练下边界模型的准确率进行计算,并当准确率大于第一预设值时停止对模型的训练。
[0021] 可选的,所述获取训练集和验证集,包括:
[0022] 对多个不同指令、不同操作数和不同木马类型对应的功耗数据组预处理;
[0023] 对预处理后的功耗数据组进行标记,标记结果包括木马组数据和正常组数据;
[0024] 对标记后的功耗数据组进行分组抽样,每次抽出一组木马组数据作为验证集,其余的作为训练集。
[0025] 可选的,所述对所述线性SVM训练上边界模型和所述线性SVM训练下边界模型的准确率进行计算,包括:
[0026] 对于每一次验证,当标记结果为正常组数据,检测结果为正常组数据时,将验证结果标记为真正类;
[0027] 当标记结果为正常组数据,检测结果为木马组数据时,将验证结果标记为假负类;
[0028] 当标记结果为木马组数据,检测结果为正常组数据时,将验证结果标记为假正类;
[0029] 当标记结果为木马组数据,检测结果为木马组数据时,将验证结果标记为真负类;
[0030] 计算所述线性SVM训练上边界模型的真正类数量和真负类数量、以及所述线性SVM训练下边界模型的真正类数量和真负类数量的和值,得到第一和值;
[0031] 计算所述线性SVM训练上边界模型的真正类数量、假负类数量、假正类数量和真负类数量、以及所述线性SVM训练下边界模型的真正类数量、假负类数量、假正类数量和真负类数量的和值,得到第二和值;
[0032] 计算所述第一和值和所述第二和值的比值,得到所述线性SVM训练上边界模型和所述线性SVM训练下边界模型的准确率。
[0033] 一种硬件木马的检测装置,包括:
[0034] 检测数据获取单元,用于获取目标电路的指令集功耗数据;
[0035] 预处理单元,用于对指令集功耗数据进行预处理,并计算预处理后的指令集功耗数据的中位数;
[0036] 判断单元,用于判断预处理后的指令集功耗数据的中位数是否大于预设无木马电路功耗值;
[0037] 若是,触发第一检测单元,用于将预处理后的指令集功耗数据输入到线性SVM训练上边界模型中进行处理,得到目标电路的硬件木马检测结果;
[0038] 若否,触发第二检测单元,用于将预处理后的指令集功耗数据输入到线性SVM训练下边界模型中进行处理,得到目标电路的硬件木马检测结果。
[0039] 可选的,所述目标电路的硬件木马检测结果为无硬件木马或有硬件木马,当所述目标电路的硬件木马检测结果为有硬件木马时,所述目标电路的硬件木马检测结果还包括木马类型。
[0040] 可选的,所述预处理单元,具体用于对指令集功耗数据进行去离群点处理,并对去离群点处理后的指令集功耗数据进行归一化处理。
[0041] 可选的,所述装置还包括:
[0042] 训练数据获取单元,用于获取训练集和验证集,所述训练集和所述验证集分别包括不同指令、不同操作数和不同木马类型对应的功耗数据组;
[0043] 中位数计算单元,用于分别计算所述训练集和所述验证集中每个功耗数据组的中位数;
[0044] 模型训练单元,用于利用中位数大于所述预设无木马电路功耗值的所述训练集中的功耗数据组对SVM模型进行训练,得到所述线性SVM训练上边界模型,并利用中位数不大于所述预设无木马电路功耗值的所述训练集中的功耗数据组对SVM模型进行训练,得到所述线性SVM训练下边界模型;
[0045] 模型验证单元,用于利用中位数大于所述预设无木马电路功耗值的所述验证集中的功耗数据组对所述线性SVM训练上边界模型进行验证,利用中位数不大于所述预设无木马电路功耗值的所述验证集中的功耗数据组对所述线性SVM训练下边界模型进行验证;
[0046] 准确率计算单元,用于对所述线性SVM训练上边界模型和所述线性SVM训练下边界模型的准确率进行计算,并当准确率大于第一预设值时停止对模型的训练。
[0047] 可选的,所述训练数据获取单元,具体用于对多个不同指令、不同操作数和不同木马类型对应的功耗数据组预处理;对预处理后的功耗数据组进行标记,标记结果包括木马组数据和正常组数据;对标记后的功耗数据组进行分组抽样,每次抽出一组木马组数据作为验证集,其余的作为训练集。
[0048] 可选的,所述准确率计算单元,具体用于对于每一次验证,当标记结果为正常组数据,检测结果为正常组数据时,将验证结果标记为真正类;当标记结果为正常组数据,检测结果为木马组数据时,将验证结果标记为假负类;当标记结果为木马组数据,检测结果为正常组数据时,将验证结果标记为假正类;当标记结果为木马组数据,检测结果为木马组数据时,将验证结果标记为真负类;计算所述线性SVM训练上边界模型的真正类数量和真负类数量、以及所述线性SVM训练下边界模型的真正类数量和真负类数量的和值,得到第一和值;计算所述线性SVM训练上边界模型的真正类数量、假负类数量、假正类数量和真负类数量、以及所述线性SVM训练下边界模型的真正类数量、假负类数量、假正类数量和真负类数量的和值,得到第二和值;计算所述第一和值和所述第二和值的比值,得到所述线性SVM训练上边界模型和所述线性SVM训练下边界模型的准确率。
[0049] 相对于现有技术,本发明的有益效果如下:
[0050] 本发明公开的一种硬件木马的检测方法及装置,使用SVM机器学习算法对指令集功耗数据进行分类以检测硬件木马,并以中位数为界,分别使用线性SVM计算分类边界,以降低SVM对指令功耗数据分类的复杂度,提高硬件木马检测的准确率。

附图说明

[0051] 为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据提供的附图获得其他的附图。
[0052] 图1为本发明实施例公开的一种硬件木马的检测方法的流程示意图;
[0053] 图2为本发明实施例公开的一种线性SVM训练上边界模型和线性SVM训练下边界模型的训练方法的流程示意图;
[0054] 图3为本发明实施例公开的一种硬件木马的检测装置的结构示意图。

具体实施方式

[0055] 下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
[0056] 本实施例公开了一种硬件木马的检测方法,应用于对集成电路中硬件木马的检测,请参阅图1,本实施例公开的硬件木马的检测方法具体包括以下步骤:
[0057] S101:获取目标电路的指令集功耗数据;
[0058] 目标电路为需要进行硬件木马检测的集成电路。
[0059] 为了得到动态和静态功耗在不同指令集操作数条件下的关系,指令集功耗数据包括目标电路在不同指令、不同操作数下的功耗数据。
[0060] 根据MC8051微处理器的汇编指令,我们选择了典型的7类共21条指令,具体如下所示。
[0061]
[0062] 如下所示,我们选取了8组操作数应用到指令集进行实验。
[0063]
[0064] 由于不同结构的硬件木马和它们攻击芯片的方式在行为上表现出巨大的差异,机器学习模型需要知道不同木马的差异以提高分类性能,因此第三个特征是硬件木马测试向量的类型,即木马类型。我们从Trust-Hub上下载了5个针对MC8051的木马,3个(HT1~HT3)给原始设计增加了额外的逻辑功能,最后两个(HT4)移除/关闭/修改了原设计的部分逻辑,详细的描述如下所示。
[0065]
[0066] S102:对指令集功耗数据进行预处理,并计算预处理后的指令集功耗数据的中位数;
[0067] 为了减小噪声数据对模型训练及检测的影响,并考虑到算法复杂度的问题,对指令集功耗数据进行预处理,具体为对指令集功耗数据进行去离群点处理,并对去离群点处理后的指令集功耗数据进行归一化处理。
[0068] 其中,对指令集功耗数据进行去离群点处理具体为剔除指令集功耗数据中的最大值和最小值。
[0069] 对去离群点处理后的指令集功耗数据进行归一化处理具体为:
[0070]
[0071] 其中,a为去离群点处理后的指令集功耗数据中的任意一个功耗值,归一化处理后,指令集功耗数据都转化为(0,1)中的值。
[0072] S103:判断预处理后的指令集功耗数据的中位数是否大于预设无木马电路功耗值;
[0073] 预设无木马电路功耗值为预先选定的无木马电路功耗数据组的中位数。
[0074] 考虑到不同类型的硬件木马可能使指令集功耗数据高于预设无木马电路功耗值,也可能低于预设无木马电路功耗值,同时考虑到机器学习效率问题,本实施例提供了线性SVM训练上边界模型和线性SVM训练下边界模型,当预处理后的指令集功耗数据的中位数大于预设无木马电路功耗值时,将预处理后的指令集功耗数据输入到线性SVM训练上边界模型中进行处理,并当预处理后的指令集功耗数据的中位数不大于预设无木马电路功耗值时,将预处理后的指令集功耗数据输入到线性SVM训练下边界模型中进行处理。
[0075] 若是,S104:将预处理后的指令集功耗数据输入到线性SVM训练上边界模型中进行处理,得到目标电路的硬件木马检测结果;
[0076] 若否,S105:将预处理后的指令集功耗数据输入到线性SVM训练下边界模型中进行处理,得到目标电路的硬件木马检测结果。
[0077] 具体的,预处理后的指令集功耗数据包括多个功耗值,每个功耗值对应一个检测结果,因此,可以得到检测结果中有硬件木马的检测结果占所有检测结果的比例,当该比率大于预先定义的数据组中木马个数的占比时,判定目标电路存在硬件木马。
[0078] 进一步的,目标电路的硬件木马检测结果为无硬件木马或有硬件木马,当所述目标电路的硬件木马检测结果为有硬件木马时,所述目标电路的硬件木马检测结果还包括木马类型。
[0079] 需要说明的是,在利用上述线性SVM训练上边界模型和线性SVM训练下边界模型对目标电路进行硬件木马检测之前,首先需要对上述线性SVM训练上边界模型和线性SVM训练下边界模型进行训练,保证上述线性SVM训练上边界模型和线性SVM训练下边界模型对硬件木马检测的准确率。
[0080] 具体的,请参阅图2,对上述线性SVM训练上边界模型和线性SVM训练下边界模型进行训练的方法具体包括以下步骤:
[0081] S201:获取训练集和验证集;
[0082] 所述训练集和所述验证集分别包括不同指令、不同操作数和不同木马类型对应的功耗数据组。
[0083] 具体的,获取训练集和验证集具体包括以下步骤:
[0084] 对多个不同指令、不同操作数和不同木马类型对应的功耗数据组预处理;
[0085] 对预处理后的功耗数据组进行标记,标记结果包括木马组数据和正常组数据;
[0086] 对标记后的功耗数据组进行分组抽样,每次抽出一组木马组数据作为验证集,其余的作为训练集。
[0087] 其中,上述对多个不同指令、不同操作数和不同木马类型对应的功耗数据组预处理,包括对每个功耗数据组进行去离群点处理,并对去离群点处理后的功耗数据组进行归一化处理。具体处理过程与上述对指令集功耗数据进行预处理的过程相同,在此不再赘述。
[0088] 对预处理后的功耗数据组进行标记,具体可以为将木马组数据标记为-1,将正常组数据标记为1。
[0089] 为了对模型进行交叉验证,对标记后的功耗数据组进行分组抽样,每次抽出一组木马组数据作为验证集,其余的作为训练集,保证了在训练集中同时包含了木马组数据和正常组数据。
[0090] S202:分别计算训练集和验证集中每个功耗数据组的中位数;
[0091] S203:利用中位数大于预设无木马电路功耗值的训练集中的功耗数据组对SVM模型进行训练,得到线性SVM训练上边界模型,并利用中位数不大于预设无木马电路功耗值的训练集中的功耗数据组对SVM模型进行训练,得到线性SVM训练下边界模型;
[0092] S204:利用中位数大于预设无木马电路功耗值的验证集中的功耗数据组对线性SVM训练上边界模型进行验证,利用中位数不大于预设无木马电路功耗值的验证集中的功耗数据组对线性SVM训练下边界模型进行验证;
[0093] S205:对线性SVM训练上边界模型和线性SVM训练下边界模型的准确率进行计算,并当准确率大于第一预设值时停止对模型的训练。
[0094] 由于测试集中的功耗数据组已经预先进行了标记,将模型的检测结果与测试集输入模型的功耗数据组的标记结果进行对比即可得到检测结果是否正确。
[0095] 具体的,计算线性SVM训练上边界模型和线性SVM训练下边界模型的准确率的方法如下:
[0096] 对于每一次验证,当标记结果为正常组数据,检测结果为正常组数据时,将验证结果标记为真正类;
[0097] 当标记结果为正常组数据,检测结果为木马组数据时,将验证结果标记为假负类;
[0098] 当标记结果为木马组数据,检测结果为正常组数据时,将验证结果标记为假正类;
[0099] 当标记结果为木马组数据,检测结果为木马组数据时,将验证结果标记为真负类;
[0100] 计算所述线性SVM训练上边界模型的真正类数量和真负类数量、以及所述线性SVM训练下边界模型的真正类数量和真负类数量的和值,得到第一和值;
[0101] 计算所述线性SVM训练上边界模型的真正类数量、假负类数量、假正类数量和真负类数量、以及所述线性SVM训练下边界模型的真正类数量、假负类数量、假正类数量和真负类数量的和值,得到第二和值;
[0102] 计算所述第一和值和所述第二和值的比值,得到所述线性SVM训练上边界模型和所述线性SVM训练下边界模型的准确率。
[0103] 准确率(Accuracy Rate):
[0104]
[0105] 其中,真正类(True Positive,TP),假负类(False Negative,FN),假正类(False Positive,FP),真负类(True Negative,TN)。相应地,所述线性SVM训练上边界模型的检测结果中真正类数量、假负类数量、假正类数量和真负类数量分别为TPH,FNH,FPH,TNH,所述线性SVM训练下边界模型的检测结果中真正类数量、假负类数量、假正类数量和真负类数量分别为TPL,FNL,FPL,TNL。
[0106] 为了验证本实施例中所述线性SVM训练上边界模型和所述线性SVM训练下边界模型的准确率,下面实验中分别选取HT1\HT2\HT3为未知测试组,以检验本实施例公开所述线性SVM训练上边界模型和所述线性SVM训练下边界模型的效果。准确率结果对比如下:
[0107] 1、总共有5组木马,分别为HT1~HT5,另有一组无木马组TF,HT1为选定的未知测试组,其他组为训练组+验证组。
[0108]
[0109] 注:x项表示由于待测木马与训练组木马分属不同边界,不具有数值意义。
[0110] 2、总共有5组木马,分别为HT1~HT5,另有一组无木马组TF,HT2为选定的未知测试组,其他组为训练组+验证组。
[0111]
[0112] 3、总共有5组木马,分别为HT1~HT5,另有一组无木马组TF,HT3为选定的未知测试组,其他组为训练组+验证组。
[0113]
[0114] 从上述实验结果可以看出,HT1~HT5是同时存在正负木马混合的场景,在硬件木马实际应用场景中并不少见,本实施例提出的分组且去掉离群点的检测方法对检测这种场景下的硬件木马的性能明显优于不分组和不去离群点的方法。
[0115] 基于上述实施例公开的一种硬件木马的检测方法,本实施例对应公开了一种硬件木马的检测装置,请参阅图3,该装置具体包括:
[0116] 检测数据获取单元301,用于获取目标电路的指令集功耗数据;
[0117] 预处理单元302,用于对指令集功耗数据进行预处理,并计算预处理后的指令集功耗数据的中位数;
[0118] 可选的,所述预处理单元302,具体用于对指令集功耗数据进行去离群点处理,并对去离群点处理后的指令集功耗数据进行归一化处理。
[0119] 判断单元303,用于判断预处理后的指令集功耗数据的中位数是否大于预设无木马电路功耗值;
[0120] 若是,触发第一检测单元304,用于将预处理后的指令集功耗数据输入到线性SVM训练上边界模型中进行处理,得到目标电路的硬件木马检测结果;
[0121] 若否,触发第二检测单元305,用于将预处理后的指令集功耗数据输入到线性SVM训练下边界模型中进行处理,得到目标电路的硬件木马检测结果。
[0122] 可选的,所述目标电路的硬件木马检测结果为无硬件木马或有硬件木马,当所述目标电路的硬件木马检测结果为有硬件木马时,所述目标电路的硬件木马检测结果还包括木马类型。
[0123] 可选的,所述装置还包括:
[0124] 训练数据获取单元,用于获取训练集和验证集,所述训练集和所述验证集分别包括不同指令、不同操作数和不同木马类型对应的功耗数据组;
[0125] 中位数计算单元,用于分别计算所述训练集和所述验证集中每个功耗数据组的中位数;
[0126] 模型训练单元,用于利用中位数大于所述预设无木马电路功耗值的所述训练集中的功耗数据组对SVM模型进行训练,得到所述线性SVM训练上边界模型,并利用中位数不大于所述预设无木马电路功耗值的所述训练集中的功耗数据组对SVM模型进行训练,得到所述线性SVM训练下边界模型;
[0127] 模型验证单元,用于利用中位数大于所述预设无木马电路功耗值的所述验证集中的功耗数据组对所述线性SVM训练上边界模型进行验证,利用中位数不大于所述预设无木马电路功耗值的所述验证集中的功耗数据组对所述线性SVM训练下边界模型进行验证;
[0128] 准确率计算单元,用于对所述线性SVM训练上边界模型和所述线性SVM训练下边界模型的准确率进行计算,并当准确率大于第一预设值时停止对模型的训练。
[0129] 可选的,所述训练数据获取单元,具体用于对多个不同指令、不同操作数和不同木马类型对应的功耗数据组预处理;对预处理后的功耗数据组进行标记,标记结果包括木马组数据和正常组数据;对标记后的功耗数据组进行分组抽样,每次抽出一组木马组数据作为验证集,其余的作为训练集。
[0130] 可选的,所述准确率计算单元,具体用于对于每一次验证,当标记结果为正常组数据,检测结果为正常组数据时,将验证结果标记为真正类;当标记结果为正常组数据,检测结果为木马组数据时,将验证结果标记为假负类;当标记结果为木马组数据,检测结果为正常组数据时,将验证结果标记为假正类;当标记结果为木马组数据,检测结果为木马组数据时,将验证结果标记为真负类;计算所述线性SVM训练上边界模型的真正类数量和真负类数量、以及所述线性SVM训练下边界模型的真正类数量和真负类数量的和值,得到第一和值;计算所述线性SVM训练上边界模型的真正类数量、假负类数量、假正类数量和真负类数量、以及所述线性SVM训练下边界模型的真正类数量、假负类数量、假正类数量和真负类数量的和值,得到第二和值;计算所述第一和值和所述第二和值的比值,得到所述线性SVM训练上边界模型和所述线性SVM训练下边界模型的准确率。
[0131] 本实施例公开的一种硬件木马的检测装置,使用SVM机器学习算法对指令集功耗数据进行分类以检测硬件木马,并以中位数为界,分别使用线性SVM计算分类边界,以降低SVM对指令功耗数据分类的复杂度,提高硬件木马检测的准确率。
[0132] 对所公开的实施例的上述说明,使本领域专业技术人员能够实现或使用本发明。对这些实施例的多种修改对本领域的专业技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本发明的精神或范围的情况下,在其它实施例中实现。因此,本发明将不会被限制于本文所示的这些实施例,而是要符合与本文所公开的原理和新颖特点相一致的最宽的范围。