基于MI与SVM的网络入侵检测方法研究
2019-11-20丁邦旭
丁邦旭,张 昊,王 刚
(铜陵学院 数学与计算机学院,安徽 铜陵 244061)
计算机通信技术的发展推动计算机网络快速普及,如今互联网已经深入到了人们日常生活的各个方面,成为人们信息共享与交流的重要工具。互联网在给人们带来生活便利的同时,也产生了一系列的安全问题。黑客入侵网站与窃取个人隐私信息事件频发,网络安全引起国家与社会的高度重视。同时,由于互联网数据量大、网络攻击类型与手段多样化,网络安全问题变得越来越突出。为了应对网络威胁,需要对网络进行安全防护。入侵检测系统IDS(Intrusion Detection System)是一种主动网络防护技术,应用价值非常大。学者们围绕入侵检测技术进行了很多研究,对网络连接的攻击行为进行识别,入侵检测技术得到迅速发展[1-2]。
入侵检测技术主要集中在基于分类、基于聚类、基于统计的入侵检测算法的研究。近年来机器学习方法被越来越多地应用于网络入侵检测中,是当前研究的热点,学者提出了很多入侵检测算法。在基于分类的入侵检测中,李振刚等提出了改进蚁群算法优化SVM参数的网络入侵检测模型[3];马占飞等提出了一种基于IPSO-SVM算法的网络入侵检测方法[4]。在特征选择算法中,袁开银等提出混合粒子群优化的算法进行特征选择,实现了高维数据降维[5]。基于聚类的方法进行高维数据计算时系统开销大,效率低下;基于统计的方法需要大量的数据进行统计,在小样本数据中进行分类的准确度低,依赖于数据,稳定性差。基于机器学习的分类方式不需要大量的学习样本数据,但需要设计设计较高效的分类计算模型,以实现效率高、准确度高的入侵检测系统。
在入侵检测过程中,入侵行为的分类器选择十分关键。K最近邻KNN (k-Nearest Neighbor)分类算法是在分类决策上只依据最邻近的一个或者几个样本的类别来判别待分样本所属的类别。KNN算法系统开销大,效率低。基于神经网络NN(Neural Network)构建入侵行为分类器,需要足够的训练样本进行学习,训练时间长,分类结果不太稳定。支持向量机SVM(Support Vector Machines),相对神经网络,支持向量机不需要大量的训练样本,学习性能优于神经网络,SVM适合应用于网络入侵检测中[6-8]。在建立SVM的入侵检测模型过程中,支持向量机参数难以确定,当前对于参数确定问题,可以采用蚁群算法等进行参数优化。由于入侵检测的样本数据集是高维数据,为了提高入侵检测的效率,需要对高维的数据进行降维。本文采用互信息MI(Mutual Information)进行数据特征选择,基于KNN、BPNN(Back Propagation Neural Network)、SVM算法分别构建分类器,分别对样本数据集与特征降维后的数据集进行性能测试比较,基于MI与SVM的方法能有效地提高入侵检测的效率与准确率。
1 数据降维算法
网络入侵的数据具有很多属性,例如常用于入侵检测测试的数据KDD CUP99高达42维,过高的维度会严重影响计算效率并造成数据稀疏。通过对高维的数据集进行特征选择以达到降维的目的,在尽可能降低准确性损失的前提下实现更快速地计算。机器学习领域中的一个普遍问题是如何降低数据的维度,特征选择就是高维数据降维的一种有效方法。
1.1 特征选择方法
特征选择是从原始数据的属性集合中按照一定的规则计算相关特征,舍弃冗余特征,以获得所需的特征子集,从而以最小的数据损失描述数据的重要特征,以达到对高维数据的降维。若数据具有l个属性值{X1,X2,X3,…Xl},从l个属性中按照一定标准选择k个属性{X1,X2,X3,…Xk}(k 特征选择方法分为距离度量和信息度量方法。距离度量方法是通过某种相关度量标准发现特征之间相关的测量值类。根据距离计算方法的不同分为空间距离和概率距离,前者指特征集合空间的距离定义,如欧式距离,而后者是采用概率形式衡量特征类别距离。在典型的二分类问题中,若特征X与分类的距离比特征Y与分类的距离小,或者特征X的类别条件概率大,说明特征X更重要。信息度量方法是以信息论为基础,采用信息熵、互信息量等来描述特征的重要性。若特征X比特征Y有更大的信息增益,则X优于Y[10-12]。 在概率论和信息论中,两个随机变量的互信息MI是两个变量之间相互依赖的度量。MI量化了通过观察另一个随机变量而获得的关于一个随机变量的“信息量”。互信息的概念与随机变量熵的概念相关,在信息论中,它量化了随机变量中所包含的预期“信息量”,从而可以实现高维数据中依赖度低的向量降维[10]。 MI不限于相关系数实值的随机变量,确定了联合分布P(x,y)与因式边际分布P(x)·P(y)的相似性度量,是PMI(point-wise mutual information )的期望值。形式上,两个离散随机变量X和Y互信息定义为: (1) 其中p(x,y)为x和y的联合概率函数,p(x)和p(y) 分别为x和y的边际概率分布函数。在连续随机变量的情况下,互信息量计算可采用二重积分计算方法所代替。若使用以2为底的对数,互信息的单位就是位。 利用Jensen不等式对互信息的定义,我们可以证明I(X;Y)是非负的。因为I(X;Y)是非负的,且H(X)≥H(X|Y),所以相互信息可以等价地表示为: I(X;Y)=H(Y)-H(Y|X)。 (2) 互信息也可以表示为两个随机变量x和y的边际分布P(x)·P(y)乘积的库尔-莱布尔散度。 I(X;Y)=DKL(p(x,y)‖p(x)p(y)) (3) 假设:p(x|y)=p(x,y)∕p(y),可得: (4) 模式分类的目的就是确定样本数据属于哪个预定义的类别,基本方法是通过对训练样本数据进行学习获得一个分类器,然后利用所获得分类器对测试样本数据进行分类。 SVM是由Vapnik等人提出的一种机器学习算法,以VC维理论和结构风险最小化原理为理论基础,具有较高的模型学习性能以及良好的泛化能力,被广泛使用于模式分类领域。SVM有效地解决了传统机器学习算法中的维数灾难、局部极小化和过学习的问题。作为一种二分类算法,SVM通过寻找一个最优的超平面,将训练集中的全部样本分成两类分别位于超平面两侧[8-9]。同时使样本尽量地远离这个超平面,即使分类间隔最大,图1的H1与H2上的样本被称为支持向量,其工作原理如图1所示。 图1 SVM原理 假设有数据集:(x1,y1),…,(xn,yn),x∈Rn,y∈{+1,-1},采用函数对样本数据进行映射,之后在映射空间进行样本的分类。 设分类超平面:w·xi+b=0,判别函数:yi=sgn(w·xi+b)yi∈{-1,1},其中w权值,b为阈值。若要找到最优的分类平面,就必须找到最优的w值和b值[2,7]。 求解问题:min ‖w‖2s.t.yi((w·xi)+b))≥1(i=1,2,…,n) 。为了提升建模速度,引入松弛变量ξ对分类的精度及误差进行折中,这样最优分类平面的构建就可以转化为式最优化问题: (5) 式中C表示对误差的惩罚因子,故其约束条件为:yi(w·xi+b)≫1-ξi,ξi≫0,i=1,2,…,n。 最优分类面问题可以表示成约束优化问题,利用Lagrange优化方法可以将最优分类平面问题转化为其对偶问题。在最优分类面中采用适当的内积函数就可以实现某一非线性变换后的线性分类,而计算复杂度却没有增加[2,8]。 根据以上对支持向量机SVM的算法的说明,采用图形来表示SVM的计算方法,实现对样本数据的预测或分类。 图2 SVM计算方法 在低维空间中,原数据基于线性分类面是不可分,映射到高维空间可获得较好的分类性能。即:在低维不可分的情况下,找到某种映射(核函数)使得投影到高维空间下线性可分,如图3所示。 图3 核函数映射 核函数:若内积运算K(xi,xj)表达成K(xi,xj)=Φ(xi)T·Φ(xj),则K(xi,xj)表示为核函数,即为高维空间的内积函数。选择不同的核函数可以生成不同的支持向量机。常用的核函数有线性核函数、多项式核函数、高斯(径向基)核函数及sigmoid核函数。将RBF核函数应用到SVM网络入侵检测中,具有很好的分类效果[2,13-14]。 分析SVM的工作原理发现:惩罚因子C与核函数参数gamma(记为g)对SVM分类器的性能影响较大。实验环境和样本数据均相同,不同的参数对SVM分类器会影响入侵检测的准确率,基于经验估计参数难以使分类器达到最优。为了得到参数C和g的最优值,本文选择蚁群算法ACO(Ant colony optimization)的自动参数寻优方法。 ACO算法是一种应用于组合优化问题的启发式搜索算法,从组合问题的可行解集中求出最优解,是一种在图中寻找优化路径的概率型算法。ACO算法是一种自组织的模拟进化算法,具有较强的鲁棒性。ACO算法规则是:蚁群在觅食过程中,在图的搜索路径上记录信息素,其他蚂蚁通过信息素进行待搜索路径判别,信息素浓度越高,蚂蚁选择该条路径的概率就越大。若将SVM的参数(C,g)看作蚁群爬行的一条路径,根据每一组参数对训练小样本数据进行训练与检测,得到不同的检测正确率。然后根据路径的信息素更新操作和节点转移,实现路径爬行,最后通过路径寻优找到最优的参数(C,g)值。经过蚁群算法ACO自动寻优得到最优的参数(C,g)为(15,0.05),在SVM中配置该最优的C与g参数值,建立最优的网络入侵检测模型[3,13]。 数据进行网络传输时,每个网络连接被标记为正常(Normal)或异常(Attack)。若为网络连接为异常,即为网络入侵。本文的实验数据集为KDD CUP99数据集,该数据集来源于美国国防部高级规划署的一项入侵检测评估项目。KDD CUP99数据集权威、严谨,常用于检验与评价入侵检测算法的效果。本文需要对数据集进行预处理,包括对字符类型数据的数值化,以及对数据的归一化处理[8,9]。 KDDCUP99数据集每一条数据记录包含有41个特征,加上分类标记,共有42项属性。每个分类标记为正常或异常,正常标记为0,异常的网络入侵行为划分为4类:DoS、Probe、U2R和R2L,分别标记为1、2、3、4。本文实验过程将“10%”数据集为训练集,共494020条记录;“Corrected”数据集作为测试集,共311028条记录。1)将原数据集的符号特征进行数值化,例如:协议类型TCP、UDP、ICMP数值化为0、1、2。原数据集数值化后作为实验数据集data1。2)将数据集data1进行特征选择,从41个特征中筛选出20个重要的特征,并加上分类标记属性,作为实验的第2份数据集data2。3)将数据集data1进行归一化,得到第3份数据集data3。4)将数据集data3进行特征选择,作为实验数据集data4。图4为“Corrected”测试数据集的统计图,图5为“10%”训练数据集统计图。 图4 测试数据集统计图 图5 训练数据集统计图 根据KNN、BPNN、SVM算法的基本原理,确定各个算法的参数,以实现更好的分类效率与效果。KNN的参数设置为:n_neighbors=5, algorithm =KDTree,leaf_size=30,p=2;距离度量计算采用“Minkowski”算法,设置p=2,即等价于标准的欧几里得度量法计算数据间的距离。BPNN参数设置为:hidden_layer_sizes=100,solver='sgd',activation ='logistic',alpha=0.0001,learning_rate=’constant’; BPNN进行迭代训练,在每个步骤中,计算损失函数相对于模型参数的偏导数来更新参数,缩小模型参数以防止过度拟合。SVM的参数设置为:kernel ='rbf',gamma=0.05,C=15,degree=3;实现基于libsvm。随着样本数的增加,拟合时间复杂度大于二次型。SVM多类支持是根据one-to-one方案来处理的。 实验环境采用windows操作系统,编程语言为python,并结合SKeras封装的机器学习库,可以快速实现对KDD cup99数据集的处理。将“10%”数据集为训练集,“Corrected”数据集作为测试集,分类器算法采用K近邻算法KNN、反馈神经网络算法BPNN与支持向量机SVM,对4组数据集进行测试,实验结果如表1所示。 在相同的实验环境下,SVM算法执行训练未归一化数据的时间较长,数据集归一化后SVM泛化能力大大增强,时间复杂度大大降低;由于KNN算法的原理,计算复杂、效率最低,但检测准确度较好;BPNN算法的隐层数量设置为100,执行效率较高,但分类的准确度最低。实验过程中,统计出了不同的分类器算法分类的准确率、检测精度、召回率、F-score值、检测时间。从上表1实验结果可以看出:SVM的分类准确率最高,数据集经过预处理与特征降维后提高了分类的准确率,大大提高了分类效率;KNN模型复杂度大,训练与检测时间长、效率低,但准确率较好;BPNN模型性能适中,若增加神经网络隐层数量,能有效提高分类准确率,但时间复杂度增加。 表1 实验结果 基于机器学习的入侵检测方法本质上就是设计一个分类器,通过训练分类器识别网络连接是否为者攻击行为,实现网络入侵检测。网络入侵检测是一种重要网络安全防范技术,提出了一种基于SVM与MI特征选择的入侵检测方法。该方法对样本数据集采用互信息MI方式进行特征选择,筛选出最优的特征子集,结合支持向量机SVM建立网络入侵检测模型。实验结果表明,本文方法具有较高的分类准确率和较低的误报率,以及良好的分类性能,获得了更优的网络入侵检测结果。在今后的工作中,将进一步完善计算方法,寻找有效的方法解决SVM在大样本数据集计算速度问题;研究新的分类模型,设计出更优的网络入侵检测系统。1.2 互信息算法MI
2 支持向量机SVM
3 实验结果与分析
3.1 SVM参数选择
3.2 实验数据预处理
3.3 实验结果分析
4 结语