APP下载

工控通信行为的自编码特征降维和双轮廓模型异常检测方法

2018-07-27尚文利闫腾飞赵剑明

小型微型计算机系统 2018年7期
关键词:漏报工控编码器

尚文利,闫腾飞,赵剑明,乔 枫,曾 鹏

1(中国科学院 沈阳自动化研究所,沈阳 110016)2(沈阳建筑大学 信息与控制工程学院,沈阳 110168)3(中国科学院大学,北京 100049)4(中国科学院 网络化控制系统重点实验室,沈阳 110016)

1 引 言

现阶段,工业控制系统已广泛应用于电力、轨道交通、石油化工、核设施等行业中,据统计,超过80%涉及国计民生的关键基础设施都依靠工业控制系统来实现自动化作业[1].我国已经将工业控制系统的信息安全上升为国家战略高度,工控安全已经成为“网络安全、设备安全、控制安全、应用安全、数据安全”的综合体.

由于工控系统与传统IT系统之间存在显著差异,故不能将传统IT系统安全技术直接应用于工控系统.工业控制系统目前还存在很多技术隐患.系统缺乏监测手段,无法感知未知设备;工控系统设备存在很多漏洞,RTU/PLC安全隐患突出;网络流量异常,导致设备工作异常等.

边界安全防护主要以防火墙技术与终端安全软件为主,入侵检测技术作为边界安全后的“闸门”,广泛应用于工控系统安全防护中.目前,国内外很多学者对异常检测技术进行了研究与探讨.通过研究发现,以往对异常检测的研究多采用机器学习的方法,其中支持向量机(Support Vector Machine,SVM)在解决小样本、非线性及高维模式识别中特有的优势而广泛应用于异常检测[2,3].文献[4]分析了入侵检测分类算法建立高效检测模型的障碍在于输入数据的不相关性和冗余的特征,提出了一种基于支持向量机的蚁群优化算法,从而过滤冗余和不相关数据,提高基于支持向量机入侵检测算法的高效性.文献[5]提出一种半监督支持向量机,利用在线优化方式及批处理模式中的高效优化技术,使得可以在大规模数据集的情况下具有可行性,可提高异常检测的效率.Kim G[6]提出了一种基于SVM的融合异常检测和误用检测混合入侵检测方法,减少了训练和测试过程的高时间复杂度.

上述工作虽然在一定程度上实现了工控系统的异常检测,但是误报率(非入侵性而异常)和漏报率(入侵性而非异常)依然较高.为提高工控系统异常检测的正确率,降低误报率和漏报率,本文采用单类支持向量机(OCSVM)构建双轮廓模型,通过实时协同判别引擎进行工控系统异常检测,仲裁判决拟考虑误报率和漏报率两个因素,完成异常判定.同时,为防止OCSVM模型由于输入自变量过多而导致的过拟合现象,采用自编码网络对输入自变量进行特征降维,去除冗余,提高OCSVM模型精度,减少建模时间.

2 Modbus TCP通信协议分析及特征提取

传统IT信息系统数据交换协议遵从TCP/IP协议栈,而工控系统采用专用通信协议或规约(Modbus等)直接使用或作为TCP/IP协议的应用层使用.Modbus TCP通信协议是一种已广泛应用于当今工业控制领域的通用通讯协议.通过此协议,控制器相互之间、或控制器经由网络(如以太网)可以和其它设备之间进行通信[7].Modbus协议使用的是主从通讯技术,即由主设备主动查询和操作从设备.一般将主控设备方所使用的协议称为Modbus Master,从设备方使用的协议称为Modbus Slave[8].典型的主设备包括工控机和工业控制器等;典型的从设备如PLC可编程控制器等.Modbus通讯物理接口可以选用串口(包括RS232和RS485),也可以选择以太网口.

提取入侵检测数据即对Modbus TCP数据帧进行处理,数据帧结构如图1.服务器复制正常响应的原始功能码,将异常响应原始功能码的最高有效位设置逻辑1后返回,异常码指示差错类型.协议执行过程为:接受Modbus TCP请求、校验功能码、校验数据地址、校验数据值、执行Modbus TCP功能、发送Modbus TCP响应[9].

图1 TCP/IP 上的Modbus帧Fig.1 Modbus frames on TCP/IP

OCSVM建立异常检测模型所需数据特征需要对Modbus TCP协议提取特征向量,包括从工控流量数据直接提取的地址码、长度、功能码、端口号、协议标识符、Modbus长度等,以及根据异常行为模式结合实际工控流量进行构造的反映操作异常的检测特征,如单位时间内数据地址异常码数、连接设备标识数、数读功能码数等.使用wireshark软件截获数据报文,提取最能反映数据特征的属性构造特征向量,得到工控流量异常检测初始数据集.

