杨锦溦, 杨宇, 姚铖鹏, 尹坤
(武警工程大学信息工程学院, 西安 710086)
20世纪80年代, Endsley[1]提出了态势感知这一概念,即“在一定的时空范围内,认知、理解环境因素,并且对未来的发展趋势进行预测”。网络安全态势感知(network security situation awareness,NSSA)可以融合所有可获取的信息并对网络的安全态势进行评估,实现了传统的网络攻防方式向积极主动对网络攻击进行一定的分析、评估和预测的转变,对安全分析给予决议参考,对于提升网络监管水平、应急响应水平、预测网络安全等方面具有重要价值[2]。
在已有的网络安全态势感知方法中,入侵检测系统(intrusion detection system, IDS)是一种积极的安全防护形式,对网络开展实时性的监测,能够较好地发现网络攻击,为相关人员提供了重要的响应决策[3]。近年来,更多的新型的算法被应用在了IDS领域来构建相对稳定以及准确性更高的入侵检测系统。机器学习策略通常需要人工选取特征,由此要求诸多从业人员具备更为专业的理论素养。但是,因为网络中数据急剧增加,网络带宽也有了明显的提高,信息的复杂特质以及特性的多元化也正呈现出持续的提升态势,新型的网络攻击形式越来越多,浅层的机器学习已然无法实现分析以及预测的目标。深度学习为学习样本信息的潜在规律以及表示层次,建立起包含诸多隐藏层的非线性网络系统可以较好地满足高维度研究,效率更高,能够结合具体情况搭建模型,不局限于具体的固定问题,于处理入侵检测方面有着重要价值[4]。文献[5]提出了一种基于深层随机卷积神经网络-双向长短时记忆网络(deep stochastic convolutional neural network-bi-directional long short-term memory,DSCNN-BiLSTM)的入侵检测方法,该方法引入了深度可分离卷积代替标准卷积从而减少了模型参数,降低了计算量,并应用双向长短期记忆网络(bi-directional long short-term memory,BiLSTM)提取长距离依赖信息的特征,以解决前后特征之间的影响问题。文献[6]提出了一种改进人工蜂群优化神经网络的网络安全态势评估方法,通过引入混沌序列改进人工蜂群算法提高蜂群的多样性,使其具备更强大的全局搜索能力。然后,利用改进的蜂群算法代替反向传播算法来优化神经网络的各权值参数,提高了安全评估精度,加快了收敛速度。文献[7]通过分析总线中入侵数据帧的特点,提出了基于门控循环单元(gated recurrent unit,GRU) 的入侵检测方法,达到与长短期记忆(long short-term memory,LSTM) 模型相当的检测精度,并且具有更短的训练和检测时间。
但是真实的网络攻击样本数据集具有不平衡性,正常行为流量明显多于异常行为流量,初始数据集攻击形式的不平衡性会导致分类器的训练会出现较大偏差,分类结果往往会倾向于在数据集中更加频繁出现的样本,现阶段已知数据样本对新型攻击活动的预测以及归类效果应对并不理想,从而影响最终的入侵检测分类结果,无法对少见或者未知的攻击类型进行有效的检测。
针对数据样本不平衡的缺点,提出一种新的入侵检测模型,即DCGAN-DNN。该模型是将改进后的深层卷积生成对抗网络(deep convolutional generative adversarial networks,DCGAN)和深度神经网络(deep neural network,DNN)相结合。生成对抗网络(generative adversarial networks,GAN)由生成 网络和判别 网络两个神经网络组成,生成网络反复学习真实 样本的分布,最终达到生成真实 度很高的假样本的目的,从而对数据集进行增强和扩充。DCGAN网络在计算机 视觉、图像翻译等领域有着广泛的应用,而在入侵检测中GAN及DNN相结合的研究并不多。文献[8]引入了AT-GANs评估对抗样本的散布;文献[9]针对黑盒恶意软件检测系统提出了一种基于广义对抗网络的恶意软件生成算法(MalGAN);文献[10]提出了一类应用GANs应对ML进攻的策略,从而促使IDS在应对攻击性流量干扰的时候表现更为平稳;文献[11]引入了 Cycle-GAN将ADFA-LD数据集转化成图像形式,将得到的综合性的异常信息和原始信息一同用在模型的训练方面;文献[12]提出了围绕GAN为基础的全新的对抗网络架构继而进行对抗攻击,这一攻击能够欺骗以及躲避入侵检测模块;文献[13]将战略对抗性干扰引入GAN网络的样本数据中, 用来更好地训练IDS模型,在应对这种对抗性干扰时能够有更好的检测效果;文献[14]提出了一类围绕GAN损失函数为核心的高效能系统,自常规的样本内研究它的分布以及得到最为相近的样本,之后结合测试以及真实样本彼此的不同从而诠释异常信息的评估。此类研究均应用了GAN,但GAN训练存在不可控性,会导致梯度消失情况,经常性的诱发生成器出现无意义的输出,有时反而会导致数据集更加庞杂,特征不够明晰,反而增加了之后工作的难度,降低准确性。因此,文献[15]提出了DCGAN,将卷积神经网络和GAN结合起来,得到一个训练更稳定、较容易收敛、生成较高数据质量的网络。
根据当前的研究情况来看,DCGAN大量运用到图像数据集处理当中,但是尚未涉及网络安全态势感知领域用来扩充增强数据集。为此,将DCGAN引入数据预处理中,并对DCGAN的生成网络中的激活函数进行改进,最后利用CIC-IDS-2017数据集对DCGAN-DNN模型进行评估,和已有的过采样方法如ROS、SMOTE进行对比。
根据Goodfellow等[16]提出的生成对抗网络架构,生成模型与判别模型进行博弈对抗,从而确定样本是来自模型分布还是数据分布。对抗网络在均采用多层感知模块的情况下最为适用,为能够学习生成器于数据x的分布pg,定义了输入噪音z的先验变量pz(z),将数据空间的映射定义为G(z;θg),其中G为典型的含有参量θg的多层感知模块的可微函数。之后再定义一个用来输出单独标量的多层感知机D(x;θd)。D(x)表示x来自真实数据分布,而不是pg的概率。训练D从而最大化分配给训练样本以及生成新样本的正确标签的概率,训练G使lg1-D[G(z)]最小化,则D和G的训练均为有关值函数V(G,D)的极小化极大的博弈过程,可表示为[16]
Ez~pz(z)lg{1-D[G(z)]}
(1)
GAN包含典型的两个网络部分,所以需要就该网络进行独立的交错迭代练习,旨在使得生成器可以学习获得真实数据的散布,即pdata(x)=pg(x)。
首先,固定G,最优判别器D可表示为
(2)
给定任意生成器G,判别器D的最大化目标函数为
lg[1-D(x)]dx
(3)
式(3)中:训练判别器D的训练目标可以看作为条件概率P(Y=y|x)的最大似然估计,当y=1时,x来自pdata(x);当y=0时,x来自pg。
式(1)中的极小化极大问题可变形为
(4)
生成对抗网络中对抗网络在生成过程中无需反馈回路,因此不需要马尔可夫链进行采样,可以较好地利用分段线性单元,提升了反向传播的能力[13]。
DCGAN将卷积神经网络(convolutional neural networks,CNN)和GAN结合起来,从而使生成的数据质量以及多样性得以保证。DCGAN引入了归一化(batch normalization,BN)稳定训练,使用ReLU激活函数降低梯度消失风险,消除池化层,引入跨步卷积以及微步幅卷积较好的保持了数据特征[17]。DCGAN运行成本较低,可运行在CPU上,处理数据样本较为便捷迅速,有利于对数据集进行实时的动态分析。
DCGAN对GAN的框架做出的改进有:①全卷 积网络结合跨步卷积取代了确定性空间池函数,支持网络学习自身的空间下采样,DCGAN将这一策略应用于生成以及判别网络内,支持学习自身的空间上采样;②于卷积特征的前提下去除了全连接层,全局平均池可以提升模型的稳定效果,但同时减小了收敛速度。而在最高卷积 特征的中间区域,直接将生成 网络的输入和判别 网络的输出连接起来,有较为理想的效果;③批归一化处理通过对每个单元的输入进行归一化,使其具有零均值和单位方差,从而稳定学习,这有助于解决由于初始化不良导致的训练问题,并且有利于梯度流向更深的网络。
DCGAN 的架构大致为:①判别网络使用跨步卷积替代全部池化层,生成网络使用分数跨步卷积替代全部池化层;②于生成网络和判别网络内均应用了批归一化;③为能够搭建更为深度的系统去除全连接层;④除去生成 网络的输出层采用了Tanh激活函数,其他 层均采用了ReLU激活函数;⑤各层的判别网络中均应用了LeakyReLU激活[18]。
入侵检测模型如图1所示,主要包括:①DCGAN网络的训练,交替训练判别器和生成器;②生成新的数据样本,将加入新生成的样本的训练集进行循环训练;③DNN分类器的训练,采用最终得到的真假混合样本作为训练集对DNN进行训练,而后以真实的数据集作为测试集,通过DNN分类器进行分类,检验入侵检测模型效果。
图1 DCGAN-DNN入侵检测模型Fig.1 DCGAN-DNN intrusion detection model
2.1.1 训练判别器D
如图1所示,控制生成器G保持不变,判别器D的输入层为真实攻击的样本集{x1,x2,…,xm}和生成器生成的假攻击样本集{G(z1),G(z2),…,G(zm)},输出层为判别样本真假的概率值,即{D(x1),D(x2),…,D(xm)}和{D[G(z1)],D[G(z2)],…,D[G(zm)]}。判别模块D的训练目的是准确的识别真假样本,因此相当于二分类器,真实攻击样本输出为1,否则为0;最后结合激活函数把概率值转化成样本预测分类标签,采用交叉熵损失函数分析算出损失值。
2.1.2 训练生成器G
生成器G需要将生成网络以及判别网络的串联进行训练,它的训练宗目的是得到判别模块D难以辨别的假样本,经过第一步之后,判别器D有了初步的判别能力,如图1所示,把生成器G得到的假攻击样本集{G(z1),G(z2),…,G(zm)}当做串联在判别器D之后的输入层,样本为真假样本的概率值为输出层。训练生成器G的目标值设为1,最大可能地得到真实样本。采用交叉熵损失函数分析算出损失值。
2.1.3 交替训练
在损失值以及循环频次没有达到设置的阈值时,前两个步骤交替对判别器D以及生成器G训练,直至达到设置的阈值终止训练,结合Adam优化器更新优化梯度。
如图1所示,当损失值或指定的循环数达到设定阈值时,则把最后得到的攻击样本集{G(z1),G(z2),…,G(zm)},添加至之前的生成样本集内,获得新样本。
使用DNN算法来构建分类器,用以检测新生成数据样本集的平衡性。深度神经网络可以结合组合低层次特征构成更高层次的潜在特征,最后的训练集是混合数据集,DNN分类器分析真实标签以及预测结果之间的损失loss,直至实现预设的阈值。如图1所示,把测试集输入训练完毕的DNN分类器内进行分类,DCGAN-DNN系统入侵检测模型算法为:①数据预处理,将数据集CSV文件之中的文本转换成数值,去除缺失值所在行,就特征数据进行归一化,把字符特征以及分类标签进行one-hot编码,缩放至[0,1]区间;②结合预处理了的数据集为训练集就DCGAN予以练习;③输入随机噪声,得到新的攻击样本,同时添加至原始训练集内,最后获得测试样本集;④训练DNN分类器;⑤把测试集输入到训练完毕的分类器中,得到分类结果。
使用5个典型的指标评价入侵检测性能,分别是准确率Accuracy、精确率Precision、召回率Recall、假阳性率FPR和F1-measure[19],即
(5)
(6)
(7)
(8)
(9)
表1为真阳性(TP)、真阴性(TN)、假阳性(FP)、假阴性(FN)的混淆矩阵[15]。
表1 混淆矩阵Table 1 Confusion matrix
选用CIC-IDS-2017数据集,该数据集包含最新的常见攻击,并且满足现实攻击的所有标准。这一数据集的信息,截至2017年7月7日(周五)下午17:00,共计5 d。
周一是正常的一天,只包括正常的流量,周二、周三、周四和周五上午和下午分别执行FTP-Patator、SSH-Patator、DoS、Heartbleed、Web攻击、渗透、僵尸网络和DDoS攻击[20]。表2总结了一周中每天每个文件中所包含的攻击类型。
表2 CIC-IDS-2017数据集的文件描述Table 2 File descriptions of the CIC-IDS-2017 dataset
好的检测模型应该能够检测任何类型的攻击,为了设计一个能够全面检测的入侵检测系统,需要将一周的流量数据合并在一起,形成一个单独的数据集供IDS使用。通过合并CIC-IDS-2017数据集中5 d的数据,可以得到一个包含3 119 345个实例和83个特征,包含15个类标签(1个正常标签+ 14个攻击标签)的数据集。通过数据预处理,检查组合数据集中的实例,将缺少类标签的实例和缺少信息的实例删除之后,CIC-IDS-2017的组合数据集中现有2 830 540个实例。表3为各种攻击类型数据的数量,并且可以发现CIC-IDS-2017数据集存在很大程度上的类别不平衡问题,类别不平衡的数据集可能会误导分类器,分类结果偏向于大多数类别。
表3 CIC-IDS-2017 数据集数据分布Table 3 Distribution of data in the CIC-IDS-2017 dataset
实验以CIC-IDS-2017数据集作为样本数据对DCGAN-DNN入侵检测模型的性能进行评估,并将实验结果与其他过采样方法作以比较。
3.3.1 实验参数和激活函数改进
步骤1计算使用Adam优化 器,学习率lr为0.000 2,批处理batch为128,循环数epoch为60 000。
步骤2对生成网络中的线性整流(rectified linear unit, ReLU)激活函数加以改进在DCGAN算法中,生成网络主要使用了ReLU激活函数。然而以ReLU作为激活函数虽然解决了梯度消失的问题,但仍存在着均值偏移问题和神经元死亡问题,对于生成网络训练的稳定性和生成样本效果有较大影响,因此针对这两个问题对ReLU激活函数加以改进。将ReLU函数x<0的部分用tanh函数取代,定义为
(10)
式(10)中:α为常数,x<0部分图像根据斜率α变化。
函数右边的线性成分有着ReLU函数特质,对于x不低于0的方面导数是常数,故而于饱和区之中没有梯度是0的情况,可以较好的处理梯度损失情况,左边的非线性方面不单单可以使得均值更加趋向0,规避均值偏转情况,此外因为左边方面没有硬饱和性,没有存在神经元死亡情况。
步骤3损失函数计算。判别器的输入为真实样本以及生成器生成的假样本,输出为输入样本的真假概率。两类样本通过判别器后获得未归一化的概率,即真、假样本在判别器中的损失结果。实验中真样本的损失函数输入为真样本的损失结果及其标签1,假样本的损失函数输入为假样本的损失结果及其标签0,最终将输出结果作均值处理得到判别器D的损失值。
生成器训练的目的是得到仿真度较高的假样本,从而确保判别模块难以识别真假。所以,把样本的优化目标值设成1,交叉熵损失函数输入为假样本的损失结果及标签1,最终产生的结果为生成器G的损失值。
3.3.2 结果分析
从表3可以看出,CIC-IDS-2017数据集中不同攻击类型数量差距较大,导致训练样本不平衡。CIC-IDS-2017数据集对于FTP-Patator、SSH-Patator、Heartbleed、Web攻击、渗透和僵尸网络等攻击只有少数记录,由于正常网络流量BEGINS、Dos Hulk、PortScan这3种数据样本过于庞大,为提高生成新样本和训练分类器的效率提高,先删除一部分冗余数据,然后使用DCGAN针对其他不同的攻击类型来生成新的攻击样本以平衡训练数据集。结果如表4所示。
DCGAN-DNN模型结合DCGAN得到攻击样本,用来平衡增强数据集的过采样方法主要有:随机过采样器(ROS)[17]和合成少数过采样(SMOTE),为验证DCGAN有更好的效果,下面通过比较ROS-DNN和SMOTE-DNN两种过采样分类模型。比较结果如表5所示。
可以看出,所提出的DCGAN-DNN模型在CIC-IDS-2017数据集上的检测性能相比其他方法具有更高的准确率、精确率、F1-measure和FPR值。实际上ROS、SMOTE过采样技术都有一定的缺陷,ROS是训练样本的简单复制,可能会出现模型过拟合情况,削弱了分类模块的泛化特性,SMOTE结合最近邻
表4 在CIC-IDS-2017数据集上生成的样本数量Table 4 Number of samples generated on the CIC-IDS-2017 dataset
表5 CIC-IDS-2017数据集上不同过采样方法的检测性能比较Table 5 Different oversampling methods on the CIC-IDS-2017 dataset comparison of detection performance
策略为少数样本产生新样本,容易过度泛化,相较而言DCGAN是通过学习真实样本的特征分布,根据特征标签生成样本,能够最大程度保留数据样本的自身特性,并且训练生成网络时所采用的改进的激活函数让训练更加稳定,对模型进行了更好的优化。
提出了DCGAN-DNN入侵检测方法,得出以下结论。
(1)DCGAN能够通过学习已知真实样本的数据特征来生成新的样本数据在一定程度上解决了样本不平衡的问题,提升了分类器对少数以及未知攻击的检测效果。在CIC-IDS-2017数据集上对DCGAN-DNN的分类性能进行了评估,并与两种传统的过采样方法ROS、SMOTE进行比较,测试结果表明,所提出的改进的DCGAN-DNN模型就少数样本攻击表现出较好的检测水平。
(2)对于DCGAN算法的改进,即将生成网络中ReLU函数的非零区域改为tanh函数,有效地改善了均值偏移和神经元坏死的问题。