宗学军 金 琼 李鹏程
(沈阳化工大学信息工程学院 辽宁 沈阳 110142)
在信息化和工业化的深度融合过程中,工业控制系统(Industrial Control System, ICS)的发展呈现出开放的趋势,逐渐地使用标准化的网络协议和公开透明的应用软件,甚至打破传统的局域网内部控制与企业网络互联,因此ICS面临的安全形势越来越严峻[1]。2010 年“震网”病毒的爆发让全球意识到ICS已成为黑客的主要目标,由2014年10月韩国核电站病毒、2015年12月乌克兰电网断电、2016年3月德国核电站病毒等工业安全事件的发生可以看出ICN安全问题日益突出[2]。
入侵检测系统(Intrusion Detection System,IDS)是一种对网络传输数据实时监视,并对数据进行识别和预警的网络安全防护技术[3]。通过机器学[4]和深度学习[5]建立入侵检测模型,用于快速有效区分正常流量和攻击行为,对攻击行为进行预警。随着传统工业转型升级,网络安全威胁日益向工业领域蔓延,工业入侵检测[6]逐渐成为ICN安全的研究热点。
在工业入侵检测算法方面的研究中,文献[7]将单类SVM算法应用到Modbus TCP/IP协议下的异常检测中,但是文中尚未解决多分类问题,大数据样本实施难度也比较大;文献[8]将KNN算法应用于工业控制系统中间人攻击检测中,但是当数据维度高、样本不平衡时,检测效果比较差;文献[9]对6种机器学习算法进行对比,结果表明决策树算法表现最好,但是对某些攻击类别召回率偏低的问题仍未解决;文献[10]使用borderline-SMOTE算法解决了数据不平衡的问题,在小样本数据条件下检测效果很好,但是未在其他数据集上验证方法的可行性;文献[11]将自动编码器应用于特征提取,但是检测效果相对其他研究而言还有一些不足。
通过上述分析可知,ICN数据中存在着攻击样本不平衡、样本特征维度高的问题,这些问题都会影响检测效果。样本不平衡导致训练的模型偏向多数类,忽视少数类,对少数类别的检测效果较差;特征维度高导致模型提取重要特征的难度变大,使得整体的检测效果较差。在入侵检测领域中,传统的机器学习模型虽然已经做出巨大贡献,但是检测效果还有很多不足。相比之下,当前的深度学习模型虽然也没有很好地解决上述问题,但是它具有更强的学习能力,也能够达到更好的检测效果。
目前,深度学习广泛应用在语音处理、计算机视觉、自然语言处理等领域,近几年来也逐渐应用在入侵检测领域。在计算机视觉领域中,生成对抗网络(Generative Adversarial Networks,GAN)被应用在图像识别[12]、图像生成[13]等方面。通过利用GAN图像生成的能力来进行攻击样本数据生成,可以解决样本不平衡的问题。稀疏自编码器(Sparse Auto-Encoder,SAE)被应用在图像分类[14]、特征提取[15]等方面。同样,通过利用SAE特征提取的能力来进行数据降维,可以解决样本特征维度高的问题。在本文入侵检测算法的研究过程中,为了能够取得更好的检测效果,首先使用GAN的变体结构ACGAN,半监督学习的ACGAN与无监督学习的GAN相比,ACGAN优势在于可以通过向输入中增加标签信息不断调节生成的数据类别,对不平衡样本的数据增强效果更好;其次使用SAE的改进结构BN-SSAE,通过改变内部网络结构提高特征学习的能力,对特征维度高样本的特征提取效果更好。因此,本文提出ACGAN与BN-SSAE相结合的方法,增强工业入侵检测的效果。
本文以ACGAN、BN-SSAE和MLP为基础,建立工业入侵检测模型,如图1所示。模型主要由数据分析及预处理、数据增强、特征提取、分类器组成。模型主要分为四个模块,通过模块化设计使模型调参变得简单,同时模块之间各司其职,使模型具有良好的扩展性和应用性。模型的主要工作流程,首先输入ICN原始数据,然后经过四个模块处理,最后输出检测结果。
图1 工业入侵检测模型
ICN原始数据不能直接用于入侵检测研究,在此之前需要对原始数据进行分析及预处理。
假设ICN原始数据Xraw={x1,x2,…,xn,y},其中:{x1,x2,…,xn}表示数据n个特征;y是标签值。
连续型特征min-max归一化,即:
(1)
在ICN数据中经常出现由于某些攻击类别样本较少而导致的样本不平衡问题,这严重影响了模型对不平衡类别的检测能力。本文提出一种ACGAN[16]数据增强算法。通过将生成不平衡类别的样本加到数据中,使样本分布更加合理,提高模型对少数类别的检测能力。需要注意的是,不能过度地增加样本,否则会导致模型过拟合。本文的ACGAN结构如图2所示。
图2 ACGAN结构
ACGAN基本网络结构由数据输入层、噪声输入层、生成器网络、判别器网络和输出层构成。本文设计的ACGAN中生成器网络和判别器网络都是MLP构成,包含输入层、隐藏层和输出层,MLP结构简单收敛速度快,可以很好地实现生成器网络和判别器网络的功能。
h1=f1([z,y′]·w1+b1)
(2)
xfake=f2(h1·w2+b2)
(3)
式中:f1为非线性激活函数ReLU;f2为非线性激活函数Sigmoid;w1、w2为权重矩阵;b1、b2为偏置向量。
将真数据xreal与假数据xfake输入判别器D,判别数据来源的真假(real或fake)和数据类型y1,y2,…,yn。在判别器网络中,输入真数据xreal时:
h2=f3(xreal·w3+b3)
(4)
sreal=f4(h2·w4+b4)
(5)
yreal=h2·w5+b5
(6)
输入假数据xfake时:
h3=f3(xfake·w3+b3)
(7)
sfake=f4(h3·w4+b4)
(8)
yreal=h3·w5+b5
(9)
式中:f3为非线性激活函数ReLU;f4为非线性激活函数Sigmoid;w3、w4、w5为权重矩阵;b3、b4、b5为偏置向量。
损失函数包含真假数据来源(S)判别损失和样本标签(Y)判别损失。真假来源采用对数损失函数,如式(10)和式(11)所示;样本标签采用多分类交叉熵损失函数,如式(12)和式(13)所示。
L1=-Elog(1-sfake)
(10)
L2=-Elogsreal
(11)
(12)
(13)
生成器G损失函数为LG=L1+L3;判别器D损失函数为LD=L1+L2+L3+L4。
生成器G通过对LG的优化,提高“造假能力”,判别器D通过对LD的优化,提高“判别能力”,G和D通过互相博弈,不断调节生成器和判别器网络参数,最终达到一种稳定平衡状态,输出数据X″。
ICN数据由于特征维度较高导致提取重要特征难度大,直接影响模型最终检测效果。本文提出一种SSAE算法,对数据逐层降维,深层次特征提取,提高模型的检测能力。本文设计的BN-SSAE由三个正则化稀疏自编码器(Batch Normalization Sparse Auto-Encoder,BN-SAE)[17]构成,单个BN-SAE由Input层、Dropout层、Encode层、BatchNormalization(BN)层、Decode层和Output层组成。
n=f(m)=s(m·w+p)
(14)
式中:f是编码函数;s是非线性激活函数ReLU;w是权重矩阵;p是偏置向量。
在BN层中,对该层的数据批归一化,通过引入可学习重构参数λ、γ,加快神经网络收敛速度,防止梯度消失和爆炸,即:
(15)
在Decode层中:
(16)
式中:g是解码函数;s是非线性激活函数ReLU;wT是Encode层w权重矩阵的转置;q是偏置向量。
单个BN-SAE代价函数包括重构损失和稀疏损失,即:
JBN-SAE(θ)=JMSE(θ)+Jsparse(θ)
(17)
重构损失采用均方差损失函数,即:
(18)
(19)
单个BN-SAE的代价函数为:
(20)
式中:β为权重系数,用来控制稀疏约束项。
单个BN-SAE的特征提取能力不足,表达能力有限。为了使模型的学习能力更强,将三个BN-SAE上下级联形成栈式结构,栈式BN-SAE结构如图3所示。采用逐层贪婪法进行无监督预训练,保存预训练过程中三个BN-SAE中BN层和Encode层权重矩阵,将权重矩阵传递给重新构建的BN-SSAE结构如图4所示,再对BN-SSAE整体参数进行微调,得到最佳结构。通过对三个BN-SAE代价函数的优化来实现对整个BN-SSAE的优化。
图3 栈式BN-SAE结构
图4 BN-SSAE结构
y=fdence(Wdence·n+bdence)
(21)
(22)
式中:Wdence为全连接层权重矩阵;bdence为偏置向量;fdence为非线性激活函数ReLU;yi为全连接输出特征的第i维;P(yi)为预测类别i的概率,0≤P(yi)≤1。
入侵检测模型的评价指标主要有模型的准确率(Accuracy,ACC)、漏报率(FNR)和误报率(FPR),以及各个类别的精确率(Precisione,P)、召回率(Recall,R)和F1值(F1-measure),计算公式如下:
(23)
(24)
(25)
(26)
(27)
(28)
式中:TP表示正确识别的攻击类别数目;FN表示漏报即未正确识别攻击类别的数目;FP表示误报即错误识别正常类别的数目;TN表示正确识别的正常类别数目。
使用密西西比州立大学天然气管道控制系统数据集[18]进行实验,数据集包括1种正常数据和7种攻击数据,数据集描述如表1所示。
表1 数据集描述
数据集26个特征包括4个离散型特征和22个连续型特征。离散型特征包括control_mode、control_scheme、pump、solenoid,对4个离散型特征进行One-Hot编码。离散型特征包括command_address、response_address等,对22个连续型特征进行min-max归一化,对8个标签值One-Hot编码。经过预处理以后,特征31维,标签8维。
根据表1可以看出,该原始数据集中存在数据不平衡的问题,攻击样本MSCI、MFCI的数量远少于其他样本的数量,在这种情况下用于训练分类器模型,模型很大程度会偏向多少类,忽略少数类,导致模型的泛化能力不强。因此本文使用ACGAN数据增强算法对少数类样本进行过采样,多数类样本降采样,生成平衡数据集。根据需求对生成平衡数据集的样本进行随机采样,将生成样本适当地加入到原始数据集,不能过度增加样本防止模型过拟合。
ACGAN参数设置,随机初始化噪声维度noise_dim为100,一次迭代输入模型的样本数目batch_size为1 000,全部样本训练次数num_epochs为100,保留神经元的概率keep_prob为0.9,初始化学习率init_lr为0.001。绘制训练过程中生成器G和判别器D的损失函数曲线如图5所示。
图5 G和D损失函数
可以看出,生成器G和判别器D通过互相博弈,达到了一种稳定平衡状态,生成平衡数据集如表2所示。在平衡数据集中随机采样500个MSCI和500个MFCI样本加入原始数据集,ACGAN前后结果对比如表3所示。
表2 平衡数据集
表3 ACGAN前后对比
在保证数据集中各类样本比例情况下,将ACGAN前后的数据集分别划分9份作为训练集和1份作为测试集。
数据预处理以后特征属性31维、标签值8维。特征维度较高,直接用于分类很可能导致模型检测效果较差。尤其在某些数据集中,不同的攻击样本相似度高,浅层次的特征提取直接导致相似样本无法被区分,本文使用BN-SSAE模型进行深层次特征提取,对数据降维。可以通过设置神经元数目unit来确定提取特征的维度,如表4所示。
表4 参数设置
将ACGAN前数据集划分的训练集和测试集,按照上述参数设置,开始逐层进行无监督的预训练,预训练过程中三个BN-SAE损失函数如图6所示。
图6 损失函数
可以看出,三个BN-SAE的误差代价函数图像均收敛于0.1以下,已经达到深层次特征提取的作用。
2.5.1不同的BN-SSAE结构实验结果对比
对ACGAN前的数据集,使用不同的BN-SSAE结构进行特征提取,再使用MLP分类器进行分类,对比不同的BN-SSAE结构对检测结果的影响。
MLP参数设置,第一层神经元数目unit为32,激活函数ReLU;第二层dropout为0.3;第三层神经元数目unit为8,激活函数Softmax;分类损失函数categorical_crossentropy,优化器函数optimizer为Adam,初始化学习率lr为0.001,一次输入模型的样本数目batch size为500,epoch为100。
BN-SSAE设置不同神经元数目unit以及稀疏系数ρ,其他参数不变。不同SSAE结构和MLP分类器结合,实验结果对比如表5所示。
表5 不同BN-SSAE模型实验结果对比
上述实验结果表明,当特征降到14维时,训练集和测试的ACC都达到最高。随着维度变低或变低,模型检测结果都没有变得更好。因此可以确定最佳BN-SSAE模型结构为[31,20,14],ρ=0.04。
2.5.2ACGAN前后实验结果对比
使用最佳BN-SSAE模型结构和已经确定好的MLP参数,对ACGAN前后的数据集进行检测,实验结果对比如表6所示。
表6 ACGAN前后实验结果对比(%)
可以看出,ACGAN后训练集ACC提高0.22百分点,测试集ACC提高0.38百分点;误报率FPR降低0.471百分点,漏报率FNR降低0.017百分点。ACGAN对于提高模型的检测精度、降低误报率和漏报率效果明显。ACGAN前后各种样本类型评价指标对比如图7所示。
图7 ACGAN前后样本类型评价指标对比
可以看出,MSCI和MFCI在ACGAN后,召回率R和F1值均有所提高,ACGAN对不平衡样本具有数据增强效果。
2.5.3 不同的机器学习入侵检测模型
在入侵检测中,比较常用的机器学习算法包括决策树(Decision Tree,DT)、随机森林(Random Forest,RF)、朴素贝叶斯(Naive Bayes,NB)、支持向量机(Support Vector Machine,SVM)、K最近邻(K-Nearest Neighbor,KNN)。 使用这些常用算法建立入侵检测模型,对密西西比州立大学数据集进行检测,不同机器学习模型检测结果对比如表7所示。
表7 检测结果对比(%)
表8 误报率、漏报率对比(%)
可以看出,传统的机器学习模型在检测结果上面相对本文的深度神经网络模型还略有不足,KNN表现最好,训练集ACC达到95.41%,测试集ACC达到95.16%。在未进行ACGAN数据增强的情况下,使用BN-SSAE与MLP结合对数据集进行检测,检测结果相对于目前表现最好的机器学习模型,训练集ACC提高3.57百分点,测试集ACC提高3.60百分点,这足以证明本文设计的BN-SSAE深层次特征提取能非常有效地提高分类器性能。为了能够展现本文设计的入侵检测模型的优越性,对模型的多种评价指标进行综合对比。以机器学习模型表现最好的KNN为例子与本文模型进行对比,结果如图8所示。
图8 样本类型评价指标对比
可以看出,KNN算法对NMRI、MSCI和MFCI的检测效果不好。MSCI和MFCI两类主要是由于数据不平衡导致召回率R和F1值比较低,NMRI在这里并不能直观地看出问题所在,但是通过对原始数据进行分析以后问题就显而易见了,因为NMRI相对于其他攻击类型特征值不明显,与其他攻击类型相似,机器学习浅层次的特征提取导致检测效果差。相比之下,本文的入侵检测模型无论是在不平衡样本的处理上,还是在特征值不明显的攻击样本的特征提取上,都达到非常好的效果。
可以看出,KNN算法检测结果的误报率FPR、漏报率FNR都偏高,没有达到入侵检测的要求。
实验使用最新公开的加拿大网络安全研究所的CICIDS2017入侵检测数据集[19]验证模型可行性和有效性,数据集包括1种正常数据和14种最新攻击数据,共有84个特征属性和1个标签。攻击类型包括暴力破解、端口扫描、各类DoS/DDoS、Heartbleed、Web攻击、渗透和僵尸网络等。数据集存在样本高度不平衡的问题,最多类别样本可达几十万,最少类别样本仅为11个。相比于密西西比州立大学数据集,该数据集特征属性更多、攻击类型更多、样本更不平衡,使用该数据集验证模型更能体现模型性能。
按照本文入侵检测模型的实现步骤,首先对CICIDS2017数据集进行分析及预处理,其次使用ACGAN进行数据增强,然后使用BN-SSAE深层次特征提取,最后通过MLP网络输出检测结果。
ACGAN前后数据集对比如表9所示。
表9 ACGAN前后数据集对比
ACGAN前后实验结果对比如表10所示。
表10 ACGAN前后结果对比(%)
可以看出,ACGAN前训练集ACC、测试集ACC、误报率FPR和漏报率FNR均已经达到入侵检测的要求,证明BN-SSAE特征提取的作用非常明显。ACGAN后训练集ACC提高0.07百分点,测试集ACC提高0.06百分点;误报率FPR降低0.04百分点,漏报率FNR降低0.09百分点,检测能力也有小幅度提高,但是在这里ACGAN前后的变化并不明显,主要是由于该数据样本数目庞大,实验过程中也没有破坏原始的数据分布,只是增加少数不平衡样本,提高模型对不平衡样本的检测能力。再对ACGAN前后各种样本类型评价指标进行综合对比,结果如图9所示(其中0-14表示15种类型的标签值)。
图9 各种样本类型评价指标对比
由图9可以更明显地看出,标签值为8、9、13和14的四种攻击类型在ACGAN后,精确度P、召回率R和F1值都有大幅度提高,ACGAN对少数类样本的数据增强效果非常明显。
针对日趋严峻的ICN安全问题,本文提出以ACGAN、BN-SSAE和MLP为基础建立工业入侵检测模型。使用密西西比州立大学数据集进行实验,结果表明本文模型相对于传统的机器学习模型,对ICN多种攻击类别的精确率P、召回率R和F1值都更高,而且模型最终准确率更高(99.14%),误报率更低(0.599%),漏报率更低(0.583%),多种评价指标综合表明本文模型性能较好,符合工业入侵检测的要求。利用加拿大网络安全研究所的CICIDS2017数据集进行验证,该数据集相比密西西比州立大学数据集,数据维度更高,攻击类型更多,样本更不平衡,导致检测难度大得多,但是多种评价指标表明模型仍然有较好的检测效果,尤其是对少数类样本的检测能力十分优秀,这也让入侵检测过程中的少数类样本更加具有研究意义,证明该模型在工业入侵检测中具有可行性和有效性。
本文提出ACGAN数据增强和BN-SSAE深层次特征提取,解决了在工业入侵检测过程中ICN数据存在的问题,提高了工业入侵检测效果,为ICN安全防护技术拓宽了研究思路并提供了技术支撑。