3 稀疏自编码器降维模型

特征维数过多是导致工控安全异常检测速度低的原因,可以通过对高维、非线性的属性特征进行约简来达到降维目的.通过特征的稀疏表达,使用少量的基本特征组合拼装得到更高层次抽象的表达.

自编码器(Auto-Encoder)使用自身的高阶特征编码自己,借住稀疏编码的思想,目标是使用稀疏的一些高阶特征重新组合来重构自己[10].它的特征很明显:第一,期望输入等于输出;第二,希望使用高阶特征来重构自己,而不只是复制像素点.如果自编码器的隐含层只有一层,那么其原理类似于主成分分析法(PCA),只是PCA是线性降维,自编码器激活函数sigmoid为非线性激活函数,所以自编码器可看做非线性降维[11],并且能将数据的各个层次的特征都能学习出来.

3.1 自编码器标准模型学习算法

标准的自编码器是一个关于中间层对称的多层前馈网络,它的输入和输出一致,可用来学习恒等映射并抽取无监督特征.图2是一个单层自编码器的网络结构,输入层到中间层的部分称为编码器(Encoder),从中间层到输出层的部分为解码器(Decoder).自编码器学习从输入生成隐含层表示,从隐含层表示重构与输入尽可能接近的输出.

图2 自编码网络结构Fig.2 Auto-Encoder network structure

编码是指输入x∈R映射到隐含表示h(x)∈R的过程,计算形式为:

h(x)=σh(Wx+b)

(1)

其中,W∈R是编码权值矩阵,b∈R是编码偏置向量;σh(x)是向量值函数,非线性情况取为sigmoid函数.

解码是指把隐含表示h(x)映射到输出层o,以对输入x进行重建.计算形式为:

o=σo(W′h(x)+b′)

(2)

其中,W′∈R是解码权值矩阵,b′∈R是解码偏置向量;σo(x)与σh(x)类似.

作为一种特殊的多层感知器,自编码器可通过反向传播算法(BP算法)学习权值和偏置[10].直接采用反向传播算法学习权值和偏置结果不稳定,通常会出现学习过程收敛慢,或不收敛.故采用两阶段训练算法,即贪婪逐层无监督预训练和有监督调优.

3.1.1 无监督预训练算法

从输入层到隐含层,把每相邻两层看做一个受限玻尔兹曼机每个受限玻尔兹曼机输出作为下一紧邻受限玻尔兹曼机输入,从最底层开始,用CD-K算法进行逐层训练,从而得到自编码器的所有初始化权值和偏置.

算法步骤为:

Step1.用接近0的随机数初始化网络参数(Wi,bi)(1≤i≤r).

Step2.使用CD-K算法训练第一个RBM,该RBM可视层为x,隐含层为h1.

Step3.对1

Step4.反向堆叠RBM,初始化r+1到2r层的自编码参数.

3.1.2 有监督调优

在无监督预训练完成后,采用有监督学习算法对网络全部参数进行调优,本文采用BP算法从输出层到输入层逐层实现对网络参数的调整.

算法步骤为:

输入:训练集S={(xl,yl),(1≤l≤N)},网络结构,层数R

输出:权值矩阵和偏置(Wk,bk)(1≤k≤R)

Step1.随机初始化Wk≈0,bk≈0,k=1,…,R.

Step6.计算权值和偏置的更新,

实验表明,两阶段的训练方法能够明显提高自编码器学习效果,有助于OCSCVM入侵检测模型建立.

3.2 稀疏自编码器实现降维

稀疏自编码器在模型优化中增加对隐含神经元激活的稀疏性约束,使绝大多数隐含神经元处于非激活状态,从而实现降维.如果给中间隐含层的权重加一个正则项,根据惩罚系数控制隐含节点的稀疏程度.

稀疏自编码器优化的目标函数为:

(3)

通过对目标函数进行优化,学习到特征的稀疏表达,得到高维空间到低维空间的特征映射,用于OCSVM构建异常检测模型的特征向量,从而提高检测速度.

4 OCSVM异常检测模型构建

任何工业生产过程都可以用一系列功能控制操作来抽象描述,采集的工业数据具有正常数据多,异常数据少的特点,故采用参数优化的单类支持向量机方法,分别构建异常和正常模式下的双轮廓模型.同时,OCSVM对噪声样本数据具有鲁棒性,能建立较准确的分类模型.

