Encrypted traffic 加密流量分类任务进展综述

Deep Learning for Encrypted Traffic Classification:An Overview

常用流量解析方法主要有四种:
1.端口号解析
2.DPI技术
3.统计特征/时序特征 + 机器学习
4.时空特征 + 深度学习
5.其他特征 +深度学习(待拓展)

第一种端口号解析的方法,是最早应用于流量解析的方法,但由于部分应用会使用不常见的端口号以及端口伪装等问题,准确率不高。
第二种DPI的方法,是目前最常见的应用于流量分类的方法,即通过分析载荷的相关字段,解析流量类别。但缺点是不能应用于加密流量。
第三种统计特征/时序特征+机器学习的方法。统计了大量的数据流和数据包特征作为特征集,其中许多特征并不能影响分类效果,但是如果特征集太小,又不能应用于机器学习的方法中。分类效果有局限性。
第四种时空特征+深度学习,将时空特征映射到图片形式,作为深度学习模型的输入。
Encrypted traffic 加密流量分类任务进展综述_第1张图片

在处理流量分类问题时,首先第一点是应该明白需要分类的目标(Problem Formulation),即我们要干什么?
1.进行协议分类,分析是HTTPS,还是SSH
2.进行应用分类,分析该应用是Skype还是Wechat产生的
3.进行形态分类,分析是上传还是下载
4.进行行为分类,分析是发送文字还是发送语音
5.分析哪个门户网站,或者分析哪个浏览器,或者分析哪个操作系统下产生的

第二步需要收集数据,来训练深度学习模型。
目前应用于流量分类的基准数据集还很少,原因主要是因为潜在的流量类别太大,很难找到能够满足所有分类需求的数据集。另外没有常用的可以被广泛接受的流量收集方法以及标签方法。流量收集的方法也存在差异,在客户端和服务端不同位置收集的流量都会显著影响流量特征。
data collection主要有以下几个问题:
1.可靠的标签,期待值y(标签)的重要性不言而喻。对于非加密类型的流量,可以通过开源的DPI工具,如nDPI来为流量进行标签。对于加密流量而言,在可控情形下,排除干扰流量的影响,从客户端是可以对流量进行标签的。
2.可靠的特征,客户端距离服务端的位置会影响时延,隧道流量会影响包长度特征。不同抓包点得到的数据训练得到的模型对于另一抓包点得到的数据分类效果不一定准确。
3.如何构建具有代表性的数据集,对于每一个类别的样本,数量要多而且需要具备多样性,来防止产生过拟合。 另外检测模型有效性的关键在于能否在其他测试集上达到好的分类效果。

preprocess
在得到数据之后,要对数据进行清洗和预处理。例如数据包重传,重复ACK以及乱序的数据包。针对不同的数据集以及分类目的,删除这些数据包的影响是不同的。如果是使用整条流的统计特征而言,删除无关的数据包可能影响不大。但是如果是通过前几个数据包进行分类,会产生更大的影响。除此之外预处理部分还应该包括常用的数据归一化。

特征角度(Feature Selection):在分类任务中通常对使用以下一种或多种特征结合的方法。
1.时序特征
时序特征通常包括包长,包间时延,上下行方向。对于加密流量而言,通常前20个数据包的特征足够达到比较好的准确率。并且有研究表明,一组采样数据包也能达到比较好的准确率。
2.头部特征
网络层和运输层中包含许多用户相关的信息,并且是未加密的。在深度学习方法之前,通常使用端口号,运输层协议,包长等特征来作为代表性特征。在最近,特别是基于深度学习方法而言,习惯使用整个数据包作为输入。注意:ip地址可以来确定流量类型,例如可以将使用Google的ip地址归类为google的应用程序。但是,由于CDN的广泛使用以及IP地址的动态分配,应该谨慎使用IP地址作为分类依据。
3.负载数据
即使对于加密流量,也可以通过运输层以上的信息进行分类。例如有研究通过TLS1.2握手包中的纯文本数据得到了很高的准确率。
4.统计特征
统计特征通常通过整条数据流得出,例如平均包长,最大包长,最小包间时延等等。但是得到统计特征需要观测整条数据流或者这条流的绝大部分。因此仅仅适用于离线分类。对于应用分类,统计特征通常还会受到用户行为,操作模式以及网络条件的影响。所以,对于数据集收集的要求比较高。

模型选择角度(Model Selection):
1.MLP(多层感知机)很少使用在流量分类领域
2.CNN(卷积神经网络)
3.RNN(循环神经网络)
4.AE(自动编码器)
5.GAN(对抗生成网络)
什么会影响模型选择问题呢?1.输入特征种类以及维度会影响模型选择。2.数据集大小也会产生影响,如果数据集较小,则不能使用深度学习的方法来分类。
如果在数据集比较大的情况下,会有以下几种特征来对应模型类别:
1.时序特征以及包头特征:
如果使用这些特征作为输入,通过前10-30个数据包或者从整条流中采样数据包都足以达到很好的分类效果。当输入维度比较低时,机器学习方法和MLP都能实现很好的分类效果,当输入维度较大时,CNN和LSTM更为准确。
2.载荷和头部特征:
在目前加密流量中,数据流前几个包含握手信息的数据包通常是未加密的,可以用来进行分类。由于输入维度比较高,应该使用CNN和LSTM。也可以将时序特征与这部分特征相结合,会稍微增加准确率。
3.统计特征:
对于统计特征而言,由于是统计整条流的各种特征,其维度是有限的,通常使用机器学习的方法来进行分类。实验表明,当统计前10-180个数据包的特征,足够实现分类效果。但是这种方法不能用于实时分类。

以上各种特征,各种模型结合的方法,均不能保证在某一数据集都能实现很好的分类效果。

目前未加密流量已经被研究的很透彻了,例如很多开源的DPDK,DPI等技术。但对于加密流量,仍然是一项无比艰巨的任务,因为缺少代表性的特征。
接下来面临的问题在于:
1.更强的加密协议,TLS1.3
2.同时属于多个类别的流量分类
3.通过流中间位置的数据包进行分类
4.分类未知的类别
5.迁移学习
6.多任务学习

你可能感兴趣的:(流量分类)