FineNet: Few-shot Mobile Encrypted Traffic Classification via a Deep Triplet Learning Network base

FineNet: Few-shot Mobile Encrypted Traffic Classification via a Deep Triplet Learning Network base
FineNet:基于Transformer的深度三重学习网络的Few-shot移动加密流量分类

Abstract

现有的加密移动流量分类方法往往需要大量的训练集来保证模型的效果

当很难收集到足够的样本时,这些方法可能不能产生令人满意的结果。

因此,研究一种有效的少样本学习方法,在很少样本的情况下实现准确的流量分类是至关重要的

在本文中,我们提出了一种基于Transformer的三重深度学习网络的几次细粒度分类技术FineNet

三重深度学习网络能够发现交通流之间的细微差异,并有效地将现有的分类知识转移到Few-shot场景中

此外,我们引入Transformer作为三元网络的基础模型,充分利用Transformer对序列数据的强大表示能力,增强FineNet的表达能力。我们进行了多次对比实验,结果证明,在Few-shot环境下,该方法的准确率比目前最先进的方法至少高出2.4%。

I. INTRODUCTION

手机应用发展迅速,移动互联网及其应用已成为海量个人敏感数据的聚集空间。

为了保护用户隐私,移动互联网流量加密已经成为一种主流趋势,大多数移动互联网应用都采用了https等数据加密传输技术[1]。

然而,移动互联网加密技术在保护用户隐私的同时,也给移动网络空间的网络安全、数据安全和内容安全管理带来了巨大挑战

针对移动互联网应用的加密流量分类研究受到了网络安全学术界的广泛关注

然而,大多数研究通常侧重于解决训练样本充足的粗粒度流量分类问题,无法有效处理App训练样本不足的挑战性场景

因此,这些方法可能不能完全满足移动网络安全管理的细粒度需求

在许多情况下,获取大规模标记的加密App流量数据集是困难和昂贵的。

因此,研究应用加密流量分类的少射学习方法是非常有必要的。Few-shot加密流分类可以在有限的样本数量下对新的流类型进行分类

Few-shot学习方法通常表现出更好的特征表示能力,即使在有限的应用流量样本中也能发现细微的差异和相似之处
Few-shot学习方法还具有更强的泛化能力,可以将已有的通用分类知识转移到新App类的流量分类中。

为了解决Few-shot应用流量分类的挑战,我们引入了FineNet这是一种专门为少射环境下的应用流量设计的细粒度加密流量分类方法

深入研究了小样本场景下的流量分类特征,开发了基于元学习的小样本学习框架

FineNet善于感知样本之间的细微差异,在缺乏足够训练样本的挑战性环境下实现App流量的高精度分类

我们的主要贡献如下:

1)提出了一种新的基于三元组深度网络的少镜头学习流量分类框架,用很少的训练样本实现了App加密流量的细粒度分类。
2)为了增强App流量序列特征的表示能力,我们采用Transformer作为三元网络的基础模型。Transformer强大的序列建模功能,特别是它的自关注机制,使FineNet能够有效地捕获流字节之间的深层关系。因此,FineNet能够在有限的样本中发现交通流之间的细微差异。

3)基于我们自建的App流量数据集,我们进行了评估实验。实验表明,FineNet在小样本App流量分类方面取得了比现有方法更好的性能。

本文的其余部分组织如下。第二节介绍了目前相关工作的进展情况。在第三部分,我们介绍了我们研究的基本知识。

在第四节中,我们介绍了FineNet的主要架构。

在第五节中,我们进行了对比实验并进行了性能评价。最后,我们对我们的研究进行了总结。

II. RELATED WORK

A.应用加密流量分类

近年来,应用加密流量分类的研究取得了显著进展。Taylor等人在[2][3]中提出了AppScanner,这是一种有效的加密应用流量分类方法,利用机器学习方法提取统计特征进行分类。

在 [4] 中,Thijs van Ede 等人提出了一种针对加密网络流量的半监督应用指纹识别方法。 流量的半监督应用程序指纹识别方法。 流量的时间相关性,并生成应用程序指纹。

在[5]中,基于消息类型和长度块序列,训练了一个马尔可夫模型,并将其与所有应用概率连接起来作为指纹进行分类。在[6]中,C. Liu等人提出了一种基于深度学习的端到端分类模型,该模型从原始流中学习具有代表性的特征。文献[7]提出了一种针对移动应用识别任务的深度学习方法,可以端到端自动化特征工程过程。

