写在前面:
本文翻译供个人研究学习之用,不保证严谨与准确
github链接:https://github.com/WithHades/network_traffic_classification_paper
本文原文:Zeng, Y., Gu, H., Wei, W., & Guo, Y. (2019). Deep-Full-Range: A Deep Learning Based Network Encrypted Traffic Classification and Intrusion Detection Framework. IEEE Access, 7, 45182–45190. https://doi.org/10.1109/ACCESS.2019.2908225
基于深度学习的网络加密流量分类与入侵检测框架
基于深度学习的网络加密流量分类与入侵检测框架
摘要
随着网络流量多样性的迅速发展,对网络流量的理解变得更加关键和强大。以前,流量分类和入侵检测需要专家对各种流量特征和与攻击相关的特征进行繁重的分析,甚至可能需要私有信息。然而,由于特征标签和隐私协议的过时,现有的方法可能不再适应不断变化的网络环境的特点。本文提出了一种基于深度学习的轻量级流量分类和入侵检测框架,称为深度全范围(DFR)。由于深度学习,DFR能够从原始流量中学习,而无需人工干预和私人信息。在这样的框架下,我们提出的算法与使用两个公共数据集的其他最新方法进行了比较。实验结果表明,该框架不仅在加密流量分类的F1-score平均为13.49%,入侵检测的F1分平均为12.15%,而且对存储资源的要求也大大降低。
关键词:
加密流量分类
,
网络入侵检测
,
深度学习
,
端到端
I. 介绍
准确的流量分类是网络基本任务(如提供适当的服务质量(QoS)、网络入侵检测(NID)等)的前提,然而由于以下事实,流量分类变得越来越具有挑战性。第一个是流量的丰富性性和多样性。除此之外,越来越多的应用已经开始应用安全协议,如HTTPS、SSH、SSL等,对网络流量进行加密,以保护用户的隐私;第三个事实是,一些基本信息,如流量或流量持续时间,由于隐私协议和法律的原因,现在不易获取。简单地说,如何在没有私有信息的情况下实现高质量的流量识别,对网络的安全性和服务质量有着重要的影响。
以往的流量分类方法,如基于端口号的方法和基于数据包检测(DPI)的方法[1],由于其对加密流量的限制,不足以适应现代的流量环境。最新一代的流量分类方法是基于流量统计和机器学习(ML)的,能够同时处理加密和正常的流量,如Atli工作中使用的K近邻(KNN)和决策树(DT)。
然而,基于ML的方法的性能在很大程度上依赖于人工设计的特性和私有的流量信息。因此极大地限制了它们的准确性和可推广性。此外,基于ML的分类方法通常需要很高的存储和计算资源,这限制了在资源受限的节点(如车辆[3]、家庭网关和移动电话。一个实时的准确的网络流量分类器是网络管理任务和NID系统的基础,因此,迫切需要一种新的分类方法。
基于深度学习(DL)的方法的特征提取与选择是通过训练自动完成的[4]。这种特性使得基于DL的方法成为一种非常理想的流量分类方法。基于DL的方法的另一个特点是,与传统的ML方法如随机森林、支持向量机和KNN相比,DL具有更高的学习能力。因此,他们需要学习高度复杂的模式,以便在一个框架内获得比以前具有更高准确性及更多功能(如NID、关键链接分析、流量分类等)的方法。考虑到这两个特点,作为一种端到端的方法,基于DL的方法能够有效地学习原始业务和相应的未来业务之间的关系,而不需要大量的劳动和私有信息。
本文提出了一种新的网络加密流量分类和入侵检测框架,称为深度全范围(DFR),它采用了三种深度学习算法:卷积神经网络(CNN)[5]、长短期记忆网络(LSTM)[6]和stackedauto编码器(SAE)[7]。我们打算使用CNN从空间范围了解原始流量的特征。LSTM用于从与时间相关的方面学习特征。采用SAE从编码特征中提取特征。所有这三个方面结合起来,以获得对原始输入的深入和全面的理解。DFR具有全方位的所关注的结构,能够在一个框架内对加密流量和恶意软件流量进行分类,而无需人工帮助和私有细节。由于我们的框架只会保存在当前流量环境下最有效的模型,因此与以前的方法相比,存储资源需求大幅下降。
本文的主要工作如下:1)提出了一种轻量级的分类和入侵检测框架DFR。在两个公共数据集上对完成这两项任务的有效性进行了评估,达到了显著的改进效果。2) DFR基于三个DL模型,可以获得对原始流量的深入而全面的理解。3) DFR是一个端到端的框架,不需要太多的人的帮助和数据的私有信息。
本文的其余部分安排如下。第II节详细说明了DFR和各部分的方法。在第III节中我们通过比较两个公共数据集上的其他最新方法来评估这个框架。最后,第IV节给出了本文的结论性意见。
II. DFR框架
在这一部分,我们将详细说明我们提出的网络加密流量分类和入侵检测框架。DFR框架可以分为两个功能模块,如图1所示:预处理过程,DFR过程。
图1 以ML分支为中心的流量分类方法概述
表1列出了DFR模型中使用的一些参数的符号和定义。
表1 DFR模型中参数和符号的定义
A. 预处理过程
在此过程中,我们提出的框架将原始网络流量数据转换为IDX格式,这是我们用作以下过程输入的格式。我们预处理原始数据的原因有三个。1)来自网络的原始数据长度不同,这不是DL模型的理想输入格式。2)原始数据包含一些可能影响结果的信息,比如端口号或MAC地址。3)一个统一的格式可以为添加更多的网络应用、维护过程等后续工作铺平道路。图2展示了预处理过程的概述,包括5个步骤。
图2 预处理过程总览
包生成
是通过包捕获工具Wireshark将连续原始流量数据拆分并另存为PCAP文件的步骤[8]。我们提出的方法将捕捉所有层的双向流,在[9]中,这是进行基于深度学习的流量分类最理想的流量形式。
流量清洗
是消除流量包中干扰数据的一个步骤。这包括TCP或UDP报头和数据链路层中一些与以太网相关的数据,例如MAC地址,因为它们不用于以下过程,甚至可能损害结果。
流量优化
将删除重复文件和空文件,因为这些文件只会损害我们框架的学习能力。
长度统一
将把长度大于900字节的文件修剪为900字节,并在长度小于900字节的文件末尾添加0x00s,以将其补充为900字节。
IDX填充生成器
将这些长度均匀的PCAP文件转换为30字节×30字节的二维格式IDX文件。IDX格式是DL字段[10]中常见的文件格式,对于我们的框架来说也是理想的。如果映射到[0,1],这些文件将被视为灰度图像。在图2中,我们可以看到预处理结果是灰度图像。
在算法1中给出了预处理过程的进一步细节。在此过程之后,生成一个充满流量图的数据集以供将来使用。
算法1 预处理过程算法
B. DFR过程
正如在图1中展示的,DFR过程是基于三个DL模型,包括CNN、LSTM以及SAE。我们之所以在所有模型中采用L1正则化[11],是因为L1正则化能够惩罚一些权重为0,而L2做不到这一点。这有助于机器学习哪些特征与分类无关,从而获得更好的结果。我们将在下一节中根据实验结果详细说明如何选择L1正则化。
1. 基于一维CNN的DFR分类器
我们开发了第一个基于一维CNN的加密流量分类和入侵检测识别器。到目前为止,CNN主要应用于计算机视觉领域,如图像分类、目标检测等。CNN具有很强的逐像素学习图形空间特性的能力。我们打算使用CNN来寻找有助于机器从空间范围对流量进行分类的功能。我们选择1D-CNN而不是流行的2D版本,因为原始的流量格式是按层次结构组织的序列形式,而不是图像。基于CNN的流量分类相关工作[9]表明,1D-CNN比2D-CNN有更高的精度。
基于一维CNN的DFR分类器如图3所示。它由两个卷积层、两个Maxpooling层、两个局部响应规范化(LRN)[5]层和一个具有Softmax分类器的全连接层组成。在第一阶段,我们将把输入的数据重塑为1×900的形状,然后丢弃高度并集中处理一维数据。分类过程定义如下:
第一卷积层用32个滤波器处理输入数据,其中每个滤波器的大小为[25,1]。每个滤波器在一次卷积运算后移动一步。卷积层的结果被输入到激活函数中。我们在一维CNN中采用了ReLU[12]激活函数,结果通过最大池处理。在每个步骤中,最大池按如下方式处理[3,1]输入:
m
a
x
p
o
o
l
i
n
g
[
x
1
,
x
2
,
x
3
]
=
m
a
x
(
x
1
,
x
2
,
x
3
)
(1)
maxpooling[x1, x2, x3] = max(x1, x2, x3)\tag{1}
m
a
x
p
o
o
l
i
n
g
[
x
1
,
x
2
,
x
3
]
=
m
a
x
(
x
1
,
x
2
,
x
3
)
(
1
)
maxpooling进程的步幅是3。在第一卷积层的末尾,加入LRN层来惩罚这些异常响应或异常响应,以获得更好的泛化效果。然后输出将通过第二卷积层,该卷积层与第一卷积层相似。这两个卷积层之间的唯一区别是,第二卷积层有64个滤波器。最后,数据将通过全连接层。该层是通过在完全连接的层上应用dropout获得的。然后在基于一维CNN的DFR分类器的最后,由softmax分类器获得输出标签。softmax分类器定义如下:
y
^
=
e
x
p
(
O
u
t
j
)
∑
e
x
p
(
O
u
t
i
)
(2)
\hat{y} = \frac{exp(Out^j)}{\sum exp(Out^i)}\tag{2}
y
^
=
∑
e
x
p
(
O
u
t
i
)
e
x
p
(
O
u
t
j
)
(
2
)
O
u
t
j
Out^j
O
u
t
j
是全连接层第j个神经元的输出。
y
^
=
{
y
1
^
,
y
2
^
,
y
3
^
,
.
.
.
.
.
.
,
y
N
^
}
\hat{y} = \{\hat{y_1}, \hat{y_2}, \hat{y_3}, ……, \hat{y_N}\}
y
^
=
{
y
1
^
,
y
2
^
,
y
3
^
,
.
.
.
.
.
.
,
y
N
^
}
是类别的全集。N是类别总数。概率最高的输出表示输入值的类别。我们在这个DFR中使用了Adam[13]优化器。
对于训练过程,超参数设置为{Epoch,Minbatch,LR,KeepP,N,Lambda},表1描述了这些参数的定义。在算法2中解释了基于1D CNN的DFR训练算法的更多细节。
算法2 基于1D CNN的DFR训练算法
2. 基于LSTM的DFR分类器
第二个DFR是在LSTM[6]的基础上开发的,LSTM[6]是一种用于处理序列表单数据的网络。LSTM是一种利用时间相关信息的递归神经网络(RNN)。假设一段业务是与时间有关逐字节和逐包构建的,来自相似类的业务在时间相关特性上必须具有一定的相似性。我们将LSTM应用到DFR中,帮助机器去学习与时间相关的特性。以前,只有少数工作提到使用RNN对网络流量进行分类。Torres等人[14] 将业务字节数据转换为字符数据,然后应用LSTM来学习字符之间的连接。然而,在我们提出的基于LSTM的DFR分类器中,输入将是一个图。图4说明了我们提出的基于LSTM的DFR分类器的概述。
图4 基于LSTM的DFR分类器的概述
如图4所示,基于LSTM的DFR分类器实际上基于三层LSTM模型。对于每一层,基于LSTM的DFR分类器有256个LSTM单元。为了得到更好的推广,我们在LSTM模型的每一层都应用了dropout。在LSTM模型学习了与时间相关的特性之后,数据将通过方程(2)中描述的softmax分类器。最后,可以在DFR结束时检查结果标签。值得一提的是,我们在这个DFR中也使用了Adam优化器。训练基于LSTM的DFR分类器可以使用1D-CNN的DFR分类器中定义的相同的超参数,这些超参数被设置为{Epoch,Minbatch,LR,KeepP,N,Lambda}。算法3释了基于LSTM的DFR分类器的训练。
算法3 基于LSTM的DFR分类器的算法
3. 基于SAE的DFR分类器
最后一个DFR的核心是两个SAE。一般来说,自动编码器是一种用于自动特征提取的半监督学习方法。SAE是自动编码器的变体之一,它能够逐字节地扫描数据以发现编码特性。图5展示了我们基于SAE的DFR分类器的概述。
图5 基于SAE的DFR分类器的概述
第一步是将图形重塑为1×900的形式,因此我们可以将输入与第一个编码器完全连接。图6显示了训练这两个sae的过程。从图6可以看出,这两个SAE是分别训练的。第一个编码器有1000个神经元,它们与900个输入紧密相连并且有900个输出。训练编码器1的目的是获得一个编码器,该编码器能够产生与900个输入具有最小方差的900个输出。在编码器1经过训练后,我们将其堆叠在DFR中并应用sigmoid[15]激活函数。编码器2有1500个神经元,与编码器1的输出紧密相连。然后,我们将通过减少输入2和输出2之间的差异来训练编码器2,这与编码器1的训练相似。我们将在DFR中叠加它,同时应用一个sigmoid激活函数。最后,数据将通过等式(2)中定义的softmax分类器并输出结果。需要注意的是,在这两个SAE叠加到DFR中之后,将开始微调训练过程,以获得最终的模型。
图六 两个编码器的训练过程
由于SAEs的两个训练过程是分离的,因此一些超参数与前两个DFRs不同。所有超参数都将设置为{Epoch、EpochFin、Lambda、LambdaFin}和Setsame={Minbatch、LR、KeepP、N},其中Setsame与前两个DFRs定义相同。Epoch是两个SAEs训练过程的epochs,不能设置为一个非常大的数。二次训练过程中的一个大的epoch会误导模型与训练数据的过度拟合。EpochFin是微调过程中的epoch,这个数不受Epoch的限制。Lambda是两个SAEs训练过程中L1正则化的Lambda参数,需要设置为比微调过程中L1正则化的Lambda参数大得多的数,即LambdaFin。原因是小的Lambda不能有效地配合两个SAEs训练过程。在算法4中总结了基于SAE的DFR的训练:
算法4 基于SAE的DFR训练算法
4. 选择与保存
用训练数据对这三个DFR进行训练后,用测试数据对其进行检验。具有最高精度的DFR被认为是最适合当前流量环境的模型。准确度定义如下:
A
c
c
u
r
c
y
=
T
P
+
T
N
T
P
+
F
P
+
F
N
+
T
N
(3)
Accurcy = \frac{TP + TN}{TP + FP + FN + TN}\tag{3}
A
c
c
u
r
c
y
=
T
P
+
F
P
+
F
N
+
T
N
T
P
+
T
N
(
3
)
其中,TP为真阳性,即正确分类为特定类别的数量;FP为假阳性,即分类为该类别的错误分类数量;FN为假阴性,即本应分类为该类别,但又被错误分类为其他类别的数量;TN为真阴性,即是正确分类为非特定类别的数量。
因此,这个模型将是我们保存的模型,并为这个时间单位执行以下分类和标识任务。DFR将以在线方式进行训练,这意味着DFR能够自动更新自身,以适应流量环境。算法5解释了在线式DFR框架过程中的其他细节。
算法5 在线式DFR框架算法
III. 评估
在这一部分中,我们将从加密流量分类效率、入侵检测效率和存储资源需求三个方面来评估DFR框架。
A. 实验装置
我们将首先描述我们使用的两个选定数据集。然后,通过训练过程中的超参数细节,揭示了实验的设置。最后,我们将解释我们使用的指标。
1. 评估数据集
目前,我们还没有找到既有加密流量又有恶意软件流量的可用公共数据集,因此我们决定分别使用两个选定的公共数据集ISCX VPN non VPN流量数据集[16]和ISCX 2012 IDS数据集[17]来评估DFR框架。
从ISCX VPN-nonVpn业务数据集[16]中重新生成第一个选择的数据集,以评估DFR对加密业务分类的有效性。ISCX VPN-nonVpn业务数据集最初有7种常规加密流量和7种协议封装流量。由于我们主要关注于评估加密流量分类的效率,因此我们将从7种类型的常规加密流量中选择并标记数据,其中包括网页浏览、电子邮件、聊天、流媒体、文件传输、VoIP和P2P。要注意的是,所有其他6种类型的加密流量都与网页浏览相关,因此,根据[9]的工作,我们放弃了加密流量的这个类别。此外,原始数据集中的一些类比其他类拥有更多的实例,这可能会在训练过程中误导模型。因此,我们精简它们以获得一个平衡的数据集。所选数据集的结构如表2所示。经过标准化处理后,每类流量的数量约为10000例。该数据集按9:1自动分为训练数据集和测试数据集。因此,训练数据集将有52916个案例,测试数据集将有5880个案例。
表2 数据集1所选择的结构
表3 数据集2所选择的结构
第二个数据集是从ISCX 2012 IDS数据集[17]中重新生成的,以评估DFR在入侵检测中的有效性。该数据集包含7天的网络流量,可分为5类,正常、强力SSH、DDoS、HttpDoS和渗透。我们通过选择仅来自有恶意软件流量的天数的数据进行简化。由于与现实生活中的正常流量相比,恶意软件流量预计具有相对较小的规模,因此不会对数据集应用归一化方法。表3展示了所选数据集的结构。最后,将所选数据集按9:1的比例分为训练数据集和测试数据集。
2. 实验设置
采用Tensorflow作为实验ML软件框架。我们在Ubuntu18.0464位操作系统上运行评估。处理器为8核Intel I7-7700K CPU,32 GB内存。采用两片Nvidia GeForce GTX1080ti芯片作为GPU加速器。DFR训练过程的超参数如表4所示。
表4 超参数的设置
3. 评价指标
我们使用公式(3)中定义的精度来选择最佳DFR。我们使用三个指标来评估和比较所选DFR与现有方法的性能。即精确、召回和F1分数,定义如下:
P
r
e
c
i
s
i
o
n
=
T
P
T
P
+
F
P
(4)
Precision = \frac{TP}{TP + FP}\tag{4}
P
r
e
c
i
s
i
o
n
=
T
P
+
F
P
T
P
(
4
)
R
e
c
a
l
l
=
T
P
T
P
+
F
N
(5)
Recall = \frac{TP}{TP + FN}\tag{5}
R
e
c
a
l
l
=
T
P
+
F
N
T
P
(
5
)
F
1
_
s
c
o
r
e
=
2
×
P
r
e
c
i
s
i
o
n
×
R
e
c
a
l
l
P
r
e
c
i
s
i
o
n
+
R
e
c
a
l
l
(6)
F1\_score = \frac{2 × Precision × Recall}{Precision + Recall}\tag{6}
F
1
_
s
c
o
r
e
=
P
r
e
c
i
s
i
o
n
+
R
e
c
a
l
l
2
×
P
r
e
c
i
s
i
o
n
×
R
e
c
a
l
l
(
6
)
其中TP、FP和FN的定义见第II-B.4节。
B. 实验结果
我们将首先介绍对加密流量分类效率的评估。实验结果解释了采用L1正则化的原因。然后,评估了入侵检测。最后给出了存储资源需求的比较。
1. 加密流量分类效率
在数据集1的测试数据集上,三个经过训练的DFR的精度如表5所示。我们还评估了在本实验中应用L1正则化的有效性。
表5 加密流量中DFR的准确率
从表5可以看出,用L1正则化代替L2正则化后,DL模型的平均精度提高了3.37%。这证明了我们在II-B节中对L1和L2正则化的分析,因此我们将仅在DFR框架中应用L1正则化。基于一维CDD的分类精度最高,达到99.85%,因此我们将此模型保存为适合当前网络流量环境的最优DFR分类。
我们还在同一数据集下比较了DFR框架与两种最新方法的性能。第一种方法是根据文献[16],C4.5 DT。这是一种基于ML的分类方法,需要人工特征。第二种方法是文献[9]中提出的一维CNN分类方法,它与我们在DFR中使用的模型相似,但没有正则化方法和LRN在其一维CNN中应用。
图7 分类有效性的比较
如图7所示,与基于ML的C4.5方法和基于DL的1D-CNN方法相比,DFR框架能够获得更准确和健壮的分类结果。DFR框架的F1平均得分为0.9987,与C4.5 DT和1D-CNN的F1平均得分相比,这是令人印象深刻的。精度平均比C4.5提高11.6%,比1D-CNN提高14.9%。所有这些数据都支持这样一个事实:DFR框架能够准确地对加密流量进行分类。
2. 入侵检测效率
对于数据集2,基于LSTM的DFR分类器的分类准确率为99.41%,是三种DFR分类器中最高的。然后,我们将DFR框架与Atli的工作[2]中展示的两种基于最新ML的方法进行了比较,这两种方法分别是DT和KNN。这是两种基于ML的入侵检测方法。
图8 入侵检测效率的比较
如图8所示,DFR能够保持对真实恶意软件流量的鲁棒性和高检测性能。与这两种方法相比,F1得分的平均改善分别为0.137和0.106。值得一提的是,本文提出的框架能够在F1总分为1的情况下识别HttpDoS恶意软件流量,与DT和KNN相比有较大的改进。所有这些数据都证明了准确的入侵检测能力。
IV. 结论
本文提出了一种新的基于DL的加密流量分类和恶意流量检测框架。与目前最先进的基于ML的方法相比,我们的DFR框架不需要选择特征和私有特征细节的繁重工作。此外,在两个公共数据集上的实验结果表明,DFR在加密流量分类和入侵检测方面比现有的方法具有更强的鲁棒性和更准确的性能,并且需要更少的存储资源。