基于AE-CNN的工业控制网络入侵检测方法及装置

文档序号:26057089发布日期:2021-07-27 15:35阅读:135来源:国知局
基于AE-CNN的工业控制网络入侵检测方法及装置

本发明属于工业控制系统入侵检测技术领域,涉及一种基于ae-cnn(auto-enconder-enhancedconvolutionneuralnetwork,自编码器-卷积神经网络)的工业控制网络入侵检测方法及装置。



背景技术:

工业控制系统遍及电力、化工、石油等行业,并且随着信息化和工业化的相互融合,使得工业控制系统内部的通信网络逐渐的与互联网互联互通。这样使得工控系统原有的封闭性被打破,容易遭受到更多的攻击。入侵检测系统可以在外部攻击对系统造成危害之前检测出攻击,并发出警报。传统的it网络中入侵检测技术已经比较成熟,但是工业控制系统对于安全的要求与传统it系统不同。

当前针对工业控制系统入侵检测的方法是通过实时采集modbustcp数据作为特征向量,通过支持向量机二分类模型得到检测结果,如果发现异常流量则进行报警,其优势在于可以检测出某些防火墙无法识别的异常流量。

传统技术工业控制系统入侵检测的方法,存在训练时间长的问题。



技术实现要素:

为了解决传统技术工业控制系统入侵检测的方法存在训练时间长的技术问题,本发明提供了一种基于ae-cnn的工业控制网络入侵检测方法及装置。

本发明的目的是通过以下技术方案实现的:

一种基于ae-cnn的工业控制网络入侵检测方法,包括如下步骤:

s100、从工业控制系统的通信协议的网络数据集中,提取工业控制系统的原始数据集;

s200、从原始数据集中获取训练数据集和测试数据集;

s300、利用自编码器对训练数据集和测试数据集进行特征降维,获取特征降维后的训练数据集和特征降维后的测试数据集;

s400、基于入侵检测模型对特征降维后的训练数据集进行训练,得到分类模型;

s500、将特征降维后的测试数据集输入分类模型进行分类处理,获取工业控制系统的入侵检测结果。

一种实现上述基于ae-cnn的工业控制网络入侵检测方法的检测装置,包括原始数据集提取模块、原始数据集分类模块、特征降维模块、模型训练模块和数据分类模块,其中:

所述原始数据集提取模块用于从工业控制系统的通信协议的网络数据集中,提取工业控制系统的原始数据集;

所述原始数据集分类模块用于从原始数据集中获取训练数据集和测试数据集;

所述特征降维模块用于利用自编码器对训练数据集和测试数据集进行特征降维,获取特征降维后的训练数据集和特征降维后的测试数据集;

所述模型训练模块用于基于入侵检测模型对降维后的训练数据集进行训练,得到分类模型;

所述数据分类模块用于将特征降维后的测试数据集输入分类模型进行分类处理,获取工业控制网络的入侵检测结果。

相比于现有技术,本发明具有如下优点:

本发明通过运用自编码器进行特征降维,实现了去除冗余信息,减少计算量,从而解决了传统技术工业控制系统入侵检测方法训练时间长的技术问题。

附图说明

图1为本发明基于ae-cnn的工业控制网络入侵检测方法的流程图;

图2为图1中s100的具体流程图;

图3为图1中s300的具体流程图;

图4为图1中s400的具体流程图;

图5为实施例中的卷积神经网络模型架构图;

图6为实施例中工业控制系统的入侵检测方法的流程示意图;

图7为本发明基于ae-cnn的工业控制网络入侵检测装置的结构框图。

具体实施方式

下面结合附图对本发明的技术方案作进一步的说明,但并不局限于此,凡是对本发明技术方案进行修改或者等同替换,而不脱离本发明技术方案的精神和范围,均应涵盖在本发明的保护范围中。

本发明提供了一种基于ae-cnn的工业控制网络入侵检测方法,如图1所示,所述入侵检测方法包括以下步骤:

s100、从工业控制系统的通信协议的网络数据集中,提取工业控制系统的原始数据集。如图2所示,s100具体包括以下步骤:

s110、根据工业控制系统的通信流量对待处理数据进行分类处理,获取待处理数据的入侵类别,其中:待处理数据为网络数据集中的数据;

