基于MIKPSO-SVM方法的工业控制系统入侵检测
陈冬青 1 , 张普含 1 , 王华忠 2     
1. 中国信息安全测评中心, 北京 100085;
2. 华东理工大学 化工过程先进控制和优化技术教育部重点实验室, 上海 200237
摘要:针对Kalman粒子群算法在优化基于支持向量机的工业控制系统入侵检测模型时易陷入局部极小的问题,该文提出了一种改进的多新息Kalman粒子群算法。所提算法不仅考虑当前粒子信息的观测值,同时充分利用之前时刻的有用信息对粒子的状态进行估计,为粒子位置的更新提供足够的冲量,使得算法跳出局部极小,从而提高了算法的优化精度。将所提出的改进算法用于支持向量机工控入侵检测模型参数寻优,并使用工控入侵检测标准数据集进行仿真研究。仿真结果表明:与Kalman粒子群、粒子群以及遗传算法相比,该文所提出的算法——优化的支持向量机入侵检测模型在检测率、漏报率和误报率等指标上都有明显提升。
关键词工业控制系统    入侵检测    多新息Kalman粒子群算法    支持向量机    
Intrusion detection for industrial control systems based on an improved SVM method
CHEN Dongqing1, ZHANG Puhan1, WANG Huazhong2     
1. China Information Technology Security Evaluation Center, Beijing 100085, China;
2. Key Laboratory of Advanced Control and Optimization for Chemical Processes, East China University of Science and Technology, Shanghai 200237, China
Abstract: Industrial control system intrusion detection models based on the support vector machine (SVM) optimized by Kalman particle swarm optimization (KPSO) can become trapped in a local minimum. This paper presents a multi-innovation theory based KPSO that not only considers the current time observation information, but also uses previously useful information for predicting the particle states. Therefore, the algorithm provides sufficient momentum for updating the particle position so that the algorithm can jump out of a local minimum for better optimization accuracy. The algorithm was used to optimize the parameters for an SVM based intrusion detection model with the simulation results evaluated using the industrial intrusion detection standard dataset. The results show that the detection rate, false negative rate and false positive rate are significantly better with the SVM intrusion detection model optimized by this algorithm than with the KPSO, PSO and genetic algorithms.
Key words: industry control system     intrusion detection     multi-innovation Kalman particle swarm optimization (MIKPSO)     support vector machine (SVM)    

近年来,工业控制系统(industry control system,ICS)已经逐步与企业网络互联且使用更加公开和标准化的协议,从而导致系统易受攻击[1]。“震网”病毒更是敲响了工控信息安全的警钟,构建工控信息安全防御体系迫在眉睫。作为重要的工控信息安全防护手段,工控入侵检测成为国内外的研究热点[1]。Gao等[2]对工控系统进行注入攻击建模并给出相应的入侵检测方法。Jiang等[3]提出了改进的单类支持向量机(one class support vector machine,OC-SVM)的数据采集与监控(supervisory control and data acquisition,SCADA)系统防护措施。Nader等[4]提出了一种基于Lp范数的单类分类算法的SCADA系统入侵检测模型。Beaver等[5]使用密西西比州立大学关键基础设施保护中心天然气管道SCADA系统入侵检测标准数据集,应用一系列机器学习算法,包括支持向量机(SVM)、朴素Bayes、决策树算法、随机森林以及K近邻(k-nearest neighbor,KNN)算法对数据集中的注入攻击进行了集中研究。Onderj等[6]从工控网络层抓取数据,建立数据集使用神经网络进行攻击类型识别。张腾飞等[7]通过对Modbus通讯协议分析, 并使用SVM构建入侵检测模型取得了良好的效果。

入侵检测在本质上可以归类为模式识别中的分类问题[8]。支持向量机作为一种统计学习方法被广泛应用于入侵检测系统构建,但是其分类性能主要依赖于其惩罚常数和核函数的参数选择。因此对SVM分类器进行参数寻优成为研究的重点和难点。粒子群算法收敛速度快,易于实现,具有良好的SVM参数寻优能力,但是算法容易陷入局部极小[9]。较之于标准PSO算法,Kalman粒子群优化(Kalman particle swarm optimization,KPSO)算法[10]具有一定的优越性。KPSO算法使用Kalman滤波器对粒子的位置进行预测,收敛速度和精度优于标准粒子群(particle swarm optimization,PSO)算法。Satapathy等[11]将KPSO算法应用到数据分类领域。戴邵武等[12]将改进的KPSO算法应用到加速度计快速标定取得了良好的优化效果。考虑到KPSO算法在预测更新粒子位置时仅使用了一个新息,之前时刻的很多有用信息没有得到充分利用,因此本文在KPSO算法的基础之上,结合多新息理论[13],提出了一种改进的多新息Kalman粒子群优化(multi-innovation Kalman particle swarm optimization,MIKPSO)算法,该算法充分考虑了当前观测数据和历史数据中的有用信息,使用多个新息与增益矩阵乘积的累加为粒子位置的更新提供足够的冲量,让算法跳出局部极小,提升了算法的优化精度。

