赵智阳,夏筱筠
1(中国科学院大学,北京 100049)
2(中国科学院 沈阳计算技术研究所,沈阳 110168)
电网工控系统是控制管理电网的中枢系统,原本是相对封闭的内部环境,遭受的网络入侵行为相对较少.但是随着网络互联在电网系统中的不断应用,系统智能化加深的同时,将越来越多的部件暴露在外部网络之中,面临着越来越多的网络入侵行为.2010年,“震网”病毒攻击了伊朗核电站中的计算机控制部件,导致离心机转动受到极大影响[1].2015年,乌克兰遭受两次针对电力系统的网络入侵行为,造成重大损失[2].电网工控系统中控制中心和传感器等设备之间并未采取安全隔离措施,缺乏入侵检测防护层,极易造成重大损失[3].电网工控系统内部流量主要为内网采集的处于网络边缘位置设备的信息,系统内部缺乏对网络包的深度解析.因此,有效的检测出电网工控系统中的网络入侵行为,才能保证电网系统的高效安全运转.
入侵检测技术是一种获取并分析网络中的数据,并判断其为合法访问或网络入侵的技术.其中,基于特征的入侵检测将网络行为与已知的攻击行为进行比较,常用的方法有规则匹配、模式识别等;基于异常的入侵检测,首先通过历史数据建立数学模型,之后将数据包与已建立的数学模型设定的阈值进行比较,若超过安全阈值则视为网络入侵,常用的方法有支持向量机和机器学习等[4].针对电网工控系统的网络入侵主要有:针对工业网络协议漏洞的攻击;入侵者通过外联网络进入内网形成入侵,如未授权访问;针对环境中广泛采用的无线传输进行攻击等.本文选取KDD99 数据集作为实验数据集,其中入侵数据主要包括DoS、非法网络探测和未授权访问等4 种,其中未授权访问会对电网工控系统造成更大危害.
卷积神经网络由多组神经元组成,神经元之间的局部连接,有效的传递了数据特征,结合权值共享和局部连接等自身优点,可以简化人工神经网络的训练,同时使得程序具有较强的鲁棒性[5].电网工控系统与变压器、发电站等实际物理设备相联系,一方面,系统与实际生活息息相关,需要保证控制信息实时传递;另一方面,系统不能宕机,因此需要保证实时性和稳定性.使用卷积神经网络模型,在经过良好的数据训练之后,模型稳定且计算快速,可以在系统层面达到实用要求.本文设计卷积层参数(卷积核大小和卷积核个数),池化层参数(池化核大小和池化核个数),网络层数,并加入级联卷积层优化网络结构.使用筛选之后的训练集对网络进行训练.最终进行实验,与传统的K-means 聚类和SVM 方法对比准确率和误报率,实验结果表明本文算法提高了入侵检测效果.
Anderson 于1980年首次提出“入侵检测”概念,将未经授权访问和篡改信息等行为归为网络入侵[6].早期的入侵检测手段主要通过专家和技术人员建立入侵特征数据库,进而将网络数据与数据库数据进行比较.若特征匹配,则判定为入侵数据;否则,判定为正常访问数据[7].
近年来,随着机器学习的迅猛发展,越来越多的研究人员将其应用到入侵检测之中,提出新型入侵检测技术.Tang 等采用一种基于支持向量机的层次异常入侵检测技术,可以在较少先验知识的前提下,用于检测新型网络入侵攻击[8].Hatim 等基于K-means聚类提出一种融合的机器学习技术,并构建一个低延时入侵检测系统[9].Su 等将层次分类算法和SVM融合,结合特征选取技术和SVM 算法特性,消除不重要数据特征,从而达到缩短训练时间,同时提高DoS和非法探测两种入侵行为的正确率[10].Raman 指出目前的入侵检测技术在稳定性和能否检测出新型网络入侵之间需要做出取舍,提出一种基于Hypergraph和概率的神经网络,可以有效解决网络入侵的分类问题,在算法稳定性和检测正确率上都有所提升[11].杨昆朋采用深度信念网络(DBN)进行特征学习,将其与支持向量机相融合,验证了深度学习在数据集丰富场景中,具有更高的准确率[12].卷积神经网络在多个应用领域都有良好表现,但是网络层次过深,网络复杂度太高,最终则不能在实际应用场景中使用,只有设计符合特定应用场景的网络结构,才能真正在实际应用中发挥效果[13].
本文完整算法流程如下所示:
Step 1.筛选KDD99 中通信协议为TCP和UDP数据集,剔除无效数据集,增加未授权入侵行为数据比例,使得四种入侵行为所占比例相同;
Step 2.将字符型数据转化为多维数值向量,同时使用PCA 算法,降低数据维度;
Step 3.设计卷积核、池化核和全连接层等卷积神经网络参数,加入级联卷积层优化网络架构;
Step 4.使用处理后的训练集和测试集训练网络,比较准确率和误检率指标表现,调整参数使得网络结构最优;
Step 5.增加epoch 数量,当epoch 数量增加使得准确率有下降趋势时,停止训练;
Step 6.将预测后的数据每隔一段时间加入到数据集中,用于下一步训练.流程图如图1所示.
图1 算法流程
神经元是神经网络中基础单元,数据通过神经元之间的不同权重进行传递,之后进行输出,神经元基本结构如图2所示.
图2 神经元架构
网络数据流通过神经元被提出数据特征后,传递到下一个神经元.经典卷积神经网络架构如图3所示.
图3 卷积神经网络
输入Input 通过中间的卷积层、池化层和全连接层,最终输出Output,本文中Input为训练数据,Output为预测入侵行为和正常行为的概率.本文神经网络采用的结构为:4 个卷积层、4 个池化层和1 个级联卷积层,另外还有1 个全连接层,其中级联卷积层包括4 个卷积层,每个卷积层之后相连1 个激活层,最终相连1 个池化层.
输入数据通过卷积层卷积操作之后,数据不同维度特征将被提取出来,卷积核一般设置为n×n权值矩阵(n一般取值为3、5 或7),本网络采用3×3 卷积核,4 层卷积层分别有4、8、16和32 个卷积核.卷积操作公式如下:
其中,为神经元输入值,为偏置值,为输出值.卷积层之后的池化层,用于对其之前的卷积层特征进行筛选降维,常用的操作为最大池化和平均池化[14].本文神经网络池化核大小为1×1,每一层有8 个池化核.池化公式如下:
图4 级联卷积层
数据经过神经网络传递,最终全连接层用于采集之前网络的局部信息.为了提升卷积神经网络的性能,网络中神经单元的激活函数采用ReLU 函数.公式如下:
ReLU 函数在输入值小于0 时,输出值为0;当输出值大于0 时,输出值与输入值相等.常用激活函数比较如图5所示.
图5 激活函数对比
输出层采用Softmax 逻辑回归,网络输出5 个概率,分别对应于Normal、Dos、Probe、U2R和R2L,选取其中概率最大的标签作为最终的预测结果.
本文卷积神经网络通过减小卷积核尺寸、增加级联卷积层和减少网络层数等技术,保持整体参数规模不大.采用3×3 卷积核,相对于传统7×7 卷积核,减少了运算量.级联卷积层在保持参数量变小的前提下,保持网络可以获得相同的感受野.采用较少的网络层数,减少了计算的复杂度.结合卷积神经网络权值共享等特性,本文实验表明网络可以达到实时性要求.
卷积神经网络经常采用BP 算法进行训练[15].开始训练之前,使用小的随机数对网络中的参数进行初始化设置,之后训练过程主要分成两个步骤.首先,训练集中带标签的数据传入神经网络,经过神经网络中连接参数的运算,输出层结果与数据标签进行对比;然后,输出结果与标签的误差经过反向传播,进而调整网络中的参数.经过不断训练,网络中的参数得到不断调整,使得损失函数结果得到优化,最终停止训练.
梯度下降法每次使用全部数据进行参数更新,运算量非常大,使用训练时间较长.进一步采用随机梯度下降,每次选取其中一条数据进行更新,训练速度大大提升,但是会陷入局部最优解.采用批量更新,每次选取部分样本数据,在运算时间和效果之间取得平衡.学习率的选取深刻影响模型训练的时间和效果,初始采用较大学习率,训练一段时间后,降低学习率,以完成最终的网络训练[16].本文采用初始学习率0.01,之后降低学习率.
电网工控系统中数据主要分为2 种:从传感器传入控制中心的数据和从控制中心对各个传感器发送的命令指令,具有数据格式固定、数据包小而多等特点[17].本文使用公开权威数据集KDD99.数据集格式如图6所示.
图6 数据格式
KDD99 数据集共500 万余条,每条数据代表一次网络行为,每条初始数据由42 维组成,其中38 维为数值特征,4 维为符号特征.每一个维度之间用逗号分隔,用来刻画网络协议、字节数、流量统计等特征,最后一维标签为normal (正常网络访问)或者attack (网络入侵).
根据第二维度代表的通信协议,选取其中TCP和UDP 协议数据.考虑只有数值维度可以通过卷积神经网络处理,将字符型的数据维度通过热编码技术转化为数值.处理之后数据维度提升至64 维,维度过多,影响训练时间.考虑U2R和R2L 入侵对电网造成危害更大,提高数据集中U2R和R2L 数据比例,使得4 种入侵行为数量均衡.不同维度数据大小相差过多,如图6中第一行数据,数值型最大值为397,而部分维度为0.04、0.02.PCA 算法为常见降维算法,利用方差理论,根据不同特征维度对结果的影响,选取影响较大的维度,将多维数据映射为低维数据.采用Min-Max 标准归一化算法,在不破坏原有映射关系的情况下,将数据映射到0和1 之间:
根据PCA 算法,选取其中重要的52 维数据.符合条件数据选取训练集样本95136 个,其中正常样本49603个,入侵样本45533 个.测试集46331 个样本,其中正常样本27743 个,入侵样本18588 个.其中U2R和R2L在原始集中样本量就非常少,全部选取,处理后放入数据集.
SVM (Support Vector Machine,支持向量机)是一种有监督的机器学习算法,常用于二分类问题,在本实验中用于将数据判定为正常数据或者入侵数据.学习目标为二元变量1(入侵)或者–1(正常),输入数据为电网数据和数据标签.算法求解过程是给定决策函数求超平面(ω×x+b=0),转化为数学函数优化问题.SVM 算法有严格的数学推导过程,在深度学习之前一直是常用的机器学习算法,但是依赖于计算能力和数据量的提升,卷积神经网络能达到更好的效果[18].
K-means 算法核心思想是,选取k个对象作为聚类的中心,进而算出其余对象与中心的距离并划分到最近的中心,不断更新中心位置直到聚类中心不再变化为止[19].实验中对于K-means 算法的应用使用sklearn中相关的库,将数据分为5 个中心,分别对应于1 个正常数据中心和4 个入侵行为中心.
实验评价指标定义如下所示:
其中,TP:实际为入侵行为,预测为入侵行为;TN:实际为正常行为,预测为正常行为;FP:实际为正常行为,预测为入侵行为;FN:实际为入侵行为,预测为正常行为.准确率即算法模型判断数据正确所占的比例,误检率用于衡量算法模型错误分类的比例,即将数据通过相应训练之后的模型得出为正常或者入侵行为,进而与数据标签对比得出此两者指标大小.两者组合可以反映出模型对于入侵数据的判断准确率,同时误检率作为参考.
本文使用Tensorflow 深度学习框架进行神经网络训练,训练集的全部数据训练一次称为一次epoch,实验不断增加epoch 数量,如图7所示.其中,准确率先上升,准确率上升的速率先上升后减缓,达到450 次之后,有下降趋势,此时网络模型达到最优结构,停止训练.
图7 训练结果
图8所示为SVM 算法和K-means 算法与本文网络模型对比正确率和误检率实验数据.
图8中展示了不同方法的入侵检测准确率和误检率,其中基于K-means 算法的实验准确率为75.63%,误检率为9.46%;基于SVM 算法的实验准确率为87.79%,误检率为8.33%.本文基于卷积神经网络的算法准确率为95.37%,误检率为8.09%,相较于另外两种算法具有更高的准确率和更低的误检率,其中准确率的提升相较于误检率的下降更为明显.分析原因如下:传统SVM算法和K-means 算法相较于深度学习算法,如本文卷积神经网络算法,本文算法模型复杂度更高,因此具有更强的表达能力.
图8 实验结果对比
针对如何在电网工控系统中检测出入侵行为这一问题,本文提出一种基于卷积神经网络的入侵检测算法.本文采用KDD99 数据集作为原始数据集,根据电网工控系统自身实时性和稳定性的要求,系统数据流向固定、数据包小等特点,在数据处理过程剔除不重要的特征维度,筛选出训练集和测试集.构建不同的卷积神经网络架构,选取不同的卷积核、池化核和网络层数等参数进行实验.加入级联卷积层优化网络结构,最终与传统SVM 算法和K-means 算法进行对比,在准确率和误检率方面显示本文算法有良好表现.