s120、获取网络数据集中的命令数据包和响应数据包;

s130、根据命令数据包和响应数据包获取待处理数据的数据特征;

s140、将数据特征和入侵类别设为原始数据集,其中:数据特征包括设备地址、内存起始位置、读写命令、响应的内存字节数、命令数据包和响应数据包的读写功能码、命令数据包和响应数据包的长度、命令数据包和响应数据包之间的时间间隔、循环冗余校验的错误率以及工业控制系统的特性或状态值。

s110后还包括以下步骤:

s111、对数据的入侵类别进行赋值处理。

本步骤中,工业控制网络的通信协议一般为modbus协议。具体地,可以采集工业控制网络基于modbus协议的网络数据集,从网络数据集中提取工业控制系统遭到入侵时可能受到影响的变量作为选取的特征,作为原始数据集。

s200、从原始数据集中获取训练数据集和测试数据集。

本步骤中,训练数据集用于输入入侵检测模型,从而得到分类模型,而测试数据集则用于输入上述分类模型进行分类,从而得到分类结果。具体地,在得到原始数据集之后,可以将上述原始数据集按一定比例分为训练数据集和测试数据集。例如:可以根据需要将原始数据集按4:1的比例,分为训练数据集和测试数据集。

本步骤中,在将原始数据集分为训练数据集和测试数据集之后,还可以对训练数据集和测试数据集进行归一化处理,以保证特征向量中的各个数值处于同一数量级。

s300、利用自编码器对训练数据集和测试数据集进行特征降维,获取特征降维后的训练数据集和特征降维后的测试数据集。如图3所示,s300具体包括以下步骤:

s310、对训练数据集中的元素进行标准化,组成标准化矩阵;

s320、先对解码网络和编码网络的权值进行随机初始化,再通过标准化矩阵中的最小化重构项和原始数据集之间的误差对权值进行训练。

s320中,误差的偏导数通过后向传播得到梯度,即把误差偏导数先通过解码网络,再通过编码网络进行传播,从而得到ae网络模型。

s400、基于入侵检测模型对特征降维后的训练数据集进行训练,得到分类模型。具体地,可以通过入侵检测模型对降维后的训练数据集进行训练,从而得到支持向量机的分类模型。如图4所示,s400具体包括以下步骤:

s410、从训练数据集中提取出数据特征作为输入数据集;

s420、通过卷积神经网络分类模型对输入数据集进行训练,得到预测值;

s430、将预测值和实际值输入到分类交叉熵损失函数,获取分类交叉熵损失函数输出的损失函数值,其中:实际值可以是数据的入侵类别的赋值;

s440、当训练次数达到损失函数值变化小于设定阈值时,选择损失函数值最小时所对应的训练后的卷积神经网络分类模型为分类模型。

具体的,在得到分类模型后,可以将测试数据集输入上述分类模型进行分类处理,该分类结果可以是五维的混淆矩阵,之后可以对五维混淆矩阵进行评估,来判断上述工控系统网络入侵检测方法是否符合检测要求,并且可以与常规的入侵检测方法进行对比。通过对比实验可知:上述工业控制系统的入侵检测方法,不仅减去了40%的特征维数,还在准确率、检测率和误报率上均有显著的提高。

s500、将特征降维后的测试数据集输入分类模型进行分类处理,获取工业控制系统的入侵检测结果。具体地,在s400得到支持向量机的分类模型后,将特征降维后的测试数据集输入上述支持向量机的分类模型,对上述测试数据集进行分类处理,根据分类结果可以判断工业控制系统是否受到入侵甚至还可以判断其受到入侵的类型。

基于上述基于ae-cnn的工业控制网络入侵检测方法,本发明提供了一种基于ae-cnn的工业控制网络入侵检测装置,如图7所示,所述检测装置包括原始数据集提取模块、原始数据集分类模块、特征降维模块、模型训练模块和数据分类模块,其中:

所述原始数据集提取模块与原始数据集分类模块连接,原始数据集分类模块分别与特征降维模块和模型训练模块连接,特征降维模块和模型训练模块均与数据分类模块连接;

所述原始数据集提取模块用于从工业控制系统的通信协议的网络数据集中,提取工业控制系统的原始数据集;