为了对App加密流量进行更细粒度的分类,有学者对App内活动的流量分类进行了研究。在[8][9][10][11]中,已经提出了几种方法,使用不同的方法来具体识别App加密流量中的用户行为。

B.基于Few-shot学习的加密流量分类

在加密流分类中,少射学习是一个具有挑战性的场景。一些研究已经开始关注对加密流量的Few-shot学习。Payap Sirinam等人在[12]中提出了一种基于三元组网络的指纹攻击方法,该方法只需要相当少的样本就能实现对Tor网络加密流量的准确分类

在[13]中,何明姝等人提出了一种基于CNN和AutoEncoder的Few-shot学习方法,可以在训练样本较少的情况下实现异常交通检测

[14]中,崔天宇等针对IPV6地址关联攻击问题提出了一种基于双异构图关注网络的Few-shot学习方法。[15]中,林鑫杰等人通过预训练大规模未标记数据,实现了少量标记样本条件下的微调训练

III. PRELIMINARIES

在本节中,我们阐述了一些必要的准备工作和我们研究的基本知识,这将有助于更好地理解这项工作。

A. Problem definition

本文的目的是用很少的样本对App加密流量进行分类。为了充分模拟少镜头学习场景,我们将数据集分为基本数据集和Few-shot数据集。基础数据集具有代表现实生活中易于获取的App流量样本的大规模流,定义为Sbase={(xi,yi)},其中标签在这里插入图片描述在这里插入图片描述

少数镜头数据集具有有限的流量,表示现实生活中难以获得的App流量样本,定义为Sfew={(xi,yi)},其中标签yi∈{Cn+1,…,Ci…Cn+m}在这里插入图片描述。两个数据集中包含的App类完全不同,即{C1,…,Ci…Cn}∩{Cn + 1,…,Ci…Cn + m} =∅在这里插入图片描述

我们的目标是通过使用Sbase学习一****个可推广和可转移的few-shot模型,将现有的分类知识从大规模数据集Sbase的App流量转移到小样本数据Sfew
中的新的和少样本的App流量。因此,我们的目标是在Sfew训练样本不足的情况下实现对新的不同App流量的准确分类,这是我们要研究的主要问题

B. Triplet Network

少量学习(Few-shot learning)是机器学习领域的一个重要研究方向,它主要研究如何仅用少量标注样本有效地训练模型,以获得更好的泛化性能[16]。元学习(Meta-learning)是最常用、最有效的少量学习方法之一

元学习[17]是一种典型的Few-shot学习方法,其目的是“学会如何学习”,即利用已有的知识和经验指导新任务的学习,获得学习的能力

在元学习范式下,提出了三元网络[18]

它是一种特殊的神经网络结构,由三个具有相同参数的基本神经网络组成

三元网络的主要原理是学习样本在表示空间中的相对距离

如图1所示,该网络利用成对或分组的数据作为特征嵌入生成器,目的是获取新的特征表示空间,其中相似的样本聚类得很近,不相似的样本聚类得比较远。三元组网络是用三元组作为三个结构相同、参数共享的基本网络的输入。每个三元组包含三个样本:锚定样本(A)、阳性样本§和阴性样本(N)

在这里插入图片描述
为了达到学习更好的特征表示用于分类任务的目的,设计了一种新的损失函数Triplet loss[18]

通过在训练过程中对Triplet Loss进行优化,模型学会了在特征空间中映射相近的样本和相隔较远的样本。

这样,模型可以有效地创建更具判别性的特征表示,从而在训练样本有限的分类任务中获得更好的性能。

Triplet Loss函数的基本形式为:

在这里插入图片描述
式中,f表示基模型为嵌入生成器函数,将输入映射到新的嵌入空间,如神经网络。‖·‖²为欧氏距离

边际是一个超参数,表示正样本和负样本之间的最小间隙用于防止模型过拟合,使学习更具鲁棒性

IV. METHODOLOGY

在这里插入图片描述

本节主要介绍FineNet,这是一个基于深度元学习网络的框架,用于在Few-shot条件下对App加密流量进行分类。
FineNet采用基于Transformer的三重网络进行Few-shot元学习。
如图2所示,三重网络由3个Transformer为基本模型并联组成,共享参数完全相同
FineNet主要由流量预处理、三元组任务提取、嵌入生成器预训练和Few-shot精细分类模块组成。
我们将在下面详细介绍每个模块。