本文使用改进的MIKPSO算法对SVM分类器的惩罚常数C和核函数参数g进行寻优,构建基于SVM的工业控制系统入侵检测模型,应用密西西比州立大学关键基础设施保护中心天然气管道ICS入侵检测标准数据集[4]进行入侵检测模型评估。通过仿真实验,与KPSO、PSO和遗传算法(genetic algorithm,GA)等优化算法对比,结果表明使用2个新息的MIKPSO-SVM工控入侵检测模型检测效果最佳。

1 一类改进的MIKPSO算法 1.1 PSO算法简介

PSO算法是一种实数编码型的群智能随机优化算法。在该算法中,优化对象的解被视为搜索空间中的一个粒子,每个粒子的位置由其速度决定。在迭代寻优过程中,粒子根据自身最优解和群体最优解来更新自己的位置和速度。算法表示如下:

$ \left\{ \begin{array}{l} v_i^{k + 1} = \omega v_i^k + {c_1}{r_1}\left( {{\rm{gbes}}{{\rm{t}}^k} - x_i^k} \right) + {c_2}{r_2}\left( {{\rm{pbest}}_i^k - x_i^k} \right),\\ x_i^{k + 1} = x_i^k + v_i^{k + 1}. \end{array} \right. $ (1)

其中:r1r2是0~1上的随机数,ω是惯性权重,c1c2是学习因子,vikxik和pbestikk时刻粒子i的速度位置和个体最优解,gbestkk时刻全局最优解。

1.2 基于多新息理论的Kalman滤波器

考虑没有控制作用的线性随机离散系统方程:

$ \left\{ \begin{array}{l} {\mathit{\boldsymbol{X}}_{k + 1}} = {\mathit{\boldsymbol{ \boldsymbol{\varPhi} }}_{k,k - 1}}{\mathit{\boldsymbol{X}}_{k - 1}} + {\mathit{\boldsymbol{ \boldsymbol{\varGamma} }}_{k,k - 1}}{\mathit{\boldsymbol{W}}_{k - 1}},\\ {\mathit{\boldsymbol{Z}}_k} = {\mathit{\boldsymbol{H}}_k}{\mathit{\boldsymbol{X}}_k} + {\mathit{\boldsymbol{V}}_k}. \end{array} \right. $ (2)

其中:Xk是状态向量,Zk是系统的观测值,Φk, k-1是状态转移矩阵,Vk是测量噪声,Wk-1是系统过程噪声,Γk, k-1是噪声输入矩阵。使用标准Kalman滤波对状态向量Xk进行估计,步骤如下。

1) 一步预测均方误差阵:

$ {{\mathit{\boldsymbol{\hat P}}}_{k,k - 1}} = {\mathit{\boldsymbol{ \boldsymbol{\varPhi} }}_{k,k - 1}}{{\mathit{\boldsymbol{\hat P}}}_{k - 1}}\mathit{\boldsymbol{ \boldsymbol{\varPhi} }}_{k,k - 1}^{\rm{T}} + {\mathit{\boldsymbol{Q}}_{k - 1}}. $ (3)

2) 滤波增益矩阵:

$ {\mathit{\boldsymbol{K}}_k} = {{\mathit{\boldsymbol{\hat P}}}_{k,k - 1}}\mathit{\boldsymbol{H}}_k^{\rm{T}}{\left( {{\mathit{\boldsymbol{H}}_k}{{\mathit{\boldsymbol{\hat P}}}_{k,k - 1}}\mathit{\boldsymbol{H}}_k^{\rm{T}} + {R_k}} \right)^{ - 1}}. $ (4)

3) 状态一步预测:

$ {{\mathit{\boldsymbol{\hat X}}}_{k,k - 1}} = {\mathit{\boldsymbol{ \boldsymbol{\varPhi} }}_{k,k - 1}}{{\mathit{\boldsymbol{\hat X}}}_{k - 1}}. $ (5)

