近年来,国内外网络安全事件层出不穷,仅在2015年度发生的信息泄漏事件就不胜枚举,越来越多的企业和用户成为网络攻击的受害者,因此,如何保护隐私信息,使其免受或少受来自互联网恶意用户的攻击,已经成为当今网络技术人员和业界密切关注的问题。
入侵检测系统是信息安全综合防御系统的重要组成部分,其核心技术是通过分析网络节点采集的流量数据来发现违反安全策略的入侵行为,在发现可疑通信时发出警报或者采取主动反应措施,是一种积极主动的安全防护技术。
入侵检测技术一般分为基于标志和基于异常两类[1],传统检测方式都是以离线数据库的方式实现的,通过和本地样本库的已知攻击样本进行模式匹配来实现网络上的攻击检测。显而易见,这种方式的缺陷是只能检测出样本库中已经存在的类型攻击,检测过程中自适应能力差,无法保证能够应对当今日益扩大的网络规模和层出不穷的攻击手段。针对上述问题,则需要设计更加智能化方法来构造自适应的、对未知攻击类型识别率高的、快速的入侵检测模型。
在已经成功应用于入侵检测领域的方法中,神经网络(Neural Network, NN)算法具有自适应、自学习、较好的容错性,以及能够进行大规模并行计算和非线性映射等优点,非常适用于变化多端的网络入侵检测数据,在一定程度上克服了上述缺陷[2-5]。文献[5]提出了将增量式生长型分层自组织映射(Growing Hierarchical Self-Organizing Map, GHSOM)神经网络模型用于对未知攻击类型进行检测,取得了较高检测率;但在遇到不同类型的未知攻击时,新增子网数不确定,模型存在着不稳定的缺陷。正是由于不同类型网络攻击产生的数据分布规律往往难以知道,因此,其他非参数化方法也广泛地被应用到入侵数据的分类中,包括数据挖掘[6-7]、支持向量机(Support Vector Machine, SVM)[8]和聚类方法[9]等。
2006年,文献[10]提出了利用无监督的、分层训练的深度信念网络(Deep Belief Network, DBN)实现对数据特征提取和分类,为图像分类、语音识别等诸多疑难问题带来了突破性进展[11-12]。深度学习是对NN的进一步发展,对输入的数据进行多层特征提取,得到更适合分类的特征集,使机器能更好地学习数据之间规律,从而提高对新样本的预测或分类的准确性。近年来,一些研究人员将DBN应用于入侵检测领域,逯玉婧[13]提出采用基于DBN模型和随机森林(Random Forest, RF)结合的方式进行入侵检测;Atom等[14]将DBN模型仅用于特征提取,而采用SVM算法对提取后的特征进行分类。但在前期数据处理上,上述研究都是在将41维原始数据映射为122维的基础上,建立DBN模型进行特征提取和分类[15-17]。以上方法都是在选用的训练集和测试集存在相当一部分重复数据的前提下,取得较高的检测率,但没有考虑到如何提高对未知攻击类型检测的问题;同时,由于在数据处理上大幅增加了原始数据维度而导致模型结构复杂,采用DBN方法和其他算法相结合增加了算法的复杂性等原因,可能无法满足检测的实时性,且没有充分利用DBN模型强大特征提取能力的优点。
针对上述的数据处理对DBN模型复杂性和检测结果的影响,以及对未知攻击类型的检测问题,本文提出了一种基于优化数据处理的DBN模型的入侵检测方法,在不增加原始数据维度的前提下,选择对DBN模型而言最优的数据处理方式和网络结构,主要解决对未知类型攻击的检测问题,同时尽量不破坏已经学习到的知识,不降低检测实时性,并基于NSL-KDD数据集设计实验进行验证。
1 DBN模型DBN作为一种深度模型在学术界受到了广泛的关注,随后被成功应用到图像识别、自然语言处理等领域。结构上,DBN是由若干层无监督的受限玻尔兹曼机(Restricted Boltzmann Machine, RBM)网络和一层有监督的反向传播(Back Propagation, BP)网络组成的一种深层神经网络,以包含两层RBM结构的DBN模型为例,其结构如图 1所示。
DBN的学习过程可分为预训练(pre-training)和微调(fine-tuning)两个阶段。预训练(pre-training)阶段通过将低一层的RBM输出作为高一层RBM的输入,完成对RBM逐层无监督训练的方式。微调(fine-tuning)阶段将实际输出与期望输出的误差进行反向传播,采用有监督的学习方式完成对顶层的BP网络进行训练,从而达到对pre-training阶段初始化的模型参数调优的目的。因此,RBM的pre-training过程可以认为是对一个深层BP网络权值参数的初始化,这样就使得DBN克服了BP网络因随机初始化权值参数而容易陷入局部最优和训练时间长的缺点。
1.1 RBM模型RBM是DBN的基本组成部件,在结构上是具有两层的浅层神经网络:第一层称为可见层(Visible Layer),也称为输入层;第二层是隐含层(Hidden Layer),或称为特征提取层。RBM结构如图 2所示,其中:v和h分别代表隐含层和可见层;a和b为隐含层和可见层的偏置(bias);w表示两层之间的连接权值。这种结构的特点是层内无连接,层与层之间全连接,因此RBM结构是一个有向无环图。
在计算过程中,可见层与隐含层的变量取值存在着多样性,为了方便描述,假设两者均为二值变量{0, 1}。设可见层与隐含层节点数目分别为m和n,vi和hj分别代表可见层第i个节点与隐含层第j个节点的状态。而RBM是一种典型的基于能量的模型,RBM的能量函数可描述如下:
$ E(\boldsymbol{v}, \boldsymbol{h}|\boldsymbol{\theta} ) =-\sum\limits_{i = 1}^m {{a_i}} {v_i}-\sum\limits_{j = 1}^n {{b_j}} {h_j}-\sum\limits_{i = 1}^m {\sum\limits_{j = 1}^n {{v_i}} } {h_j}{w_{ij}} $ | (1) |
式中:θ=(wij, ai, bj)是RBM的参数,wij表示可见层节点vi与隐含层节点hj之间的连接权值,ai和bj分别表示vi和hj节点所对应的偏置。基于上述的能量函数,(v, h)的联合分布概率为:
$ P({\boldsymbol{v}}, {\boldsymbol{h}}|{\boldsymbol{\theta }}) = {e^{ - E({\boldsymbol{v}}, {\boldsymbol{h}}|{\boldsymbol{\theta }})}}/Z({\boldsymbol{\theta }}) $ | (2) |
其中
$ P({\boldsymbol{v}}|{\boldsymbol{\theta }}) = \sum\limits_{\boldsymbol{h}} {{e^{ - E({\boldsymbol{v}}, {\boldsymbol{h}}|{\boldsymbol{\theta }})}}} /Z({\boldsymbol{\theta }}) $ | (3) |
由于RBM模型结构特征(层内无连接),因此在给定可见层节点vi值(经过处理的样本数据)时,得到的各个隐层节点hj之间状态相互独立。此时,hj的激活值为:
$ P({h_j} = 1|{\boldsymbol{v}}, {\boldsymbol{\theta }}) = \sigma ({b_j} + \sum\limits_{i = 1}^m {{v_i}} {w_{ij}}) $ | (4) |
式中,σ(x)=1/(1+e-x)为sigmoid函数,是神经网络学习过程中典型的非线性激活函数。经过式(4) 计算出hj的激活值后,将其作为反向传递中的输入值,来达到对可见层节点vi值的重构,从而得到原始的vi近似值:
$ P({v_i} = 1|{\boldsymbol{h}}, {\boldsymbol{\theta }}) = \sigma ({a_i} + \sum\limits_{j = 1}^n {{h_j}} {w_{ij}}) $ | (5) |
由此可见,RBM在学习过程中采用反复迭代的方式,目标在于经过学习得到最优参数θ来尽可能地拟合样本数据。假设在训练过程中,样本数目为T,当前的样本为t,则参数θ通过求训练样本的极大似然函数得到:
$ {{\boldsymbol{\theta }}^*} = \mathop {\arg \max }\limits_{\boldsymbol{\theta }} l({\boldsymbol{\theta }}) = \mathop {\arg \max }\limits_{\boldsymbol{\theta }} \left\{ {\sum\limits_{t = 1}^T {\ln P({v^{(t)}}|{\boldsymbol{\theta }})} } \right\} $ | (6) |
为了得到最优θ值θ*,在RBM中釆用随机梯度上升的方法求得l(θ)的最大值,在这里假设θ仅为一个具体参数,就转化为l(θ)的偏导函数的求解。
$ \begin{gathered} \frac{{\partial l({\boldsymbol{\theta }})}}{{\partial {\boldsymbol{\theta }}}} = {\left\langle {\frac{{\partial (-E({v^{(t)}}, {\boldsymbol{h}}|{\boldsymbol{\theta }}))}}{{\partial {\boldsymbol{\theta }}}}} \right\rangle _{P({\boldsymbol{h}}|{v^{(t)}}, {\boldsymbol{\theta }})}}-\hfill \\ \;\;\;\;\;\;\;\;\;\;\;{\left\langle {\frac{{\partial ({e^{-E({\boldsymbol{v}}, {\boldsymbol{h}}|{\boldsymbol{\theta }})}})}}{{\partial {\boldsymbol{\theta }}}}} \right\rangle _{P(v, h|\theta )}} \hfill \\ \end{gathered} $ | (7) |
同理,可以展开对θ的每个分量进行求偏导数,可分别得到w、a和b的最优值。
基于对比散度(Contrastive Divergence, CD)算法[18],将训练数据作为RBM的可见层的输入值,经过式(4) 的计算得到隐含层节点(隐含层节点数目需要根据需要事先设定)的激活状态值,经过式(5),再次计算得到可见层节点的重构值(训练数据的近似值),从而得到训练数据的重构误差,经过完整的CD算法后,得到参数的更新准则为:
$ \left\{ \begin{gathered} {w_{ij}} = \varepsilon ({\left\langle {{v_i}{h_{_j}}} \right\rangle _{{\text{data}}}}-{\left\langle {{v_i}{h_{_j}}} \right\rangle _{{\text{recon}}}}) \hfill \\ {a_i} = \varepsilon ({\left\langle {{v_i}} \right\rangle _{{\text{data}}}}-{\left\langle {{v_i}} \right\rangle _{{\text{recon}}}}) \hfill \\ {b_j} = \varepsilon ({\left\langle {{h_j}} \right\rangle _{{\text{data}}}}-{\left\langle {{h_j}} \right\rangle _{{\text{recon}}}}) \hfill \\ \end{gathered} \right. $ | (8) |
式中:ε为训练过程中的学习率;〈·〉data为训练数据集所定义的分布上的数学期望;〈·〉recon为重构后模型所定义的分布之上的期望。
1.2 BP网络在DBN模型中,最上层的BP网络,是以一种有监督的方式对多层RBM经过pre-training提取的特征向量进行分类,在实际输出值和期望输出值不符时,承担着对pre-training阶段初始化的参数进行调优的作用。
传统的BP网络是一种按误差逆传播算法训练样本的多层前馈网络,分为信息正向传播和误差反向传播两个阶段。但DBN模型顶层的BP网络的信息正向传播阶段被多层RBM的pre-training代替,直接由BP层得到对RBM的提取特征进行分类输出结果。通过计算实际输出值和期望输出值间的误差判断两者是否相符,如果误差过大,进入BP网络的误差反向传播阶段。误差通过DBN的BP输出层,按误差梯度下降的方式修正各层权值,向多层RBM层、输入层逐层反传。经过反复的信息正向传播和误差反向传播过程,是RBM各层权值不断调整的过程,也是DBN模型学习样本的过程,这个过程一直进行到BP层输出值和期望输出值的误差减小到可以接受的程度,或者完成预先设定的迭代次数为止,以此完成对模型参数的调整。
对于上述反向传播过程,需要计算每层的下降梯度δ,通过δ实现自顶向下的网络权值修正。对于输出层,如果第i个节点的实际输出值为oi,而期望输出值为di,δ的表达式为:
$ {\delta _i} = {o_i}(1 - {o_i})({d_i} - {o_i}) $ | (9) |
对于第l个隐含层,δ的计算表达式为:
$ \delta _i^l = y_i^l(1-y_i^l)\sum\limits_j {w_{ij}^l} \delta _j^{l + 1} $ | (10) |
由此,可以根据式(10) 中的δ值对DBN的连接权值和偏置进行如下更新:
$ \left\{ \begin{gathered} w_{ij}^l = w_{ij}^l + {\varepsilon _{{\text{fine - tuning}}}} \times y_i^l\delta _j^{l + 1} \hfill \\ b_j^l = b_j^l + {\varepsilon _{{\text{fine - tuning}}}} \times \delta _j^{l + 1} \hfill \\ \end{gathered} \right. $ | (11) |
其中,εfine-tuning为fine-tuning阶段的学习率,在模型的设计中,需要多次实验确定最优值。
与传统的BP神经网络相比,基于BP的DBN的权值微调算法克服了因随机初始化权值参数而容易陷入局部最优和训练时间过长的缺点,只需要对RBM的pre-training获得的权值空间进行微调,大大缩减了参数寻优的收敛时间。
2 基于优化数据处理的DBN入侵检测为了更好地理解本文提出的思想,首先将算法的流程和算法的优势描述如图 3所示。在本文的研究中,算法的两个优势分别在数据处理阶段和选用的DBN模型设计阶段,如图 3虚线框中标注内容。数据处理阶段将不同类型的数据分开处理,并将经过不同数据处理方法产生的数据集在后续的内容中设置了仿真实验对比,阐明了数据处理对于数据之间的规律和DBN模型分类结果的影响,最后确定一种能够显著提高基于DBN模型分类效果的数据处理方式;DBN模型设计阶段主要完成的工作为经过控制其他参数不变而改变一个参数的大量实验交叉验证和分析已有文献,最终确定了一种最优的DBN网络结构,使得对未知攻击类型的识别率最高。
适当的数据处理能够较好地描述数据之间的规律,是提高分类精度的第一步,由于实际问题产生的原始数据中数据类型不符合条件或数量级的差异等原因,往往不能直接用于训练,需要经过处理后才能作为分类器的训练输入数据,而通过相关研究人员对入侵检测的研究[19-20]发现,数据分类器的分类结果好坏除了和方法的选择有关,还与数据的处理方式有关,对于选定一种分类方法,适合的数据处理方式能够给分类结果带来可观的提升,不当的数据处理也能导致数据收敛慢甚至不收敛,从而降低数据的分类精度。
在选定的入侵检测数据集中,本文将41维特征数据分为字符(nominal)类型和数值(numeric)类型,对其分别进行如下处理。
2.1.1 Nominal类型PMF编码入侵检测的输入数据来源于网络的信息流,每条数据中包含多个信息特征,这些特征除了基本的numeric类型,也包括nominal类型,这些数据和数据特征共同构成了整个数据集用于训练分类器和检测异常数据。但是在实际的检测过程中,包括DBN模型等分类器输入的训练数据只能是numeric类型,然而nominal类型的数据对于分类结果可能起到关键性作用,比如网络数据包中的字段protocol type和service type都是nominal类型,也是网络数据包的分类的重要标准,不能轻易忽略,需要将其转换为numeric类型。
对于有n个特征的数据集,将其映射为M个特征矢量,每个特征矢量表示为x=(x1, x2, …, xn)(n∈N),假设xj=(x1j, x2j, …, xMj)(j∈{1, 2, …, n})表示每条数据的第j个特征为nominal类型,xj中包含K种nominal值分别为nom1j, nom2j, …, nomKj,将rkj∈N记为在xj中值nomkj出现的次数,可得:
$ \begin{gathered} {r_{kj}} = \left| {\{ i \in {\text{N}}|{x_{ij}} = no{m_{kj}}, i = 1, \ldots, M\} } \right|; \hfill \\ \;\;\;\;\;k = 1, \ldots, K \hfill \\ \end{gathered} $ | (12) |
根据式(12),nomkj在xj中出现的频率值fkj可以表示为:
$ {f_{kj}} = {r_{kj}}/M;\;k = 1, 2, \ldots, K $ | (13) |
$ \begin{gathered} \;\;\sum\limits_{k = 1}^K {{r_{kj}}} = M \hfill \\ {\text{s}}{\text{.t}}{\text{.}}\;\;\;0 \leqslant {r_{kj}}/M \leqslant 1, k = 1, 2, \ldots, K \hfill \\ \end{gathered} $ | (14) |
对于数据集中的nominal类型数据xkj:一些研究人员的处理方式是对其进行数字编码(Number)方法[21],根据字段可能取值的个数将对应字段编码为0, 1, …, N,这种处理方式也能实现nominal类型向numeric类型的转换,但还需要对转换后的数据再次进行归一化;而在文献[13-17]中采用的是二进制编码(Binary)方式,转换后的数据虽然都处于[0,1],但是这种方式会严重增加原始数据的维度,从而导致需要多层复杂DBN的模型结构来提取分类有效特征,也可能需要对处理后的数据再进行降维步骤。
针对上述问题,本文通过概率质量函数(Probability Mass Function, PMF)的计算方式将nominal类型的xkj转化为numeric类型的xkj=fkj后,转换后的数据维度没有发生变化,且能够保证所有的转化后的值为[0,1],相当于同时进行了类型转化和数据归一化两个操作。
2.1.2 numeric类型归一化处理在一个数据集中,各个特征数据往往不在同一数量级下,例如在入侵检测标准数据集KDD中,“dst_bytes”字段的取值可能为14421,“dst_host_rerror_rate”字段的取值为0.02,这就导致在学习数据规律的时候,降低了梯度下降求最优解的速度,也有可能由于收敛速度慢甚至不能收敛导致影响分类精度,因此需要将数据归一化处理为[0,1]的数据。
假设选定的数据集共包含N个样本,可以将所有样本的每个特征属性列映射为x=(x1, x2, …, xN)T,如果xi是第i个样本对应的属性值为numeric类型数据,可以分别用Minimum Maximum归一化、Statistical归一化和Decimal归一化这三种广泛的归一化方式,具体形式如下:
1) Minimum Maximum归一化(本文简称Maxmin)。其计算式如下:
$ {f_1}\left( {{x_i}} \right) = \left( {{x_i}-\min \left( x \right)} \right)/\left( {\max \left( x \right)-\min \left( x \right)} \right) $ |
其中:min(x)和max(x)分别为x可取值中的最小值和最大值。
2) Statistical归一化。其计算式如下:
$ {f_2}\left( {{x_i}} \right) = \left( {{x_i}-\mu } \right)/\sigma $ |
其中:μ的取值为所有x取值的平均值;σ为x的标准差。
3) Decimal归一化。其计算式如下:
$ {f_3}\left( {{x_i}} \right) = {x_i}/{10^e} $ |
其中:e的取值为能使x中的最大值经过处理后处于[0,1]的最小值。
2.2 基于DBN的入侵检测采用DBN方法对未知攻击类型进行检测的方式主要是利用DBN模型包含多层RBM进行特征提取和CD学习方法的反向更新来反复优化网络权值,从而达到通过已知的训练样本对未知检测样本的良好学习能力与适应能力。
一般来说,入侵检测数据维度相对较高,部分特征的存在不仅无法标识攻击的类型,反而会因为其干扰降低分类的精度。为了得到更好的检测结果,往往需要选用能够合理标识类别特征的数据,因此,进行特征提取的DBN模型一般会包括多层RBM结构,多层RBM的学习过程可通过图 4来描述。
处理好的数据x作为DBN模型的第一个RBM的可见层输入数据(一般来说第一个RBM可见层单元数一般等于训练数据的特征维数),采用CD算法对RBM进行逐层训练,前一层的RBM输出值作为下一层的输入值,直至多层RBM训练结束。CD算法逐层训练RBM模型步骤如下:
输入 一个训练样本x, 隐含层单元个数n, 学习率ε, 最大训练周期T;
输出 连接权重矩阵w,可见单元的偏置a,隐藏单元的偏置b。
训练阶段:初始化,可见层单元的初始状态v1=x,w、a、b取很小的数
For t=1, 2, …, T
For j=1, 2, …, n(对所有隐层单元)
计算
从条件分布P(h1j|v1)中抽取h1j∈{0, 1}
End for
For i=1, 2, …, m(对所有可见层单元)
计算
从条件分布P(v2i|h1)中抽取v2i∈{0, 1}
End for
For j=1, 2, …, n (对所有隐层单元)
计算
End for
按照下式更新参数:
$ \begin{gathered} \boldsymbol{w} \leftarrow \boldsymbol{w} + \varepsilon (P({h_1} = 1|{\boldsymbol{v}_1}){\boldsymbol{v}_1}^T-P({h_2} = 1|{\boldsymbol{v}_2}){\boldsymbol{v}_2}^T) \hfill \\ \boldsymbol{a} \leftarrow \boldsymbol{a} + \varepsilon ({\boldsymbol{v}_1}-{\boldsymbol{v}_2}) \hfill \\ \boldsymbol{b} \leftarrow \boldsymbol{b} + \varepsilon (P({h_1} = 1|{\boldsymbol{v}_1})-P({h_2} = 1|{\boldsymbol{v}_2})) \hfill \\ \end{gathered} $ |
End for
对多层RBM训练结束后,顶层BP层通过反向传播,根据重构误差对训练RBM得到的参数进行微调,从而得到最优θ=(wij, ai, bj)值。在这个过程中,由于在实际应用的时候数据量往往较大,检测需要满足实时性,为了加快训练过程,一般采用批量训练的方式进行,即每次对训练数据随机采样固定的数量输入到DBN中,每次采样的数量对应程序中设定的min-batch的值,每训练一个min-batch的数量,网络权值更新一次,直至全部样本训练完毕。
检测过程中,测试样本的数据维度与训练数据相同,在已经训练好的网络结构中输入测试数据和对应的属性标签,通过前向传播计算得到对每条检测数据的实际分类结果,然后将分类结果和输入的属性标签进行比对,得到对测试样本检测的正确检测率。
3 实验与结果分析 3.1 实验数据在本文中,实验采用的是NSL-KDD数据集[22],NSL-KDD是在KDD99数据集的基础上去除了部分冗余数据的数据集,能更好地检测出模型对未知数据的识别能力。
在数据集的每条数据中,共包括41个属性特征和1个标识攻击类别的属性标签。41个属性中分为3个nominal类型和38个numeric类型数据。属性标签将数据分为4类攻击(Anormal)类别和1类正常(Normal)数据,4类攻击数据又被划分为39个详细类别。将41中属性分为nominal和numeric类型描述如表 1所示,将4大类攻击类型和1类正常数据描述如表 2所示。
大多数研究人员的工作都是基于NSL-KDD数据集的KDDTrain+_20Percent训练子集和KDDTest-21测试子集完成的,经过统计,在KDDTrain+_20Percent训练集中,Normal数据和拒绝服务攻击(Denial of Service, DoS)数据所占比例分别为53.39%和36.65%,在KDDTest-21中,Normal数据约占43.08%, 而DoS类别约为33.08%,由此可见这两个数据集之间存在大量重复数据且属于严重不平衡数据集,在一定程度上不能完全反映出本文要解决的对未知样本的识别问题,因此,根据NSL-KDD包括各类数据的数量,选用的训练数据集、测试数据集和验证数据集如表 3,其中验证数据集是为了验证所选模型对未知类型检测效果较好的同时,是否破坏已学习到的知识。
为设置对比实验,采用上述的基于PMF编码nominal类型数据和三种方式对numeric类型数据归一化后,形成三个不同的数据集。另外,设置一个未经处理的数据集及根据文献[15]和文献[21]中分别使用的数据处理方式,共组成6个数据集,通过实验验证的方式,寻求一种对于DBN模型而言检测率最高的数据处理方式。用于评估数据处理对正确检测率影响的数据集如表 4所示。
在入侵检测领域,对未知样本的正确检测率和检测时间是评价检测结果的重要指标,由此可以分辨将该方法应用于入侵检测领域是否可行和高效,此外,本文通过和应用于入侵检测领域的其他经典算法相比较,通过对相同数据的训练和检测的正确检测率来验证本文提出方法的稳定性。具体的实验环境和实验结果的评价标准设置如下:
1) 实验环境。
Window 7操作系统,Matlab R2014a,2.20 GHz CPU,2.00 GB RAM。
2) 实验评价标准。
定义:N为测试数据集包含的Normal数据量,A表示Anormal(包含各种攻击类型)数据量,NF为Normal数据准确地被识别为Normal类型的数量,AF表示Anormal类型被准确识别出来的数量,T为检测时间,则可以得出:
1) 正确检测率=(NF+AF)/(N+A),表示被正确识别出来的样本占总样本的比例,检测率越高,则选用的模型越高效。
2) 检测时间T,表示检测测试样本过程中消耗的时间,时间越短,证明模型可用性和实时性越好。
3.3 结果分析本节内容主要包括如下两个方面:一是DBN模型结构和参数选取对正确检测率和实时性的影响;二是分析不同数据处理下的检测结果,找到基于DBN模型的入侵检测的最优化数据处理方式。
3.3.1 DBN模型结构和参数选取。以经过处理的Train-PMF-Maxmin和Test-PMF-Maxmin数据集为例,共有41个数据特征,输出的分类数据共分为1类Normal数据和4类Anormal数据,因此DBN输入数据为41维,输出的维数为5。由于目前DBN结构的确定还没有确切的理论支撑,需要通过相关文献和大量的实验验证来确定相对较优的结构模型。为了易于观察检测结果随DBN网络结构变化的情况,将DBN结构的隐层数限制在5层以内(包含5层),将各隐层节点数目分别在{10, 20, 40, 60, 80}中选取且各隐层节点数目相同,根据文献[23-24]和反复实验的交叉验证[25-26]方式,将DBN模型其他参数设置如下:pre-training和fine-tuning阶段的学习率设置为0.05,min-batch数量为100(可根据样本数量和种类进行调整),pre-training阶段迭代次数为5,fine-tuning阶段迭代20次后检测结果趋于稳定。如图 5所示,通过固定其他参数不变(20节点)时,讨论各隐层节点数目对正确检测率的影响。
从图 5可知,当隐层数目为2,即DBN模型深度为4时,该模型在检测过程中取得相对较高的检测率,由此可以说明,增加DBN的深度不一定能够增强DBN的特征提取能力,反而会导致DBN的泛化能力降低,产生过拟合现象。因此,DBN的层数设置可能和数据处理后的维度相关,并不是层数越多,分类效果越好。
在固定隐层数为2,变化各隐层的节点数目时,正确检测率的变化趋势如图 6所示。由图 6可知,在节点数目为10的时候,由于节点之间相互连接较少,不足以提取适合分类的特征集,而节点的数目过大也出现了过拟合的问题。本文实验中,当各隐层节点数设置为20时,正确检测率相对最高。通过观察DBN模型包含的隐层数目和各隐层节点数目对正确检测的影响,综合上述的分析,在后面选用DBN的隐层层数为2、各隐层节点均为20的网络结构来讨论数据处理对检测率的影响和结构的稳定性。
经过3.1节的数据处理,得到6组测试数据,将这6组数据分别用本文所选的模型和文献[15]中的方法进行训练和测试,不同数据处理下的正确检测率如图 7所示。
由图 7可以看出,在未经过处理的数据集PMF-Non上,检测率仅达到57%,因此,未经过处理的原始数据收敛性较差。经过Maxmin归一化处理的PMF-Maxmin和Num-Maxmin数据集上的检测率均相对较高,高于Statistical归一化和Decimal归一化方式处理的数据集;但Bin-Maxmin数据由于经过二进制编码后存在着维数高的缺点,文献[15]为了更好地降低数据维度和提取有效特征而采用的模型层数、节点数较多,对检测率和检测实时性将会存在一定影响。实验结果表明,样本的正确检测率和数据处理之间存在着不可忽略的关系,即数据处理能够在一定程度上影响数据的分布规律,选择合理的数据处理方式能够提高对样本的检测率。
因此,针对基于DBN的入侵检测问题,通过实验选取了一种基于PMF编码nominal类型数据、Maxmin归一化处理numeric类型数据的优化数据处理方式,确定了一种深度为4、2个隐层、节点数目均为20的DBN模型,对设定的测试数据集中的完全未知样本的检测率能够达到87.76%。
3.3.3 选定模型的训练性能分析对于选定的深度为4、各隐层节点均为20的DBN模型,在对表 4中经过PMF编码和Maxmin归一化处理的训练数据集进行训练的过程中,根据训练数据集包含的数据条数及大量的训练实验可知,10折交叉检验是在本文实验已选用的数据集的前提下获得最大正确率的恰当选择,通过10折交叉检验,将训练数据集的20 100条数据随机分为10份,其中9份用作训练,而剩下的1份用来验证,则相当于每条数据都有一个预报的正确检测率,每次检测的正确率及10次检测的平均正确检测率如表 5所示。
在已经进行的大量实验中,10折交叉检验是获得相对较高的每个样本的平均检测率,能够达到94.96%。除此之外,训练时间也是评价分类器性能的一个重要标准,如果将训练数据集的20 100条数据在上述模型中进行训练,训练10次的每次平均用时为19.289 74 s,而考虑到数据量和实验环境等因素,在训练上消耗的时间是可以接受的,因此下文可选用上述确定的模型来进行实验。
3.4 验证选定的DBN模型识别性能从表 3中的训练数据集和测试数据集包含的攻击类型和数量来看,训练数据集中共包含normal类型和12种攻击类型,则这12种攻击类型对分类器而言可以看作已知类型的攻击,而测试数据集中包含了normal类型和8种完全不同于训练数据集中的攻击类型,则对于分类器而言,这8种攻击类型则是未知攻击类型,本文通过选定的DBN模型能够对测试数据集中的8种攻击类型具有较高的正确检测率的方式来验证DBN模型对未知攻击类型的识别能力。
同时,将本文的方法与已经在入侵检测取得较好检测结果的BP神经网络和SVM算法进行了对比。通过统计对各类未知攻击类型的正确检测率和检测时间来验证本文选用的基于优化数据处理的DBN模型的高效性和实时性。
对比算法中的BP神经网络参数与本文选取的DBN模型相似,隐层节点数为20,迭代次数为20次,SVM算法采用LibSVM开源工具,核函数采用径向基函数(Radial Basis Function, RBF),根据文献[27-28],错误惩罚因子C=10 000,RBF核函数的控制因子为2。不同分类算法对各类未知类型攻击的正确检测率如表 6所示。
由于数据集中包含的buffer_overflow和rootkit类别的数据较少,所以每条数据所占该类数据总量的比例较大,因此各类算法对这两种攻击的检测效果差异较为明显。从表 6可以看出,基于DBN模型的正确检测率比SVM算法和基于BP神经网络的算法均有所提高:DBN模型在Test-PMF-Maxmin上的整体检测率相比SVM算法提高了4.43%,对应到测试数据集中10 100条数据,则DBN模型正确检测出的数据量比SVM算法多376条;DBN模型在Test-PMF-Maxmin上的整体检测率相比基于BP神经网络的算法提高了5.37%。
三种算法在Test-PMF-Maxmin数据集上的检测时间如下:SVM算法为2.14 s,基于BP神经网络的算法为1.97 s,DBN算法为2.44 s。由于DBN模型比BP网络结构复杂,和BP网络的检测相比,有一定的延迟,但与SVM算法的检测时间相当。由此可知,本文所选择的DBN模型对未知类型攻击具有较高检测率的同时,对检测的实时性无严重影响。
3.5 验证选定的DBN模型的稳定性在对未知攻击类型具有较高的检测率的DBN模型上,使用表 3中的验证数据集作为已经训练好的模型的输入,统计其对已知类型的正确检测率,判断是否对已学习到的知识造成影响。验证数据集上三种对比算法对于已知攻击类型的正确检测率如下:SVM算法为93.87%,基于BP神经网络的算法为91.22%,DBN算法为97.10%。DBN模型对已知攻击类型的检测率高于BP神经网络和SVM算法,表明对未知攻击类型具有较高的检测率的DBN模型没有破坏已学习的知识,验证了本文选择的DBN模型的稳定性。
4 结语本文提出了一种基于优化数据处理的DBN模型的入侵检测方法,通过实验验证了不同数据处理能够对数据的分布规律产生影响,采用经过PMF编码和Maxmin归一化处理的数据应用于DBN模型时,取得了相对较高的检测率。通过和SVM及BP神经网络算法的对比可验证,DBN对复杂数据具有良好的特征提取能力,能够更好地发掘和学习数据之间的规律,在不影响对已知攻击类型识别和检测实时性的前提下,能够提高对未知攻击类型数据的识别率,目前可用于对变化多端的网络数据进行入侵检测。但由于DBN网络结构和参数的不确定性,检测率会受到迭代次数和不同数据集等因素影响,因此如何确定高效的DBN模型参数和选择合理的数据处理仍然是下一步有待解决的问题。
[1] | 卿斯汉, 蒋建春, 马恒太, 等. 入侵检测技术研究综述[J]. 通信学报, 2004, 25(7): 19-29. ( QING S H, JIANG J C, MA H T, et al. Research on intrusion detection techniques:a survey[J]. Journal of China Institute of Communications, 2004, 25(7): 19-29. ) |
[2] | 潘志松. 基于神经网络的入侵检测研究[D]. 南京: 南京航空航天大学, 2003: 20-64. ( PAN Z S. Research on intrusion detection based on neural network[D]. Nanjing University of Aeronautics and Astronautics, 2003:20-64. ) |
[3] | 胡明霞. 基于BP神经网络的入侵检测算法[J]. 计算机工程, 2012, 38(6): 148-150. ( HU M X. Intrusion detection algorithm based on BP neural network[J]. Computer Engineering, 2012, 38(6): 148-150. ) |
[4] | 杨雅辉, 姜电波, 沈晴霓, 等. 基于改进的GHSOM的入侵检测研究[J]. 通信学报, 2011, 32(1): 121-126. ( YANG Y H, JIANG D B, SHEN Q N, et al. Research on intrusion detection based on an improved GHSOM[J]. Journal on Communications, 2011, 32(1): 121-126. ) |
[5] | 杨雅辉, 黄海珍, 沈晴霓, 等. 基于增量式GHSOM神经网络模型的入侵检测研究[J]. 计算机学报, 2014, 37(5): 1216-1224. ( YANG Y H, HUANG H Z, SHEN Q N, et al. Research on intrusion detection based on incremental GHSOM[J]. Chinese Journal of Computers, 2014, 37(5): 1216-1224. ) |
[6] | 毛国君, 宗东军. 基于多维数据流挖掘技术的入侵检测模型与算法[J]. 计算机研究与发展, 2009, 46(4): 602-609. ( MAO G J, ZONG D J. An intrusion detection model based on mining multi-dimension data streams[J]. Journal of Computer Research and Development, 2009, 46(4): 602-609. ) |
[7] | 郭春. 基于数据挖掘的网络入侵检测关键技术研究[D]. 北京: 北京邮电大学, 2014: 89-106. ( GUO C. Research on key technologies of network intrusion detection based on data mining[D]. Beijing:Beijing University of Posts and Telecommunications, 2014:89-106. ) |
[8] | 饶鲜, 董春曦, 杨绍全. 基于支持向量机的入侵检测系统[J]. 软件学报, 2003, 14(4): 798-803. ( RAO X, DONG C X, YANG S Q. An intrusion detection system based on support vector machine[J]. Journal of Software, 2003, 14(4): 798-803. ) |
[9] | 罗敏, 王丽娜, 张焕国. 基于无监督聚类的入侵检测方法[J]. 电子学报, 2003, 31(11): 1713-1716. ( LUO M, WANG L N, ZHANG H G. An unsupervised clustering-based intrusion detection method[J]. Acta Electronica Sinica, 2003, 31(11): 1713-1716. doi: 10.3321/j.issn:0372-2112.2003.11.028 ) |
[10] | HINTON G E, SALAKHUTDINOV R R. Reducing the dimensionality of data with neural networks[J]. Science, 2006, 313(5786): 504-507. doi: 10.1126/science.1127647 |
[11] | DONG Y, LI D. Deep learning and its applications to signal and information processing[J]. IEEE Signal Processing Magazine, 2011, 28(1): 145-154. doi: 10.1109/MSP.2010.939038 |
[12] | AREL I, ROSE D C, KARNOWSKI T P. Deep machine learning-a new frontier in artificial intelligence research[J]. IEEE Computational Intelligence Magazine, 2010, 5(4): 13-18. doi: 10.1109/MCI.2010.938364 |
[13] | 逯玉婧. 基于深度信念网络的入侵检测算法研究[D]. 石家庄: 河北师范大学, 2016: 26-46. ( LU Y J. Research on intrusion detection algorithm based on deep belief network[D]. Shijiazhuang:Hebei Normal University, 2016:26-46. ) |
[14] | ALOM M Z, BONTUPALLI V R, TAHA T M. Intrusion detection using deep belief networks[C]//Proceedings of the 2015 National Aerospace and Electronics Conference. Piscataway, NJ:IEEE, 2015:339-344. |
[15] | GAO N, GAO L, HE Y Y, et al. Intrusion detection model based on deep belief nets[J]. Journal of Southeast University (English Edition), 2015, 31(3): 339-346. |
[16] | 杨昆朋. 基于深度学习的入侵检测[D]. 北京: 北京交通大学, 2015: 31-47. ( YANG K P. Intrusion detection based on deep learning[D]. Beijing:Beijing Jiaotong University, 2015:31-47. ) |
[17] | 安琪. 基于深度置信网络的入侵检测研究[D]. 兰州: 兰州大学, 2016: 20-50. ( AN Q. Research on intrusion detection based on depth confidence network[D]. Lanzhou:Lanzhou University, 2016:20-50. ) |
[18] | HINTON G E. Training products of experts by minimizing contrastive divergence[J]. Neural Computation, 2002, 14(8): 1771-800. doi: 10.1162/089976602760128018 |
[19] | SAID D, STIRLING L, FEDEROLF P, et al. Data preprocessing for distance-based unsupervised intrusion detection[C]//Proceedings of the 2011 Ninth Annual International Conference on Privacy, Security and Trust. Piscataway, NJ:2011:181-188. |
[20] | SALEM M, BUEHLER U. Mining techniques in network security to enhance intrusion detection systems[J]. International Journal of Network Security & Its Applications, 2012, 4(6): 167-172. |
[21] | 白雪. 基于DBN的网络流量分类的研究[D]. 呼和浩特: 内蒙古大学, 2015: 18-30. ( BAI X. Research on network traffic classification based on DBN[D]. Huhhot:Inner Mongolia University, 2015:18-30. ) |
[22] | DHANABAL L, SHANTHARAJAH S P. A study on NSL-KDD dataset for intrusion detection system based on classification algorithms[J]. International Journal of Advanced Research in Computer and Communication Engineering, 2015, 4(6): 446-452. |
[23] | HINTON G E. A practical guide to training restricted Boltzmann machines[M]//Neural Networks:Tricks of the Trade, LNCS 7700. Berlin:Springer, 2012:599-619. |
[24] | 张春霞, 姬楠楠, 王冠伟. 受限波尔兹曼机[J]. 工程数学学报, 2015, 32(2): 159-173. ( ZHANG C X, JI N N, WANG G W, et al. Restricted Boltzmann machine[J]. Chinese Journal of Engineering Mathematics, 2015, 32(2): 159-173. ) |
[25] | 邱龙金, 贺昌政. 神经网络稳定性的交叉验证模型[J]. 计算机工程与应用, 2010, 46(34): 43-45. ( QIU J L, HE C Z. Cross validation model for stability of neural networks[J]. Computer Engineering and Applications, 2010, 46(34): 43-45. doi: 10.3778/j.issn.1002-8331.2010.34.013 ) |
[26] | 范永东. 模型选择中的交叉验证方法综述[D]. 太原: 山西大学, 2013: 19-41. ( FAN Y D. A summary of cross-validation in model selection[D]. Taiyuan:Shanxi University, 2013:19-41. ) |
[27] | CHANG C C, LIN C J. LIBSVM:a library for support vector machines[J]. ACM Transactions on Intelligent Systems and Technology, 2011, 2(3): 389-396. |
[28] | 贺其备. 基于支持向量机的入侵检测研究[D]. 长春: 东北师范大学, 2013: 29-44. ( HE Q B. Research on intrusion detection based on support vector machine[D]. Changchun:Northeast Normal University, 2013:29-44. ) |