A. Traffic Pre-processing Module

流量预处理模块用于对原始流量进行去噪、分组和提取特征向量,这些特征向量与分类器的输入格式相匹配

1)交通流分组。流量流通常是指App通过某些操作访问特定服务而产生的流量。如第III(A)节所述,可以表示为FLOW={P1, P2, P3,⋯Pi⋯},其中Pi是流中的一个包。我们以流量为基本单位,实现App特征标注和流量分类。

2)交通流分割。流量中的一组数据包被进一步分割以形成更基本的流单元
分割方法如下:给定一个交通流,表示为flow,我们设置一个时间阈值,表示为tτ随后,我们确定了两个连续数据包之间的时间间隔超过tτ的间隙
这个缺口,其特点是缺乏流量,然后被用来分割流量流中的数据包组,形成更基本的单位,称为流。

3)交通特征提取。我们使用流的原始有效负载字节序列作为特征向量。与常用的统计特征或数据包长度序列特征相比,数据包原始有效负载字节序列提供了更多关于流量的详细信息。
此外,数据包原始有效负载字节序列更适合作为我们方法中使用的Transformer模型的输入
我们截取每个流的前1000字节作为固定长度的值序列,如果没有足够的字节,则用零向量填充。因此,将每个流样本表示为二维向量,其中第一维表示1000字节序列,第二维表示每个字节的原始比特内容。

B. Training Task Extraction Module

任务提取模块是从原始训练数据集中提取适合三元网络的任务样本。每个样本是一个三联体(a, P, N),由三个原始样本组成:
锚点样本(A),阳性样本§,阴性样本(N)。三元组的排列和组合会极大地影响模型的训练收敛速度和性能。我们需要从原始数据集中挖掘有效的三元组。

个简单的三元组是指A和P之间的距离小于A和N之间的距离。换句话说,模型已经很好地理解了这些实例,并且能够正确地对它们进行分类,训练三元组网络的意义不大。

困难三元组是指A和N之间的距离小于A和P之间的距离。在这种情况下,模型目前对样本进行了错误分类,因此从这些三元组中学习可以帮助提高其性能。

因此,我们希望从原始数据集中挖掘硬三元组
我们的挖掘策略如下:
1)首先,我们从属于同一类的原始样本中构建锚定阳性对
2)然后,对于每个锚-正对,我们随机找到对应的负样本,形成一个硬三组,满足A到N的距离小于A到P的距离

该策略在收敛速度和有效性之间取得了平衡。算法如下:
在这里插入图片描述

C. Pre-training module

预训练模块的主要功能是在大规模的基础数据集上训练具有三重损失函数的三重网络
预训练模型作为特征嵌入生成器,接收流量样本的有效载荷特征向量,并将其转化为新的特征嵌入空间内的嵌入向量。

在新的嵌入空间中,属于同一类别的样本的嵌入向量之间的距离会减小,而不同类别的向量之间的距离会增大

为了对原始负载字节序列获得更好的特征表示,我们选择Transformer[19]作为三元组网络的基本模型

Transformer是专门为处理顺序数据而设计的深度学习模型。

与按顺序处理序列数据的传统循环神经网络(rnn)不同,Transformer可以在整个序列中并行计算,使其更高效和可扩展。Transformer模型具有较强的交通序列学习能力,能够挖掘交通流的详细特征,并产生具有代表性的嵌入向量。其关键结构特点主要描述如下:

1)多头自注意机制。多头自注意模型是一种用于序列建模的神经网络结构,它可以捕获序列中不同位置之间的关系,同时对不同特征之间的关系进行建模。在多头自注意模型中,将输入序列分别映射到Q、K和V矩阵中,然后通过计算注意得到每个位置的表示。最后,对这些表示进行加权和求和,得到最终输出。不同的头部可以捕获不同的关系,从而提高模型的性能。具体来说,多头自注意模型的计算如下:
在这里插入图片描述
其中𝑊 ̄𝑄,𝑊 ̄𝐾,𝑊 ̄s表示三个线性变换矩阵
2)位置编码。在自注意模型中,由于每个位置的表示只取决于它与其他位置的关系,因此与它在序列中的位置无关。位置编码[19]是通过在输入序列中加入固定向量来表示序列中每个位置的位置信息的方法。公式如下:

