基于特征融合卷积神经网络的端到端加密流量分类
2021-09-26薛文龙郭志琦李梓杨
薛文龙,于 炯,郭志琦,李梓杨
1.新疆大学 软件学院,乌鲁木齐830008
2.新疆大学 软件工程技术重点实验室,乌鲁木齐830008
3.新疆大学 信息科学与工程学院,乌鲁木齐830046
网络流量的准确分类是网络管理和网络空间安全中的一项重要任务,有助于网络的智能化运维和管理、网络质量服务保障和维护网络安全等。近年来,随着加密技术在网络应用中的广泛应用,流量加密已成为当今的标准做法。加密流量可以在一定程度上保护私人信息的机密性和完整性,但也给网络上的恶意行为提供了庇护。2015年,有21%的网站流量被加密,到了2019年,有超过80%的网站流量被加密,同比增长了90%以上。攻击者开始将网站的加密传输协议作为隐藏恶意行为的工具。2018年思科公司对超过40万的恶意软件进行了分析,发现其中有超过70%的恶意软件在通信时使用了加密。根据ISO/OSI层的不同,流量加密技术可以分为应用层加密,表示层加密和网络层加密[1]。应用层加密意味着应用程序使用自己的加密协议加密数据,在应用层中安全的传输数据,也称为常规加密。表示层加密和网络层加密意味着应用程序在这些层之上加密整个数据包,典型的技术是TLS和IPsec。一些隧道技术(例如VPN)就是基于这些技术,也被称为VPN隧道传输加密。特别是许多恶意软件利用TLS等加密技术对通信流量进行加密,以逃避防火墙和网络入侵检测系统的检测,给传统的流量分类方法带来了新的挑战[2]。
流量分类模型已被广泛应用于从大规模网络流量中自动识别异常流量。这些模型可以分为四类:基于端口的分类方法[3]、深度包检查(DPI)[4]、统计分类方法[5]和行为分类方法[6]。基于端口的方法对于具有特定端口号的应用程序(例如,具有端口21的FTP流量)的分类性能很好,但是由于随机端口和端口伪装技术的普遍使用,基于端口的方法对加密流量分类的精确率低,已不再适用于加密流量的分类。DPI分析整个数据包数据,然后识别其网络协议和应用程序。因为流量负载数据通常用协议加密或封装,包含较少的恒定特征,使得DPI在加密流量分类任务中不再可行。基于统计的方法和基于行为的方法是当前加密流量分类任务中使用的主要方法。这两种方法都是传统的机器学习方法,其一般工作流程如下:首先手工设计特征(如流量特征或分组特征),然后从原始流量中提取和选择合适特征,最后用人工设计的分类器(如决策树、朴素贝叶斯和随机森林等[7-9])对流量进行分类。然而,这些方法极大地依赖于特征选择,通常无法找到确切的特征,导致分类效果很大程度上依赖于人工提取特征的准确性,并且分类准确率不高,也是目前机器学习发展所遇到的瓶颈之一。
最近,研究人员更加关注深度学习方法。深度学习采用训练多个单层非线性网络,组合底层特征构成数据的抽象表示,从而表达数据的本质特征。为了学习空间特征,文献[10]提出一种基于卷积神经网络(CNN)的流量分类算法,分别采用公开数据集和私有数据集进行测试,并与传统分类方法相比,提高了流量分类的精确率,减少了分类使用的时间,但该方法并未涉及对加密流量的分类识别。此外,研究人员为了使CNN达到更好的效果,对网络结构进行了加深和加宽,这种操作带来的负面影响就是计算量的增加并且网络也易过拟合。文献[11]提出采用自编码(SAE)和CNN对加密流量进行识别,但对于数据的预处理和模型参数的选择等方面论述得不够清晰。文献[12]提出了两种基于深度学习的流量识别模型:卷积自编码(CAE)和CNN,对6种不同应用产生的VPN加密流量进行实时分类识别,但未涉及对非VPN加密流量的分类识别。也有一些研究人员使用长短期记忆网络(LSTM)[13]提取流量数据包之间的时间序列特征,问题在于一旦LSTM的时间跨度较大,并且网络结构较深,就会导致训练时间长,计算量过大。文献[14]提出了一种使用深度卷积生成对抗网络(DCGAN)的半监督学习方法,利用DCGAN生成器生成的样本以及未标记的样本,来提高经过少量标记样本训练的分类器性能,在使用少量带标记数据的情况下得到了较高的分类精度,但该模型的训练耗时远大于传统加密流量分类方法。
针对上述存在的问题,本文提出了一种基于特征融合的轻量级网络模型Inception-CNN用于端到端加密流量的分类。Inception-CNN是一种具有优良局部拓扑结构的网络。利用Inception模块中1×1卷积层,来限制输入信道的数量,以降低计算成本。同时采用不同的卷积尺寸来提供不同的感受野,可以做不同级别上的特征提取,并将其融合在一起,旨在从原始数据中提取更为丰富的信息,利用不同尺度的特征弥补现有方法的不足,提高网络分类性能。网络中池化操作本身有提取特征的作用,因为没有参数所以不会产生过拟合。相比于现有的加密流量分类技术,该方法能够以较小的代价,实现对加密流量快速高效的分类。
1 方法
1.1 端到端方法
图1显示了提出的端到端加密流量分类方法的概述。其中包含数据预处理过程、模型训练过程和测试过程。使用传统的分而治之的机器学习方法时,一个明显的问题是误差的累积,前一模块产生的偏差可能影响后一个模块。在端到端的处理框架中,所有模块都被集成到网络模型中,仅使用一个模型、一个目标函数,就规避了多模块固有的缺陷,并减少了工程的复杂度。这里直接对流量进行分类,中间的学习过程并不需要人为干涉,最终确定输入与期望输出之间的非线性关系,达到端对端学习的目的。
图1 端到端框架结构Fig.1 End-to-end frame structure
1.2 数据预处理
本文所采用的数据来源于“ISCX VPN-nonVPN traffic dataset”[15],已发布的ISCX数据集包括7种常规加密流量和7种VPN隧道传输流量。本文选择6种常规加密流量和6种VPN隧道传输加密流量作为训练和测试的样本数据,样本数据集均为PCAP文件格式。表1显示了本文样本数据集的详细内容(序号1~6为常规加密流量,序号7~12为VPN隧道传输加密流量)。
表1 样本数据集描述Table 1 Description of sample data set
文献[16]证明了会话更适合作为用于加密流量分类的流量表示类型。因为会话包含的双向流相对于单向流来说,包含更多的交互信息,所以端到端的方法可以从会话中学习到比流更多的特征。因此本文将采用会话类型的流量样本进行实验。
为了减少原始流量中的噪声并调整为适合深度学习模型的输入形式,通过以下步骤对原始流量进行转换:pcap-会话分段,删除Mac&IP,统一输入大小,转换为IDX。
(1)pcap-会话分段:根据一定的粒度将连续的原始流量划分为多个离散的流量单元[17]。
(2)删除Mac&IP:Mac地址和IP地址往往不是区分信息。相反,它们的存在将导致模型拟合。因此,通过丢弃数据包中的相关字符串来达到删除的目的。
(3)统一输入大小:使用深度学习网络训练数据需要固定的输入量,因此将上述步骤中的会话分段统一大小为784 Byte。如果分段大小大于784 Byte,则将其裁剪为784 Byte。如果分段大小小于784 Byte,则在末尾添加0x00以补充到784 Byte。
(4)转换为IDX:IDX格式是机器学习领域常见的文件格式。将784 Byte的流量转换为大小为28×28的流量矩阵,然后通过IDX文件打包它们及其标签。
对数据预处理的结果使用可视化技术分析,如图2所示。通过可视化后的图像,可以明显看到不同类别的加密流量之间有很大区分度,因此可以通过特征融合的方法对这些非结构化的抽象数据进行探索,利用更丰富的特征对加密流量进行分类。
图2 12类流量可视化Fig.2 Visualization of 12 types of traffic
1.3 模型结构
本研究提出的基于特征融合卷积神经网络的端到端加密流量分类方法,保留了传统卷积神经网络的结构。模型的输入是经过处理的会话加密流量分类数据,输出是要估计的对象标签。该模型由传统CNN的卷积层、平铺层以及全连接层组成,同时引入了归一化层[18]与Inception模块增强网络的泛化能力。该模型的详细结构如图3所示。首先,模型接收待处理的网络流量数据,网络流量本质上是顺序数据,它是由层次结构组织的一维字节流。由于模型的输入信息是一维数据,因此在第一层卷积中训练一维卷积核,并有8个大小相同的过滤器,经过该层,输入数据将被转换为8个尺寸较小的特征图。卷积表示如下:
图3 会话加密流量分类模型结构Fig.3 Session encryption traffic classification model structure
Hj和xi分别是第j个输出映射和第i个输入映射。wij代表卷积滤波器权重,*表示卷积,bj是第j个映射的偏差参数。函数f表示激活函数。对于该卷积层,激活函数采用Relu来增加神经网络各层之间的非线性关系。该激活函数描述为:
ReLU实现稀疏后的模型能够更好地挖掘相关特征,拟合训练数据。在激活函数之前加入了一个批归一化层,它的目标是对特征进行归一化处理,得到标准差为1的零均值状态。这种操作可以尽可能保证Inception模块的输入具有相同的分布,并能大大加快训练速度。批归一化的算法流程如图4所示。
图4 批归一化算法流程Fig.4 Batch normalization algorithm flow
接着是Inception模块的引入。Inception模块是一种混合模型,它是对卷积层的修改,在宽度和深度上将卷积操作进行了扩展。Inception模块的基本结构如图5所示。
图5 Inception模块结构Fig.5 Inception module structure
在传统的卷积神经网络中,卷积层是叠加在一起的,多个卷积层组成一个复杂的非线性模拟器,同一卷积层中所有的卷积核都具有相同的超参数,也就是说每层能够提取到特征在维度上是不变的。Inception模块加入尺寸为1的卷积核,在相同尺寸的感受野中叠加更多的卷积,能提取到更丰富的特征,将不同尺寸的特征融合在一起能够为最后分类判断时提供更多依据。Inception模块加入了尺寸为1的卷积核,降低了输入的通道数,减少了卷积核参数,同时在并行pooling层后面加入了1×1卷积层,由于其只有一个参数,相当于对feature map做了参数缩放,降低了输出的feature map数量。另外,加入一层尺寸为1的卷积能够对数据进行降维,减少了模型参数,降低了网络计算复杂度。同时可以增加网络的深度和非线性,也可以对不同特征进行尺寸的归一化,用于不同尺度上特征的融合。图5的Inception模块中,1×1、3×3、5×5则是Inception模块在多个尺度上提取特征的表现(本文采取1×1,3×1,5×1的卷积尺度),输出的多个特征就不再是均匀分布,而是将相关性强的特征融合在一起(多个密集分布的子特征集)。这样的特征集因为相关性较强的特征而聚集在了一起,不相关的非关键特征被弱化,同样是输出多个特征,Inception方法输出的特征中的“冗余”信息较少。用这样纯净的特征集层层传递最后作为反向计算的输入,收敛的速度更快,并且Inception对卷积层扩充不仅在宽度上,在深度上也可增加操作单元。
Inception模块的输出连接了一个平铺层,该层没有可训练的参数,它将模块的输出转换为一维单矢量,并馈入全连接层。全连接层含有比平铺层更少的神经元个数。模型的最后是输出层,采用softmax分类器输出分析结果。使用softmax函数可以将输入向量拟合为[0,1]范围内的实数,所有实数的和为1。表示如下:
其中wi与x是列向量,k是观测样本的类别数。
2 实验
2.1 实验环境
本文实验的主机配置:操作系统为Windows 10专业版,CPU为Intel core i7 4790/3.6 GHz/4cores,16 GB内存,深度学习平台为keras[19],深度学习后端为Tensor-Flow cpu 1.14.0,开发环境为Python 3.7.0。
训练网络时,使用分类交叉熵损失误差来使训练过程更快收敛:
其中,n是样本的标签索引,Xi和Yi是分别是测量值和预测值,样本的测量标签由独热编码向量给出。
使用Adam优化器进行参数学习,它能基于训练数据迭代地更新神经网络权重,适合于求解带有大规模数据或参数的问题。Adam参数的默认值来自于参考文献[20]。模型学习率为0.001(lr=0.001),一阶矩估计的指数衰减率为0.9(beta_1=0.9),二阶矩估计的指数衰减率为0.999(beta_2=0.999),epsilon为1E-08。
由于神经网络经常会被过度训练,验证成为了开发分类模型的关键步骤。本文采用十折交叉验证的方法,对该模型的可行性和有效性进行了评价,避免了单一测试集的随机性与偶然性。具体来说,将数据集划分为10份,轮流将其中1份作为测试数据,其余9份作为训练数据进行试验,并将10次结果的平均值作为对算法性能的估计。
2.2 评估指标
随着网络流量种类的飞速增加,分类效果的评估也不再是单一的准确度,评估指标也越来越多,从各个角度分析流量分类系统的效果。在本文中,使用准确率(Accuracy)、精确率(Precision)、召回率(Recall)和F1-Score来评估提出的方法,从而反映出该方法识别加密流量的性能。作为一个多分类问题,首先可以使用准确率用于评估该方法的整体效果,该指标就是分类正确样本数量除以总的样本数,表征预测类别与实际类别的差别比率,目的是从全局层面对模型效果进行评价。精确率和召回率用于评估该方法在每个类别中的识别效率,F1-Score同时考虑精确率和召回率,是精确率和召回率的加权调和平均数,让两者同时达到最高,取得平衡,用于综合反映整体的指标[21]。评估指标计算公式如下:
真正例(True Positive,TP)是指属于类别X的流量被正确分类成类别X。假正例(False Positive,FP)是指不属于类别X的流量被分类成类别X。真反例(True Negative,TN)指不属于类别X的流量被正确分类成非类别X。假反例(False Negative,FN)指属于类别X的流量被分类成非类别X。
3 结果与分析
3.1 特征选择
为显示本文所提出的网络模型中每一层提取的特征对最终分类结果的影响,将卷积层与Inception层和全连接层提取的特征用于实验,并计算其分类性能。实验结果如图6所示,横轴代表网络层名称,纵轴为评价指标。从四种评价指标的结果来看,全连接层取得的结果相较于其他两层最高,能够最好地提取数据特征。因此,使用全连接层提取的特征送入分类器进行实验。
图6 特征选择对分类结果的影响Fig.6 Impact of feature selection on classification results
3.2 实验结果
为验证Inception-CNN在加密流量多分类任务上的性能,采用ISCX VPN-nonVPN数据集对本文的方法进行了实验。每类加密流量识别的精确率、召回率和F1-Score结果如表2所示。实验表明,除Voip外,各类的精度、召回率和F1-score均达到92%以上,其中Vpn_P2P的精确率、召回率和F1-score达到了100%。
表2 Inception-CNN对加密流量的分类结果Table 2 Inception-CNN’s classification results of encrypted traffic
文献[16]提出了一种基于一维卷积神经网络(1DCNN)的加密流量分类方法。实验结果比二维卷积神经网络(2D-CNN)和C4.5方法获得了更好的性能。文献[13]提出了一种结合卷积网络和递归网络(CNN+LSTM)的新型神经网络,以提高分类结果的准确性。卷积网络用于提取单个包的包特征。递归网络基于流中任意三个连续包的包特征的输入来挑选流特征,进行浅层时间序列特征提取。模型与现有的基于CNN的最新模型进行了比较。实验结果表明,该模型在效率和有效性上均优于原方法。文献[14]提出了一种使用DCGAN的半监督方法对加密流量进行分类,利用DCGAN生成器生成的样本以及未标记的样本,来提高经过少量标记样本训练的分类器性能,缓解了大型数据集收集和标记相关的难题。实验结果表明,其准确率超过了完全监督学习的MLP和CNN模型。
1D-CNN、CNN+LSTM、SEMI-DCGAN和Inception-CNN对ISCX VPN-nonVPN数据集分类的准确率、精确率、召回率和F1-Score比较结果如表3所示。实验结果表明,Inception-CNN对12类加密流量分类的准确率达到97.3%,比1D-CNN、CNN+LSTM和SEMI-DCGAN的分类准确率分别高出0.107、0.058、0.095。在精确率、召回率和F1-Score上,Inception-CNN方法同样具有明显的提升,相对于1D-CNN、CNN+LSTM,精确率分别提升0.109、0.075、0.054,召回率分别提升0.102、0.079、0.063,F1-Score分别提升0.106、0.078、0.059。
表3 1D-CNN、CNN+LSTM、SEMI-DCGAN和Inception-CNN的比较结果Table 3 Comparison result of 1D-CNN,CNN+LSTM,SEMI-DCGAN and Inception-CNN
为进一步验证所提出的方法在加密流量多分类任务上的性能,使用精确率、召回率和F1-Score对每类流量进行了更为详细的评估。图7显示了以上四种实验方法对ISCXVPN-nonVPN数据集中每类加密流量识别的精确率对比。在12类加密流量中,除对Streaming、Voip和Vpn_Email的识别精确率较低外,Inception-CNN对其他9类加密流量识别的精确率均高于1D-CNN、CNN+LSTM和SEMI-DCGAN。图8展示了四种实验方法对12类加密流量识别的召回率对比。在所有加密流量中,Inception-CNN对File的识别召回率低于1D-CNN,但高于CNN+LSTM,对Voip的识别召回率低于SEMIDCGAN,对Vpn_Email的识别召回率也略低于所对比的方法,其余9类的召回率均高于其他三类方法。图9展示了12类加密流量的F1-score对比。结果表明除Inception-CNN对Vpn_Email识别的F1-Score低于CNN+LSTM和SEMI-DCGAN,对其他11类加密流量识别的F1-Score全部高于其他三类方法,其中F1-Score最低为92.3%,最高为100%。
图7 1D-CNN、CNN+LSTM、SEMI-DCGAN和Inception-CNN精确率比较Fig.7 Accuracy comparison of 1D-CNN,CNN+LSTM,SEMI-DCGAN and Inception-CNN
图8 1D-CNN、CNN+LSTM、SEMI-DCGAN和Inception-CNN召回率比较Fig.8 Comparison of recall rates of 1D-CNN,CNN+LSTM,SEMI-DCGAN and Inception-CNN
图9 1D-CNN、CNN+LSTM、SEMI-DCGAN和Inception-CNN F1-Score比较Fig.9 F1-Score comparison of 1D-CNN,CNN+LSTM,SEMI-DCGAN and Inception-CNN
在12类加密流量中,Inception-CNN方法对Chat和Email的识别率相对于其他两种方法提升最为明显,对Chat识别的精确率、召回率和F1-Score分别为99.0%、99.7%、99.3%,对Email识别的精确率、召回率和F1-Score分别为99.8%,99.2%,99.5%。
从精确率、召回率和F1-Score对比结果的整体来看,相比于1D-CNN、CNN+LSTM和SEMI-DCGAN,Inception-CNN的分类结果浮动更小。说明对于不同类型的加密流量,1D-CNN、CNN+LSTM和SEMI-DCGAN不能保证稳定的分类效果,而Inception-CNN对不同类型流量均能实现稳定分析,具有更强的泛化能力。
如表4所示,基于特征融合的轻量级网络模型Inception-CNN在训练上花费的时间最少,证明了提出的模型大大降低了网络计算复杂度。
表4 实验方法的时间消耗比较结果Table 4 Time consumption comparison results of experimental methods
综上所述,通过4种评估指标和时间消耗的对比结果,证明了Inception-CNN在加密流量多分类任务上显然能够以较小的代价实现更杰出的性能。
4 结语
本文在对当前加密流量分类研究的基础上,提出了一种基于特征融合卷积神经网络的端到端加密流量分类方法。端到端的分类方法可以省去传统机器学习方法中常用的特征设计、特征提取和特征选择等步骤。在传统的卷积神经网络中加入Inception模块,通过增加网络的深度与宽度,来增强模型的非线性表示,同时还减少了参数和计算量,更高效地利用了计算资源,在相同的计算量下能提取到更多的特征,在保证分类性能良好的同时,进一步避免了参数过多和易过拟合的问题。实验结果表明,与1D-CNN、CNN+LSTM和SEMI-DCGAN相比,该方法具有更优秀的分类效果,进一步证明了深度学习技术在流量分类领域有很大的应用潜力。在未来的工作中有三个问题需要进一步研究:(1)在12类加密流量中,对某些类别的识别率较低,如何提高这些类别的识别率需要进一步研究;(2)目前开源的加密流量数据集相对较少,因此需要获得更多专门用于加密流量分类的数据集;(3)深度学习模型普遍在处理加密流量时速度较慢,对原始流量数据格式的改进也是接下来的工作计划。