4) 状态估计值:

$ {{\mathit{\boldsymbol{\tilde e}}}_k} = {\mathit{\boldsymbol{Z}}_k} - {\mathit{\boldsymbol{H}}_k}{{\mathit{\boldsymbol{\hat X}}}_{k,k - 1}}, $ (6)
$ {{\mathit{\boldsymbol{\hat X}}}_k} = {{\mathit{\boldsymbol{\hat X}}}_{k,k - 1}} + {\mathit{\boldsymbol{K}}_k}\left( {{\mathit{\boldsymbol{Z}}_k} - {\mathit{\boldsymbol{H}}_k}{{\mathit{\boldsymbol{\hat X}}}_{k,k - 1}}} \right). $ (7)

5) 估计均方误差阵:

$ {{\mathit{\boldsymbol{\hat P}}}_k} = \left( {I - {\mathit{\boldsymbol{K}}_k}{\mathit{\boldsymbol{H}}_k}} \right){{\mathit{\boldsymbol{\hat P}}}_{k,k - 1}}. $ (8)

上述公式中QkRk分别为过程噪声方差阵和测量噪声方差阵,循环迭代公式(3)~(8)可以对系统的状态信息进行估计。

公式(6)中$ {\mathit{\boldsymbol{\tilde e}}_k}$称为一步预报误差又名新息(innovation),新息是能够提高或改善参数辨识或状态估计精度的有用信息[13]。由上述公式可知,标准Kalman滤波仅使用了一个新息对状态进行估计,而隐含在历史数据中的信息没有被充分利用。鉴于此,丁峰等[13]于1996年提出基于多新息理论的辨识方法,充分挖掘历史数据中的有用信息,使用多个新息进行参数辨识,将标量的新息拓展到新息向量,由新息向量拓展为新息矩阵,从而提高了参数辨识和状态估计的精度。融合多新息理论得到多新息Kalman滤波器,使用多个新息进行状态估计,因此需要对公式(7)进行改造,假设使用n个新息进行状态估计则式(7)变为

$ {{\mathit{\boldsymbol{\hat X}}}_k} = {{\mathit{\boldsymbol{\hat X}}}_{k,k - 1}} + \left[ {{\mathit{\boldsymbol{K}}_k},{\mathit{\boldsymbol{K}}_{k - 1}}, \cdots ,{\mathit{\boldsymbol{K}}_{k - n + 1}}} \right]\mathit{\boldsymbol{E}}\left( {n,k} \right). $ (9)

其中,$\mathit{\boldsymbol{E}}\left( {n, k} \right) = {\left[{{{\mathit{\boldsymbol{\tilde e}}}_k}, {{\mathit{\boldsymbol{\tilde e}}}_{k-1}}, \cdots, {{\mathit{\boldsymbol{\tilde e}}}_{k-n + 1}}} \right]^{\rm{T}}} $, 式(9)又可以写成如下形式:

$ {{\mathit{\boldsymbol{\hat X}}}_k} = {{\mathit{\boldsymbol{\hat X}}}_{k,k - 1}} + \sum\limits_{i = 1}^n {{\mathit{\boldsymbol{K}}_{k - i + 1}}{{\mathit{\boldsymbol{\tilde e}}}_{k - i + 1}}} . $ (10)

本文使用式(10)对标准的KPSO算法进行改进,并分析新息数量对入侵检测性能的影响。

1.3 MIKPSO算法

考虑KPSO算法易陷入局部极小和早熟等问题,并且KPSO在粒子位置信息预测时仅使用了单个新息,并没有充分使用历史数据中有用数据的缺陷。因此,本文对KPSO算法进行改进,结合多新息理论,提出改进的多新息Kalman粒子群算法,使用多个新息与滤波增益矩阵乘积的累加来进行粒子位置信息的估计,有效的利用了之前迭代过程中的有用信息,为粒子位置信息的更新提供了足够的冲量,使得算法能够跳出局部极小,从而提高算法的优化精度。

首先基于PSO算法的状态空间的Markov链模型[14]建立PSO算法的状态空间模型。令λ1=c1r1, λ2=c2r2,将PSO算法写为

