APP下载

基于长短时记忆神经网络的硬件木马检测

2020-07-21佃松宜蒋荣华

计算机工程 2020年7期
关键词:木马特征向量分类器

胡 涛,佃松宜,蒋荣华

(四川大学 电气工程学院,成都 610065)

0 概述

由于集成电路(Integrated Circuit,IC)的设计越来越复杂,且其设计和制造朝着全球化的方向发展,半导体公司已不能完全自行设计和制造出所有的集成电路,这导致部分集成电路的设计和制造将外包给世界各地的其他公司,而外包公司可能在半导体公司不知情的情况下恶意设计集成电路[1]。已有研究表明,集成电路不仅在制造外包过程中容易受到恶意操作,而且整个集成电路的开发链也容易受到恶意操作,这增加了集成电路中存在硬件木马的可能性。硬件木马是指一种恶意修改电路,常以旁路电路的形式添加在原本电路中,并在攻击者的操控下达到破坏电路或者窃取数据的目的[2]。

硬件木马的检测方式多种多样,目前国内外的检测方式主要包括逻辑检测、延时特征检测、失效性检测、侧道信息检测等[3]。其中,侧道信息检测方法是通过检测集成电路的侧道信号来分析待识别芯片中是否存在硬件木马,与其他检测方法相比,侧道信息检测具有无损伤、低开销、高性能等优点。基于此,本文采用的检测方法也属于侧道信息检测方法。

文献[4]通过支持向量机(Support Vector Machine,SVM)验证了包含触发电路的硬件木马检测的可行性。文献[5]提出一种基于自组织竞争神经网络的硬件木马检测方法,利用无监督的学习算法对母本电路和待测电路进行分类判别,自组织竞争神经网络可以有效分辨微弱信号,而无监督学习机制可以减少人为干预,降低人为建立的数学模型不精确带来的负面影响。文献[6]提出一种基于激活路径时延的硬件木马检测方法,摆脱对母本电路的依赖。文献[7]通过主成分分析(Principal Component Analysis,PCA)结合欧式距离实现硬件木马的检测,并发现PCA对硬件木马检测的识别率有一定的改善。文献[8]通过基于粒子群算法和遗传变异算法优化的SVM指出,当木马面积较小时SVM无法准确识别硬件木马。文献[9]通过梅尔频率倒谱系数提取侧道信息的梅尔频谱,通过K均值算法初始化隐马尔可夫模型的初始状态,实现了利用时序特征的硬件木马检测,但是该方法对长时间序列的处理效果欠佳。

目前有关侧道信息的研究多数是将整体侧道信息作为分类器的输入特征向量,未充分利用侧道信息的时序特征。本文提出一种基于PCA和长短时记忆(Long Short-Term Memory,LSTM)神经网络的硬件木马检测方法,利用PCA压缩时序特征,使用LSTM神经网络对侧道电流信息的时序特征进行学习,以达到准确判断待测电路中是否植入了硬件木马的目的。此外,本文还探究了在硬件木马插入不同位置的情况下该方法的检测效果。

1 本文检测方法

本文检测方法主要由PCA模块和LSTM神经网络模块两部分构成。通过PCA算法将高维样本投影到其低维子空间中,解决样本维度过高带来的计算爆炸和数据冗余等问题,再把降维后的特征向量输入给LSTM神经网络来进行正常芯片和木马芯片的分类。

1.1 PCA算法

PCA算法是一种常见的通过线性变换将高维特征向量映射到低维空间中的方法,其基于最大方差理论,使得降维后的特征向量尽可能保留最大方差。本文使用PCA算法的主要目的是用于降低计算量,防止计算爆炸,加快训练速度。同时,PCA算法在其实现步骤上存在归一化的步骤,可以在一定程度上抑制由工艺偏差带来的噪声。PCA算法的具体实现流程如下:

步骤2求解协方差矩阵R,计算方法如下:

(1)

步骤3求解协方差矩阵R的特征值λi和特征向量ui,计算方法如下:

λiui=Rui

(2)

其中,λi表示第i个特征值,ui表示其对应的特征向量。直接求式(3)时,要求协方差矩阵R必须为方阵,直接对R进行求解容易引起维度爆炸,因此常常利用奇异值分解(Singular Value Decomposition,SVD)原理进行处理。

步骤4取出SVD后按大小顺序排列前k个特征值对应的特征向量,并构成变换矩阵Um×k=(u1,u2,…,uk)。其中,k由前k个方差贡献率η决定,当η大于设定的阈值时,认为前k个分量包含了原始特征向量的主要信息。方差贡献率η的计算公式为:

(3)

步骤5对原始数据归零化后再进行线性变换,得到降维过后的特征向量X,计算公式为:

(4)

1.2 LSTM神经网络