4.1 OCSVM算法

OCSVM算法是在SVM算法基础上发展起来的,特点是只需一类样本即可训练模型.与传统SVM算法相比,OCSVM算法不再使用最大间隔,适用于工控网络异常检测数据特征不易确定的情况.OCSVM通过非线性映射将输入向量映射到高维特征空间,在特征空间构造最优分类超平面,边界之外的数据被分为异常[12],实现正常工业数据与坐标原点的最大间隔.

当工控异常监测数据线性不可分时,引入核函数,本文使用高斯核函数,将数据从输入空间的非线性转变到特征空间转换成线性可分,这样就可以准确的对异常检测数据进行分类,如图5.若在二维空间,最优超平面即一条直线.

OCSVM拟寻求最小化目标函数:

(4)

其中,xi为样本数据,l为训练集数量,v为权衡参数,Φ为原始空间到特征空间映射,ω和ρ分别为特征空间中超平面的法向量和补偿.

引入拉格朗日函数:

(5)

其中,αi,βi为拉格朗日因子.

当工控异常监测数据线性不可分时,引入核函数,本文使用高斯核函数,将数据从输入空间的非线性转变到特征空间转换成线性可分,这样就可以准确的对异常检测数据进行分类.若在二维空间,最优超平面即一条直线.

引入高斯核函数将样本空间映射到特征空间得对偶问题:

K(xi,xj)=<Φ(xi),
Φ(xj)>=exp(-g‖xi-xj‖2)

(6)

(7)

由上式可求出ρ:

(8)

求出决策函数即最优超平面,也就得到基于OCSVM的工业入侵检测模型:

(9)

对于训练数据x,f(x)表明了它在高维空间位于超平面的正负方向,f(x)为正则认为是正常类,反之为异常类.

4.2 参数寻优

粒子群优化算法(Particle Swarm Optimization,PSO)是一种基于群体智能的演化计算技术,与遗传算法相比,PSO没有选择、交叉、变异的操作[13].而是通过粒子在解空间追随最优的粒子进行寻优.本文采用PSO对决定分类器性能和结构的关键参数进行寻优,需要寻优的重要参数包含OCSVM的权衡参数v和高斯核函数参数g.选取分类准确率作为PSO的适应度函数值.

5 OCSVM双轮廓模型异常检测模型构建

工控系统入侵活动并不总与异常活动相符合,包括4种可能:入侵性而非异常(漏报)、非入侵性而异常(误报)、非入侵性非异常(正确判断)、入侵且异常(入侵).

1)入侵性而非异常.活动具有入侵性却因为不是异常而导致不能检测到,造成漏报,结果就是IDS不报告入侵.

2)非入侵性而异常.活动不具有入侵性,而因为它是异常的,IDS报告入侵,这时就造成误报.

3)非入侵性非异常.活动不具有入侵性,IDS没有将活动报告为入侵,这属于正确的判断.

4)入侵且异常.活动具有入侵性并因为活动是异常的,IDS将其报告为入侵.

异常检测的基础是异常行为模式系统误用,漏报、误报对于重要的工控系统来说相当危险.因此,工控系统异常检测的完成必须验证.

本文利用单类支持向量机分别建立正常OCSVM模型和异常OCSVM模型,提出基于双轮廓模型的异常检测方法[14],实现正常和异常行为的协同判别,达到抑制漏报率和误报率的目的,实现工控网络异常检测.

实时协同判别引擎实时捕获并提取功能控制行为信息,以此作为模型的输入数据进行异常判定.双轮廓模型的协同判别机制简述如下:

图3 自编码网络训练结果Fig.3 Training results of Auto-Encoder network

1)若异常OCSVM模型判定为“正常”,同时正常OCSVM模型也判定为“正常”,则最终结果为“正常”;

2)若异常OCSVM模型判定为“异常”,同时正常OCSVM模型也判定“异常”,则最终结果为“异常”;

3)若异常OCSVM模型与正常OCSVM模型判定结果不一致,则需要进行进一步的仲裁判决,仲裁判决拟考虑误报率和漏报率两个因素,完成最终的异常判定.

通过上述OCSVM双轮廓异常检测模型实现工业控制网络的异常检测,抑制漏报率和误报率,保护工控系统正常运行.

6 实验验证