$ \left\{ \begin{array}{l} v_i^k = \omega v_i^{k - 1} + {\lambda _1}\left( {{\rm{gbes}}{{\rm{t}}^{k - 1}} - x_i^{k - 1}} \right) + {\lambda _2}\left( {{\rm{pbest}}_i^{k - 1} - x_i^{k - 1}} \right),\\ x_i^k = x_i^{k - 1} + v_i^k,\\ {\rm{pbest}}_i^k = \frac{1}{2}\left( {x_i^k + {\rm{pbest}}_i^{k - 1}} \right) + \frac{1}{2}\mu \left( {x_i^k - {\rm{pbest}}_i^{k - 1}} \right),\\ {\rm{gbes}}{{\rm{t}}^k} = {\rm{pbest}}_j^k,j = \arg \mathop {\min }\limits_{0 \le i \le N} \left\{ {f\left( {{\rm{pbest}}_i^k} \right)} \right\}. \end{array} \right. $ (11)

其中,μ=sgn(f(pbestik-1)-f(xik))。设粒子x的维数为d,粒子的搜索过程是随机的,因此可将系统误差假设为Gauss白噪声。根据公式(11)等号左侧部分,可以将任意的粒子ik时刻的迭代状态定义为

$ \mathit{\boldsymbol{X}}_i^k = {\left[ {x_i^k,v_i^k,{\rm{pbest}}_i^k,{\rm{gbes}}{{\rm{t}}^k}} \right]^{\rm{T}}}. $

可以得到状态方程:

$ \mathit{\boldsymbol{X}}_i^k = {\mathit{\boldsymbol{ \boldsymbol{\varPhi} }}_{k,k - 1}}\mathit{\boldsymbol{X}}_i^{k + 1} + {\mathit{\boldsymbol{W}}_{k - 1}}. $ (12)

其中,Φk, k-1为状态转移矩阵,

$ {\mathit{\boldsymbol{ \boldsymbol{\varPhi} }}_{k,k - 1}} = \left[ {\begin{array}{*{20}{c}} {\left( {1 - {\lambda _1} - {\lambda _2}} \right){\mathit{\boldsymbol{I}}_{d \times d}}}&{\omega {\mathit{\boldsymbol{I}}_{d \times d}}}&{{\lambda _2}{\mathit{\boldsymbol{I}}_{d \times d}}}&{{\lambda _1}{\mathit{\boldsymbol{I}}_{d \times d}}}\\ {\left( { - {\lambda _1} - {\lambda _2}} \right){\mathit{\boldsymbol{I}}_{d \times d}}}&{\omega {\mathit{\boldsymbol{I}}_{d \times d}}}&{{\lambda _2}{\mathit{\boldsymbol{I}}_{d \times d}}}&{{\lambda _1}{\mathit{\boldsymbol{I}}_{d \times d}}}\\ {{{\bf{0}}_{d \times d}}}&{{{\bf{0}}_{d \times d}}}&{{\mathit{\boldsymbol{I}}_{d \times d}}}&{{{\bf{0}}_{d \times d}}}\\ {{{\bf{0}}_{d \times d}}}&{{{\bf{0}}_{d \times d}}}&{{{\bf{0}}_{d \times d}}}&{{\mathit{\boldsymbol{I}}_{d \times d}}} \end{array}} \right]. $

系统的观测方程为

$ \mathit{\boldsymbol{Z}}_i^k = {\mathit{\boldsymbol{H}}_k}\mathit{\boldsymbol{X}}_i^k + {\mathit{\boldsymbol{V}}_k}. $ (13)

其中,$ {\mathit{\boldsymbol{H}}_k} = \left[{\begin{array}{*{20}{c}} {{\mathit{\boldsymbol{I}}_{d \times d}}}&{{\mathit{\boldsymbol{0}}_{d \times d}}}&{{\mathit{\boldsymbol{0}}_{d \times d}}}&{{\mathit{\boldsymbol{0}}_{d \times d}}}\\ {{\mathit{\boldsymbol{0}}_{d \times d}}}&{{\mathit{\boldsymbol{I}}_{d \times d}}}&{{\mathit{\boldsymbol{0}}_{d \times d}}}&{{\mathit{\boldsymbol{0}}_{d \times d}}} \end{array}} \right]$Vk为系统的测量噪声向量。系统的观测值可以通过式(11)的前2项获得即:

$ \left\{ \begin{array}{l} {\rm{Obsv}}_i^k = \omega v_i^{k - 1} + {\lambda _1}\left( {{\rm{gbes}}{{\rm{t}}^{k - 1}} - x_i^{k - 1}} \right) + \\ \;\;\;\;\;\;\;\;\;\;\;\;{\lambda _2}\left( {{\rm{pbest}}_i^{k - 1} - x_i^{k - 1}} \right),\\ {\rm{Obsx}}_i^k = x_i^{k - 1} + v_i^k. \end{array} \right. $

则系统观测值为Zik=[Obsxik, Obsvik]T,然后使用基于多新息的Kalman滤波器即公式(3)—(6)、(10)和(8)对公式(12)—(13)进行滤波, 获得粒子状态的估计值。那么根据MIKPSO算法估计出的粒子位置信息xik则为$ x_i^k = \mathit{\boldsymbol{\hat X}}_i^k{\left( {1:d} \right)^{\rm{T}}}$

2 基于MIKPSO-SVM的入侵检测算法模型 2.1 支持向量机理论

支持向量机(SVM)于1995年提出,该算法的核心思想是使用VC维理论和结构化风险最小化原理,在有限数量的样本上获取具有最佳泛化能力的分类或回归模型。其基本算法为假设样本空间为{(x1, y1), (x2, y2),…,(xm, ym)},其中输入${x_i} \in {\mathbb{R}^n} $,类标签yi∈{-1, 1},m是样本数量,n是输入特征维数。使用SVM进行分类,求解过程如下。

目标函数以及约束:

$ \begin{array}{*{20}{c}} {\mathop {\min }\limits_{\omega ,\varepsilon } \frac{1}{2}{{\left\| \mathit{\boldsymbol{w}} \right\|}^2} + C\sum\limits_{i = 1}^m {{\xi _i}} ,}\\ {{\rm{s}}.\;{\rm{t}}.\left\{ \begin{array}{l} {y_i}\left( {{\mathit{\boldsymbol{w}}^{\rm{T}}} + b} \right) \ge 1 - {\varepsilon _i};\\ {\xi _i} \ge 0, \end{array} \right.\;\;\;i = 1,2, \cdots ,m.} \end{array} $ (14)

其中:$ \frac{1}{2}{\left\| \mathit{\boldsymbol{w}} \right\|^2}$用来控制支持向量与分类超平面距离,$ C\sum\limits_{i = 1}^m {{\xi _i}} $是对错分点的惩罚函数,C为惩罚常数表示对错误分类的惩罚程度,ξ是松弛变量。应Lagrange乘子法将其转化为对偶形式:

$ \begin{array}{*{20}{c}} {\max W\left( \alpha \right) = \sum\limits_{i = 1}^m {{\alpha _i}} - \frac{1}{2}\sum\limits_{i = 1}^m {\sum\limits_{j = 1}^m {{\alpha _i}{\alpha _j}{y_i}{y_j}k\left( {{x_i},{x_j}} \right)} } ,}\\ {{\rm{s}}.\;{\rm{t}}.\left\{ \begin{array}{l} \sum\limits_{i = 1}^m {{\alpha _i}{y_i}} = 0,\\ 0 \le {\alpha _i} \le C. \end{array} \right.\;\;\;i = 1,2, \cdots ,m.} \end{array} $ (15)

其中:k(xi, xj)为核函数,αi为Lagrange乘子。最终得到分类结果为

$ \begin{array}{*{20}{c}} {{\rm{class}} = {\mathop{\rm sgn}} \left( {\sum\limits_{i = 1}^m {{\alpha _i}{y_i}k\left( {{x_i},x} \right)} + {b_i}} \right),}\\ {{\mathop{\rm sgn}} \left( x \right) = \left\{ \begin{array}{l} 1,\;\;\;\;\;\;\;x \ge 0;\\ - 1,\;\;\;\;\;x \le 0. \end{array} \right.} \end{array} $ (16)

SVM可选用多种核函数包括多项式核、线性核、Gauss核以及Fourier核等, 本文使用Gauss核函数即:

$ \left\{ \begin{array}{l} k\left( {{x_i},{x_j}} \right) = \exp \left( { - \frac{{{{\left\| {{x_i} - {x_j}} \right\|}^2}}}{{2{\delta ^2}}}} \right),\\ g = \frac{1}{{2{\delta ^2}}}. \end{array} \right. $ (17)

本文使用MIKPSO算法对上述公式中的Cg进行寻优。另外,传统SVM分类器只针对两分类问题进行求解,本文需对多种入侵形式进行判别,故使用一对一方式(one-versus-one, 1-v-1 SVMS)构造k(k-1)/2个SVM分类器(k为分类类别数目), 采用最大赢投票法(max-wins voting)进行工控系统网络攻击形式的多类分类。

2.2 MIKPSO-SVM入侵检测算法

本文采用离线训练的方式,在训练过程中使用MIKPSO算法对SVM入侵检测模型的惩罚常数C和Gauss核函数参数g进行寻优。然后使用测试数据集在训练好的SVM入侵检测模型上进行测试,得到分类正确率、误报率、漏报率等指标,通过对比验证MIKPSO对SVM入侵检测算法模型参数寻优的有效性。MIKPSO-SVM入侵检测模型构建的算法流程如图 1所示, MIKPSO-SVM模型构建算法描述如下。

图 1 MIKPSO-SVM入侵检测模型流程图

Step 1:将仿真数据划分为测试数据和训练数据,并进行归一化处理。

Step 2:初始化MIKPSO算法的惯性权重、迭代次数、搜索边界值及新息数量等参数。

Step 3:将Cg作为优化对象,使用训练集对SVM模型进行训练。

Step 4:根据适应度最小准则,使用MIKPSO算法对粒子群中的各个粒子位置信息进行迭代搜索,找出各个粒子的最优解和全局最优解。

Step 5:判断算法是否满足算法终止条件。若迭代已达到最大迭代次数,或者粒子的最佳适应度已经达到指定精度,算法结束迭代,转至Step 6;否则返回Step 3循环进行迭代。

Step 6:选择全局适应度最佳的参数C-best和g-best建立SVM分类器模型,最终得到基于MIKPSO-SVM的ICS系统入侵检测模型。

3 仿真实验 3.1 数据集及预处理

本文所使用的数据集是由密西西比州立大学基础设施保护中心于2014年建立的工控入侵检测标准数据集[1],数据源为天然气管道SCADA控制系统网络层数据,数据共包含4种类别的攻击:指令注入攻击、响应注入攻击、拒绝服务攻击、侦察攻击。X=(x1, x2, …, xn, y)为数据集中每一条数据记录的存储形式,其中x1, x2, …, xn为每条数据的n个特征,y为攻击类别标签值。本文数据集中数据包含26个特征和1个标签值。攻击形式和分类标签如表 1所示。

表 1 攻击形式及仿真分类标签
类别 标签值 描述
Normal 1 正常数据
NMRI 2 简单的恶意响应注入攻击
CMRI 3 复杂的恶意响应注入攻击
MSCI 4 恶意状态命令注入攻击
MPCI 5 恶意参数命令注入攻击
MFCI 6 恶意功能命令注入攻击
DoS 7 拒绝服务攻击
RECO 8 侦察攻击

从原始数据集中均匀随机抽取5 000组数据用于仿真实验,为消除不同数据特征之间因差异而造成的影响,使用公式$ \hat x = \left( {x-{x_{\min }}} \right)/\left( {{x_{\max }}-{x_{\min }}} \right)$将数据集中各个特征数据都映射到区间[0, 1]上。

3.2 仿真参数设置

本文所有算法都是由MTALAB语言实现。将入侵检测数据集划分为训练集和测试集,从5 000组数据中抽取4 000组作为训练集,余下1 000组作为测试集。粒子群初始化:种群大小设置为20,最大迭代次数取50,粒子维数d为2。c1=1.6、c2=1.5, 惯性权重ω取0.8。Kalman滤波相关参数的初始化为:初始估计误差方差阵P0=ζdiag([θ, θ, θ, θ]T),初始过程噪声方差阵Q0=ζdiag([θ, θ, θ, θ]T), 初始观测噪声方差阵R0=ζdiag([θ, θ]T), 其中ζ为调节因子,本文取0.001, θ是由粒子速度的边界值所决定的向量。

本文使用MIKPSO算法对SVM惩罚常数C和核函数参数g进行迭代寻优,Cg采用实数编码且寻优范围都是从0.000 01~10 000。本文以SVM分类器对4 000组训练数据在5折交叉验证意义下得到的准确率的相反数作为适应度,选取训练精度最优的参数得到的SVM入侵检测模型对1 000组测试数据进行分类,评价算法的寻优效果。

3.3 仿真结果 3.3.1 训练结果分析

新息数量对MIKPSO算法有重要影响,使用适宜数量的新息可以很好改善优化精度,但是新息数量也不是越多越好,过多的新息会导致计算量增大,甚至滤波发散[13],因此新息数量的选择十分重要。本文综合比较了使用不同数量新息的MIKPSO算法、GA、标准PSO以及KPSO等优化算法对SVM参数的优化效果。为了能够以统一的标准评估算法的优化性能,粒子群类算法均采用节3.2所述的仿真参数。针对遗传算法,使用二进制编码格式,染色体数量取20,迭代次数取50。经过多次仿真实验,得到各个算法优化SVM训练过程的适应度值与迭代次数关系曲线如图 2所示。算法的训练时间和训练准确率如表 2所示。

图 2 各算法优化SVM训练准确率曲线

表 2 训练时间和训练精度
算法 训练时间/s 训练精度/%
PSO-SVM 1 253 92.95
GA-SVM 1 506 93.20
KPSO-SVM 1 287 94.95
MIKPSO-SVM-2I 1 291 97.20
MIKPSO-SVM-3I 1 304 95.40

图 2表 2可以看出, 在SVM训练过程中,从优化精度来看,使用2个新息的MIKPSO算法优化的SVM(MIKPSO-SVM-2I)训练准确率最高,训练准确率为97.2%,3个新息的MIKPSO次之,PSO的优化效果最差。从收敛速度上来看,KPSO收敛最快,MIKPSO次之,GA收敛最慢。综合来看,MIKPSO算法虽然收敛速度略慢于KPSO,但在优化效果上具有一定优势。

表 2还可以看出使用多新息的MIKPSO算法并没有对算法的整体运行时间产生很大影响,因此并不会影响算法的实际应用。

3.3.2 测试结果分析

1) 总体检测效果对比。

根据入侵检测评价标准,需要评估入侵检测模型的检测率、误报率、漏报率。使用各个算法模型对测试集进行检测,得到的总体检测结果如表 3所示。

表 3 各算法总体检测效果
类别 检测率/% 误报率/% 漏报率/%
GA-SVM 88.3 1.02 5.98
PSO-SVM 91.4 1.02 4.35
KPSO-SVM 94.3 0.51 2.74
MIKPSO-SVM-2I 96.6 0.00 0.62
MIKPSO-SVM-3I 95.4 1.02 1.74
SVM[15] 90.6 1.63 8.70
Naive Bayes[9] 89.0 2.00 8.50

表 3可以看出,使用2个新息的MIKPSO算法优化的SVM入侵检测模型对测试集的检测效果最好,检测率为96.6%,且漏报率和误报率较之于GA、PSO以及KPSO显著降低;3个新息的MIKPSO效果次之,但其依然具有较高的检测率,而GA优化的SVM模型泛化能力最差。本文也比较了未经优化的SVM[15]算法和Naive Bayes算法[9]对该数据集的总体测试效果,通过综合对比可以看出,经MIKPSO算法优化后的SVM入侵检测模型具有较高的入侵检测精度,同时漏报率和误报率等指标也显著降低。

2) 各种攻击类别检测效果对比。

本文所用的数据集包含4种类别的入侵,共8种攻击形式(含正常数据),使用MIKPSO-SVM方法对每种攻击形式进行识别。图 3为各算法对每种攻击形式的检测效果。

图 3 各种攻击形式的检测效果

图 3可以看出使用2个新息的MIKPSO-SVM-2I模型在每种形式的攻击上都具有非常高的检测率,尤其是对于MFCI、NMRI、DoS以及CMRI等攻击的识别精度明显高于未经优化的SVM以及经GA、PSO、KPSO优化的SVM入侵检测模型。同时,从图中也可以看出本文各个算法对侦察攻击都具有接近100%的识别率。

图 4所示为各个算法对每个入侵类别的检测效果,可以看出使用了2个新息的MIKPSO-SVM-2I模型在各个类别的攻击检测方面的表现都是最佳的。尤其是在拒绝服务攻击的检测率上,MIKPSO-SVM-2I模型明显好于其他算法优化的SVM入侵检测模型。

图 4 四种攻击类别检测效果

图 5所示为使用2个新息的MIKPSO-SVM-2I模型对测试集的实际分类结果和理论结果的对比,从图 5可以很容易观察测试集数据分布以及错分点的情况。

图 5 MIKPSO-SVM-2I入侵检测分类结果

4 结论

本文融合了多新息理论,着眼于KPSO算法在对粒子位置信息进行预测时仅使用单个新息的局限性,提出了改进的多新息Kalman粒子群(MIKPSO)算法,提升了算法的优化精度和全局优化性能。基于此,建立了基于MIKPSO-SVM的ICS入侵检测模型,使用改进的MIKPSO算法对SVM参数Cg进行寻优。使用密西西比州立大学ICS入侵检测标准数据集对所提入侵检测模型进行仿真研究,结果表明: MIKPSO-SVM模型在使用2个新息时入侵检测精度最高,且误报率、漏报率等各项指标均优于经GA、PSO、KPSO等算法优化的SVM入侵检测模型。目前,本文正研究把该算法用于工控信息安全威胁监测装置中,以提高工业控制系统安全监测、防御能力。

参考文献
[1] SIWAR K, LUDOVIC P C, MARC B, et al. A survey of approaches combining safety and security for industrial control systems[J]. Reliability Engineering and System Safety, 2015, 139: 156–178. DOI:10.1016/j.ress.2015.02.008
[2] GAO W, MORRIS T, REAVES B, et al. On SCADA control system command and response injection and intrusion detection[C]//eCrime Researchers Summit (eCrime), 2010. Dallas, TX, USA: IEEE, 2010: 1-9. http://link.springer.com/10.1007/BF01390705
[3] JIANG J, LASITY Y. Anomaly detection via one class SVM for protection of SCADA systems[C]//International Conference on Cyber-enabled Distributed Computing and Knowledge Discovery. Beijing, China: IEEE, 2013: 82-88. http://doi.ieeecomputersociety.org/10.1109/CyberC.2013.22
[4] 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
[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. Miami, FL, USA: IEEE, 2013: 54-59. http://ieeexplore.ieee.org/document/6786081/
[6] ONDREJ L, TODD V, MILOS M. Neural network based intrusion detection system for critical infrastructures[C]//Proceedings of the International Joint Conference on Neural Networks. Atlanta, GA, USA: IEEE, 2009: 14-19. http://dl.acm.org/citation.cfm?id=1704190
[7] 张腾飞, 范启富, 刘伟. 基于支持向量机的SCADA系统入侵检测[J]. 化工自动化及仪表, 2015(2): 153–156.
ZHANG T F, FAN Q F, LIU W. A support vector machine-based intrusion detection method for SCADA system[J]. Control and Instruments in Chemical Industry, 2015(2): 153–156. (in Chinese)
[8] HUANG C, WANG C. A GA-based feature selection and parameters optimization for support vector machines[J]. Expert Systems with Applications, 2006, 31(2): 231–240. DOI:10.1016/j.eswa.2005.09.024
[9] 王华忠, 杨智慧, 颜秉勇, 等. 融合PCA和PSO-SVM方法在工控入侵检测中的应用[J]. 科技通报, 2017, 33(1): 80–85.
WANG H Z, YANG Z H, YAN B Y, et al. Application of fusion PCA and PSO-SVM method in industrial control intrusion detection[J]. Bulletin of Science and Technology, 2017, 33(1): 80–85. (in Chinese)
[10] MONSON C K, SEPPI K D. The Kalman swarm: A new approach to particle motion in swarm optimization[C]//Lecture Notes in Computer Science. Berlin Heidelberg, Germany: Springer-Verlag, 2004: 140-150. http://www.researchgate.net/publication/2953470_The_Kalman_Swarm_A_New_Approach_to_Particle_Motion_in_Swarm_Optimization
[11] SATAPATHY S C, CHITTINENI S, KRISHNA S M, et al. Kalman particle swarm optimized polynomials for data classification[J]. Applied Mathematical Modelling, 2012, 36(1): 115–126. DOI:10.1016/j.apm.2011.05.033
[12] 戴邵武, 王克红, 钱俭学. 基于AKPSO算法的加速度计快速标定方法[J]. 传感器与微系统, 2015, 34(2): 69–72.
DAI S W, WANG K H, QIAN J X. Rapid calibration method for accelerometer based on AKPSO algorithm[J]. Transducer and Microsystem Technologies, 2015, 34(2): 69–72. (in Chinese)
[13] 丁锋, 谢新民. 时变系统辨识的多新息方法[J]. 自动化学报, 1996, 22(1): 85–91.
DING F, XIE X M. Multi-innovation identification method for time-varying systems[J]. Acta Automatica Sinica, 1996, 22(1): 85–91. (in Chinese)
[14] 潘峰, 周倩, 李位星, 等. 标准粒子群优化算法的马尔科夫链分析[J]. 自动化学报, 2013, 39(4): 381–389.
PAN F, ZHOU Q, LI W X, et al. Analysis of standard particle swarm optimization algorithm based on Markov chain[J]. Acta Automatica Sinica, 2013, 39(4): 381–389. (in Chinese)
[15] HSU J, MUDD D, THORNTON Z. Mississippi State University Project Report-SCADA Anomaly Detection[R]. http://www.ece.uah.edu/~thm0009/icsdatasets/MSU_SCADA_Final_Report.pdf.