本文提出了一种新的带路径签名的加密流分类方法——ETC-PS。首先用会话数据包长度序列构造流量路径来表示客户端和服务器之间的交互。然后进行路径变换,展示其结构,获得不同的信息。最后计算出多尺度路径特征作为一种显著特征来训练传统的机器学习分类器,实现了高鲁棒精度和低训练开销。
参考[Path Signature笔记 - 知乎 (zhihu.com)](Path Signature笔记 - 知乎 (zhihu.com))
当客户端和服务器之间建立连接时,客户端通常会向服务器发送请求,请求服务器发送所需的资源。主要分为3个阶段
握手阶段:上行和下行报文在此阶段交替传输。对于同一种传输协议,在此阶段生成的报文序列非常相似,包括报文长度、数量、方向等。(有明显特征)
上行报文主导阶段:上行报文(C->S)主要在此阶段传输。通常将控制指令编码的上行报文发送给服务器,邀请服务器配合提高数据传输效率。
下行报文主导阶段:下行报文(S->C)主要在此阶段传输。下行报文用于传输客户端所需要的内容
其实就是将流量报文长度序列收集起来,生成原始序列S,即一条一维路径,也就是流量路径Xt0其中上标0表示这是原始流量路径。
给出代码提取报文长度序列,(无关原文)使用代码提取ip数据报文长度序列如下
from flowcontainer.extractor import extract
pcap_path = r"XX.pcap"
result = extract(pcap_path)
for i , key in enumerate(result):
print("flow{}".format(i))
value = result[key]
print('ip lengths :',value.ip_lengths)
print('\n')
在大多数情况下,一维流量路径的路径特征往往不够有效,无法达到较高的分类精度。
路径分解变换将一条路径转化为相同维数的子路径集合
一维路径Xt0首先分解为上行序列路径U0与下行序列路径D0
此时变为二维路径Xt0,d={U,D},上标d表示进行的解体变换,将另一个方向的数据包长度替换为0,即Xt0,d中上行序列U的报文长度全替换为0
变换理由:为了提高路径签名特征的效率,将流量路径转换为两条一维流量路径,这也符合客户端-服务器交互的特点。
一般来讲,报文要传输的有效载荷通常是固定的,用于相同的网站或服务,这导致非常相似的累积和特征。
对于U0序列,累积和可如下表示:
U ′ = ( u 1 ′ , u 2 ′ , . . . , u n ′ ) , u n ′ = ∑ i = 1 k u i U'=(u_1',u_2',...,u_n'),u_n'=\sum_{i=1}^ku_i U′=(u1′,u2′,...,un′),un′=i=1∑kui
D0序列类似
变换理由:要传输的有效载荷对于同一网站或服务往往是固定的,使用累积和变换来暴露流量路径的一些内部特征。
使用函数f
f ( X t ) = ( 0 , x 1 , . . . , x n ) f(X_t)=(0,x_1,...,x_n) f(Xt)=(0,x1,...,xn)
只是在路径的开头添加了一个0,这种转换使签名对路径的转换敏感,即消除了转换不变性,这对加密流量分类有利,因为不同的数据包大小代表不同的网站布局或服务内容
得到Xt0,d,c,b={f(U),f(D),f(U’),f(D’)}
变换理由:原路径签名特征具有平移不变性,但加密流分类问题不需要这一属性,因此使用基点变换对流量路径进行变换。
变换理由:保证构建的流量路径具有唯一性
使用滑动窗口机制进行多尺度特征抽取
提取分层特征,设置q层,有q个滑动窗口,对于第i层的滑动窗口Wi,窗口长度与步长都是n2i-1,这将产生2q-1个子路径,自路径长度分别为n,n/2,n/4,…,n/2q-1
整体流程如下所示:
图中CS Sequence表示累积和系列
序列长度:40
236个类别,每个类别45个样本
上文变换后的Xt0,d,c,b={f(U),f(D),f(U’),f(D’)}由四个一维序列组成,但是文中有六个序列,进行排列组合变换,找出最佳变换;
最后选择选择U0序列、D0序列、U0 CS序列和D0 CS序列的组合路径,也就是段落1提到的路径组合。
选RF随机森林
签名深度为3
窗口深度q为4
- 关于序列长度增长,acc降低的分析:序列长度越长,路径包含的信息就越丰富,这就对模型提取特征的能力提出了更高的要求,而固定深度的路径签名和窗口窗口深度代表了固定的模型能力,随着序列长度增加,acc降低正常
- 路径签名的深度:在窗口深度为2的情况下,随着序列长度从40增加到200,精度之间的差距将逐渐明显,其中深度大的情况总是优于深度小的情况。因为路径签名深度大代表高阶psf,其中包含更多的路径细节。
- 窗口深度:当分层窗口深度从2增加到4时,准确率会逐渐提高。然而,大深度的分层窗口会导致PSF维度爆炸,并导致较高的计算成本。
…
缺陷:数据包填充技术会使得基于序列特征的方法失效。
将深度学习应用于带路径签名的加密流分类是一个很有前景的研究方向,尤其是RNN。路径签名特征在移动加密流分类问题中的应用也很值得探索。