加密流量分类-论文8:An Encrypted Traffic Classification Method Combining Graph Convolutional Network and Autoencoder
Combining Graph Convolutional Network and
Autoencoder)
0、摘要
构造了一个k -最近邻(KNN)交通图来表示交通数据的结构,从流量结构和流量数据中学习特征表示,利用两层图卷积网络(GCN)架构进行流特征提取和加密流分类。进一步使用自动编码器学习流数据本身的表示,并将其集成到gcn学习的表示中,利用了GCN和自编码器的优点,在只需要少量标记数据的情况下就能获得较高的分类性能。
1、文章核心观点引入
-
样本的结构可以揭示标记样本与未标记样本之间的潜在相似性,为标记样本较少的分类任务提供有价值的指导
-
在网络流量分析领域中,构建流量图来描述流量结构的方法有很多种,但是这些图主要包含了网络的通信模式和拓扑信息,很少包含流量相似度的信息
-
构造k -最近邻图来表示交通数据的结构。我们将交通流作为KNN图中的节点。对每个节点,通过相似度计算找到其前K个相似点作为其近邻,并建立边缘连接。进一步利用图卷积网络(GCN)获取交通结构信息,进行流特征提取和分类
如图,相当于两个信息分支:
关键去找论文如何定义所谓的相似度
2、模型方法
2.1 预处理(Data Preprocessing)
-
流量分割(Traffic Split):
去掉pacp文件头的前24个字节,此24字节只包含pacp文件的统计信息,然后基于5元组分成流(flow)的形式,原始流量就转换成流集合F:
F = [ f 1 , f 2 , . . . , f n ] F=[f_1,f_2,...,f_{n}] F=[f1,f2,...,fn]
对于每一个fi,都包含q个包(packet)
f i = [ p 1 i , p 2 i , . . . , p q i ] f_i=[p_1^i,p_2^i,...,p_{q}^i] fi=[p1i,p2i,...,pqi] -
流量过滤(Traffic Purification):
删除每个数据包p中的MAC头,因为它被两个MAC地址填充,也可使它们为零来匿名化这五个元组,并且去掉了所有重复的和空的流文件,避免了对我们分类模型学习能力的不利影响
-
统一长度(Length Unification):
对于大于900字节的流,将其裁剪为900字节,对于小于900字节的流,在流的末尾添加0x00,使其补充为900字节
-
数据归一化(Data Normalization):
将900字节的流序列转换为900维的向量。然后,我们将流向量归一化到范围[0,1]
经过上述转化,每一个流fi都转为流字节向量FBV,原始数据转为矩阵X∈RN*d,N代表N个流,d代表一个FBV的维度
2.2 流量图形构建(Traffic Graph Construction)
对于流数据X,找到对于每个流最相似的k个流,每个流f作为图的一个节点,找到最相似的流作为相邻的节点,在它们之间设置边。对于两个向量xi,xj,相似度计算公式如下:
S
i
j
=
e
−
∣
∣
x
i
−
x
j
∣
∣
2
t
S_{ij}=e^{-{{||x_i-x_j||}^2\over t}}
Sij=e−t∣∣xi−xj∣∣2
其中|| ~ ||是计算两个向量的欧式距离,在计算相似矩阵S后,选取每个流的top-k相似点作为其近邻,构造无向k最近邻图。这里原文给出了一个依据KNN构造图与原始图(trace graph)的差距,通过相似度计算构建KNN流量图,使得相同应用类型的流量之间建立了更多的连接。KNN图比迹图更容易区分不同类型的流量。
2.3 分类模型
分类模型由GCN与SAE两个部分组成
-
GCN:将加密的流量分类转换为节点分类任务,考虑两层GCN架构来获取流量结构信息:
-
第一层GCN的输入:邻接矩阵A和流量数据X。A是图的邻接矩阵,X是原始流量数据的矩阵
-
第一层输出Z(1)
其中:
A ^ = A + I \widehat{A}=A+I A =A+ID是度数矩阵,D是对角阵,每个值是A矩阵的行和,W是权重参数矩阵,外面是激活函数
-
第二层GCN:
损失函数为交叉熵损失。
-
-
SAE:输入为原始流量X,输出为重构的X,最后一层编码器输出为He,损失函数为均方差MSE损失,故模型总损失为两损失之和。
以上两个部分并没有联结,此处作者的创新将SAE编码器的压缩输出作为辅助信息,与GCN第一层融合,送入GCN第二层,进行分类。由此有如下的Representation Delivery
-
**Representation Delivery:**由于KNN流量图是通过相似度计算构造的,因此在KNN图的同一连通分量中,节点的特征更加相似。图卷积运算可能会使它们趋向于收敛于同一值,可能会混合来自不同簇的节点的特征,使它们难以区分,导致过平滑,为了缓解,进行Representation Delivery:
Z ~ = ( 1 − ϕ ) Z ( 1 ) + ϕ H e M \widetilde{Z}=(1-\phi)Z^{(1)}+\phi H^M_e Z =(1−ϕ)Z(1)+ϕHeMϕ 是一个平衡参数 \phi是一个平衡参数 ϕ是一个平衡参数
,故GCN输出改为:
Z ′ = s o f t m a x ( D ^ − 1 / 2 A ^ D ^ − 1 / 2 Z ^ ( 1 ) W ( 1 ) ) Z^{'}=softmax({\widehat{D}}^{-1/2}\widehat{A}\widehat{D}^{-1/2}{\widehat{Z}}^{(1)}W^{(1)}) Z′=softmax(D −1/2A D −1/2Z (1)W(1))
这样可以增强节点的特征表示能力,防止GCN过度强调相邻节点的关联而忽略节点本身的特征,从而提高模型分类性能。
4、实验
-
由于是半监督模型,关于标记率的分析
分析:在所有方法中,随着准确率上升,acc都有增加的趋势,但所提方法的曲线始终高于其他方法,而我们方法的准确率始终优于基线方法。对比结果表明,在低标记率的情况下,将流量结构信息与流量数据相结合进行加密流量分类是有效的。从图中还可以看出,当标记率从10%下降到1%时,我们的方法的准确率下降速度明显慢于其他方法,说明我们的方法具有更好的鲁棒性。
-
超参数分析:
K与平衡参数\phi
K取3,5,7比较好
\phi取0.5比较好
-
似乎没有做消融实验,似乎没有较强说服力说明这个Representation Delivery是有效的…
5、总结与思考
Representation Delivery的创新,感觉这方面没有做相应的消融实验说不过去,毕竟创新点就是这个,不做消融实验怎么说明它一定是有效的捏。