实验平台为MATLAB2016b,使用MATLAB自带神经网络工具箱构建自编码网络,实验验证采用自编码网络结构为20-8-20,选取中间隐藏层作为OCSVM算法输入特征向量.采用8维向量训练自编码网络结构图如图3所示,可见使得均方误差最低时迭代次数在12次.经过反复实验验证发现,当训练集与测试集的准确率出现明显分离时,停止迭代,并且在迭代次数为12次时不会出现过拟合现象.

为消除数据本身的冗余,在保全信息量的同时简化网络的计算量和网络结构的复杂度,经过自编码网络稀疏层参数的不同取值,选取8维向量作为稀疏自编码的隐藏层,稀疏层为8维向量时能更好的还原输入20维变量数据特征,符合自编码网络的特点.即将20维数据降至8维,作为OCSVM算法输入特征向量,达到减少运算时间的目的.

PSO寻找最佳参数的适应度(准确率)曲线如图4所示,bestg=4.5181,bestv=0.3473,bestaccuarcy=98.970%.

图4 PSO寻找最佳参数的适应度(准确率)曲线Fig.4 PSO′s fitness (accuracy) curve for finding the best parameters

经过PSO进行参数优化后,采用经自编码网络降维处理后的数据作为OCSVM双轮廓模型的输入自变量.对双轮廓模型的OCSVM异常检测算法的验证采用Wireshark软件截获数据报文所抓取1000条数据包中400条数据用于对所建模型的训练,另取400条数据用于测试.训练集和测试集检测结果分别如图5和图6所示.

图5 OCSVM双轮廓模型训练集检测结果Fig.5 OCSVM double contour model training set detection result

由对训练集和测试集进行网络异常检测的分类结果可以看出,OCSVM双轮廓模型对训练集的400条数据分类准确率能达到93.38%,对于测试集的400条数据的分类准确率达到98.726%,检测结果接近100%.通过本文提出的双轮廓实时判别机制,有效的提高了分类准确率.为说明本文提出方法的优越性,将异常检测模型与其他几种模型进行了对比,对比结果如表1所示.

图6 OCSVM双轮廓模型测试集检测结果Fig.6 OCSVM double contour model tseting set detection result

经过自编码网络对输入自变量降维并使用粒子群算法进行参数寻优的单类支持向量机异常检测模型(AE-PSO-OCSVM)与SVM、GA-OCSVM异常检测模型进行对比.其在漏报率、误报率、测试集准确率以及检测时间方面的结果如表1中

表1 各算法性能对比

Table 1 Performance comparison of each algorithm

算 法漏报率误报率测试集准确率检测时间SVM25%16%90.25%24.914sGA⁃OCSVM7%10%94.00%17.641sAE⁃PSO⁃OCSVM5%3%98.73%4.071s

所示.同时选取了相同的训练集与测试集对各个模型进行测试比较.由表中可以看出,本文所提出的基于自编码网络的AE-PSO-OCSVM 双轮廓异常检测模型的检测时间为4.071s,SVM的检测时间为24.914s,GA-OCSVM的检测时间为4.071s.由此可见,AE-PSO-OCSVM的检测时间要比SVM模型的时间近似少20s.同时由表1中可见,AE-PSO-OCSVM的漏报率为5%,误报率为3%,分别低于SVM和GA-OCSVM对应指标的数值.并且AE-PSO-OCSVM的测试集准确率98.73%,高于SVM和GA-OCSVM的对应数值.这说明通过对输入自变量进行降维优化来实现去除冗余,在减小检测时间的同时又使得测试集准确率得以提升,这说明了本文所提出的工控异常检测模型的有效性,同时本方法可以提高了整体的检测性能.

7 结 语

本文分析了Modbus TCP工业控制网络通信协议及对异常检测特征流量进行提取,构建了单类支持向量机工业异常检测模型,并对提取的特征数据进行自编码降维,降低OCSVM异常检测时间,提高检测效率.同时,为降低工控系统异常检测漏报率和误报率,本文构建了基于OCSVM的双轮廓模型,通过实时协同判别引擎对模型的输入数据进行异常判定.最后,本文通过仿真验证了所提算法的有效性.

猜你喜欢

漏报工控编码器
融合CNN和Transformer编码器的变声语音鉴别与还原
工控编程编译工具应用现状分析及展望
工控系统脆弱性分析研究
基于蜜罐的工控网络安全防护技术研究进展
设定多圈绝对值编码器当前圈数的方法
转炉系统常用编码器选型及调试
舞台机械技术与设备系列谈(二)
——编码器
朝阳地区一次大雪到暴雪天气过程漏报分析
抚顺地区一次降水预报失误的分析
妇幼卫生统计监测漏报原因及对策探讨