logo头像
Snippet 博客主题

加密流量分类-论文12: Seeing Traffic Paths_ Encrypted Traffic Classification With Path Signature Features

本文于 476 天之前发表,文中内容可能已经过时。

0、摘要

  本文提出了一种新的带路径签名的加密流分类方法——ETC-PS。首先用会话数据包长度序列构造流量路径来表示客户端和服务器之间的交互。然后进行路径变换,展示其结构,获得不同的信息。最后计算出多尺度路径特征作为一种显著特征来训练传统的机器学习分类器,实现了高鲁棒精度和低训练开销。

1、模型方法

  • 路径签名应用与加密流量分类,只使用了流量的序列特征。

    1. 机器学习分类:要走数据预处理、特征工程、分类等过程,相交于深度学习方法多了特征工程
    2. 特征工程:从会话中客户端-服务器双向交互的流量特征构建了流量路径,再进行路径变换,作为分类器输入

    1.1 路径签名定义与科普

1.1.1科普

参考Path Signature笔记 - 知乎 (zhihu.com)](https://zhuanlan.zhihu.com/p/335494125))

1.1.2 路径签名的一些性质

  • 唯一性由路径签名可以完全确定一个路径,具有单调维度的路径(如时间)没有支路部分。因此,对于一个加密的流量报文长度序列(一维路径),通常需要添加一个单调递增的维度(例如时间),以保证路径签名可以等价地确定它
  • 重新参数化不变性: 对于一个路径,采用不同的采样频率得到的路径表示会不同,但是路径签名不会变。对于特定类型应用程序生成的流量,分类结果应该不受不同重参数化的影响。有了这个特性,签名可以过滤掉同种流量的不同重参数化引起的变化,不会分为不同应用。
  • 维数固定: 从整个路径中提取的路径特征的维数取决于截断级别,与路径长度无关。再短的路径其签名维数也是无限长,使用的时候取决于我们截断的维度是多少。

1.2 ETC-PS整体预览

image-20230119105316076

  1. 收集报文序列,计算报文长度,生成报文长度序列,使用正负号表示报文序列的不同方向
  2. 进行路径构造
  3. 进行路径变换
  4. 进行路径签名特征提取得到特征
  5. 使用机器学习分类器进行分类

1.3 流量路径构造

1.3.1 客户端与服务器的双向交互

  当客户端和服务器之间建立连接时,客户端通常会向服务器发送请求,请求服务器发送所需的资源。主要分为3个阶段

  • 握手阶段:上行和下行报文在此阶段交替传输。对于同一种传输协议,在此阶段生成的报文序列非常相似,包括报文长度、数量、方向等。(有明显特征

  • 上行报文主导阶段:上行报文(C->S)主要在此阶段传输。通常将控制指令编码的上行报文发送给服务器,邀请服务器配合提高数据传输效率。

  • 下行报文主导阶段:下行报文(S->C)主要在此阶段传输。下行报文用于传输客户端所需要的内容

    image-20230119105857080

1.3.2 网络流量路径构建

  其实就是将流量报文长度序列收集起来,生成原始序列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')

1.4 路径转换

  在大多数情况下,一维流量路径的路径特征往往不够有效,无法达到较高的分类精度。

1.4.1 路径分解变换

  • 路径分解变换将一条路径转化为相同维数的子路径集合

    • 一维路径Xt0首先分解为上行序列路径U0与下行序列路径D0

    • 此时变为二维路径Xt0,d={U,D},上标d表示进行的解体变换,将另一个方向的数据包长度替换为0,即Xt0,d中上行序列U的报文长度全替换为0

变换理由:为了提高路径签名特征的效率,将流量路径转换为两条一维流量路径,这也符合客户端-服务器交互的特点。

1.4.2 累积和变换

  一般来讲,报文要传输的有效载荷通常是固定的,用于相同的网站或服务,这导致非常相似的累积和特征。

对于U0序列,累积和可如下表示:

D0序列类似

  • 于是变换为四维,Xt0,d,c={U,D,U’,D’}

变换理由:要传输的有效载荷对于同一网站或服务往往是固定的,使用累积和变换来暴露流量路径的一些内部特征。

1.4.3 基准点变换

使用函数f

只是在路径的开头添加了一个0,这种转换使签名对路径的转换敏感,即消除了转换不变性,这对加密流量分类有利,因为不同的数据包大小代表不同的网站布局或服务内容

得到Xt0,d,c,b={f(U),f(D),f(U’),f(D’)}

变换理由:原路径签名特征具有平移不变性,但加密流分类问题不需要这一属性,因此使用基点变换对流量路径进行变换。

1.4.4 结合时间变换

  • 通过添加单调坐标(如时间)来丰富原有的线性路径,从而保证签名的唯一性。它通常对应于添加时间参数化作为路径坐标。
  • 将交通路径5维路径Xt0,d,c,b,t={f(U),f(D),f(U’),f(D’),t

    变换理由:保证构建的流量路径具有唯一性

1.5 路径特征抽取

  • 使用滑动窗口机制进行多尺度特征抽取

    • 提取分层特征,设置q层,有q个滑动窗口,对于第i层的滑动窗口Wi,窗口长度与步长都是n2i-1,这将产生2q-1个子路径,自路径长度分别为n,n/2,n/4,…,n/2q-1
      • 即对于第一层,窗口长度为n,步长为n,产生2^0=1个子路径
      • 对于第二层,窗口与步长都是n/2, 产生2^1=1个子路径
      • 对于第三层,窗口与步长都是n/4,产生2^2=4个子路径
      • ……
      • 对于第q层,产生2^q-1个子路径
        故总的路径数目为  然后对于这2^q-1个子路径进行计算路径签名,作为分类器输入特征
    • 整体流程如下所示:

      image-20230119114153356

  • 图中CS Sequence表示累积和系列


2、实验

2.1 数据集

2.2 预处理

  • 分为session双向流,提取数据包长度
  • 标记
  • 过滤:对于流太短的,只有几个包,剔除;类别样本数目太少的,剔除

2.3 调参

  • 序列长度:40

  • 236个类别,每个类别45个样本

2.3.1 序列选择的调整

  上文变换后的Xt0,d,c,b={f(U),f(D),f(U’),f(D’)}由四个一维序列组成,但是文中有六个序列,进行排列组合变换,找出最佳变换;

image-20230119115903416

最后选择选择U0序列、D0序列、U0 CS序列和D0 CS序列的组合路径,也就是段落1提到的路径组合。

2.3.2 分类器选择

选RF随机森林

2.3.3 参数选择

在这里插入图片描述

签名深度为3
窗口深度q为4

  • 关于序列长度增长,acc降低的分析:序列长度越长,路径包含的信息就越丰富,这就对模型提取特征的能力提出了更高的要求,而固定深度的路径签名和窗口窗口深度代表了固定的模型能力,随着序列长度增加,acc降低正常
  • 路径签名的深度:在窗口深度为2的情况下,随着序列长度从40增加到200,精度之间的差距将逐渐明显,其中深度大的情况总是优于深度小的情况。因为路径签名深度大代表高阶psf,其中包含更多的路径细节。
  • 窗口深度:当分层窗口深度从2增加到4时,准确率会逐渐提高。然而,大深度的分层窗口会导致PSF维度爆炸,并导致较高的计算成本。
    ……

    2.4 在开放世界数据的效果

    在这里插入图片描述

3、总结与思考

缺陷:数据包填充技术会使得基于序列特征的方法失效。

 将深度学习应用于带路径签名的加密流分类是一个很有前景的研究方向,尤其是RNN。路径签名特征在移动加密流分类问题中的应用也很值得探索。