0 引言
随着工业控制系统网络化与信息化的发展,工控系统越来越多地使用公开的软件和标准化的协议,使得系统现有的安全漏洞不断被利用,工控系统面临着越来越多的信息安全问题[1]. 2010年震网(Stuxnet)病毒和2015年BlackEnergy病毒[2]事件更是敲响了工控信息安全的警钟.传统的工控安全技术,如用户认证、防火墙和数据加密等已无法应对不断革新的网络攻击[3].入侵检测技术作为工控信息安全的第二道防线,已成为国内外研究的热点.入侵检测技术是提取反映系统行为的数据特征,通过设计的检测算法对攻击行为和正常行为数据进行分类[4].各种传统机器学习方法,如决策树(decision tree,DT)[5]、支持向量机(support vector machine,SVM)[6-7]、神经网络(artificial neural network,ANN)[8]等在工控入侵检测中都取得一定效果.
传统的机器学习方法多数属于浅层学习,在真实的工业网络环境中,连续生产的控制网络会产生海量的高维、非线性数据,传统的浅层学习方法应用在复杂连续的工控系统环境中存在一定局限性,如每秒产生的流量数据存在大量噪声,决策树存在着在噪声的情况下容易出现过拟合、影响分类精度等缺点;支持向量机在处理海量样本数据时将耗费大量的计算机系统资源;浅层神经网络参数多且结构不易确定,对样本数据依赖性大,无法准确构建能够映射特征与类别关系的复杂函数.因此应用在异常流量检测中的传统方法无法有效解决海量复杂的数据分类问题[9].相反,深度学习能够通过其深层结构对数据特征充分学习,在海量高维数据分析方面有突出的表现. 2006年,Hinton教授提出的深度学习理念[10],掀起了深度学习和人工智能的热潮,在语音识别[11]、图像分类[12]、过程建模[13]等领域取得了突破性进展.近年来,一些研究者将深度学习应用到入侵检测领域,Tang等[14]提出了深层的神经网络(deep neural network,DNN)模型,仅使用NSL-KDD数据集中6个基本特征就可以达到较好的分类效果. Javaid等[15]提出了一种基于稀疏自编码网络(sparse auto ecoder,SAE)的入侵检测方法,采用SAE对原始数据集进行特征降维,然后使用softmax分类器分类,取得了较高的分类精度,但是该方法的侧重点是将深度学习应用到特征降维上,而并没有实际应用到分类中. Sheikhan等[16]提出一种3层递归神经网络(recurrent neural networks,RNN)模型,两隐含层间的节点根据特征分组进行局部关联,极大地减小了模型规模,同时也提高了分类精度. Yin等[17]将RNN应用到入侵检测中,对网络数据集进行二分类和多分类,但标准RNN存在梯度消失的问题,且对过去时间信息的记忆能力不足.
基于以上分析,本文提出一种基于长短时记忆网络[18](long short term memory,LSTM)的工控入侵检测方法. LSTM对传统RNN模型做了改进,能够避免梯度消失和记忆能力不足等问题.本文应用密西西比州立大学关键基础设施保护中心提出的天然气管道数据采集与监控系统(supervisory control and data acquisition,SCADA)标准数据集[19]对LSTM模型进行实验验证.由于原始数据集存在最大最小值差异大的问题,并且其中恶意功能命令注入攻击(malicious function command injection,MFCI)类别少,故首先采用文[20]中的SMOTE方法和MaxMin归一化方法对数据预处理.然后通过多次实验调节LSTM模型的隐含层节点数和学习率,得到较优的模型.最后将LSTM深度学习模型与SVM、ANN、DNN等传统机器学习方法和含有时间尺度的RNN方法进行对比实验,结果表明所提算法可有效处理工控系统入侵检测问题.
1 本文算法 1.1 数据预处理方法由于原始工控标准数据集中的恶意功能命令注入攻击类别数据量极少,产生对该类别分类困难的问题.本文采用标准SMOTE算法[20]合成该类别数据. SMOTE算法通过过采样技术合成少数样本类,经过实验验证,相对于欠采样技术带来的重要信息丢失问题具有更大的优势,目前标准SMOTE算法已成功应用在医学、工业和交通等领域. SMOTE算法过程为:对少数类中每一个样本x,以欧氏距离为标准找到其k个近邻,设采样倍率为n(n≤k),则从k个近邻中随机选取n个样本y1,y2,…,yn,对每个yi(i=1,2,…,n),按照式(1)构建新样本xnew:
(1) |
其中,rand是[0, 1]的随机数.
图 1所示为采样倍率设置为4时,根据SMOTE算法原理进行合成的示意图,其中xi为选定样本,xi1~xi4为xi的4个近邻,S1~S4是合成的4个新样本.
对新的数据样本采用MinMax归一化方法,将结果值映射到[0, 1]之间:
(2) |
其中,xmax和xmin分别为样本数据的最大值和最小值.
1.2 深度学习算法模型 1.2.1 递归神经网络递归神经网络包括输入层、输出层和隐藏层,与前馈神经网络不同的是,隐藏层的输出不仅与当前时间步的输入有关,还与上一时间步的隐藏层输出有关.这一性质使得RNN具有对过去信息的记忆能力,信息可以在网络内部循环任意长的时间t.如图 2所示,通过展开操作,可以将RNN模型展开为t维,在每一个时间步中都有相同的网络结构,当前层网络结构的隐藏层输出由上一层隐藏层输出和当前输入进行线型组合,再通过非线性激活函数进行转换. 图 2中,U、W、V分别为输入层到隐藏层的权重矩阵、隐藏层到隐藏层的权重矩阵、隐藏层到输出层的权重矩阵,xt和ot分别为当前时间步的输入与输出.
图 3是标准RNN在每一个时间步的网络结构. xt是RNN的输入层,中间部分St是隐藏层,ot是输出层,变量U、W、V含义与图 2一致,RNN的这种以时间循环处理信息的机制使得过去的信息不断被积累,存储在隐藏层中,影响着每一个新输入数据的处理.
前向传递过程:记输入时间序列为X={x0,x1,…,xT},隐藏层序列为S={s0,s1,…,sT},通过迭代公式计算输出层序列O={o0,o1,…,oT}:
(3) |
(4) |
式中,U、W、V分别为输入层到隐藏层的权重矩阵、隐藏层到隐藏层的权重矩阵、隐藏层到输出层的权重矩阵,bs、bo是偏置;xt是第t时间步的输入数据,与过去的历史数据st-1结合产生当前隐藏层st,经过softmax激活函数产生当前时间步的输出ot.
反向传递过程:RNN采用时间反向传播(backpropagation through time,BPTT)来训练参数.其基本原理是叠加每个时间步的参数梯度来更新参数,损失函数是计算每个时间步的输出层数据交叉熵,在第t层,其损失函数为
(5) |
其中,ot是预测输出向量,yt是真实输出向量,r表示输出层第r个神经元.
在每一代的迭代中,通过式(6)来更新参数矩阵:
(6) |
其中,η是学习率,时间步t=0,1,…,T.
1.2.2 LSTMLSTM模型是RNN模型的一个改进版本,整体结构与RNN基本一致,但隐藏层的设计更复杂,隐藏层的核心是一种叫做记忆块(memory block)的信息流,它负责把记忆信息从序列的初始位置传递到序列的末端.记忆块主要由输入门、输出门和遗忘门和自连接的记忆细胞组成,输入门决定了当前时刻有多少输入信息添加到记忆信息流中,输出门决定了有多少记忆信息将被用于下一阶段的更新中,遗忘门控制记忆细胞内部的循环状态,决定记忆细胞中信息的取舍. LSTM的这种门控机制使误差保持更为恒定的水平,用于沿时间和层进行反向传递,避免了梯度消失和梯度爆炸的问题.
LSTM的基本结构单元如图 4所示.
已知输入为xt,LSTM隐藏层的输出st的迭代计算公式为
(7) |
(8) |
(9) |
(10) |
(11) |
(12) |
式中,i、f、o和c分别表示输入门、忘记门、输出门和记忆细胞的输出,
基于LSTM设计的工控入侵检测算法整体流程如图 5所示.
2 仿真研究 2.1 工控入侵检测数据集本文采用由密西西比州立大学于2014年提出的工控入侵检测标准数据集[19],数据源为天然气管道控制系统的网络层数据.数据经过数值化的处理,数据可以分为8类,包含7种不同类别的攻击数据和正常数据. X=(x1,x2,…,xn,y)代表数据集中的一条数据,其中x1,x2,…,xn为每条数据的特征,y为每条数据的类别标签.本文所用的数据集在共包含IP地址、报文长度、功能码等26个特征和1个类别标签.数据的攻击类别与相应的类别标签如表 1所示.
攻击形式 | 标签值 | 描述 |
Normal | 1 | 正常数据 |
NMRI | 2 | 简单的恶意响应注入攻击 |
CMRI | 3 | 复杂的恶意响应注入攻击 |
MSCI | 4 | 恶意状态命令注入攻击 |
MPCI | 5 | 恶意参数命令注入攻击 |
MFCI | 6 | 恶意功能命令注入攻击 |
DoS | 7 | 拒绝服务攻击 |
RECO | 8 | 侦查攻击 |
实验数据包括4 000条训练数据和1 000条测试数据,在5折交叉验证意义下计算分类的精度.本文算法由基于Python的深度学习框架keras来实现,仿真平台:Intel i7-6500U CPU 2.5 GHz,8 G内存,Win10 64位操作系统,不采用GPU加速.实验参数:输入向量维度为26,输出向量维度为8,时间序列长度T取200,隐藏层结构为1层;为了获取最优的模型,隐藏层单元个数选取20、50、80,学习率选取0.01、0.05、0.1分别进行实验,隐藏层dropout取0.5;最大迭代次数取100,每批次样本数取100.
对于工控入侵检测算法,典型的评价指标主要有准确率ACC、漏报率FNR和误报率FPR[3];表 2为混淆矩阵,其中,TP表示正确识别的攻击类数目,FN表示漏报即未正确识别攻击类的数目,FP表示误报错误识别正常类的数目,TN表示正确识别的正常类数目.由混淆矩阵得到准确率,漏报率和误报率的定义:
(13) |
(14) |
(15) |
由于原始数据集中MFCI类别极少,产生对该类别分类困难的问题,所以采用标准SMOTE算法合成该类别数据,参数选取近邻k=4,采样倍率n=2. 表 3是合成样本数据前后的多次实验结果的平均值,可以看出,SMOTE算法能够明显提高对MFCI攻击的检测率,在漏报率方面,SMOTE算法能够有效提升对攻击数据检测效果,降低分类算法漏报率,提高准确率.
实验 | MFCI样本个数 | MFCI检测率/% | 准确率/% | 误报率/% | 漏报率/% |
合成数据前 | 11 | 58.54 | 96.1 | 2.10 | 3.43 |
合成数据后 | 33 | 79.32 | 97.4 | 2.13 | 2.08 |
为确定LSTM隐藏层节点数hiddens和学习率r,本文通过多组实验,计算分类器的准确率、误报率、漏报率和训练时间,选择分类效果最好的那组作为LSTM模型的参数.实验结果如表 4所示,故当选取隐藏层节点数为50,学习率为0.05时,能获得相对最优的分类准确度.
参数值 | 准确率 /% |
误报率 /% |
漏报率 /% |
平均训练 时间/s |
Hiddens=20,r=0.01 | 96.4 | 1.33 | 4.56 | 14.89 |
Hiddens=20,r=0.05 | 97.2 | 2.87 | 2.77 | 15.03 |
Hiddens=20,r=0.1 | 96.6 | 2.64 | 3.72 | 15.87 |
Hiddens=50,r=0.01 | 97.2 | 1.45 | 4.60 | 18.84 |
Hiddens=50,r=0.05 | 98.3 | 2.37 | 2.69 | 18.81 |
Hiddens=50,r=0.1 | 98.0 | 2.13 | 2.08 | 20.04 |
Hiddens=80,r=0.01 | 97.4 | 2.68 | 3.98 | 26.02 |
Hiddens=80,r=0.05 | 97.3 | 3.12 | 2.52 | 24.24 |
Hiddens=80,r=0.1 | 96.5 | 2.88 | 2.92 | 23.62 |
为了验证LSTM在工控入侵检测领域的优越性,本文首先对基于时间序列的算法RNN和LSTM进行实验,RNN的迭代次数和梯度下降时每批次样本数与LSTM相同,其它参数通过多次组合实验均调整为相对最优,对两种算法的训练迭代过程进行比较,如图 6所示;然后对其它非时间序列的传统机器学习方法,如ANN、SVM、决策树C4.5算法、k近邻(k-nearest neighbor,KNN)、DNN[9]进行仿真实验,从而更加全面考察本文算法在解决工控入侵检测问题中的有效性.最后对上述算法的准确率、误报率、漏报率等方面进行比较,结果如表 5所示.
分类 | 算法 | 准确率/% | 误报率/% | 漏报率/% |
具有时间尺度 | LSTM | 98.3 | 2.17 | 2.69 |
RNN | 95.3 | 2.56 | 2.92 | |
不具有时间尺度 | NN | 94.9 | 2.81 | 3.40 |
C4.5 | 91.3 | 2.82 | 5.36 | |
KNN | 93.1 | 2.10 | 4.22 | |
SVM | 90.6 | 3.63 | 8.70 | |
DNN | 97.4 | 2.03 | 3.22 |
从图 6可以看出,RNN和LSTM算法在第6代后训练曲线均趋于稳定,其中LSTM的训练精度高于RNN的训练精度(相差3%),标准的RNN算法隐藏层仅含有非线性的激励函数.当t较大时,存在梯度消失问题,且RNN的记忆能力仅有10个时间步左右,这使得在训练模型参数时存在较大的误差,这是标准RNN相对于LSTM分类准确度低的主要原因.同时从表 5可以看出,与其它类的分类算法相比,LSTM的分类准确率最高(98.3%),DNN是传统的深层神经网络,其准确率与LSTM接近且误报率仅为2.03%,但是对攻击数据的识别能力差,误报率远高于LSTM;另外,LSTM深度学习算法的分类效果均优于NN、C4.5、KNN和SVM等传统浅层机器学习算法,其中SVM、KNN、C4.5误报率高,对攻击数据的识别能力差.
图 7是上述算法每种攻击类别的检测效果图,可以直观看出LSTM对于每种攻击类型都有较高的分类效果,特别是对NMRI和DoS的分类正确率明显高于其它算法;同时也可以看出,每种算法对MFCI的检测效果均不佳,但是对MPCI和RECO的分类效果最好,分类正确率均接近100%.
图 8是LSTM工控入侵检测模型对测试数据的分类结果与真实类别的对比.从图 8可以直观观察出真实数据和错误分类数据的分布.
3 结论面对工业控制系统中海量、高维的数据样本,传统的浅层机器学习方法无法有效抽取特征中的信息,LSTM是一种深度学习方法,弥补了RNN的缺陷,具有很强的特征学习能力.本文探索了基于LSTM的深度学习方法在工控入侵检测中的应用,首先通过实验构建了相对最优的入侵检测模型,然后与SVM、NN和C4.5等传统机器学习方法及标准RNN进行对比实验,从总体检测效果和不同攻击类别检测效果两个方面进行分析,结果表明LSTM非常适用于海量高维入侵数据分类问题,提高了工控入侵检测正确率,降低了误报率,为工控入侵提供了一种新的研究方法.
[1] |
尚文利, 安攀峰, 万明, 等.
工业控制系统入侵检测技术的研究及发展综述[J]. 计算机应用研究, 2017, 34(2): 328–333.
Shang W L, An P F, Wan M, et al. Research and development overview of intrusion detection technology in industrial control system[J]. Application Research of Computers, 2017, 34(2): 328–333. |
[2] | Yang Y, Xu H Q, Gao L, et al. Multidimensional intrusion detection system for IEC 61850-based SCADA networks[J]. IEEE Transactions on Power Delivery, 2017, 32(2): 1068–1078. DOI:10.1109/TPWRD.2016.2603339 |
[3] | Ambusaidi M A, He X, Nanda P, et al. Building an intrusion detection system using a filter-based feature selection algorithm[J]. IEEE Transactions on Computers, 2016, 65(10): 2986–2998. DOI:10.1109/TC.2016.2519914 |
[4] | Trivedi M. Toward autonomic security for industrial control systems[D]. Mississippi, USA:Mississippi State University, 2015. |
[5] | Beaver J M, Borges-Hink R C, Buckner M A. An evaluation of machine learning methods to detect malicious SCADA communications[C]//International Conference on Machine Learning and Applications. Piscataway, NJ, USA:IEEE, 2013:54-59. |
[6] |
李金乐, 王华忠, 陈冬青.
基于改进蝙蝠算法的工业控制系统入侵检测[J]. 华东理工大学学报:自然科学版, 2017(5): 662–668.
Li J L, Wang H Z, Chen D Q. A study on intrusion detection of industrial control system based on improved bat algorithm[J]. East China University of Science and Technology:Natural Science Edition, 2017(5): 662–668. |
[7] |
尚文利, 李琳, 万明, 等.
基于优化单类支持向量机的工业控制系统入侵检测算法[J]. 信息与控制, 2015, 44(6): 678–684.
Shang W L, Li L, Wan M, et al. Intrusion detection algorithm based on optimized one-class support vector machine for industrial control system[J]. Information and Control, 2015, 44(6): 678–684. |
[8] | Gao W, Morris T, Reaves B, et al. On SCADA control system command and response injection and intrusion detection[C]//Ecrime Researchers Summit. Piscataway, NJ, USA:IEEE, 2010:1-9. |
[9] | Bengio Y. Learning deep architectures for AI[J]. Foundations & Trends in Machine Learning, 2009, 2(1): 1–127. |
[10] | Hinton G E, Salakhutdinov R R. Reducing the dimensionality of data with neural networks[J]. Science, 2006, 313(5786): 504–507. DOI:10.1126/science.1127647 |
[11] | Chen X, Liu X, Wang Y, et al. Efficient training and evaluation of recurrent neural network language models for automatic speech recognition[J]. IEEE/ACM Transactions on Audio Speech & Language Processing, 2016, 24(11): 2146–2157. |
[12] | Yu S, Jia S, Xu C. Convolutional neural networks for hyperspectral image classification[J]. Neurocomputing, 2016. DOI:10.1016/j.neucom.2016.09.010 |
[13] |
李军, 桑桦.
基于SCKF的Elman递归神经网络在软测量建模中的应用[J]. 信息与控制, 2017, 46(3): 342–349.
Li J, Sang H. Elman recurrent neural network method based on SCKF algorithm and its application to soft sensor modeling[J]. Information and Control, 2017, 46(3): 342–349. |
[14] | Tang T A, Mhamdi L, Mclernon D, et al. Deep learning approach for network intrusion detection in software defined networking[C]//International Conference on Wireless Networks and Mobile Communications. Piscataway, NJ, USA:IEEE, 2016. |
[15] | Javaid A, Niyaz Q, Sun W, et al. A deep learning approach for network intrusion detection system[C]//Eai International Conference on Bio-Inspired Information and Communications Technologies. Brussels, Belgium:ICST, 2016:21-26. |
[16] | Sheikhan M, Jadidi Z, Farrokhi A. Intrusion detection using reduced-size RNN based on feature grouping[J]. Neural Computing & Applications, 2012, 21(6): 1185–1190. |
[17] | Yin C, Zhu Y, Fei J, et al. A deep learning approach for intrusion detection using recurrent neural networks[J]. IEEE Access, 2017, 5(99): 21954–21961. |
[18] | Graves A. Long short-term memory[M]. Berlin, Germany: Springer, 2012: 1735-1780. |
[19] | Nader P, Honeine P, Beauseroy P. One-class classification for intrusion detection in scada systems[J]. IEEE Transactions on Industrial Informatics, 2014, 10(4): 2308–2317. DOI:10.1109/TII.2014.2330796 |
[20] | Chawla N V, Bowyer K W, Hall L O, et al. SMOTE:Synthetic minority over-sampling technique[J]. Journal of Artificial Intelligence Research, 2002, 16(1): 321–357. |