在这里插入图片描述
其中p为序列中的位置,𝑑𝑝𝑜𝑠为位置编码(PE)的维数。2i和2i+1分别表示偶数维和奇数维。通过添加位置编码,自注意模型可以更好地捕获序列中的位置信息,提高模型的性能。

D. Few-shot Fine-tune module

微调模块主要用于训练样本有限的App加密流量的少拍分类

它由一个预先训练好的Transformer和一个k-最近邻算法(KNN)分类器组成。这两种型号串联在一起

利用变压器模型生成嵌入特征向量,增强新空间的特征表示,利用KNN算法完成最终分类任务。KNN分类器是一种简单而有效的分类算法。它根据样本之间的距离和投票机制来确定新样本的类别。由于三元组Transformer已经学习到了样本之间的相似性,所以KNN分类器可以直接使用这些学习到的特征在样本很少的情况下进行分类。因此,KNN非常适合于基于度量学习的少样本分类问题。

V. EXPERIMENT AND EVALUATION

A. App Traffic Datasets

我们综合并建立了来自主流app的流量样本数据集。参考我们之前的研究[22],我们通过Android SDK附带的自动化测试框架MonkeyRunner来模拟App的运行并收集流量。我们编写MonkeyRunner测试脚本,自动安装并运行APK文件,随机模拟app的操作。然后我们测试了中国应用在线市场的14款主流应用。应用程序的流量可以通过TcpDump工具收集,每个测试结果分别保存为pcap文件。共收集到10GB的网络流量包。我们构建了一个包含14个app的移动流量数据集。根据第三节(A),为了充分模拟few-shot学习场景,我们将数据集分为base dataset和few-shot dataset

如表1所示,我们选择10个App作为基类创建基数据集,用于学习预训练过程中的App流量特征表示
其余4个应用程序被随机选择为few-shot类来创建few-shot数据集,我们从每个few-shot类中抽取100个样本。我们实验的最终目标是实现对App流量的精确分类

B. Evaluation metrics

为了评估我们模型的性能,我们使用了常用的指标,如Precision, Recall rate, F1score等。精度反映了实际标记为真数据在预测为真数据中的比例。召回率反映了预测为真数据在实际标记为真数据中的比例。F1-score是综合准确率和召回率之间的平衡。对于多分类,我们使用Macro方法来计算上述度量值。也就是说,对每个类别的值求和并求平均值。

C. Model implementation

为了提高模型的分类效果,我们对模型及其相关参数进行了如下优化配置。
1)预训练模型。在预训练过程中,我们选择每个流量的前 1000 个原始字节作为特征序列。我们选择Transformer作为三元网络中的预训练模型。该模型由6层变压器编码器和3头自关注机制组成在三重网络中,我们选择SGD作为优化器来最小化损失函数学习率设置为0.001,衰减值设置为0.99,批处理值设置为128,总训练epoch为15

2)Few-shot模型。在微调过程中,我们构建了由预训练的变压器和KNN分类器组成的模型变压器的参数是固定的,这里主要配置KNN模型。主要参数设置如下:

n_neighbors = 10此参数指定在进行预测时要考虑的最近邻居的数量

度量=“闵可夫斯基”在这里插入图片描述
度量参数指定用于度量数据点之间相似性的距离度量

权重=“距离”权重参数决定了在进行预测时如何对邻居的贡献进行加权。“距离”表示每个邻居的影响由其到查询点的逆距离加权

我们在Python环境中实现了所有的测试,并使用Tensorflow和Keras作为深度学习库。训练使用10倍交叉验证方法。我们在一台工作站机器上运行我们的实验,Windows 10操作系统,i9-10850K CPU@3.6-5.2 GHz, 128 GB DDR4 3200内存和Tesla V100图形。

D. Comparation experiment with Baseline

为了证明FineNet的少镜头分类有效性,我们将其与最近文献中的几种最先进的方法进行了比较。Deep Fingerprinting[20]、LSTM Fingerprinting[21]、AppScanner[2]、ET-BERT[15]、Triplet Fingerprinting[12]等方法在加密流量分类的几个方面都取得了重要进展。我们将在少量训练样本条件下测试它们对App加密流量进行分类的能力

