魏明军 彭 宁
(华北理工大学信息工程学院 河北 唐山 063210)
互联网的发展使我们步入科技时代,人们的日常生活也因为网络的普及而简化,伴随而来的网络安全问题则愈演愈烈。比如,各大网络平台用户信息泄露、DoS攻击、WannaCry勒索病毒、被黑客窃取计算机全部内存内容的漏洞等。如何有效鉴别各种网络攻击行为是网络安全领域中迫切需要解决的问题。入侵检测是一种积极、主动的网络安全防御技术手段,其通过分析收集计算机关键点的信息,从中发现是否有威胁计算机安全的异常行为[1],若有则及时作出响应告知用户,从而进行紧急处理以保护本地计算机安全。因此入侵检测技术一直是网络安全研究领域中不可规避的重点课题。
研究学者在入侵检测系统(Intrusion Detection Systems,IDS)中尝试引用不同的方法,比如:基于免疫方法[2]、基于神经网络[3]、基于数据挖掘[4]、基于粒子群[5]、基于云计算[6]、支持向量机[7](Support Vector Machine,SVM)等方法,经实验证明这些方法运用到入侵检测中都显示出各自的检测优势。然而,现如今面临网络上数据的海量化、高维化的特点,以及网络攻击方式的多样化、复杂化的趋势,入侵检测技术需要寻求新的突破,在提取数据特征时,能够尽可能保留初始数据的本质特征,并且提高检测率。
深度学习(Deep Learning,DL)被广泛运用于各个研究领域是因为其具有独特的数据特征学习能力。结合计算机视觉可以感知路口车流量,从而动态地控制十字路口红绿灯时间的长短;融合自然语言处理开发了百度智能机器人小度;在语音识别领域成功地被应用于同声传译技术。将深度学习应用到不同领域且皆取得了很好的成果。
综合IDS研究现状,本文将深度学习和TSVM相结合,提出一种DBN-TSVM-5入侵检测模型。深度学习具有很好的数据特征提取性能,用于数据降维;而TSVM比SVM具有更高的分类精度,且耗时仅占SVM的四分之一[8]。数据采用KDDCUP99数据集对DBN-TSVM-5模型进行测试与评估,结果表明该模型的性能比传统的入侵检测方法好。
DBN是Hinton等[9]于2006年提出的一种深度学习模型,其特征学习能力非常强大,通过逐层提取的方式,可将原始数据转换成为更高层和更抽象的形式。
DBN由若干层受限玻尔兹曼机(Restricted Boltzmann Machine,RBM)和一层有监督的反向传播(Back-Propagation,BP)网络组成,如图1所示。
图1 DBN模型图
1986年,一个层内无连接、层间全连接的两层网络模型被提出,它就是RBM,包含了一个可见层V和一个隐含层H,每一层都是由神经元组成,所有神经元都有激活状态1和未激活状态0两种状态值。W是两层之间的连接权重矩阵,a是可见层偏差,b是隐含层偏差。如图2所示。
训练RBM模型使用的数据特征维数较高时,以Gibbs采样方法训练需要足够大的采样步数,可想而知用此方法训练RBM会花费相当多的时间,导致最终训练结果不理想。针对该问题,Hinton[10]提出对比散度算法(Contrastive Divergence,CD)。
不同于Gibbs采样,CD算法在一开始将训练样本作为输入加载到可见层,经实验证明,仅需要使用k=1步吉布斯次采样,就可以得到很好的近似值[11]。
在已知v(0)的情况下,出于RBM的连接特性,所有隐含层之间相互独立,利用式(1)计算隐含层第j个神经元的状态。
(1)
确定所有隐含层神经元h(0)的状态之后,由于可见层节点之间也是相互独立的,再根据隐含层神经元的状态,利用式(2)重构出可见层第i个神经元的状态,到得可见层重构v(k)。
(2)
算法1CD算法
输入:训练样本X(S),学习率alpha,最大训练周期k。
输出:链接权重矩阵W,可见层偏置向量a,隐藏层偏置向量b。
初始化:令可见层神经元的初始状态v(0)=X(S),W、a、b取随机较小的数值。
fort=0,1,…,kdo
forj=1,2,…,n(对于所有隐含层神经元节点)
fori=1,2,…,m(对于所有可见层神经元节点)
利用式(3)更新各个参数:
(3)
Jayadeva等[12]在2007年提出了TSVM。TSVM的基本思想是对正负两类样本点分别构造一个分类超平面。这样有两点好处:一方面使得每一个分类超平面与其中一类样本点尽可能近;另一方面远离另一类样本点。以二维平面内的样本数据为例,对线性TSVM分类思想描述如图3所示。
TSVM实质上是将传统SVM中的一个二次规划问题(Quadratic Programming Problem,QPP)分成两个规模较小的QPP[13],简化了计算复杂度,使得样本训练时间缩减为传统SVM的四分之一,而且还保持了较高的分类精度。
基于DBN-TSVM-5的入侵检测方法框架结构图如图4所示。
图4 DBN-TSVM-5框架结构图
主要有以下3个步骤:
1)数据预处理。将KDDCUP99数据集通过特征映射的方法,把字符型数据转换为数值;再对数值化后的数据全部进行数据归一化处理,将数值规范到0~1之间,使之成为标准数据集。
2)DBN降维。经过预训练和权重微调两个过程后,得到DBN网络模型最优表达,能够反映标准数据特征的低维数据。
3)多分类TSVM-5。构造多分类TSVM-5分类器,对五类数据进行识别。
DBN训练经过预训练和微调两个阶段后方可得到一个可以反映高维、非线性原始数据特征的低维数据,从而实现对标准数据集的最优提取。
1)预训练。将训练集中的数据特征和类标签分离,用无标签的训练集对每一层RBM进行自下而上、单独、无监督、基于CD算法的训练。输入V0通过P(H|V0)计算出H0,H0根据P(V|H0)计算重构出的V1如果和V0一样,那么隐藏层H0就是V0的另一种表示,如此H0可作为下一层RBM的可见层V1。按照此方法执行每一层RBM,直至训练完所有的RBM层。
2)微调。RBM自下向上训练完之后,只能保证RBM本身这一层内的权值对该层的特征提取是局部最优;因此还需要反向传播网络微调整个网络参数,达到全局最优。在这一步需要将带有标签的数据附加到顶层,使用这些带标签的数据对网络进行区分性、有监督的、自上而下的训练来对整个网络权值进行调整。BP网络接受最后一层RBM输出的特征向量作为其输入数据[14],将BP网络输出层得到的实际输出与期望信息两者之间做减法操作,有差值则进行反向传播。
算法2DBN训练
输入:可视层变量V0=(v1,v2,v3,…,vi,…,vm)。
输出:参数W,a,b。
(1)将每一条训练数据X(S)赋值给第一个RBM的可见层V0,并用CD算法训练第一层RBM。
(2)训练完第一层RBM后,将其输出结果作为下一层RBM的输入,继续用CD算法训练下一层。
(3)迭代步骤(1)和步骤(2)直至训练完所有层的RBM。
(4)向前计算完之后,误差为:
(4)
(5)利用梯度下降算法进行逆向传播,调整网络中各个权值,使误差达到最小值。权值更新公式为:
(5)
(6)重复步骤(4)-步骤(5)过程,直至误差足够小,保存参数。
本文改进的多分类TSVM算法TSVM-5设计具体分类步骤如下:
1)先将KDDCUP99中正常样本Normal标记为+1,其余四类攻击样本标记为-1,通过T1分类器筛选出正常样本;
2)将Dos和Probe两类样本标记为+1,U2R和R2L标记为-1,再将剩余四类样本输入到T2分类器中。标记为+1的样本传到T3分类器,标记为-1的传到T4分类器中;
3)通过T3分类器,输出标记为+1的是Dos攻击样本,-1是Probe样本;
4)通过T4分类器的,输出标记为+1的是U2R攻击样本,-1是R2L样本。
1998年,林肯实验室在美国空军局域网进行模拟而采集9周的网络数据。随后Sal Stolfo教授和Wenke Lee 教授在此基础之上对网络数据进行分析和预处理形成了KDDCUP99数据集,该数据集是IDS研究领域中被广泛使用的实验数据之一,其中包含494 021个训练样本和311 029个测试样本,分布情况如表1所示。
表1 KDDCUP99数据分布情况
1)字符特征数值化。KDDCUP99数据集每一条数据有38个数字型属性和3个字符型属性,外加1个类标签。字符型属性的数据不利于特征提取和分类算法的识别,需要将其数值化。比如Protocol_type这一属性有3种类型:Tcp、Udp、Icmp,映射规则设置如下:Tcp=0,Udp=1,Icmp=2,将这些转化为数值类型。
2)数值归一化。想要数据之间的量纲具有可比性而不对实验造成影响,将训练集和测试集中的全部数据记录,都要进行归一化处理,将数据归一到0和1之间。经过上一步字符映射处理后,将数据用.csv格式导出,可以看出KDDTrain训练集中的第20、21两列全为0,数据归一后这两列会出现差错,因此归一数据之前,对每列数据最大值最小值进行判定:若差值不为0,进行归一操作;若差值为0,则不进行归一操作,给定这列归一后的数据全为0。
(6)
根据已有研究表明,当DBN层数到达7层及以上,入侵检测识别的准确率趋于稳定值[15]。为了选取DBN模型处理KDDCUP99数据具有相对较高准确率的层数,本文选取2~7层DBN模型,设置6种不同的DBN网络结构,如表2所示。将DBN最后的重构误差作为选取DBN层数的依据,结果如图5所示。由结果可知采用5层RBM网络结构的误差最小。
表2 DBN层数设置
图5 DBN不同层数重构误差
KDDCUP99数据集经过预处理后依然为41维特征,因此输入层节点为41,之后依次选取为100、80、50、10和5,即用DBN-TSVM-5网络结构为41-100-80-50-10-5对归一后的标准数据进行降维。预训练迭代次数为30次,微调权值迭代次数为100次。由于RBF(radial basis function)核函数参数设置少且非线性分类性能好[16],所以本文采用RBF作为TSVM-5的核函数,设置惩罚因子C1=1,C2=1核函数参数gamma=1,最后获得准确率。
采用Anaconda的Python集成环境,使用Pycharm编译器编写程序代码。实验用未改进的二分类对支持向量机模型(TSVM-2)、本文改进的多分类对支持向量机模型(TSVM-5)、基于DBN和TSVM-5混合模型(DBN-TSVM-5)三种方法对入侵检测进行数据分析。
受到实验硬件环境的限制,分类器的代码数据量太大会导致存储溢出。为了对比分析这三种方法的有效性,随机抽取以下Data1、Data2、Data3、Data4四个数据集作为实验数据,见表3。用Python第三方库sklearn里的train_test_split函数,按照6∶4的比例将每个数据集分割成训练集和测试集,函数里straight参数可以按照数据标签的比例划分,使每个样本类别都分到训练集和测试集。
表3 实验数据
从准确率(Accuracy,AC)和误报率(False Alarm,FA)来比对三种方法的有效性。表4是TSVM-2、TSVM-5和DBN-TSVM-5三种模型方法在不同数据集上进行实验得到的检测精度和误报率结果。
表4 实验结果 %
可以看出,在不同数据集上TSVM-5与TSVM-2对比得出,不仅实现了数据样本的多分类,检测率还平均提高了5.37%。由TSVM-5和DBN-TSVM-5对比看出,DBN降维操作可以提取出数据的深度特征,从而更有利于数据的分类与识别,比TSVM-5的检测率平均提高了2.52%。
面对网络环境具有高维、复杂数据的特点,本文提出一种基于DBN和改进的TSVM入侵检测混合模型。以字符映射和归一化处理后的KDDCUP99数据为实验数据进行仿真实验。DBN具有良好的降维性能,成功地减少了数据特征向量,再把降维后的数据输入到TSVM-5多类分类器中检测攻击数据,进行入侵检测识别。实验数据表明,DBN-TSVM-5模型的检测准确率分别比TSVM-2和TSVM-5提高了8.03%和2.52%,同时其误报率也有所降低,是一种卓有成效的入侵检测模型。