LSTM神经网络是一种特殊的循环神经网络(Recurrent Neural Network,RNN),其具有时间递归的性质,适用于处理时序相关的问题,解决了RNN难以解决的时间序列长期依赖、梯度爆炸和梯度消失等问题。由于本文用来检测硬件木马的侧道信息是时序相关的电流信息,因此可以使用LSTM神经网络来检测硬件木马。一个LSTM神经网络的内部结构如图1所示。

图1 LSTM神经网络内部结构

在图1中,t表示时间序列的顺序,Xt表示输入端,Ct表示当前时刻的胞体状态,σ表示一个sigmoid函数,其作用是将信息映射到0~1之间,表示是否允许信息通过,⊗表示逐点相乘,通常接在sigmoid函数后用来对信息进行筛选,⊕表示向量相加,ht表示当前时刻的输出,tanh表示一层激活函数为tanh的神经网络层,W,b分别表示输入信息到各个门的权向量和偏置向量。

LSTM神经网络的前向传播过程按照式(5)的顺序完成:

(5)

LSTM神经网络的训练一般通过跨时间的梯度反向传播(Back Propagation Through Time,BPTT)算法对其各个参数进行迭代更新[10]。

2 检测流程

本文的检测流程分为以下3个步骤:

步骤1对电路进行仿真,提取侧道电流信息。

步骤2通过PCA算法对数据降维,然后划分训练集、测试集、验证集,其中测试集是由与训练集木马插入位置相同的电路侧道信息构成,验证集是由与训练集插入位置不同的电路侧道信息构成。

步骤3训练分类器。

本文检测方法的主要流程如图2所示。

图2 本文检测方法的主要流程

其中,每一步的具体操作如下:

步骤1本文构建的ISCAS89电路基于SMIC 0.18 μm工艺库。通过Hspice仿真平台得到多组电路的电流信息,第1组仿真实验以s9234电路作为母本电路,记作s9234。然后分别以1个、2个、3个s27电路作为木马植入到s9234电路[11],分别记作s9234_1s27、s9234_2s27、s9234_3s27。利用Design Compiler综合后得到的木马电路分别占总电路面积的0.74%、1.33%、2.10%。这几种木马并没有实际的攻击功能,只是作为测试的旁路电路来验证本文方法的有效性。

为了进一步验证木马插入的位置对检测有效性的影响。第2组仿真实验在第1组仿真实验的基础上,分别以1个、2个、3个s27电路作为木马植入到与第1组不同位置的s9234电路中,分别记作valid_s9234_1s27、valid_s9234_2s27、valid_s9234_3s27。

此外,本文利用Hspice基于蒙特卡罗方法模拟实际生产芯片时的工艺偏差(工艺偏差服从标准正态分布),得到160组侧信道电流信息。

步骤2利用PCA算法对第1组仿真实验得到的数据降维,提取方差特征值贡献率为前95%的特征向量矩阵Um×k,通过特征向量矩阵Um×k对第1组数据进行变换得到降维后的特征向量X。接下来将特征向量X随机划分为训练集和测试集,本文选取33%的样本作为测试集,记作test_s9234。

验证集由木马插入位置不同的样本构成,通过特征向量矩阵Um×k对第2组数据进行变换得到降维后的特征向量,记作valid_s9234。

步骤3利用训练集训练LSTM神经网络分类器,并在测试集上检验本文分类器的准确率,当测试集的准确率不再提升时即完成训练,然后在验证集上检验分类器的准确率。

本文的LSTM神经网络只包含一个LSTM层,且LSTM层内的节点数为128个。在LSTM层后添加一层节点数为128、激活函数为Relu的全连接神经网络(Artificial Neural Network,ANN)层,对该全连接层的每个输出节点以0.15的概率进行Dropout,以增强网络的泛化性[12],然后在Dropout层上添加激活函数为Softmax的全连接层作为整个网络的最终输出。此外,对整个网络采用滑动平均模型的方式来提高网络的健壮性[13],使用学习率随训练过程衰减的方式来增强网络的学习能力[14],且基学习率为0.001,衰减率为0.99,网络的训练算法为Adam算法。本文LSTM神经网络的运算图如图3所示。

图3 LSTM神经网络运算图

其中,箭头表示数据的流动方向,Input表示输入PCA降维后的数据及其类别标签,LSTM表示一个LSTM神经网络层,ANN表示一层全连接神经网络,Dropout表示Dropout层,Output表示预测结果,Loss表示交叉熵损失函数,Train Operate表示用滑动平均、学习率衰减、Adam算法对网络进行训练。

3 对比实验

为了验证本文方法的有效性,实验主要对SVM[15]、ANN[16]、随机森林(Random Forest,RF)[17]、XGBoost等4种分类器结合PCA算法在相同的电路条件下进行对比。

