刘楚鸿 汪培萍
【摘要】 随着计算机网络的不断发展,越来越多的用户使用计算机,从而给黑客入侵网络提供了机会,网络的安全时刻面临着威胁。入侵检测技术是一种可以主动防御网络安全技术,它对网络的数据传输进行实时的监控,当发现有可疑数据时,及时发出警报或者采取主动防御措施。传统的入侵检测技术误报率高,自适应能力不足。因此,本文将自动编码器(Auto-Encoder)应用到入侵检测系统中去,基于Tensorflow-GPU 实现了该方法,并在Nvidia GTX 1060 6GB的GPU上 ,使用KDD数据集进行了评估.实验表明,检测准确率达到99%。
【关键词】 计算机网络 入侵检测 自动编码器 KDD
引言
现如今,计算机网络受到的攻击越来越多,一种常见的计算机网络安全系统是网络入侵检测系统(NIDS)。NIDS通过监视每个网络信道是否存在异常行为,当检测到异常行为时,及时发出警报或者采取主动防御措施。很多的机器学习技术被应用在NIDS以提高检测性能。最流行的方法是使用人工神经网络(ANN)进行网络数据检测。使用人工神经网络的优点是能够学习复杂非线性的数据,与其他的机器算法相比,在检测的性能有着很大的优势。
使用人工神经网络作为网络入侵检测系统(NIDS)的方法是训练它将网络数据分类为正常数据或者异常数据。而使用人工神经网络作为异常检测系统不能对原始数据进行实时处理,并且监督学习的训练方式导致了系统具有高复杂性。本文开发一种基于自动编码器集合的网络入侵检测器,该系统使用一组小型神经网络(自动编码器),比单个自动编码器在相同的特征空间中更有效,并且可以更小的噪声。它们可以在无监督的情况下进行训练;并且在重建不好的情况下,它们可以用于异常检测。实验表明,使用该方法能够提高检测准确率。
一、基于自动编码器集合的入侵检测系统
深度学习可以自动从原始数据中学习特征来提高分类器的准确率。Lecun等人概括了机器学习的基本架构,即特征提取模块与分类器模块。本文提出的基于自动编码器集合的在线入侵检测系统也基于此方法,组成如图1所示,主要由数据预处理模块、特征学习模块、异常检测模块组成。
1.1数据预处理模块
数据预处理模块首先将原始数据进行特征化处理,其中包括:文本特征的数值化和数据特征的标准化等。本文采用基于数据填充算法的转换方法,其转换过程如图2所示,在保留单个初始样本X中全部信息的基础上,对初始样本进行特征扩展,并且使用随机的正态分布来填充扩充得到的特征。该办法相对简单,并且容易实现。
图2 数据转换算法
数据输入的特征(维度)所在的数值范围往往都是不一致的,意味着数据存在偏差,不利于神经网络的处理,因此在数据预处理阶段进行标准化处理。本文采用主流零-均值规范化(Z-Score)的方法,如式1所示。
a为样本总数,xi为标准化前样本数据某一维度的特征值,为标准化之后样本数据所对应维度的特征值。
1.2特征学习模块
1.2.1在网络异常检测中,提取捕获每个穿越网络的数据包的上下文及目的的特征至关重要
从网络流量中提取特征的挑战是:
(1)来自不同信道输入(对话)的分组是交错的,
(2)在任何时刻可能有多个信道,
(3)分组到达率很高。
本文采用了一个特征提取框架,用于通过动态数量的数据流(网络通道)进行时间统计的高速特征提取。该框架内存占用量小,因为它使用在阻尼窗口上维护的增量统计信息。使用阻尼窗口意味着提取的特征是暂时的(捕获数据包通道的最终行为),并且当阻尼权重变为零时(节省额外内存),可以删除增量统计数据。
阻尼增量统计:设S={x1,x2,....................}是一个无界数据流,其中xi∈R。S的均值、方差和标准差可以通过保持元组IS=(N,LS,SS),(其中N,LS和SS是实例的个数、线性和平方和)逐步更新。具体来说,将xi插入IS的更新过程如式2所示:
任何给定时间的统计数据是
为了提取数据流的当前行为,就必须抛弃旧的实例。解决这一问题的方法是使用受抑制的增量统计数据。在阻尼窗口模型中,旧值的权重随时间呈指数递减。设d为衰减函数,定义为式
其中λ>0是衰变因子,t是从Si流中最后一次观察到的时间。阻尼增量统计的元组定义为ISiλ。ISiλ=(ω,LS,SS,SRij,Tlast),ω是当前权重,Tlast是ISiλ是上一次更新的时间戳。
SRij是流i和j之间的剩余积之和(用于计算2D统计量),在时间tcur更新具有Xcur的ISλ,执行算法1
1.2.2 特征映射器
特征映射器的目的是将x的n个特征(维度)映射到k个较小的子实例中,每个异常检测模块集成层中的每个自动编码器都有一个子实例。
设v表示k个子实例的有序集。v={,,......,};v的子实例可以看作是域X的子空间。为了确保异常检测模块中的工作有效且复杂度低,要求所选映射f()=v,确保每个都不超过m个特征,其中m是系统的用户定义参数,参数m影响集合的整体复杂性;将中的每个n个特征精确映射一次到v中的特征,将X的特征(维数)逐步聚类到不大于m的k群中,从而找到映射f。通过对增量更新的摘要数据执行聚集层次聚类来实现这一点。特征映射器的特征映射算法執行以下步骤:
(1)在训练模式下,增量更新摘要统计数据的实例特性;
(2)当训练模式结束时,对统计信息执行分层聚类以形成f;
(3)在执行模式下,执行f()=v,并将v传递给异常检测模块;
1.3异常检测模块
异常检测模块由两层的自动编码器组成,集成层与输出层。
集成层:
一组有序的三层自动编码器,该层负责测量v中每个子空间(实例)的独立异常。在训练模式期间,自动编码器学习其各自子空间的正常行为。在训练模式和执行模式下,每个自动编码器向输出层报告其RMSE重构错误。
输出层:
一种三层自动编码器,它学习集成层的正常(即训练模式)的RMSE。考虑子空间异常与网络流量中自然产生的噪声之间的关系,该层负责生成最终的异常评分。
当异常检测器从特征映射器接收到第一组映射实例V是,异常检测器使用实例V作为模型初始化异常检测器的结构。
具体来说,θ表示整个自动编码器,设L(1)和L(2)分别表示集合層和输出层。L(1)定义为有序集L(1)={θ1,θ2,.....θk}。
自动编码器θi∈L(1)有三层神经元:隐层神经元()在输入与输出层,与内层神经元β.(),β∈(0,1]。图3说明了∈V与∈L(1)之间的映射。
L(2)被定义为具有K个输入和输出神经元的单个自编码器θ0,以及[K*β]内神经元。L(2)的输入是来自L(1)中每个自动编码器归一化RMSE误差信号。
在L(1)中发送每个自动编码器的聚合错误(RMSE)信号,而不是来自L(1)的每个单个神经元的信号,从而降低了网络的复杂性。
利用均匀分布的随机值初始化了自动编码器θ i的权值。
自动编码器的训练算法如下:
在执行模式下,自动编码器不更新任何内部参数。并且在整个网络中执行前向传播,并返回L(2)的RMSE重构错误。算法3给出了执行的过程。
异常检测器的输出是RMSE异常分数S∈[0,∞],s越大则异常概率越大。要使用S,必须确定异常分数截止阈值φ。在所有实例都代表正常的流量情况下,将φ设置为训练模式中看到的最大分数。
另一种方法是按概率选择φ,具体而言将L(1)输出的RMSE分数拟合为记录正常或非标准分布,L(2)如果s发生的概率非常低,则提出警报。本文根据其原始的RMSE分数来评估异常检测器的检测能力。
二、实验结果分析
本文采用KDDCup99数据集用来检测算法的可行性,该数据集中,每一个连接有41个固定特征属性和1个类标识,在41个特征属性中有9个为离散(symbolic)型,其余均为连续(continuous)型,类标识用于表示具体的攻击类型;KDDCup99将入侵的行为分为DOS、R2L、U2L、Probing。
本文对10%的样本进行分析,其中包含495651个训练样本以及312029个测试样本,各类的入侵行为的分类如表1所示。
本文使用入侵检测准确率作为检测异常检测器的指标,其中准确率的计算公式如下所示:
A为准确率,TP和TN分别表示正确分类的攻击样本和正确分类的正常样本,FP和FN表示错误分类的攻击样本和错误分类的正常样本。
把入侵的数据经过数据预处理模块处理后,经过自动编码器集合的异常检测器后,得到的批处理数据量的准确率如表2所示。
从表2中的结果可以得到,当epoch的数目越大,入侵检测的准确率就越高。
三、结论
随着计算机网络的发展,越来越多的用户使用计算机网络,从而给黑客入侵网络提供了机会,网络的安全面临着威胁。入侵检测技术是一种可以主动防御网络安全技术,能对网络的数据传输进行实时的监控,当发现可疑数据时,及时发出警报或者采取主动防御措施。
本文提出的基于自动编码器集合的入侵检测技术,基于Tensorflow-GPU实现了系统模型的代码,并在Nvidia GTX 1060 6GB的GPU完成了模型在KDD标准入侵检测数据集上的测试。
实验表明,该模型对攻击的检测取得较好的检测性能,检测准确率达到99%。
参 考 文 献
[1] Evaluation of anomaly-based IDS for mobile devices using machine learning classifiers[J]. Security and Communication Networks, 2012, 5(1):3-14.
[2] Buczak A L , Member, IEEE, et al. A Survey of Data Mining and Machine Learning Methods for Cyber Security Intrusion Detection[J]. IEEE Communications Surveys & Tutorials, 2017, 18(2):1153-1176.
[3]高妮, 贺毅岳, 高岭. 海量数据环境下用于入侵检测的深度学习方法[J]. 计算机应用研究, 2018, 35(4):1197-1200.
[4]邓俊锋, 张晓龙. 基于自动编码器组合的深度学习优化方法[J]. 计算机应用, 2016, 36(3):697-702.
[5]王艳华, 马志强, 臧露. 入侵检测技术在网络安全中的应用与研究[J]. 信息技术, 2009(6):41-44.
[6]潘志松. 基于神经网络的入侵检测研究[D]. 南京航空航天大学, 2003.
[7]基于自动编码器的半监督表示学习与分类学习研究[D]. 重庆大学, 2015.