张稣荣,卜佑军,陈 博,孙重鑫,王 涵,胡先君
(1.中国人民解放军战略支援部队信息工程大学信息技术研究所,郑州 450000;2.网络通信与安全紫金山实验室内生安全研究中心,南京 211100)
流量分类是网络管理和网络安全领域的一项重要任务,在服务质量保证、网络规划、入侵检测、网络监控、流量趋势分析等领域发挥着重要作用[1]。随着互联网用户对隐私和安全的日益关注,非加密的数据传输方式逐渐被加密传输方式所取代,加密网络流量在互联网中所占的比例逐年上升[2]。但是,加密流量在保护用户隐私与安全的同时,给网络管理和网络安全带来了巨大的挑战,原因是加密后所有的通信内容都是随机的,导致深度数据包检测(Deep Packet Inspection,DPI)[3]等传统流量分类方法失效[4]。因此,对加密流量进行有效分类成为工业界和学术界关注的焦点问题。
将特征工程与机器学习算法相结合,一度成为加密流量分类的主流方法。特征工程是指人工提取和选择加密流量的统计特征,如最大数据包长度、平均传输时间等,将其作为机器学习模型的输入。这种方法在很大程度上依赖于专家经验,耗时耗力,且往往不能产生令人满意的分类结果[5]。相比于这种步骤分散的处理方法,将加密流量分类的所有过程集成于一体的深度学习方法受到了研究人员的青睐。深度学习方法将特征提取与模型训练结合成一个统一的端到端模型[6],直接从原始流量中自动学习特征并进行分类。虽然基于深度学习的加密流量分类能够避免繁杂的人工操作,但是大多数常用的模型较少考虑效率问题,它们使用复杂的神经网络来保证结果的高精度,导致模型训练和测试时间较长。如何在保证分类精度的同时尽可能提高模型的运行速度以提升其分类效率,是一个值得关注的问题。
本文提出一种基于多层双向简单循环单元[7]与注意力(Multi-Layer Bidirectional Simple Recurrent Unit and Attention,MLBSRU-A)模型的加密流量分类方法,并基于公开数据集ISCX VPN-nonVPN 和USTC-TFC 2016 来验证MLBSRU-A 模型的有效性。
近年来,传统的机器学习方法在加密流量分类领域取得了突出的成果[8-10],但是其核心步骤(即特征提取和特征选择)严重依赖于专家经验,不仅成本较高,而且容易出错。为解决基于机器学习模型的加密流量分类方法中存在的问题,研究人员提出基于深度学习的加密流量分类方法。王伟等[6]提出一种基于一维卷积神经网络(One-Dimensional Convolutional Neural Network,1D-CNN)的端到端加密流量分类方法,其将特征提取、特征选择和分类器集成到一个统一的框架中,从而自动学习原始输入和期望输出之间的非线性关系。随后,基于CNN[11-13]、堆叠自动编码器(Stacked Auto-Encoder,SAE)[11]等深度学习模型的加密流量分类方法陆续被提出。
网络流量数据具有时间序列属性,因此,除CNN外,具有强大序列建模能力的RNN[14]也受到学者们的关注。ZOU 等[15]提出一种新的深度神经网络,将CNN和长短期记忆(Long Short-Term Memory,LSTM)模型相结合,以提高分类结果的准确性,其中CNN 用于学习网络流量的低层次空间特征,LSTM 网络用于学习高层次时间特征。文献[16-18]都将LSTM 与其他深度学习模型相结合,从而更全面地提取流量特征。
目前,在加密流量分类领域,计算量更小的门控循环单元(Gated Recurrent Unit,GRU)[19]逐渐替代LSTM。文献[20]提出一种用于加密流量分类的流序列网络,称为FS-Net,其使用双向GRU(Bidirectional-GRU,Bi-GRU)网络来提取报文长度序列中的隐藏信息。随着注意力机制在自然语言处理领域的成功应用,越来越多的学者将GRU 和注意力机制相结合以进行加密流量分类。LIU 等[21]利用Bi-GRU 和注意力机制构建一个用于HTTPs 流量分类的深度学习模型,称为BGRUA。其中,Bi-GRU 用于提取会话中字节序列的前向和后向特征,并采用注意力机制根据特征对分类的贡献大小来分配权重。实验结果表明,BGRUA 在准确率、精确率、召回率和F1 分数上都有较好的表现。类似地,文献[22-23]也使用GRU 模型与注意力机制进行加密流量检测。
尽管上述研究都取得了较好的结果,但是大多没有考虑RNN 模型普遍存在的梯度消失、并行性差等问题,这些缺陷将导致RNN 模型效率较低、准确率下降以及训练速度减慢,从而限制了它们对加密流量的分类能力。
RNN 模型通过引入记忆单元来处理序列之间的时序关联性,它是序列信息分析中最常用的模型之一[20]。但是,传统RNN 模型(如LSTM[24]、GRU[19]等)必须等待对上一时刻输出状态全部完成计算后才能对当前时刻输出状态进行计算,即无法实现并行计算,这种前后时间步之间的依赖性使得循环网络的运行效率低于其他模型。
为了提高RNN 的训练速度,LEI 等[7]在LSTM和GRU 的基础上提出SRU,如图1 所示。SRU 单元包含遗忘门ft和重置门rt,利用单元状态ct在所有时间步上传递信息,最终输出隐藏状态ht。在时间步t处,SRU 结构涉及的所有计算如式(1)~式(4)所示:
图1 SRU 结构Fig.1 SRU structure
其中:σ为Sigmoid 函 数;Wf、W和Wr是需要学习的权重矩阵;xt是时间步t处的输入数据;vf、vr、br和bf是训练期间要学习的参数向量;⊙表示Hadamard 乘积,即元素对应乘积而非矩阵乘积。
与常见的RNN 模型相比,SRU 最大的不同之处在于其具有高度并行化的序列建模能力,且兼具改善梯度消失问题的能力。SRU 具有如下特点:
1)将门控计算中常用的参数矩阵替换为参数向量,同时将矩阵乘法替换为Hadamard 乘积,通过这种简化,ct和ft的每个维度都变得独立,即使只知道ct-1中的一个维度值,也可以直接算出ct和ft这一个对应维度上的值,无须等待ct-1全部计算完毕。因此,可以实现维度上的并行化,且并不影响RNN 模型在时间上串行计算的本质。
2)对于式(1)~式(3)中存在的矩阵乘法Wf xt、Wxt和Wr xt,在所有时间步上进行批量处理。假设输入序列维度为D,长度为L,隐藏层维度为d,则批处理乘法如式(5)所示:
其中:W,Wf,Wr∈Rd×D;U∈RL×3d。那么对于一个批次中的B个样本,可以先计算得到张量U(L,B,3d),在之后每个时间步的计算中只需查表就可以完成,这样操作能够显著提高计算效率。
3)在计算隐藏状态ht时采用跳跃连接方式,直接将输入xt纳入计算,类似于残差连接,可以改善反向传播过程中的梯度消失问题,打破网络的对称性[25],从而提升网络的表征能力。
上述特点使得SRU 能够快速处理序列信息,符合网络管理和网络安全领域中各项工作对加密流量准确快速分类的要求。因此,本文选择SRU 网络对加密流量进行特征提取。在下文中,使用如式(6)所示的方程来简要表达SRU 中隐藏状态的更新:
其中:ct-1表示上一时刻的单元状态;xt表示当前时刻的输入数据。
本文基于MLBSRU-A 模型的加密流量分类方法使用端到端的模型架构,如图2 所示,该方法将特征学习和分类统一到同一模型中,无需人工进行额外的特征提取。首先,对原始流量数据集进行预处理,包括流量分割、数据清洗、长度统一、数据归一化、矩阵变换等步骤;然后,将预处理后的数据输入到特征提取层中,输出每个时间步上隐藏状态的集合作为特征向量;之后,将特征向量输入到注意力层中,计算每个特征的权重值,并输出加权后的流特征向量;最后,将注意力层输出的加权流特征向量输入到全连接层中,得到该输入数据属于各类标签的概率,概率值最高的类别即为模型产生的分类结果。
图2 基于MLBSRU-A 模型的加密流量分类方法整体架构Fig.2 Overall architecture of encrypted traffic classification method based on MLBSRU-A model
以pcap 格式存储的原始流量数据作为数据预处理层的输入,经过流量分割、数据清洗等步骤后,得到包含可用信息的流矩阵。具体步骤如下:
1)流量分割。为了区分不同应用程序或网站产生的流量,需要按照五元组信息将原始流量分为不同的双向流。其中,流定义为一组具有相同五元组(源IP、目的IP、源端口、目的端口、传输层协议)的数据包,而双向流中数据包五元组的源IP 和目的IP、源端口和目的端口可以交换。在下文中将双向流简称为流。
2)数据清洗。删除数据包中对于流量分类而言有效信息较少的以太网报头;将数据包中的IP 地址用零来代替,以消除由随机端口分配、网络地址转换等技术造成的混淆。此外,还需删除流中包含的空数据包和重复数据包,以避免它们对模型学习过程造成干扰。
3)长度统一。由于模型要求所有输入数据的长度相同,因此取每条流的前n字节(本文规定n为50的倍数)作为输入。如果流长度大于n,则截断;反之,则补零(0x00)至n字节。
4)数据归一化。为了减小输入数据数值范围对模型训练的影响,将流数据进行归一化处理,流的每一字节都被转换成一个[0,1]范围内的整数,此时流数据被转换为长度为n的向量f。
5)矩阵变换。SRU网络在每一时间步处输入的维度是固定的,本文将其设置为50,这意味着在每一时间步将有50个字节的流数据输入到SRU网络中。为此,需要将流向量f进行维度变换,转换成流矩阵x=[x1,x2,…,xN],其中,N=,xi∈R50,i∈[1,N],x∈R50×N。
经过M层双向SRU 网络的特征提取过程,特征向量hN高度聚合了整条流的双向上下文信息,能够使模型更准确地对流量进行分类。
对于一条流而言,并非所有字节都对分类起到同样重要的作用。为了使流中相对重要的信息能对分类结果产生较大的影响,本文引入注意力机制[26],如图3所示。
图3 注意力层计算过程Fig.3 Attention layer calculation process
在注意力机制中,核心操作是各元素的权重计算。本文将特征提取层输出的特征向量hN作为注意力层的输入,通过将每个时间步上的隐藏状态进行加权求和,得到流特征向量s,如式(12)所示:
αt是的权重系数,计算方法如式(13)所示:
et是通过一个前馈神经网络层生成的隐藏表示,计算如下:
其中:Wh和bh分别为权重矩阵和偏差。
全连接层以注意力层输出的特征向量s作为输入,通过线性变换将其映射到样本标记空间Rc中,以获得向量v∈Rc,其中,c是流量类别总数。向量v输入到Softmax 函数中,得到该条流属于各类别的概率值,取概率值最大的类别作为最终的分类结果。Softmax 函数如式(15)所示:
其中:pi是输入样本属于类别i的概率;vi∈v为(-∞,+∞)范围内的实数,又称该条数据对应于各个类别的分数。
为了使实验具有更高的可信度,本文基于2 个公共流量数据集进行实验:
1)数据集A 是基于ISCX VPN-nonVPN 数据集[27]所生成,ISCX VPN-nonVPN 数据集有7 种常规加密流量和7 种协议封装流量,但是其中6 种加密流量都与网页浏览有关,因此,本文参照文献[6]放弃网页浏览这类流量。数据集A 的具体信息如表1 所示。
表1 数据集A 具体信息Table 1 Specific information of dataset A
2)数据集B 是USTC-TFC 2016 数据集,由王伟等[28]创建,包含10 类正常加密流量和10 类恶意加密流量,具体信息如表2 所示。
表2 数据集B 具体信息Table 2 Specific information of dataset B
为了对MLBSRU-A 模型的性能进行验证,本文选择4 个关联性较强的模型进行对比:
1)BLSTMA 模型[29],通过将Bi-LSTM 与注意力机制相结合,提取流中的数据包序列信息,并通过注意力机制,根据每个数据包特征对分类的贡献大小来对其分配权重。
2)BGRUA 模型[21],采用Bi-GRU 网络提取会话中的双向字节序列信息,同时结合注意力机制来提高HTTPS 流量分类的准确性。
3)1D-CNN 模型[6],将特征选择、特征提取、分类器与1D-CNN 整合到一个统一的端到端框架中,旨在自动学习原始输入和期望输出之间的非线性关系,该模型也是第一次将端到端方法应用于加密流量分类领域。
4)CNN+LSTM 模型[15],将卷积网络和递归网络相结合,以提高流量分类的准确性。其中,CNN 用于提取单个数据包的特征,LSTM 以流中任意3 个连续数据包的包特征作为输入来提取流特征。
本文采用4 个指标对模型进行性能评估,分别为准确率(Accuracy)、精确率(Precision)、召回率(Recall)以及F1 分数(F1_score)。对于多分类问题,将每个类和剩余类样本视为一个二元分类,即可直接计算出每种类型的精确率和召回率。4 个评价指标的计算公式分别如下:
其中:TP、FP、TN和FN分别为真阳性、假阳性、真阴性及假阴性;准确率表示样本被正确分类的比例;精确率表示在所有被预测为正的样本中实际为正的样本所占的比例;召回率表示在实际为正的样本中被预测为正的样本所占的比例;F1 分数是精确率和召回率的调和平均,能够同时兼顾这2 种指标。
本文实验环境与配置具体如表3 所示。
表3 实验环境与配置Table 3 Experimental environment and configuration
4.4.1 MLBSRU-A 模型参数选择与分析
调参是训练神经网络的一个重要步骤,在训练阶段,通过改变每个超参数来估计参数梯度,并根据准确率的变化来决定超参数数值的增大或减小,使得模型达到最优性能。本节基于数据集A 中的6 类常规加密流量分别进行实验,使用准确率作为度量标准以确定最佳超参数值,从而实现分类精度和效率之间的权衡。
1)每条流的字节数n和SRU 网络的堆叠层数M
在3.1 节提到,本文将每条流的长度固定为n字节(设置n为50 的倍数),以满足模型对输入数据的要求,同时将SRU 网络堆叠M层,以提取流量的高阶特征。本文将n的取值范围设置为[50,1 000],步长为50,同时将M的取值范围设置为[1,5],分别进行实验以观察不同n值及M值对模型分类结果的影响,从而确定两者的最佳取值。在该实验中,使用准确率作为性能评估指标,实验结果如图4 所示。
图4 不同n 值对应的模型分类准确率Fig.4 Model classification accuracy corresponding to different n values
每条流包含的字节数和SRU 网络堆叠层数对模型分类性能有重要影响,从图4 可以看出,随着每条流中包含字节数n的增加,模型的准确率不断提高,直至n=500 左右模型收敛,准确率达到最高后几乎不再变化,因此,本文将每条流中包含的字节数n确定为500。此外,可以看到,当M=1(即模型中Bi-SRU 网络只有一层)时,模型分类准确率较低,最终只能达到0.92 左右;当M≥2(即模型中Bi-SRU 网络大于等于两层)时,准确率较M=1 时有明显提升。但是,值得注意的是,当M≥2 时,更多的堆叠层数并不会带来模型性能的更大提升,这表明两层Bi-SRU网络能够提取充分的加密流量特征,因此,本文最终将SRU 网络堆叠层数M确定为2。
2)学习率lr
依照上一节的实验结果,本文将每条流的字节数n设置为500,SRU 网络堆叠层数M设置为2。另外,设置epoch=100,lr取值范围设置为[0.000 1,0.001,0.01],然后基于数据集A 中的6 类常规加密流量再次进行实验,以观察模型准确率随训练轮次epoch 和学习率lr的变化情况,从而确定学习率的最佳取值。图5 所示为不同学习率下模型的准确率变化情况。从图5 可以看出,当学习率为0.000 1 时,模型收敛速度最慢,在训练100 个epoch 后模型的准确率仍然没有达到稳定,这是因为学习率是根据损失函数调整网络权重程度的超参数,当学习率较低时,损失函数的调整幅度较小,能够确保模型不会错过局部最小值,但也意味着模型需要花费很长时间才能达到收敛,当学习率设置为0.01 时,学习率曲线出现较大幅度的震荡,这说明该学习率过大,导致在训练过程中梯度在最小值附近的一个区域内摆动,模型难以收敛。在图5 中,lr=0.001 时模型收敛最快,且准确率曲线震荡幅度很小,收敛后准确率最高,因此,本文将学习率设置为0.001。
图5 不同学习率下模型的准确率Fig.5 Model accuracy with different learning rates
4.4.2 不同模型的加密流量分类性能对比与分析
为了验证MLBSRU-A模型的分类性能,本文基于数据集A设置4种实验场景,如表4所示。场景1为协议封装流量与常规加密流量识别,这是一个二分类问题;场景2是协议封装流量分类,包含6类以VPN协议封装的加密流量;场景3是常规加密流量分类,也是一个六分类问题;场景4是加密流量分类,包含场景2和场景3中所涉及的12种加密流量,是一个十二分类问题。
表4 基于数据集A 的实验场景设置Table 4 Experimental scenes setting based on dataset A
基于上述场景将MLBSRU-A 模型与4.2 节所述的4 种模型进行对比,在实验过程中,将MLBSRU-A模型的超参数分别设置为:每条流中包含的字节数n=500;SRU 网络堆叠层数M=2;学习率lr=0.001;训练轮次epoch=50。
图6 所示为上述4 种实验场景下各模型的准确率、精确率、召回率和F1 分数。从图6 可以看出,在场景1 中,所有模型均可以有效解决二分类问题,且各模型在VPN 数据集上的效果都优于nonVPN 数据集,造成该现象的一个合理解释是,不同应用类型的流量在协议封装后产生了不同的分布,如文献[6]中所述,这些类型间的分布差异为深度学习模型提供了更多可以学习和提取的有效特征,从而更准确地对加密流量进行分类。在所有场景中,1D-CNN 模型的性能最差,这是因为其结构过于简单,无法提取足够的特征来进行分类,文献[6]首次将深度学习用于加密流量分类领域,为该领域的后续研究工作提供了新的思路。
图6 在4 种实验场景下各模型的分类性能Fig.6 Classification performance of each model under four experimental scenes
在场景2~场景4 中,本文MLBSRU-A 模型在所有指标上都明显优于对比模型。在场景3 中,MLBSRU-A 模型的准确率、精确率、召回率和F1 分数分别达到99.33%、99.80%、99.75%和98.77%。值得注意的是,在更为复杂的十二分类场景中,MLBSRU-A 模型的准确率依旧能达到99.08%,相比于BLSTMA 模型、BGRUA 模型、1D-CNN 模型及CNN+LSTM 模型分别提高了8.47%、4.34%、13.73%和10.17%。此外,在该场景中,本文模型的精确率、召回率和F1 分数分别为98.8%、98.4%、98.6%,相比于其他对比模型有明显提升,这可能是因为相较于传统的RNN 网络,MLBSRU-A 模型通过门控机制及SRU 模块中使用的跳跃连接有效地缓解了梯度消失问题,同时通过多层SRU 网络堆叠有效且全面地提取加密流量的高阶特征,然后利用注意力机制为重要的特征赋予更大的权重,从而提高了模型的整体分类性能。
为了更直观地体现各场景下MLBSRU-A 模型对流量分类的准确率,图7 展示出4 个实验场景下模型的混淆矩阵。从混淆矩阵热力图可以看出,MLBSRU-A模型可以实现精准无误的二分类,在场景3中针对VPN数据集的六分类准确率略高于场景2 中针对nonVPN数据集的六分类准确率,这是因为在nonVPN 数据集中,模型在Email和Chat流量之间发生了混淆,即有4%的Chat 流量被错误地识别为Email,而在VPN 数据集中流量之间的混淆程度很低,这也可以解释各模型在VPN 数据集上的分类效果都优于nonVPN 数据集这一现象。总体而言,无论是简单还是复杂的场景,本文MLBSRU-A 模型的性能均优于其他模型,其在实现最佳分类效果的同时也具有一定的鲁棒性。
图7 不同场景下MLBSRU-A 模型的混淆矩阵Fig.7 Confusion matrix of MLBSRU-A model under different scenes
4.4.3 不同模型的效率对比与分析
本文从训练时间和测试时间2 个方面来评估模型的时间开销。训练时间即模型基于训练集进行训练的时间,其与迭代次数、模型规模以及实验硬件环境有关。测试时间是指用测试集对训练好的模型进行测试的时长,其与测试集大小、模型规模以及实验硬件环境有关。表5 所示为各模型在场景4 中完成50 个epoch 所需的训练时间、基于同一测试集的测试时间以及模型达到收敛状态所用的时长。从表5 可以看出,本文MLBSRU-A 模型基于数据集A 完成50 个epoch 所需的训练时间为492.29 s,是BLSTMA模型的65.64%、BGRUA 模型的71.62%、CNN+LSTM模型的18.83%,与结构最简单的1D-CNN 模型所用时间几乎相同,但其准确率比1D-CNN 模型提升13.73%。从模型的收敛时长来看,MLBSRU-A 模型收敛速度最快,所用时长仅为BLSTMA 模型的38.69%、BGRUA 模型的44.62%、1D-CNN 模型的67.24%、CNN+LSTM 模型的9.28%。相较BLSTMA、BGRUA 等模型,MLBSRU-A 模型具有较快的收敛和测试速度,原因是其采用的SRU 模块将矩阵乘积替换为Hadamard 乘积,能够实现维度上的并行化计算。此外,SRU 模块中采用类似于残差链接的跳跃链接,能够有效缓解梯度消失问题,同时相较CNN模型其可训练参数较少,因此,MLBSRU-A 模型在保证分类准确率的同时具有更高的运行效率。
表5 不同模型的运行效率对比Table 5 Operation efficiency comparison of different models单位:s
4.4.4 MLBSRU-A 的加密恶意流量检测性能分析
为了验证MLBSRU-A 模型在加密恶意流量检测与分类任务中的有效性,本文基于数据集B 进行实验。如4.1 节所述,数据集B 中包含10 类正常流量和10 类恶意流量,本文基于该数据集设置与4.4.2 节类似的实验场景,详情如表6 所示:场景1 为已知的加密恶意流量检测,即测试集和训练集中的恶意流量均包含全部的10 类加密恶意流量,是一个二分类问题;场景2 与场景1 的区别在于其测试集中的部分恶意流量没有经过训练,对模型来说是未知的,即训练集中只有5 类加密恶意流量,而测试集中包含所有类别,这一场景旨在测试模型对未知加密恶意流量的敏感性,详细设置如表7 所示;场景3 为10 类正常流量分类;场景4 为10 类恶意流量分类;场景5 是对全部流量进行二十分类。
表6 基于数据集B 的实验场景设置Table 6 Experimental scenes setting based on dataset B
表7 实验场景2 中数据集的具体设置Table 7 Specific setting of the dataset in experiment scene 2
表8 所示为MLBSRU-A 模型在各实验场景下的准确率、精确率、召回率和F1 分数。从中可以看出,MLBSRU-A 模型在5 个不同的实验场景下均达到了较高的分类性能,尤其是在已知加密恶意流量检测场景下,各指标均达到了100%。值得注意的是,在场景2 中,MLBSRU-A 模型展现出了对未知加密恶意流量的高度敏感性,能够准确识别训练集中没有出现过的加密恶意流量,准确率达到99.50%。此外,在最复杂的二十分类场景(即场景5)中,MLBSRUA 模型依旧表现突出,平均准确率达到99.38%,精确率、召回率和F1 分数分别达到99.43%、99.24% 及99.33%。因此,本文MLBSRU-A 模型不仅可以实现高效的加密流量应用类型分类,而且具有对未知加密恶意流量的高精度检测能力以及对加密恶意流量的细粒度分类能力。
表8 MLBSRU-A 模型的加密恶意流量检测结果Table 8 Encrypted malicious traffic detection results of MLBSRU-A model %
本文提出一种基于MLBSRU-A 模型的加密流量分类方法,利用具有高度并行化序列建模能力的SRU 网络对加密流量进行高效特征提取,通过注意力机制进一步提高模型的分类精度。实验结果表明,MLBSRU-A 模型的准确率、精确率、召回率和F1分数相比BLSTMA、BGRUA 等模型均有明显提升,其在保证分类准确率的同时具有更高的运行效率,并且能够适用于不同复杂度的场景,具有一定的鲁棒性。此外,本文方法不仅可以实现高效的加密流量应用类型分类,而且具有对未知加密恶意流量的高精度检测能力以及对加密恶意流量的细粒度分类能力。但是,目前该方法只在实验室环境下进行了测试,下一步将在实际网络环境中对本文方法进行部署,以验证其对真实流量的检测和分类性能。