对比实验表明,SVM算法在小样本、非线性样本的判别中表现良好[18]。多次实验后,本文选取多项式核作为核函数,惩罚参数C设置为10,核函数最高次幂degress设置为120,核函数系数gamma设置10,核函数的常数项为1。ANN具有极强的非线性映射能力,2个隐层的神经网络足以拟合任意非线性函数[19]。经过多次试验后,本文的ANN包含2个隐藏层,每层128个节点,使用Relu激活函数,同样采用滑动平均和学习率衰减的方式来提高网络的健壮性,且其基学习率为0.001,衰减率为0.99,网络的训练算法为Adam算法。RF算法在处理高维数据时具有良好的泛化能力以及时间开销低等优点,本文选择RF算法的决策树数目为50个[20]。XGBoost是一种极端的基于梯度提升机制的改进算法,通过重复学习生成模型的残差最终产生多个树模型,从而组合成准确率较高的综合模型[21-22]。经过多次试验后,本文选择的XGBoost算法中每棵树对训练样本的随机采样率subsample为0.8,特征采样率colsample_bytree为0.8,损失函数为均方差损失函数。

3.1 检测结果

本文检测方法在测试集test_s9234和验证集valid_s9234上对于每一个待测电路的分类结果如图4所示。

图4 本文分类器在测试集和验证集上的分类结果

由图4可知,在木马插入位置相同的测试集上,检测准确率为100.00%,本文提出的分类器可有效识别木马电路,因此不再单独列出s9234_1s27、s9234_2s27、s9234_3s27的检测准确率。

在木马插入位置不同的验证集上,检测准确率为83.13%,对正常电路s9234的召回率为100.00%,对面积比为0.74%的valid_s9234_1s27木马电路召回率为97.44%,对面积比为1.33%的valid_s9234_2s27木马电路召回率为82.05%,对面积比为2.10%的valid_s9234_3s27木马电路召回率为53.85%。由此可见,随着验证集木马面积比的增大,检测准确率并没有随之增大,这是因为木马插入位置不同导致其激活频率不同,进而导致每一种木马电路的侧道信息时序特征和训练集存在差异。在这种条件下,分类器只能判断出电路是否植入了木马电路,不能有效判断具体插入了哪一种类型的木马电路。若只考虑是否植入了木马电路,则本文方法对正常电路的召回率为100.00%,对木马电路的召回率为99.17%。

所有分类器在测试集、验证集的准确率如表1所示。

表1 不同分类器的检测结果

3.2 分类器性能评价

本文提出的PCA+LSTM分类器在测试集test_s9234上的准确率为100.00%,因此其混淆矩阵不在此列出。在验证集valid_s9234上的分类结果如表2所示。

表2 本文分类器的分类结果

为了综合评价分类器的分类性能,用每个分类器的每一个电路类别的F1评价指标的加权平均值作为分类器的综合评价指标。每个分类器的加权F1综合评价指标如图5所示。由表1和图5可知,并不是所有的分类器都能有效识别硬件木马,在用PCA方式作为提取特征向量的手段时,传统的机器学习分类器SVM、RF、XGBoost无法检测出硬件木马,分析原因在于这3类分类器的学习能力还不足以处理当硬件木马面积占比很小时,由木马产生的侧道电流信息被生产工艺偏差带来的电流偏差所覆盖的问题。但是PCA+ANN分类器和本文提出的PCA+LSTM分类器都可以有效处理上述缺陷,分析原因在于ANN和LSTM具有比传统的机器学习分类器更强的学习能力。

图5 5种分类器在测试集和验证集上的加权F1评价指标

本文主要对比PCA+LSTM和PCA+ANN分类器的性能。从图5可以看出,在测试集test-s9234上,使用PCA+LSTM分类器的加权F1值为1.00,相较于PCA+ANN分类器提高了6.38%,在验证集valid-s9234上的加权F1值为0.83,相较于PCA+ANN分类器提高了16.90%。

4 结束语

本文提出一种将PCA和LSTM神经网络相结合的硬件木马检测方法,并通过实验验证了该方法的可行性。在测试集上的实验结果说明本文方法可以有效检测出硬件木马,但是在验证集上的实验结果也暴露出一些问题,如硬件木马植入位置不同会导致硬件木马的激活率发生改变,进而使其时序特征发生改变,无法准确判断植入的木马类型。因此在接下来的工作中,将会进一步深入探究硬件木马的激活率与时序特征的关系。

猜你喜欢

木马特征向量分类器
二年制职教本科线性代数课程的几何化教学设计——以特征值和特征向量为例
克罗内克积的特征向量
小木马
骑木马
小木马
一类三阶矩阵特征向量的特殊求法
旋转木马
基于差异性测度的遥感自适应分类器选择
基于实例的强分类器快速集成方法
EXCEL表格计算判断矩阵近似特征向量在AHP法检验上的应用