所述原始数据集分类模块用于从原始数据集中获取训练数据集和测试数据集,进一步用于根据工业控制系统的通信流量对待处理数据进行分类处理,获取待处理数据的入侵类别;上述待处理数据为该网络数据集中的数据;获取网络数据集中的命令数据包和响应数据包;根据命令数据包和响应数据包获取待处理数据的数据特征;将上述数据特征和上述入侵类别设为原始数据集;

所述特征降维模块用于利用自编码器(autoencoder,ae)对训练数据集和测试数据集进行特征降维,获取特征降维后的训练数据集和特征降维后的测试数据集;

所述模型训练模块用于基于入侵检测模型对降维后的训练数据集进行训练,得到分类模型;

所述数据分类模块用于将特征降维后的测试数据集输入分类模型进行分类处理,获取工业控制网络的入侵检测结果。

实施例:

如图6所示,本实施例按照如下步骤进行基于ae-cnn的工业控制网络入侵检测:

s1:采集工业控制系统基于modbus协议的网络数据集,提取modbus客户端和modbus服务器端的通信流量,并将数据集中每条数据的类别分为正常、侦查攻击、响应注入攻击、命令注入攻击和拒绝服务攻击,每条命令数据包和对应的响应数据包中的特定特征合并作为数据集中的一条。

s2:针对工控系统的特点,可以提取出上述modbus数据集中的命令、响应数据包中的设备地址、内存起始位置;读写命令、响应的内存字节数;命令包、响应包的读、写功能码;命令包、响应包的长度;两个包之间的时间间隔;循环冗余校验的错误率。此外,根据不同工控系统的特性,提取pid参数值还有工控系统特有的状态值,例如管道压力、电磁阀状态、泵状态等等。以上合计n个特征,最后一维用类别标注,即每条特征向量中合计有n+1个值;将上述原始数据集按4:1的比例分为训练集和测试集,然后进行归一化处理,使得特征向量其中的各个值属于同一个数量级。

s3:针对数据集中特征数量多、可能存在相关性和冗余的问题,使用自编码器使用少数新特征来代替全部特征。

s4:将正常状态时的特征向量的类别标注为0,攻击类型为侦查时标注为1,攻击类型为响应注入攻击时标注为2,攻击类型为命令注入攻击时标注为3,攻击类型为拒绝服务攻击时标注为4。

s5:将处理好的特征向量输入到卷积神经网络分类模型中去,其中卷积神经网络模型基于tensorflow的深度学习框架keras,并使用python语言编写,配置使用gpu加速。

如图5所示,入侵检测模型为卷积神经网络模型。

cnn模型设计为3个卷积层,2个全连接层,1个过渡层flatten层;卷积核数量设计为8-16-32逐步递升,加强特征学习的能力;并且在每层卷积层和全连接层后各增加了一层dropout层,按照30%的概率随机丢弃神经网络单元防止过拟合。

预处理过后的数据通过三层卷积层进行卷积操作并提取特征,而后通过全连接层后进入softmax分类器得到本次分类的预测结果,亦可得到预测值和真实值的差值,在这里按照损失最小的方式调整卷积神经网络中的网络权重;损失函数的输出值越高代表差异性越大,所以卷积神经网络训练的目的就是尽可能的降低loss值,在这里采用的是分类交叉熵损失函数(在keras中直接选取categorical_crossentropy)它常用于多分类的问题,增加l2范数来控制权值的过拟合,参数λ控制过拟合的强度,总体的损失函数为:在训练时,loss值使用adam随机梯度下降算法进行反向传播,更新网络中各层的权值参数w和偏置参数b,其中η为学习速率,然后重复训练过程,直到损失函数值降低到变化不大,并通过keras中的模块modelcheckpoint保存loss值最低时的最优模型。

s6:将有五类标签的测试数据集输入到上述得到的最优模型中进行分类,得到分类结果,也就是五维的混淆矩阵。

s7:对五维混淆矩阵进行评估,采用准确率、检测率和误报率作为评估指标对分类结果进行评估,来判断该基于ae和cnn的工控系统网络入侵检测方法是否符合检测要求,并且可以与常规的入侵检测方法进行对比,从复杂度、耗时、计算量等方面进行对比。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1