吴金宇, 陶文伟, 吴昊, 陈刚
(1.中国南方电网有限责任公司,广东 广州 510623;2.中国南方电网数字电网研究院有限公司,广东 广州 510555)
针对工控系统服务安全运行的问题[1-3],国内外许多学者发表了研究方案。文献[4]公开了一种基于K最近邻分类算法的入侵检测模型,利用对所有流量数据或恶意程序进行邻近分类,达到快速处理提高整体工控系统的安全性能,然而该方法所耗时间较长、效率较低。文献[5]提出了一种基于卷积神经网络的入侵检测模型,采用SVM支持向量机算法与K-means聚类算法结合使用,该方法对实时数据处理的效果很好,且效率有很大提高,但是面对多维异构数据无法进行特征提取,且聚类算法容易破坏数据之间的关联性。
总结上述技术的不足,本文研究出新型状态监测防火墙和CNN-Focal入侵检测模型,以实现工控系统安全运行。
工控系统是各类工业生产控制系统(ICS)的简称,其主要任务是对各种国家的基础设施或者工业活动进行监测控制和数据采集[6],典型的工业控制系统层次架构如图1所示。
从图1可以看出,一个工控系统层次架构有三层,分别是企业管理层、过程监控层和现场设备层。其中企业管理层主要是上层管理人员对整个工控系统的管理应用以及安全正常运维工作[7]。在整个工控系统中,设立工业防火墙是必要工作,这种高新技术需要管理工作站相关程序研发部门进行实施。过程监控层主要是对工作现场的设备调试和设备运行进行实时监控,例如流量数据采集系统、可编程逻辑控制器(PLC)以及各种无线通信设备。现场设备层是基础,每天工业车间会产生大量数据,需要进行管理,是数据来源所在[8]。
图1 典型的工业控制系统层次架构
随着信息化和工业化的进一步融合,使智能电网工控系统遭到了比传统攻击更强、更大的破坏,如图2所示。
图2是一次对电网的典型攻击过程,攻击者借助病毒、恶意代码和漏洞,通过网络对目标电网控制系统进行攻击,进而影响电力的配送。
图2 攻击者对电网工控系统攻击示意图
入侵检测技术(IDS)是一种安全防护技术,属于工控系统中安全运行体系的起始部分,可以对网络的状态和系统的使用情况进行监控。这种防护技术在工控系统中经常使用,检测到有危险的行为后会发出预警。本文研发出一种新型的状态监测防火墙,流量数据传输流程如图3所示。
图3 流量数据传输流程
状态监测防火墙是对外部路由器端得到的流量数据进行监测筛选的防御手段。当收到安全信息流量数据包时会进行状态监测,判断其是否为恶意信息,正常则进入到相对应的板块。然而在设立状态监测防火墙的同时,由于检测阈值是静态的,在长时间段的工程中会出现网络迟滞问题,因此需要对状态监测防火墙内部的检测算法进行优化。
2.1.1 动态阈值检测算法
算法过程为:
(1)
式中:α为流量数据量大于流量数据权值的比例参数。根据时间平移加权,得出流量数据权值与流量数据量的关系式为:
(2)
式中:β为加权比例系数。在实际应用中,单采用式(1)、式(2)得出的结果存在很大的误差,因此本文引入布尔型变量概念来判定工控系统是否遭到攻击,布尔型变量h的条件判定公式为:
(3)
在以上式子的基础上,设立动态阈值k,在满足式(3)时布尔型变量h与动态阈值k的判别条件为:
(4)
然而,动态阈值k也并非随意取值,k的值太大反而会影响工控系统安全性能。
2.1.2 Cubic拥塞控制算法
本文采用Cubic拥塞控制算法对状态监测防火墙进行进一步的优化。Cubic算法与BIC算法非常相似,均属于拥塞控制算法类型,其核心原理在于通过二进制搜索动态阈值处流量数据的输送速率,非线性增长达到此速率以解决状态监测防火墙网络传输性能差的问题。关于Cubic拥塞控制算法增长函数如图4所示。
图4 Cubic拥塞控制算法增长函数
如图4所示,Wmax表示窗口最大值。Cubic拥塞控制算法的计算过程如下:在状态监测防火墙监测流量数据发生堵塞时,拥塞窗口会缩小,Cubic拥塞控制算法得出增长到窗口最大值Wmax所耗时间K的表达式为:
(5)
式中:C为常数;cwnd为拥塞窗口值。在发生网络拥塞后,Cubic拥塞控制算法将调整拥塞窗口的大小,如果Cubic算法处于收敛状态,计算Wmax为:
(6)
式中:BETA_SCALE为测试流量数据的窗口值。如果Cubic算法还没有处于收敛状态,则Wmax等于拥塞窗口值。其cwnd的取值由式(7)得出:
(7)
在式(7)中,max()函数确保cwnd有最小值2。通过以上式子,Cubic拥塞控制算法能得出K最优解,来提升状态监测防火墙的网络传输性能。
为了解决传统方法面对多维异构数据无法进行特征提取的难题,研究出基于CNN-Focal入侵检测模型来实现工控系统服务安全正常运行。CNN是卷积神经网络的简称,与普通神经网络一样能方便提取数据特征图像,不同的是比普通神经网络模型架构多了一个卷积层。详细划分工控系统异常模式,可以在发生网络攻击时,CNN能快速定位攻击源头,并且缓解和恢复工业控制系统状态,基于CNN的工控系统异常检测流程如图5所示。
图5 基于CNN的工控系统异常检测流程图
下面对关键层次结构进行说明:
(1) 两个卷积层
卷积层对于工控异常数据图像来说相当于一种滤波器,与滤波器所不同的是卷积是通过卷积核的不同对输入进行训练处理,提高了效率,极大地减少了参数量。本文采用的是两层卷积,第一层卷积采用的是64个3×3×3卷积核进行卷积处理,卷积后的图与原尺寸一致,在经由一层池化之后,然后再通过第二层的16个3×3×3卷积核实施卷积计算。
(2) 两个池化层
池化是利用卷积核来减少图像数据的参数个数,并依然能进行图像数据特征提取的过程。池化操作虽然丢失了一些信息,但保持了图像的平移和扩展的不变性。
(3) 两个全连接层
本文通过固定输入工控异常数据图像大小以及全连接层系数矩阵,为输出层提供更加突出的图像特征。
在构建好神经网络模型之后就可以进行训练,通过Focal loss损失函数进行模型测试。为了减少内存消耗,通过添加神经网络压缩加速技术对内存进行优化。通过模型测试和优化交替判断处理,可以使训练时间更快。
试验硬件环境为Pentium(R)CPU、8核16 GB内存、硬盘容量为512 GB,软件的操作系统为Windows10、JDK5.0。
本文采用NSL-KDD数据集用于本试验测试,NSL-KDD数据集是目前入侵检测领域内最好的数据集之一,其包含41列特征和1列标签,测试集拥有22 543条,并且对试验测试服务器性能要求不高。NSL-KDD数据集部分特征及其权重值如表1所示。
表1 NSL-KDD数据集部分特征及其权重值
在采取试验所需数据的过程中:首先要进行数据预处理,将NSL-KDD数据集中41列特征进行合理筛选,得出原始流量数据;其次要对原始流量数据进行标准化,使得流量数据的收敛时间和精准度进一步提高。为了便于本试验测试,其权重值缩放到[0,1]区间内,变换式为:
(8)
式中:X为原始流量数据样本的数据值,减去最小数据值再除以最大数据值之差即为标准化下的权重值。利用本文的监测系统进行数据处理。
在有了表1的数据样本之后,为了验证本文所研究的关键技术的适用性和可行性,下面将分别对状态监测防火墙和多源异构数据融合组合算法进行试验设计与结果分析。
在上式动态阈值监测算法中,设立有关阈值k=4,根据式(4)可以得出:
(9)
以NSL-KDD数据集部分特征在攻击工控系统后产生攻击流量数据为例,设产生的攻击流量数据包为1 000个,输出攻击指令的延迟时间为0。下面将根据被攻击后数据传输的丢包率以及吞吐量结果对本文监测系统的性能进行评估。
在整个工控系统还未受到攻击时,处于正常情况下系统流量数据的吞吐量(900 kpbs)和丢包率(10%)随时间变化趋于稳定状态,分别如图6和图7所示。
图6 正常情况下工控系统的吞吐量结果
图7 正常情况下流量数据丢包率结果
在整个工控系统受到攻击后,采用普通防护墙和状态监测防火墙的流量数据丢包率结果如图8所示。
从图8可以看出,采用普通防护墙后,整个时间段平均约60%的流量数据包发生了丢包现象,只有40%的成功传收比例,这表明普通防火墙应对攻击时流量数据的信息传输受到了严重干扰。而采用状态监测防护墙之后,只有约为16.6%的流量数据包发生了丢包现象,有83.4%的成功传收,这表明状态检测防火墙能快速监测到流量数据并准确地进行信息传输。
图8 受攻击状况下流量数据丢包率结果
采用普通防护墙和状态监测防火墙的流量数据的吞吐量结果如图9所示。
图9 受攻击状况下流量数据的吞吐量结果
从图9可以看出,本文研究的状态监测防火墙具有适用性。
为了验证本研究采用的CNN-Focal入侵检测模型的可靠性,将采用SVM支持向量机入侵监测模型进行对比。在试验过程中所需要的有关具体实现CNN-Focal入侵检测模型程序参数代码如下:
迭代次数:nmm_epochs=200
批处理个数:batch_size=1 280
学习速率:lerning_rate=1×10-3
均方损失函数:criterion=nn.MSELoss
NSL-KDD数据集Normal、Probe、Dos和R2L四大类标签特征在攻击工控系统后产生攻击流量数据,设产生的攻击流量数据包为1 000个,输出攻击指令的延迟时间为0。下面根据运算将两种方法的损失函数总体指标、损失函数准确率以及损失函数的召回率结果进行对比,结果详见表2、表3和表4。
表2 两种方法损失函数总体指标对比
表3 两种方法损失函数准确率对比
表4 两种方法损失函数召回率对比
从表格结果来看,本文研究的CNN-Focal入侵检测模型的总体指标量更高,准确度更高,损失函数召回率更高,表明本研究的CNN-Focal入侵检测模型更加可靠。
本文在分析了目前工控系统服务安全面临的各种运行问题和威胁,总结现有技术存在的缺陷之后,给出工控系统服务安全的解决方向,指出工控系统服务安全的重要性。但是本文所采用的方法依然没有达到正常情况下流量数据丢包率的水平,还有待进一步的研究。