时间:2024-05-04
陈土生
(广东工业大学计算机学院,广州 510006)
SCADA(Supervisory Control And Data Acquisition,数据采集与监控系统)系统广泛应用于电力、天然气、水利和石油石化等重要行业,实现监视控制和数据采集功能,从而保障系统的正常运作[1]。以前SCADA系统使用专有的通信机制和协议,与外部公共网络是隔离的,这保障了它的安全性;如今,为了提高资源配置和生产的效率,SCADA系统开始接入因特网,安全问题也随之产生[2]。例如:2010年,伊朗核电站因为Stuxnet蠕虫病毒的感染推迟了发电[3];2011年出现了一种潜伏在工控系统中的Duqu病毒,目的是窃取数据信息和获取远程接入权限[4];2012年,黑客攻击者利用Flame病毒攻击SCADA系统,以实现对其远程操控,严重危害了系统安全[5];2014年出现的Havex病毒可以通过邮件和钓鱼等方式攻击工控系统[6]。面对工控网络安全事件的频繁出现,工业控制系统入侵检测技术成为了国内外研究的热点。
传统机器学习算法被应用在入侵检测中并取得了一定的成果,但是多属于浅层学习,在真实的工业环境中,连续工作的控制系统会产生大量、高维、非线性、时序性强的数据,使得传统的浅层学习方法存在局限性[7]。例如,SCADA网络数据噪声的存在,使得决策树[8]容易出现过拟合,导致分类精度下降;支持向量机(SVM)[9-11]在处理大量数据时需要消耗大量的计算资源;人工神经网络(NN)[12-13]需要训练的参数多且无法表示数据在时间上的关系。因此,面对SCADA网络中大量复杂数据的分类问题,基于传统浅层机器学习的异常流量检测方法不能有效处理。相对的,深度学习可通过深层非线性网络结构充分学习数据的特征,能够解决海量高维数据的分析问题。深度学习的理念在2006年由Hinton等首次提出[14],目前在过程建模[15]、图像分类[16]和语音识别[17]等领域获得了很好的成果。近年来,深度学习被应用到入侵领域。Tang等人[18]利用深层神经网络(Deep Neural Network,DNN)对 NSL-KDD 数据集进行分类,在仅仅使用六个基本特征的情况下就达到了较好的分类效果。Yin等人[7]提出了RNN入侵检测模型,但标准RNN存在梯度消失的问题,且对时间信息的记忆能力不足。於帮兵等人[19]将长短时记忆网络(Long Short Term Memory,LSTM)应用到了工控入侵检测,改善了RNN梯度消失和时间记忆能力不足的问题,但是LSTM神经网络需要训练的参数较多,时间复杂度较大。
本文提出了一种基于Adam优化GRU神经网络的SCADA系统入侵检测方法,其能够通过GRU神经网络深层结构对数据特征充分学习,利用更新门和重置门来保存数据在时间维度上的信息,解决了RNN梯度消失和记忆能力不足等问题,同时相对于LSTM减少了训练参数的个数,降低了时间复杂度,并使用Adam算法优化了神经网络的梯度训练过程,减少了训练时间。本文使用密西西比州立大学提出的SCADA系统标准数据集[20]对Adam优化的GRU模型进行实验验证。为了解决原始的SCADA系统标准数据集中不同的特征间最值差异过大的问题,使用归一化方法进行预处理,然后通过多次实验调整GRU模型的参数得到较优模型。最后把本文模型与 DNN[18]、SVM[10]、NN[12]等传统机器学习方法和含有时间尺度的RNN[7]、LSTM[19]方法进行对比实验,结果表明本文提出的算法可以更有效地处理SCADA系统入侵检测问题。
RMSProp(Root Mean Square Prop)算法[21]是 Geoffrey E.Hinton提出的一种优化算法,该算法对权重矩阵W和偏置矩阵b的梯度使用了微分平方加权平均数,相对于Momentum算法进一步优化了参数在更新过程中变化范围过大的问题,并且进一步加快成本函数的收敛速度。假设在第t轮迭代过程中,RMSProp算法更新公式可以表示为:
其中,sdw和sdb分别是成本函数在前t-1轮迭代过程中累积的梯度和梯度动量,W和b分别为权值矩阵和偏置矩阵,α为学习率,β为梯度累积参数,ϵ为一个很小的数值,为了防止分母为零,一般为10-8。
原始RNN的隐藏层只有一个状态,只能记忆近期的输入。为了解决该问题,Hochreiter和Schmidhuber[22]提出了长短时记忆网络LSTM,添加了单元状态(Cell State)c来保存长期的状态,如图1所示。
图1 RNN与LSTM隐藏状态对比图
LSTM使用“门”(Gate)来实现遗忘或记忆的功能。门实际是一个全连接层,由一个sigmoid函数和矩阵点乘操作组成。它的输入是一个向量,输出是一个0到1之间的实数向量。其中0代表完全丢弃,1代表完全通过。一个LSTM记忆单元由遗忘门(Forget Gate)、输入门(Input Gate)和输出门(Output Gate)组成。其中遗忘门控制上一时间步单元状态的保留程度;输入门决定当前时间步的输入保存到单元状态的程度;单元状态到记忆单元的最终输出值则由输出门决定。通过这种方法,当误差沿时间和上一层进行反向传递时,会被保持为更加恒定的水平,从而解决了梯度消失和梯度爆炸的问题。图3显示了LSTM记忆单元的基本构造。上一时间步的输出和单元状态,[· , ·]为矩阵拼接运算,Wf、Wi、Wc、Wo为权值矩阵,σ为sigmoid激活函数,可以得到遗忘门ft、输入门it、输出门ot、输入候选矩阵C't分别为:
图2 LSTM记忆单元逻辑图
图2中,xt为t时刻的输入,ht-1和Ct-1分别为为
至此,已经有了遗忘门ft,用来控制上一时间步输出被遗忘的程度;输入门it,用来控制新信息被加入的多少和输入候选矩阵C't,可以使用下面公式更新记忆单元的单元状态:
最后,先利用tanh函数将单元状态Ct激活,输出门ot控制单元状态Ct被过滤的程度,从而得到最终输出ht。
文献[18]将LSTM应用到了工控入侵检测,并在工控标准数据集上验证了其分类准确率高于基于RNN入侵检测方法。
原始的SCADA系统标准数据集中不同特征具有不同的量纲和取值范围,为了消除特征之间的量纲影响,需要对数据进行归一化处理。本文采用Min-Max标准化,对原始数据进行线性变换,使得结果值映射到[0,1]之间。转换函数如下:
其中,max(x)和min(x)分别为样本特征的最大值和最小值。
GRU神经网络是LSTM的一个改进,它在保持LSTM的效果同时精简了结构,减少了训练参数的数量,降低了时间复杂度。LSTM的记忆模块的结构比较复杂,它实现了三个门计算,即遗忘门、输入门和输出门;而GRU只使用了两个门,分别为更新门(Update Gate)和重置门(Reset Gate),即图 3 的zt和rt,更新门用来控制前一时间步的状态信息被带入到当前状态中的程度,重置门用于控制忽略前一时间步的状态信息的程度。
图3 GRU记忆单元逻辑图
图3中,xt为t时刻的输入,ht-1为上一时间步的输出,可以得到记忆单元输出ht的迭代计算公式为:
其中,Wr、Wz、Wh'为权值矩阵,zt和rt分别为更新们和重置们输出,h't为输入候选矩阵。
另外,为了加快权值矩阵的训练,梯度训练算法采用文献[23]中的Adam算法。该算法充分利用了梯度的一阶矩估计(First Moment Estimation)和二阶矩估计(Second Moment Estimation),把 AdaGrad[24]算法和 RMSPro算法的优点结合了起来,使得梯度更新的计算更加高效,对内存需求更少,而且参数的更新不受梯度的伸缩变换影响,适用于大量数据及高维特征参数的场景,而且能够解决梯度稀疏或梯度噪声大的问题。其算法原理可以表示为:
其中,mt和vt分别为一阶动量项和二阶动量项,β1和β2分别为一阶矩估计和二阶矩估计的指数衰减率,一般分别取0.9和0.999,m't和v't分别为各自的修正值。Wt表示第t时间步的权值矩阵,gt表示第t时间步代价函数对于权值矩阵的梯度大小;α为学习率,ϵ是一个取值很小的数(一般为1e-8),目的是避免分母为0。
基于GRU设计的工控入侵检测算法整体流程如图4所示。
本文采用的数据集为天然气管道数据采集与监控系统的网络层数据,是密西西比州立大学于2014年提出的SCADA系统入侵检测标准数据集。数据集包含正常数据和7种不同攻击类型的数据,经过了数值化处理后,每一条数据包含了1个类别标签和26个特征(命令地址、响应地址、时间等)。表1表示了数据类别和标签的对应关系。
表1数据描述
实验的训练集包含了4000条数据,测试集为1000条数据,在5折交叉验证意义下进行分类效果评价。本文实验的仿真平台为:Win10 64位操作系统,Intel i3-3120M CPU 2.50GHz,8GB内存,使用Keras深度学习框架(不使用GPU加速)。实验参数:隐藏层为1层,输入层和输出层向量维度分别为26和8,时间序列长度为200,梯度训练算法使用Adam算法,最大迭代次数epoch取100,每批次样本数为200,学习率α初始值为0.001,在每个epoch中使用公式(22)更新学习率,一阶矩估计和二阶矩估计的指数衰减率β1和β2分别取0.99和0.999;为了获取最优模型,隐藏层单元个数选取20、50、80、100分别进行实验。
准确率ACC、召回率TPR和误报率FPR是工控入侵检测算法的典型评价指标。表2为混淆矩阵,其中TP表示正确识别为攻击类的样本数,FP为错误识别为攻击类的样本数,TN为正确识别为正常类的样本数,FN为错误识别为正常类的样本数,由定义可以得到准确率ACC、召回率TPR和误报率FPR的公式为:
表2混淆矩阵
(1)基于GRU神经网络的SCADA系统入侵检测模型
为了确定GRU神经网络隐藏层的节点数,本文进行了多组对比实验,根据准确率ACC、召回率TPR、误报率FPR和训练时间来找出分类效果最佳的参数。表3为实验结果,故当选取隐藏层节点为80时,分类准确度为相对最优的。
表3不同隐藏层节点下的效果
(2)对比实验结果分析
为了验证GRU神经网络模型在SCADA系统入侵检测领域的优越性,本文首先和具有时间尺度的RNN和LSTM进行对比实验。另外,为了更加全面地考察本文算法在解决工控入侵检测问题的效果,对不具有时间尺度的传统机器学习算法,如:SVM、决策树C4.5、ANN和DNN也进行了仿真实验。最后在准确率、召回率、误报率和训练时间下进行比较,结果如表4所示。
表4不同算法的分类结果
从表4可以看出,GRU与LSTM的准确率相差无几,但是训练时间明显少于LSTM,这是因为GRU比LSTM少了一个Gate,减少了矩阵乘法运算,当训练集很大时GRU将会节省很多时间。另外,GRU的准确率明显高于RNN,因为当记忆的时间步较大时,RNN存在梯度消失或梯度爆炸的问题,导致其时间记忆能力有限。同时,从表4可以看到,与不具有时间尺度的算法相比,GRU的效果最好,准确率明显大于C4.5、SVM和NN等传统浅层机器学习算法,其中C4.5、SVM和NN的召回率相对较低,对攻击类型数据的识别能力较差;DNN的准确率接近GRU,但是其对攻击数据的识别能力相对较差,召回率明显小于GRU。上述算法对各种类别数据的准确率如图5所示,可以看出GRU在各种类别数据上的准确率都较高,尤其是DoS(拒绝服务攻击)和NMRI(简单恶意响应注入攻击)的分类效果明显好于其他算法;另外,全部算法对MFCI(恶意功能命令注入攻击)的检测效果都较差,但是对正常数据、MPCI(恶意参数命令注入攻击)和RECO(侦查攻击)的分类准确率都很高。
图5正常数据及各类攻击数据检测结果
面对SCADA系统中大量、高纬度、时序性强的网络流量数据,传统的机器学习算法,如决策树、SVM、NN等不能有效地提取数据的特征信息,为此,本文提出了基于Adam优化GRU神经网络的SCADA系统入侵方法,利用GRU神经网络的深层结构对数据特征进行充分学习,使用更新门和重置们来保存数据在时间维度上的信息,解决了RNN时间记忆能力有限的问题,同时相对于LSTM简化了记忆单元结构,在保持效果的同时减少了计算量,缩减了训练时间,并使用Adam算法优化了神经网络的梯度训练过程,最后通过实验构了相对最优的模型,和同样具有时间尺度的LSTM、RNN以及C4.5、SVM、NN和DNN等传统机器学习算法进行对比实验,从总体检测效果(准确率、召回率、误报率、平均训练时间)和不同类别数据检测效果两个方面进行了分析。结果表明本文方法的效果最好,总体分类准确率明显大于C4.5、SVM和NN等传统浅层机器学习算法和RNN,和LSTM准确率基本相同但大幅度减少了训练时间,另外本文方法在各种类别数据上的分类准确率都较高,尤其是DoS和NMRI的分类效果明显好于其他算法。因此基于Adam优化的GRU神经网络入侵检测方法非常适用于海量高维时序性强的工控数据的入侵检测问题,为SCADA系统的入侵检测提供了一种新的方法。
我们致力于保护作者版权,注重分享,被刊用文章因无法核实真实出处,未能及时与作者取得联系,或有版权异议的,请联系管理员,我们会立即处理! 部分文章是来自各大过期杂志,内容仅供学习参考,不准确地方联系删除处理!