原文题目:ET-BERT: A Contextualized Datagram Representation with Pre-training Transformers for Encrypted Traffic Classification
中文题目:ET-BERT:一种基于预训练转换器的数据报上下文化表示方法,用于加密流量分类
发表会议:WWW '22: The ACM Web Conference 2022
发表年份:2022-4-25
作者:Xinjie Lin
latex引用:
@inproceedings{lin2022bert,
title={Et-bert: A contextualized datagram representation with pre-training transformers for encrypted traffic classification},
author={Lin, Xinjie and Xiong, Gang and Gou, Gaopeng and Li, Zhen and Shi, Junzheng and Yu, Jing},
booktitle={Proceedings of the ACM Web Conference 2022},
pages={633--642},
year={2022}
}
加密流分类需要从内容不可见和不平衡的流量数据中获取判别性和鲁棒性的流量表示,以实现准确的分类,这是实现网络安全和网络管理的一项挑战,但也是必不可少的。现有解决方案的主要局限是高度依赖深度特征,而深度特征过度依赖于数据大小,难以在未见数据上进行泛化。如何利用开放域未标记的流量数据学习具有较强泛化能力的表示仍然是一个关键的挑战。
在本文中,我们提出了一种新的流量表示模型,称为来自变压器的加密流量双向编码器表示(ET-BERT),它从大规模未标记数据中预训练深度上下文化数据报级表示。预训练模型可以在少量特定任务的标记数据上进行微调,并在五个加密流量分类任务中实现最先进的性能,显着将ISCX-VPN-Service的F1提高到98.9%(5.2%↑),跨平台(Android)提高到92.5%(5.4%↑),CSTNET-TLS的F1提高到1.3到97.4%(10.0%↑)。值得注意的是,我们通过分析密码的随机性提供了经验强大的预训练模型的解释。它为我们理解加密流量分类能力的边界提供了新的思路。
代码可从https://github.com/linwhitehat/ET-BERT获得。
论文解决上述问题的方法:
基于预训练的方法采用大量未标记数据来学习无偏数据表示。通过对有限数量的标记数据进行微调,可以轻松地将此类数据表示转移到下游任务。
- 泛化能力增强
- 不依赖专家知识
- 能够识别新出现(训练数据中不存在)的加密流量
- 不需要标记数据
论文的任务:
使用bert进行加密流量多分类,预训练模型没变,下游任务选的是单句预测
Datagram2Token
BURST生成器在一个会话流中提取持续的服务器到客户端或客户端到服务器的数据包,称为BURST[28,33],以表示会话的部分完整信息。
BURST:一组时间相邻的网络数据包,这些数据包来自单个会话流中的请求或响应。
其中和分别表示源到目的和目的到源的最大单向包数。简单来理解:一个BURST代表了一个根据正反向流被切割好的会话中的一个流。如图所示,假设深蓝色为正向流,那么浅蓝色就是反向流。
然后BURST2Token过程通过bi-gram模型将每个BURST中的数据报转换为token embedding。同时,这个过程也将BURST分成两个部分,为预训练任务做准备。
最后,Token2Emebdding将每个标记的标记嵌入、位置嵌入和分割嵌入连接起来,作为预训练的输入表示。
我们通过三种嵌入来表示BURST2Token中得到的每个token:token embedding、position embedding和segment embedding。
Pre-training
Masked BURST Model:这个任务类似于BERT b[6]使用的掩码语言模型。ET-BERT被训练来根据上下文预测屏蔽位置的token。损失函数如下:
Same-origin BURST Prediction:对于该任务,使用二元分类器来预测两个子BURST是否来自相同的BURST。具体来说:
- 50%的概率 s u b − B U R S T B sub-BURST^B sub−BURSTB是实际 s u b − B U R S T A sub-BURST^A sub−BURSTA后半部分(来自同一个BURST)
- 50%的概率是一个随机 s u b − B U R S T sub-BURST sub−BURST。
损失函数如下:
其中 B j = ( s u b − B j A , s u b − B j B ) , y j ∈ [ 0 , 1 ] B_j = (sub-B_j^A,sub-B_j^B),y_j \in [0,1] Bj=(sub−BjA,sub−BjB),yj∈[0,1]
Fine-tuning
由于微调和预训练的结构基本相同,我们将特定于任务的数据包或流表示输入到预训练的ET-BERT中,并在端到端模型中微调所有参数。在输出层,将[CLS]表示提供给多类分类器进行预测。我们提出了两种微调策略来适应不同场景的分类:
- 将数据包级别作为输入,专门试验ET-BERT是否能适应更细粒度的流量数据,称为ET-BERT(packet)
- flow level作为输入,致力于公平客观地比较ET-BERT与其他方法,称为ET-BERT(flow)。
这两种微调模型的主要区别在于输入流量的信息量。我们使用流中连续数据包的拼接数据报作为输入数据,其中在我们的方法中被设置为5。第4.1节详细描述了流量数据的处理。
数据集
- 任务1:通用加密应用分类(GEAC):根据标准加密协议对应用流量进行分类。
- 任务2:加密恶意软件分类(EMC):由恶意软件和良性应用[41]组成的加密流量集合。
- 任务3:VPN加密流量分类(ETCV):对使用VPN进行网络通信的加密流量进行分类。
- 任务4:基于Tor的加密应用分类(EACT):旨在对使用Tor路由器(Tor)的加密流量进行分类,以增强通信隐私。
- 任务5:基于TLS 1.3的加密应用分类(EAC1.3):旨在对基于新加密协议TLS 1.3的加密流量进行分类。该数据集是我们从2021年3月到7月在CSTNET下收集的120个应用程序,命名为CSTNET- tls 1.3。正如我们所知,这是迄今为止第一个TLS 1.3数据集。应用程序是从部署了TLS 1.3的Alexa Top-5000[3]获得的,我们通过服务器名称指示(SNI)标记每个会话流。在CSTNET-TLS 1.3中,由于TLS
1.3的兼容性,SNI仍然可以访问。ECH机制将在将来禁用SNI并损害标记的准确性,但我们将在第5节中讨论一些克服它的想法。
数据预处理
- 删除了地址解析协议(ARP)和动态主机配置协议(DHCP)的数据包,它们与传输内容的特定流量无关。
- 为了避免包头的影响,包头可能会在具有强识别信息(如IP和端口[19,25,40])的有限集合中引入偏干扰,我们删除了TCP头中的以太网头、IP头和协议端口。
- 在微调阶段,我们在所有数据集中随机从每个类中选择最多500个流和5000个数据包。
- 每个数据集按照8:1:1的比例分为训练集、验证集和测试集
参数:
包级别:
- batch_size = 32
- learning_rate = 0.00002
- ratio of warmup = 0.1
- epoch = 10
流级别:
- batch_size = 32
- learning_rate = 0.00006
- dropout = 0.5
效果
消融实验
学到的方法
理论上的方法:使用bert进行加密流量分类
论文优缺点
优点:
- 为bert在网络安全方面的应用提供了思路
缺点:
- 对bert的改动不足,基本上就是照搬,没有太多的创新
创新想法
看能不能在下游任务上或者数据粒度(这里用的BURST)上有所修改
- cicids2018
- Cross-Platform(IOS)、Cross-Platform(Android)
- USTC-TFC
- ISCX-VPN-Service、ISCX-VPN-App
- ISCX-Tor
加密流量检测:
预训练模型: