王 垚,李 为,吴克河,崔文超
(华北电力大学(北京)控制与计算机工程学院,北京 102206)
在如今信息技术发达的时代里,网络技术在给予人类社会极大便利的同时,也带来了严重的安全威胁。根据最新数据显示,到2019年初,预计将有约80%的在线网络流量被加密[1]。这给重视个人隐私的用户来说带来了极大便利,同时也产生了严重的安全漏洞。
传统的网络流量识别技术利用IANA机构分配的端口号对流量的所属协议或应用进行识别,但随着动态端口号等技术的发展而失效[2]。目前应用广泛的DPI(深度包检测)技术通过特征匹配的方式搜索流量载荷中的相关字节特征[3],也能实现较高的识别准确率,但由于在加密流量中关键特征被加密,导致其应用受到限制。
针对以上问题,研究者们提出了使用流量的统计特征,通过机器学习的方法来分析和识别加密流量。这些统计特征大多与流量负载内容无关,但又对加密流量有足够的区分度。本文使用时间相关的流统计特征,并且将一种基于GBDT与LR融合模型的识别方法应用到加密流量识别;通过对VPN隧道传输的加密流量(VPN流量)和普通的加密流量(非VPN流量,如HTTPS)进行区分,完成对加密流量所属应用类别的识别。
早在20世纪90年代初,Paxson[4-5]就针对特定互联网应用包括Telnet、NNTP、SMTP和SFTP等建立了分析模型,他使用了某些静态变量如分组时间间隔等静态特征,结果表明利用这些特征建立的简单模型可以有效识别网络应用程序。
加密技术的使用隐藏了网络流量的负载特征,因此无法直接对网络流量的应用类型进行识别。目前有很多加密流量识别研究采用机器学习技术,使用流特征或者分组特征等静态特征来建立模型。
其中有监督式学习,需要带有分类标签的样本作为输入。文献[6]提出了基于支持向量机的TCP流量分类模型,以流的初始数据包大小为特征实现了高于90%的准确率。文献[7]提出了基于卷积神经网络的加密流量识别方法,将流量字节码作为输入,实现了高准确率的流量识别,但有着计算复杂度高等缺点。
基于有监督式学习的流量识别无法应对更多的未知流量,对此可采用无监督式或半监督式的学习方法。文献[8-13]采用如DBSCAN、K-means等聚类方法对网络流量进行识别。文献[14-15]采用半监督式学习方法识别网络流量,首先用聚类算法处理流量数据,然后根据每个簇中的多数有标签数据标记簇的类别。
虚拟专用网络(VPN)的出现使得网络流量识别变得更加复杂。VPN隧道提供点对点之间的IP包级别的加密,包括IP数据包头也被加密,因此几乎无法识别通过VPN隧道传输的加密流量,识别VPN加密流量具有相当的安全意义。
2016年,文献[16]首次从VPN加密流量和常规加密流量的角度对加密流量进行分类,使用时间相关的流特征,比对了KNN和C4.5这2种分类模型的识别效果。实验表明,时间相关的特征可以很好地对VPN加密流量进行识别。本文在此基础上,提出一种集成GBDT与LR算法相结合的加密流量分类模型,实现对VPN加密流量和普通加密流量的识别。
集成学习是一种协同多个“个体学习器”完成任务的学习方法,其原理是使用某种方式将多个学习器进行集成,以此获得比单一学习器更优越的泛化性能[17]。梯度提升决策树(Gradient Boosting Decison Tree, GBDT)由Friedman[18]于1999年提出,是一种Boost类集成学习算法。其核心思想是通过多轮迭代产生多个弱分类器,在每一次迭代后计算损失函数的负梯度,将其作为残差的近似值。在GBDT分类模型中,一般使用CART回归树作为基学习器,每个分类器的训练都是基于上一轮分类器预测结果的残差,以串行的方式向残差减小的方向进行梯度迭代,最后将每个弱分类器得到的结果进行加权求和得到最终的分类器。GBDT算法的流程如下:
1)取训练集{(x1,y1),(x2,y2),…,(xn,yn)},迭代次数M和损失函数L(yi,γ),yi={-1,1},初始化弱分类器:
(1)
2)对m=1,2,…,M,执行如下步骤:
2.1)对i=1,2,…,n,计算近似残差:
(2)
2.2)针对近似残差rim拟合一棵回归树,该树给出叶结点域Rjm,j=1,2,…,Jm。
2.3)对j=1,2,…,Jm计算:
(3)
2.4)更新分类器:
(4)
3)得到最终输出结果:
(5)
(6)
对于二分类问题,GBDT算法可采用负二项对数似然函数作为损失函数[18],计算其负梯度作为残差的近似值,其结果拟合的是关于分类概率的近似残差。负二项对数似然函数表达式如下:
L(y,F)=log (1+exp (-2yF)),y∈{-1,1}
(7)
其中:
(8)
将式(7)代入式(2)可得负梯度即近似残差:
(9)
逻辑回归算法(Logistics Regression, LR)是一种基于回归分析的分类算法。LR算法与线性回归算法非常相似,然而线性回归能够处理的是数值问题,而LR算法则是使用sigmoid函数将线性回归的分析结果转换为概率值。LR算法是最简单和最快速的分类模型之一,在具有线性分离边界的数据集上表现良好,其表达式为:
(10)
为了正确拟合输出类的概率值,需要使用sigmoid函数将输出结果转换到[0,1]之间,这样就可以将其视为输出类的后验概率。sigmoid函数表达式如下:
(11)
对于模型参数θT,可利用最小化负对数似然函数求解,负对数似然函数表达式如下:
(12)
随后便可使用梯度下降法求出θT。最后通过式(8)即可得预测概率:
(13)
LR算法属于线性模型,模型简单,计算开销小且易并行化,能够处理海量的数据,但缺点是只在具有良好线性关系的数据集上有效,其学习能力有限,对特征选取要求高,容易造成欠拟合。因此,需要有效的特征工程来生成有区分度的特征,从而产生良好的分类效果。早在2014年He等[19]就提出了通过GBDT模型生产新特征来解决LR的特征工程问题,将其应用于广告点击率的评估。GBDT算法以Boost算法为基础,每次迭代都会生成一棵新树,该特点正好可以用来挖掘有区分度的新特征,避免复杂的人工成本。
GBDT-LR融合模型的训练过程如图1所示,其具体步骤如下:
1)利用原始训练集训练GBDT模型构造一系列的决策树,组成一个强分类器。
2)利用训练好的GBDT模型对原始数据进行预测时,不以分类概率作为输出,而是以模型中每棵树的预测值所属叶结点的位置为新特征提取特征值,形成新的数据。
3)对新数据进行One-hot编码,也就是将样本输出所属叶结点的位置标记为1,得到每个样本的位置标记向量Wi。所有样本的输出会组成一个标记每棵决策树输出的叶结点位置的稀疏矩阵。
4)将该Wi作为新的训练数据供LR模型进行训练。
图1 GBDT-LR模型训练示意图
如图2所示,假设fm-1和fm为GBDT算法训练过程中生成的2棵决策树,分别有5个叶结点,其中数字1表示训练样本x通过该决策树预测的结果落在该叶结点上。那么对于树fm-1,其预测的结果可以用One-Hot编码表示为[0,1,0,0,0]。假设GBDT算法迭代次数为x,且所有弱分类器共具有y个叶结点,对于m条原始数据,每一条都会被转化为y维的稀疏向量,其中x个元素为1,y-x个元素为0,那么最终会形成维度为m×x×y的新训练集。
在GBDT算法中,每一次迭代的预测值都是将之前所有决策树的预测值以串行的方式累加的,新决策树是向拟合之前决策树的残差的方向形成。在一系列的决策树形成过程中,结点分裂会首先关注于能区分多数样本的特征,然后关注于能区分少数样本的特征。这种先选用整体上有区分度的特征,再选用对少数样本有区分度的特征的方式用于特征工程是比较合理的。因此,新的特征同时包含了能区分多数样本和少数样本的特征,这种策略刚好适用于特征工程。
图2 GBDT算法构造新特征示意图
本文提出一种基于GBDT与LR融合模型的加密流量识别方法,模型训练流程如图3所示。
图3 GBDT-LR分类器训练流程图
流量统计特征的选择往往决定了不同场景下网络流量分类结果的好坏,Moore等人[20]总结了共计248种流量统计特征。流通常是指包含相同五元组{源IP地址,源端口号,目的IP地址,目的端口号,协议}的一组流量。从流量的方向上,流又可被划分为双向流和单向流[21],其中第一个数据包的源IP和目的IP决定了方向。本文选用由Lashkari等人[16]提出的与时间相关的流特征,详细说明如表1所示。
表1 与时间相关的流特征
特征名描述duration流持续时间fiat正向分组到达时间间隔(均值、最大值、最小值、标准差)biat反向分组到达时间间隔(均值、最大值、最小值、标准差)flowiat任意方向分组到达时间间隔(均值、最大值、最小值、标准差)active流的活跃时间量(均值、最大值、最小值、标准差)idle流的静置时间量(均值、最大值、最小值、标准差)fb_psec每秒流传输的字节数fp_psec每秒流传输的分组数flowtime流的超时阈值
时间相关的流特征与数据包负载的字节特征无关,只统计时间上的相关量,因此可以作为识别加密流量的一种有效方式。
3.2.1 数据清理
流特征提取的过程中不可避免地会遇上数据包解析错误等情况,数据清洗过程主要是快速检查数据集中的空数据和重复数据并删除,以及处理缺失值情况等。
3.2.2 标准化
数据标准化是为了处理数据变化范围太大的情况,其目的是为了使所有数据在每个特征上具有相近的分布。数据标准化可以加速梯度下降来寻找最优解的过程,也有可能提高预测精度。
本文使用数据集是基于时间相关的流特征,其数值范围广且分布不均,考虑选用z-score标准化对数据集进行预处理,表达式如下:
(14)
其中,x表示源数据,u表示平均值,σ表示标准差。
为了能够更快地寻找全局最优参数,本文采用贝叶斯优化(Bayesian Optimization, BO)算法作为超参数优化算法。它能跟踪过去的评估结果,相比网格搜索法和随机采样法能更快、更高效地寻找最优超参数组合。贝叶斯优化算法根据对过去目标模型的评估结果构建一个代理模型(即概率模型),使用代理模型来寻找最优值。而代理模型通常比目标模型更加容易优化,可以通过对代理模型采用某种标准(即选择函数)来选择下一个超参数组合。贝叶斯优化算法寻找最优参数的过程就是不断从过去结果推断和更新代理模型的过程,从而使搜索方向更靠近最优解。
本文使用Hyperopt库[22]实现贝叶斯算法,该算法使用TPE(Tree-structured Parzen Estimator)算法[23]作为代理模型。TPE算法使用贝叶斯规则构建模型,其表达式如下:
(15)
其中,p(x|y)表示给定目标输出y的情况下样本x的概率,具体表达式为:
(16)
其中y*表示目标模型的一个阈值,x是超参数的候选集,y是目标模型在x上的输出值。l(x)代表x在y≤y*上的概率分布,g(x)代表x在y≥y*上的概率分布。选择函数使用期望提升函数:
(17)
TPE算法的目标是最大化关于x的期望改进,也就是利用代理模型p(y|x)寻找最优超参数组合。
本文使用的数据集来自Lashkari等人[16]发布的Vpn-NonVpn公开数据集。为了生成具有代表性的数据集,他们定义了一系列任务,通过使用如Skype、Facebook等多种应用服务采集流量,保证了数据的多样性。Vpn-NonVpn数据集涵盖了表2所示的几大应用类型,其中包括NonVPN数据集共21531条记录,以及VPN数据集共24095条记录。
表2 流量应用类型详细描述
应用类别详细信息Browsing通过使用浏览器或其他活动所产生的HTTPS流量Email使用电子邮件服务所捕获的流量Chat即时聊天应用程序Streaming多媒体应用程序,需要连续稳定的数据流File Transfer用于发送或接收文件的应用程序,通过SFTP或FTPS协议进行传输VoIP语音应用程序TraP2P通过文件共享协议如Bittorrent下载文件
实验中所使用的测试集占总样本数量的20%。为了能够充分利用所有测试集样本,降低泛化误差,在GDBT分类器和LR分类器的训练过程中,本文使用了五折交叉验证法进行模型评估。
为了评估分类器的性能,本文使用混淆矩阵表示分类结果,如表3所示。
表3 分类结果混淆矩阵
实际类型预测正类预测负类合计实际正类TPFNP(TP+FN)实际负类FPTNN(FP+TN)合计TP+FPFN+TNTP+FP+TN+FN
本实验包含2个场景:1)对VPN流量和普通VPN加密流量进行分类;2)对加密流量的所属应用类型进行识别。
4.2.1 VPN流量识别结果
本实验场景比较了GBDT-LR分类器与其他4种常用的分类器对VPN加密流量的识别效果,其中包括KNN(K邻近)、LR、GBDT和RF(随机森林),使用的分类性能指标为Accuracy(准确率)、Precision(精确率)、Recall(召回率)和F1-score(F1值)。实验结果如表4和图4所示。
表4 VPN加密流量识别结果
分类器准确率精确率召回率F1值LR0.6060.5850.8530.694KNN0.8150.8190.8290.824RF0.9310.9270.9430.935GBDT0.9280.9100.9570.933GBDT-KNN0.9240.9110.9470.929GBDT-LR0.9480.9360.9670.951
图4 VPN流量分类结果示意图
从实验结果可以看出,基于集成学习的GBDT-LR、GBDT-KNN、GBDT和RF分类器的准确率均高于90%,其中GBDT-LR融合模型的准确率最高。特别地,单独的LR分类器准确率约为60.6%,而GBDT分类器的准确率约为92.8%,均低于GBDT-LR分类模型的94.8%。由此可见,基于GBDT分类器和LR分类器的集成模型的分类性能要优于单独使用的分类模型。此外还可以看出,尽管KNN模型的识别正确率要高于LR模型,但GBDT-KNN分类模型的性能却反而弱于GBDT模型,其主要原因在于KNN算法是高度依赖距离的算法,随着维度的增加(特别是稀疏矩阵),即使“相似”的2个点距离也会增加,这在一定程度上会导致分类器性能的下降。
4.2.2 流量应用分类结果
在上一节实验的基础上,本文分别对VPN流量和非VPN流量的应用类型进行了识别,并且对结果中每个类别的精确率和召回率进行了统计,实验结果如图5所示。可以看出,除少数应用类别识别精确度低于90%外,大部分应用类别的识别结果均取得了较高的精确率和召回率。
(a) NonVPN流量应用类型识别结果
(b) VPN流量识别结果图5 加密流量应用类型识别结果
本文提出了一种基于GBDT与逻辑回归融合模型的加密流量识别方法,实现了对VPN加密流量和非VPN加密流量的识别,并在此基础上实现了对流量应用类型的识别。实验结果表明,该模型通过使用时间相关的流特征能够有效地对VPN加密流量和普通加密流量进行识别。
本文提出的GBDT-LR融合模型是利用GBDT分类器构造新的特征,但新的训练数据很有可能是高维的稀疏矩阵,因此,在使用GBDT分类器构造新特征之后,可以进行特征选择来筛选出重要程度较高的部分特征,降低新的训练数据的维度,从而降低模型训练的复杂度。
GBDT-LR模型本质上是基于有监督式学习的,学习的目标是针对稳定网络环境下已知的应用类型,其缺点是无法识别新的应用类型。针对这个问题,一个可行的解决思路是利用多个二分类器实现多分类,若所有二分类器都输出为否,则判定为未知流量。例如在本实验中,对于具有n个类别的分类任务,其输出结果为每一个类别的概率,然后选取概率最高的类型为输出类型。可以考虑选取一个阈值,低于该值时对应类别的输出为否,若所有类别输出为否,则输出为未知流量。因此,更多的工作可以着手于寻找一个最优阈值,使得GBDT-LR模型在应对包含未知应用流量的识别上表现最佳。