1. 引言
近些年来,随着云计算、5G通讯以及人工智能的迅猛发展,网络安全问题也日益严重。入侵检测系统(Intrusion Detection System, IDS) [1] 作为防范网络攻击的重要手段,已经成为了许多大型组织和机构防御网络攻击的首选。相较于传统的被动防御策略,入侵检测系统可以主动检测并发掘网络内部和外部的攻击行为,在攻击生效前,就能拦截攻击并向管理人员发出安全预警。
国内外众多学者在这一领域提出了许多行之有效的方案,包括异常检测方法、聚类算法、集成学习、浅层学习、深度学习 [2] 等。文献 [3] 提出使用改进后的K-means算法对初始聚类中心进行优化,从而提升入侵检测模型的检测速度。文献 [4] 提出用遗传算法来提升SVM在入侵检测数据中的分类效果。文献 [5] 利用贝叶斯网络显著地提高了攻击数据的识别准确率。但其缺点在于需要大量的先验知识且对输入数据的表达形式非常敏感。文献 [6] 将一系列的集成方法应用到异常检测中,取得了不错的效果。随着近些年来深度网络的不断发展,神经网络在入侵检测中也得到了广泛的应用。文献 [7] 应用深度神经网络(deep neural network)与预处理后的数据,建立了深度学习模型。并在KDD Cup 99数据集上准确率、检测率都取得了较好的效果。文献 [8] 提出了一种多尺度卷积CNN模型。用多种不同的尺度卷积核对大量高维无标签原始数据进行了多层次特征提取,再采用正则化方法优化网络结构学习率,以获得原始数据的最优特征表示。相较于原始的CNN收敛更快,准确率更高。文献 [9] 提出了基于卷积神经网络(CNN)和长短时记忆网络(LSTM)的检测模型,首先利用CNN对输入的高维数据进行特征提取,然后将其输出作为LSTM的输入,最后利用全连接层得到分类结果。
在大量的网络数据中,攻击数据只占很小的一部分。这就导致我们所能够获取到的数据集往往是非常不平衡的。传统机器学习方法直接应用于不平衡数据上往往只能提高整体的检测精度,而对于少数类的分类效果则不尽如人意。如何解决入侵检测中不平衡数据的问题,许多专家学者进行了大量研究。文献 [10] 中作者引入了一个聚类一致性系数从而更好地找到了少数类的样本边界,进一步优化了SMOTE (Synthetic Minority Oversampling Technique)算法的样本生成过程。其数据处理方法简单易于实现,分类器也较为通用,获得了较好的生成效果。文献 [11] 中,作者在原始的SMOTE基础上利用K-means算法对其改进,选取簇心的k个近邻进行插值操作,有效地避免了模糊样本边界的问题。在保证多数类样本信息前提下,提升了少数类分类精度,增强了入侵检测系统检测能力。文献 [12] 中使用变分自编码器(Variational Auto Encoder, VAE)来作为入侵检测的半监督学习,但其缺点在于不能自由生成指定标签的数据。文献 [13] 在物联网领域的入侵检测中使用了条件变分自编码器对各类样本进行生成,最后通过比较生成样本和测试样本的距离来预测标签。文献 [14] 中提出使用GAN (Generative Adversarial Networks)来生成少数类样本,GAN在图片生成领域取得了巨大成功,应用于网络数据也显示出了优秀的性能。
针对以上情况,本文提出了一个基于改进条件变分自编码器的入侵检测方法。我们使用改进的条件变分自编码器(Intrusion Detection Conditional Variational Auto Encoder, IDCVAE)的编码器部分来学习原始复杂数据的分布,然后将具有高斯噪声的隐变量和需要生成类标签作为解码器的输入,生成少数类的攻击样本,解决了原始数据集的不平衡现象。之后将新的数据集作为深度信念网络(Deep Belief Nets,DBN)的输入,逐层对DBN进行训练,利用微调对参数进行全局调优,最终得到分类结果。该方法在保证了总体准确率较高的情况下,有效提高了少数类的检测准确率并降低了误报率,增强了入侵检测系统的检测性能。
2. 相关理论介绍
2.1. 变分自编码器
变分自编码器(Variational Auto Encoder, VAE)作为生成模型的重要一员,由Diederik P. Kingma和Max Welling [15] 于2013年提出。其结构如图1所示。它主要由一个编码器和一个解码器组成。编码器实现了从X到一组低维向量的映射,这些向量完全定义了关联的中间概率分布
的集合。之后再对这些中间分布进行采样,生成的样本构成一组隐变量作为解码器的输入,解码器则是和编码器进行相反的操作,将隐变量映射为一组新的参数,形成新的概率分布
,从中我们可以再次进行采样作为解码器的输出
。
VAE的核心在于使用似然概率
在原始数据中进行采样,X是一组随机变量。最后的目标在于尽可能的重建原始的输入数据。所以就必须最大化
的对数似然概率,公式如下:
(1)
的对数下界即变分下界目标如下所示:
(2)
就是变分下界同时也是VAE的目标函数。公式的第二项就是利用KL (Kullback-Leibler)散度来最小化编码器的分布
和隐变量Z的先验分布
之间的分布距离,也就是说将学习到的
尽可能接近于先验分布
。因此,VAE的训练目标就是最大化数据生成概率
的同时最小化编码器的分布
和先验概率
之间的分布距离。
2.2. 入侵检测条件变分自编码器
基于VAE模型,条件变分自编码器(Conditional Variational Auto Encoder, CVAE)和它有着类似的思想。但不同于VAE只将随机变量X作为输入,同时也将标签Y也同时作为编码器和解码器的输入条件。故称之为条件变分自编码器。正如图2所示,编码器
和解码器
输入条件有两个分别为X和Y。
CVAE变分下界目标如下
(3)
标准CVAE的编码器和解码器的条件概率分布都和标签Y相关,而在入侵检测任务中编码器部分无需要将特征与标签建立联系,故我们改进CVAE称之为入侵检测条件变分自编码器(Intrusion Detection Conditional Variational Auto Encoder, IDCVAE)。我们只在解码器阶段添加标签Y的信息,这样仅仅解码器的条件概率与Y相关,编码器部分则没有变化,更有利于编码阶段的特征提取。其结构如图3所示:
IDCVAE中编码器网络由
和解码器网络
组成,解码过程中隐变量Z和类标签Y会被合并在一起作为解码器的输入,所以指定标签的新少数类样本会被生成出来。IDCVAE的变分下界如下:
(4)
其目标函数为:
(5)
公式主要包含两个部分:一个对数重建似然
和一个KL散度
。第一项利用条件概率分布
重建原始输入X,第二项利用KL散度来度量编码器分布
和先验概率分布
的距离。在模型中,我们使用NSL-KDD的类标签作为条件变量Y,因此根据需要生成指定标签的攻击类样本。
2.3. 深度信念网络
传统神经网络往往不能有太多隐层,因为隐层的堆叠会导致模型参数数量迅速增长,同时也会导致训练时间过长。2006年,Hinton提出了深度信念网络DBN,也被称为深度置信网络,一举解决了深层次神经网络的训练问题。其结构主要由多层的无监督的受限玻尔兹曼机(Restricted Boltzmann Machine)和一层有监督的反向传播(Back Propagation)网络组成。RBM结构如图4所示,它是一个由可见层(Visible Layer)和隐层(Hidden Layer)组成的双层网络。可见层一般用作数据的输入,隐层作为特征提取层。层与层的节点全连接,层内节点无连接。其结构也可以看作是一个有向无环图。RBM是一个基于能量模型的结构,其能量函数如公式6所示:
(6)
上式中,
和
分别表示可见层节点
和隐层节点
的偏置值,
表示可见层和隐层的关联权重。关联权重在最小化RBM的能量函数过程中,进行更新和优化,最后达到最优。RBM的目标就是使
最小,此时网络最稳定,网络最优。
DBN由多个RBM堆叠而成,也就说想要获得全局的最优参数是非常困难的。因此,DBN采用了逐层训练的方法。每次只训练相邻的两层,依次训练,直到所有RBM训练完成。再通过BP神经网络逐层进行反向传播,最终获得全局的最优参数。也就是说包含了一个正向训练和微调(fine-tuning)的过程。这个方法也是由Hinton提出,也称为对比散度(Contrastive Divergence, CD)训练方法。具体的过程如图5所示:
3. 本文入侵检测算法
本文所提出的IDCVAE-DBN的结构图如图6所示。整个实验过程主要包含了三个阶段:1) 训练IDCVAE。我们使用训练集中的少数类入侵样本作为编码器的输入,再解码器阶段将样本的类标签作为输入。训练的最终目的是保证重建后的样本与真实训练集中的样本差距尽可能的小。2) 生成新的攻击样本。我们将需要生成的样本类标签作为已经训练好的解码器的输入生成新的样本。将生成的所有样本与原始数据集合并,形成新的平衡数据集。3) 未知攻击检测。将新的数据集作为DBN的输入进行训练以及微调。训练好的DBN分类器用来对测试集中的攻击进行分类。算法具体步骤如下:
Figure 6. IDCVAE-DBN architecture
图6. IDCVAE-DBN模型图
a) 数据预处理。首先利用one-hot编码对非数值数据进行数值化,然后对数据进行标准化。数据预处理能够解决原始数据表达形式不一致,满足计算机处理要求。标准化的特征也有利于算法的学习。
b) 模型权重初始化为截断的正太分布中输出的随机值。偏移量均被初始化为0。IDCVAE输入数据维度为122,隐变量Z的维度为20,输出数据维度为122。
c) 训练集X作为编码器的输入,对编码器进行训练。对训练得到的均值和方差进行采样,得到隐变量。不断迭代获取最优的模型参数。
d) 将训练得到的最优的隐变量Z以及需要生成的样本标签
作为解码器的输入,得到新的样本,并将其并入原始数据集,得到新的平衡数据集
。
e) 新的训练集
作为DBN的输入,通过CD算法对DBN中包含的多层RBM进行逐层预训练,获得初步参数。之后再利用反向传播算法对参数进行微调,最终获得最优的DBN模型参数。
用已经训练好的DBN对测试集中的攻击进行分类,获得最终的分类结果。
3.1. IDCVAE模型细节
本文使用了NSL-KDD数据集作为训练集。训练集中包含了38个数值特征和3个符号特征,总计41维特征。其中,数值特征可直接提取。符号特征需要用one-hot编码成数值特征。因为模型的输入必须为向量组,所以所有的符号特征需要经过one-hot编码,最后得到每个输入向量的维度为122。之后对所有数据进行最值归一化,保证每个特征在同一个维度下。IDCVAE的损失主要由一个重建损失和KL损失组成。KL损失用来衡量隐变量的分布和单位高斯分布的差异。重建损失使用平均平方误差来度量数据的重构误差。
对于编码器网络
的分布我们使用的是多元高斯分布,而对于解码器
,我们使用多元伯努利分布进行拟合。隐变量Z的先验概率分布为标准正态分布
。其中多元高斯分布的均值为
,方差为
,隐变量Z是对多元高斯分布进行采样而得。但由于从
中直接采样是不可导的,所以利用了一个重参数的技巧。先在
中采样一个
,然后另
,这样整个过程就变的可导了,从而使得整个模型可训练了。
3.2. DBN模型细节
DBN的输入为经过阶段二形成的平衡数据集。输出向量的维度为5。DBN由两个RBM以及一个BP层组成。隐层的激活函数为Sigmoid,输出层的激活函数为Softmax,DBN和RBM的学习率均为1 × 10−4。利用CD算法对每个RBM分别进行无监督的训练。预训练过程中RBM的权值和偏置值都是通过随机初始化获得。优化算法使用的是Adam。预训练完成后,利用BP层进行全局的参数调优。
4. 实验及结果分析
4.1. 实验环境及数据集介绍
实验使用的是Windows10操作系统、CPU 2.9 GHz、内存16.0 GB的PC机。编程语言使用Python,版本为3.7.4。基于tensorflow、sklearn等开源库实现。数据集选用NSL-KDD数据集。此数据集在KDD-CUP1999数据集的基础上去除了大量冗余和重复的数据,并且包含了一些KDD-CUP1999中所没有的新的攻击类型。NSL-KDD数据集训练集和测试集样本数量适中,因此可以避免由于样本数过大、采样方法各不相同所造成的各类检测方法无法进行比较的问题。NSL-KDD每条样本包含了41个特征属性标签,分别由38个数值型特征和3个非数值型特征组成。
数据集中主要包含5种类别的数据包括正常数据和另外四种攻击数据。四种攻击分别为:端口监视或扫描(Probe)、拒绝服务攻击(denial of service, DoS)、未授权的本地超级用户特权访问(user to root, U2R)、来自远程主的未授权访问(remote to local, R2L)。四类攻击类型又可详细划分为39类具体攻击。数据集详细情况如表1所示。
我们使用KDDTrain+_20Percent.txt (包含了全部训练数据的20%)作为训练集,KDDTest+.txt作为测试集。训练集数据集本身极度不平衡,部分攻击类的样本远远少于正常数据。其中正常数据13,449条,Probe类2486条,DoS类9044条,U2R类24条,R2L类189条。本文攻击样本生成过程中,总计生成了42,053条数据。其中正常样本0条,Probe类10,963条,DoS类4405条,U2R类13,425,R2L类13,260条。使得所有类别样本数目相同。数据集详细情况如表1所示:
Table 1. Sample category statistics
表1. 样本类别统计
4.2. 评价标准
我们使用混淆矩阵常见的5种常见的度量指标,分别为:准确率(accuracy)、精准率(precision)、召回率(recall)、FPR (false positive rate)以及F1-score。二分类混淆矩阵如表2所示,将样本分为true positive (TP),true negative (TN),false positive (FP),and false negative (FN)。TP表示正类样本被正确分类、TN表示负类样本被正确分类、FP表示正类样本被错误的分为负类、FN表示负类样本被错误的分为正类。
在这些度量之中,召回率是覆盖面的度量,度量有多个正例被分为正例。FPR表示预测为正例但真实情况为反例的,占所有真实情况中反例的比率。F1-score是精确率和召回率的调和平均数。精准率与召回率是衡量分类性能最基本的两个评价标准,F1-score则兼顾了两者。对于非平衡数据集来说F1-score用来评估模型效果好坏是更加准确的。这些指标定义如下:
(7)
(8)
(9)
(10)
(11)
4.3. 实验结果与分析
本文实验主要分为三个部分。第一部分比较了进行过采样和不进行过采样的性能,第二部分比较不同过采样方法的性能,第三部分进行本文入侵检测方法与其他相关方法的对比实验。
由表3可知,本文所使用的方法相较于传统的机器学习方法,在各项指标上均获得了更好的结果。在同样使用DBN分类的情况下,在经过IDCVAE进行过采样后,准确率和提升了接近10%,同时保证了FPR的下降。表4中,SVM和GBDT虽然能在Normal等大类上取得较好的分类效果,然而其在R2L这种少数类上标签上的表现却差强人意,尤其是在U2R上两个方法的准确率都为0。直接采用DBN进行分类后,对少数类检测准确率提升也非常有限。仅仅只有不到3%。而应用了IDCVAE进行数据增强后,少数类的检测准确率相较于DBN得到了不小的提升。其中R2L提升了24.17%,U2R提升了12.4%。由此可见使用IDCVAE进行过采样后,对总体以及少数类检测率的提升是非常有效的。
Table 3. Classification results of oversampling methods and normal methods (%)
表3. 采用过采样和不采用过采样方法分类效果(%)
Table 4. Subclass detection rate of oversampling methods and normal methods (%)
表4. 采用过采样和不采用过采样方法子类检测率对比(%)
如表5和表6所示,在同样使用DBN作为分类器时,通过三种过采样方法使得识别的整体准确率都得到了一定程度的提升。充分证明了过采样方法对少数类检测率提升的有效性。其中IDCVAE相较于其他两种机器学习过采样方法对于各项指标的提升是最为显著的。其中相比于SMOTE,R2L的检测准确率提高了26.3%。相比于ADASYN,U2R的检测准确率提高了6.43%。
我们也与其他表现较好的方法进行了比较。结果如表7所示。实验结果表明在准确率、召回率以及FPR上IDCVAE-DBN均优于其他方法。由此可见,IDCVAE-DBN在不平衡数据的入侵检测问题中,整体效果符合预期,有着更好的检测性能。
Table 5. Classification results of different oversampling methods (%)
表5. 不同过采样方法分类效果(%)
Table 6. Results compared with other methods (%)
表6. 其他方法对比结果(%)
Table 7. Results compared with other methods (%)
表7. 其他方法对比结果(%)
5. 结束语
本文提出了一种基于改进条件变分自编码器的入侵检测方法,为入侵检测中少数类样本的检测问题提出了一个新思路。改进的条件变分自编码器可以学习样本的内在稀疏表示,其解码器可以有效地生成少数类样本,改善了数据集不平衡的情况下分类器的分类准确性。深度信念网络也有效地提取了数据的特征。实验结果表明,本文所提出的方法,对于不平衡数据集上的入侵检测问题有着良好的处理能力。在保证多数类样本准确率不下降的同时,大大提高了少数类的检测准确率。下一步,我们打算研究如何进一步提高样本的子类检测率以及大型数据集下的模型适应能力。
基金项目
上海市工业互联网资助项目(2018-GYHLW-02043);国家自然科学基金资助项目(61771346, 61772372),上海市信息化发展专项资金(新一代信息基础设施建设)项目(201901010)。