基于本文中的few-shot数据集,当N(每个few-shot类的样本)为10,50,100时,我们将FineNet与这些最先进的方法作为基线进行比较
如表2所示,传统的深度学习方法(deep FP和LSTM FP)在少数镜头环境下的表现非常差,当N=10时,准确率甚至不超过25%。原因在于深度学习模型通常依赖于大量的标记数据进行训练,否则模型无法充分学习数据的特征和模式。作为一个基于机器学习的模型,AppScanner表现得更好。

在这里插入图片描述
当N=10、50、100时,其准确率分别超过50%、70%、75%。AppScanner利用统计特征提取和强化学习技术,与深度学习方法相比,对训练样本数量的依赖程度较低。在基线中,ET-BERT在N=50,100时的综合性能最好,最接近FineNet。其预测准确率分别超过80%(N=50)和90%(N=100),这可能得益于其预训练模型良好的语境表征能力和较强的学习能力。然而,在N=10的情况下,其性能急剧下降,预测准确率低于50%。Triplet FP作为一种专门针对Tor流量分类的少次学习方法,也采用了三重网络架构。在样本很少(N=10)的情况下,其准确率(75%以上)在基线中取得了压倒性优势。

然而,由于其相对较弱的特征表示能力,导致在样本略多的场景下(N=50, N=100),其表现不如ET-BERT。总的来说,测试表明FineNet在所有指标上都明显超过了这些基线方法,其准确率比最佳基线高出11%(N=10), 7.3%(N=50)和2.4%(N=100)。以上结果表明,样本越少,FineNet的优势越明显。这很大程度上是因为它在样本不足的情况下,发现不同新app不同流量的细微差别的能力很强。

E. Sensitivity experiment on Different Configuration

为了优化模型的性能,我们用不同的参数反复测试模型的预测结果。

样本数量对小样本数据集的影响。一般来说,训练样本的数量直接影响模型训练的效果。我们通过改变少射数据集(N∈{1,5,10,20,50,100})中每个类的样本数来观察模型的预测指标
如图3所示,我们发现基本上样本数越大,模型的精度越高。在样本很少的情况下(N= 1,5), FineNet仍然取得了很好的准确率(70.3%,84.8%)。虽然这不是一个绝对高的值,但相比之下,传统的分类模型很难在这种极端情况下正常运行。

在这里插入图片描述
n近邻对KNN分类器的影响。n_neighbors是KNN分类器中的一个重要参数,用于指定预测时要考虑的最近邻居的数量。我们通过改变n_neighbors参数的值(n_neighbors= 1,3,5,10)来观察模型的执行指标
如图4所示,我们发现基本上随着n_neighbors的增大,模型的精度也随之提高。当n_neighbors=10时,模型性能最佳

在这里插入图片描述

F. Analysis on Representation Ability

为了直观地展示FineNet在少镜头条件下的特征表示能力,我们利用t-SNE对预训练处理后的新特征空间中的样本分布进行可视化。t-SNE通过将高维数据映射到低维空间来实现二维空间的可视化显示,同时尽可能地保留数据样本之间的相似关系。我们将4个少射App类的测试样本发送到FineNet中的特征提取器,并对输出的新特征进行t-SNE变换。如图5所示,我们发现在新的特征空间中,同一类的App样本聚在一起,聚类之间的距离更远。结果表明,FineNet能够在小样本环境中发现不同类型流量之间的细微差异,在增强流量特征表征方面发挥了明显的作用。
在这里插入图片描述

VI. CONCLUSION

本文提出了一种新的基于三元组深度网络的少镜头学习流量分类框架,用很少的训练样本实现了App加密流量的细粒度分类。为了增强对App流量序列特征的表示能力,我们采用Transformer作为三元网络的基础模型。

Transformer强大的序列建模功能,特别是它的自关注机制,使FineNet能够有效地捕获流字节之间的深层关系
基于我们自建的App流量数据集,我们进行了实验,结果表明FineNet在小样本App流量分类上取得了比现有方法更好的性能。FineNet在所有指标上都明显优于基线方法,其准确率分别比最佳基线高11%(N=10)、7.3%(N=50)和2.4%(N=100)。

本研究的局限性在于该模型尚未在大规模的真实网络流量中进行部署和验证,这是我们未来的研究方向

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值