1. 引言
近年来,随着互联网技术的飞速发展和用户规模不断增加,各种网络应用应运而生。一方面,人们利用网络进行购物、社交、娱乐、学习、办公、支付、炒股……;另一方面,很多企业和服务机构也利用网络开展业务,例如发布信息、招聘员工、网上办理业务等活动。这就导致网络中的流量和应用呈爆发式增长,使网络更加难以管理。
互联网为我们提供便捷服务的同时,也带来了网络安全问题,例如网络上的信息被非法监听、破坏、修改等。为了信息的安全、可靠传输,人们使用加密技术来对网络中的流量进行加密,这就使得加密流量在网络流量中的占比越来越高。并且,很多恶意软件的流量也以加密的形式在网络中传播,进行破坏。
通过对网络流量进行分类,不仅可以帮助网络监管者进行网络流量监控、网络带宽管理、提高服务质量,还可以及时发现网络攻击、对异常流量进行检测。因此,对网络流量进行分类有助于提高网络管理水平和网络安全水平。
早期人们通过分析端口和负载来分类流量 [1] - [8]。由于许多应用程序使用动态端口,或者通过端口混淆技术伪装成某些熟知的端口号,因此基于端口的方法准确率变得越来越低。基于负载的方法对网络数据包的内容进行分析,提取特征串,使用特征匹配算法来分类流量,但是,它只对明文有效,无法解析加密流量。因此,基于端口和基于负载的分类方法不再适用于当今的加密流量。
基于机器学习的加密流量分类方法 [9] [10] [11] [12] 通过分析网络流的统计信息来对流量进行分类,例如,网络流持续时间的分布特性、包间隔时间、包长特征等。自2004年至今,有多种机器学习算法被用来分析网络流。2016年,M. Conti [13] 首先使用DTW (动态时间规整算法)来计算流时间间隔序列的相似度,然后通过对包长度进行聚类来分析SSL加密流量,用来推断手机Android用户的行为。V. F. Taylor [14] 提出了一个AppScanner的框架来识别加密网络流量中的Android应用,文章中作者定义了流量爆发的概念把数据包分割成不同流,然后把数据流分成基于统计和包长度两组特征,再使用机器学习对Google Play中的110个最受欢迎的应用进行识别,达到了很高的识别率。B. Anderson [15] [16] 在2016年利用背景流量数据来识别TLS加密恶意流量,他首先分析了百万级的正常流量和恶意流量中TLS流、DNS流和HTTP流的不同之处,然后选取具有明显区分度的特征集作为分类器(有监督机器学习)的输入来训练检测模型,从而识别加密的恶意流量。在2017年,B. Anderson [17] 又比较了不同分类器在识别恶意加密流量的性能,得出随机森林算法优于其他机器学习算法(逻辑回归、决策树、SVM等)。
虽然基于机器学习的方法准确率较高,应用范围很广,但是也有一些不足之处。比如特征重叠问题,不同的网络流可能具有相似的特征,这就会给网络流分类带来干扰。还有随着流量识别技术的进步,一些反流量识别技术(如流量伪装、流量特征模糊)也在发展。这给加密流量分类带来了困难。
在本文中,我们为加密流量分类问题提出了一种基于图嵌入和多模态深度学习的模型。该模型使用多模态深度学习模型联合了两种类型的特征——流序列特征和图嵌入特征。其中流序列特征指的是网络流的包长度序列,图嵌入特征是加密应用的流量表示成图结构后,通过图嵌入技术得到的低维嵌入向量。为了学习到图中节点的嵌入向量表示。首先,我们把加密应用产生的网络流表示成图结构,这种图结构能够表征加密应用的空间分布情况;然后,通过图嵌入学习到关于图中节点的低维的向量表示,这种低维向量表示不仅反映了在空间上加密应用之间的关系,而且图的结构化信息经过嵌入后,有利于计算和学习;最后,我们使用多模态深度学习模型学习加密应用的流序列特征和图嵌入特征,实验结果表明,我们所提出的方法明显优于已有最先进的方法,并且具有很好的抗干扰能力。
本文的主要贡献如下:
1) 为了提取加密应用的空间特征,提出了把加密应用的网络流表示成图的方法。
2) 使用图嵌入技术对加密应用的网络流图进行处理,得到节点的低维嵌入向量。
3) 提出了基于多模态学习的模型框架,对加密应用的嵌入向量和流序列特征进行联合训练,取得了很好的实验效果。
2. 特征提取过程
2.1. 网络流的定义和提取
网络中的数据包是构成流量的基本单位,一连串的数据包就组成了网络流,网络流量越大意味着数据包数目多或者载荷较大。原始的网络流量是具有不同IP地址和端口的数据包混合在一起的,我们使用五元组信息来把混乱的数据包组成流,我们的研究工作就是把这些流划分到不同的应用中去。五元组信息包括:源IP、目的IP、源端口、目的端口以及传输层协议(TCP或者UDP),具有相同五元组信息的一连串数据包就是一条应用流。
我们这样定义流的开始和结束。当出现一个数据包或者上一条流结束的时候,就是流的开始;当流持续时间超过规定时间,或者检测到包含RST或者FIN标志的数据报文,就可以认为一条流结束。在TCP协议中,“RST”表示接收数据超时,“FIN”表示数据发送完毕,当这两个标志出现时,就可以认为一条流的结束。UDP是面向无连接的协议,只能通过设置好的时间来判定流的结束。
2.2. 流序列特征
本文中,我们使用网络流中的包长度序列来作为加密应用的流序列特征。对于一个包序列
,m是包序列长度,
表示第m个包。这里,我们通过一个函数
把序列S转化为序列
。其中,转换函数
定义如下:
(1)
可以看到,包长度由绝对值来表示,数据包的正负符号表示方向,正值表示从服务器到主机,负值表示从主机到服务器。
2.3. 加密应用的嵌入向量
2.3.1. 图的构造和变换
为了方便图嵌入,我们对图进行构造和变换,如图1所示。

Figure 1. Graph construction and graph transformations
图1. 图构造和图变换
我们根据加密应用流的源IP地址和目的IP地址构造图G (V, E),其中顶点V代表IP地址,边E代表两个IP地址之间的数据流。这里,为了简单起见,我们不考虑流的方向,因此图是无向的。图1(a)是我们所要构造加密应用流的图,其中顶点H, I, J, K代表4个IP地址,边表示IP对之间的流。我们知道,一条应用流包含了五元组信息,除了IP地址外,还包括端口号和传输层协议类型,然而,图中的顶点只包含IP地址信息。因此,具有相同IP对的流可能是多条流,我们对这些具有相同IP对的不同流进行了编号,两个IP之间编号的个数就是两个节点之间边的个数。如图所示,IP地址H和I之间有3条边,这3条边的编号为
,
和
,对应3种不同应用,这3种应用我们用不同颜色区分出来。IP对和应用之间的关系是:同一个IP对,可能包含了不同应用;一个应用也可能具有不同的IP对。
图中的边表示应用流,为了方便在后续的图嵌入过程中进行处理,我们需要对构造的原始图进行变换。我们把原始图记为
,
,
,把变换后的图记为
,
,
,其中v和e分别表示顶点集合V和边集合E中的顶点和边,
和
类似。
我们通过以下3个步骤,来对图进行变换。
1) 记录下图G中每条边的相邻边集合。设边
的相邻边构成了集合记为
,计算所有边
的相邻边集合
。边
和相邻边集合
的数学化表示为:
(2)
2) 把图G中的边
收缩成顶点,成为图
中的
,
的相邻边集合
就相应变成了关于
的相邻顶点集合
。具体做法是:把所有边
和邻居边集合
进行符号替换。
3) 根据图
中的顶点
和相邻顶点集合
,构造图
。具体做法是:画出所有顶点
,然后把
和
里的所有顶点用线条连接起来。其中,顶点
和相邻顶点集合
的数学化表示为:
(3)
我们应用以上方法对图进行变换,变换后的图如图所示。图1(a)中H和I之间的3条边
,
和
,经过变换后变成了图1(b)中的3个顶点
,
和
,b和c之间的两条边
和
变成了图1(b)中的2个顶点
和
。
在图1(a)中,我们用7种颜色来代表不同的加密应用。从图中可以看出,一种颜色对应了图中的多条边,这些边表示具有不同的IP对的同一种应用类型。在图1(b)中,同样有7种颜色,图1(a)中边的颜色对应图1(b)中顶点的颜色。一种应用对应图1(b)中多个顶点,在这些顶点中,有些是因为具有共同的服务器IP而连接在一起,而有些则不是(因为一种应用的服务器IP地址可能不唯一)。
2.3.2. 图嵌入过程
在前面的工作中,我们对图进行了变换,变换后的图中的顶点表示应用流,边表示应用流之间的连接关系。我们使用图嵌入技术 [18] [19] [20] 为这些顶点学习到低维的嵌入向量,如图2所示。具体过程是:首先通过随机游走算法遍历图中的顶点,得到顶点序列,这个顶点序列包含了当前顶点和相邻顶点的结构信息;然后使用自然语言处理中的词嵌入算法,为这些顶点序列生成词向量,也就是低维的嵌入向量。

Figure 2. The diagram embedding process for an encryption app
图2. 加密应用的图嵌入过程
随机游走是一个深度优先的图遍历算法。它的大致过程是这样的,给定访问的起始节点和序列长度,沿着边从一个顶点到另一个顶点进行游走,在所有下一个节点中,随机并且以相同概率选择下一个节点,直到访问(可重复访问已经访问过的节点)的节点序列长度和给定的长度相等。
(4)
其中,
表示第i次游走,
表示节点之间未归一化的转移概率,Z为归一化常数。
词嵌入 [20] [21] [22] [23] 是一种把维度为词表大小的高维向量空间嵌入到一个低维连续向量空间的自然语言处理技术。每个单词都由一个在实数域上固定长度的低维向量表示,此向量隐含着当前词语的特征。Word2vec词嵌入模型是一种无监督的浅层神经网络,它包含两个模型,skip-gram和CBOW (continuous bag of words)。在这里,图中节点可以看做是一个单词,随机游走的节点序列所组成的句子就是单词所在的上下文。不同的是,CBOW通过上下文来预测目标单词,skip-gram则通过目标单词预测上下文。它们都通过优化目标函数使概率最大化,得到的模型参数矩阵作为单词的词向量。我们使用CBOW来为加密应用流生成词嵌入向量。
给定一个句子
,其中T为句子的长度。CBOW通过最大化目标函数L,得到使目标函数最大化的权重参数矩阵。
(5)
(6)
(7)
其中k为上下文窗口大小,N为词典大小。
为句子里的一个单词,
为该单词的词向量,对应输入层到隐藏层的权重参数矩阵U,
为该单词对应隐藏层到输出层矩阵V的权重向量。
3. 多模态深度学习模型
我们的分类模型如图3所示。首先,我们把这两种特征(嵌入向量特征和包序列特征)合并成为加密应用的新特征;然后,我们使用多模态深度学习分类模型来同时学习这两种特征,使用卷积神经网络(CNN)处理图嵌入特征,使用门控循环单元(GRU)来处理包序列特征;最后,把这两种网络的输出合并输入到一个全连接层,再通过softmax函数输出一个概率向量。

Figure 3. Multimodal deep learning classification algorithm
图3. 多模态深度学习分类算法
4. 实验
4.1. 数据集
我们的流量数据来源于某大学网络的真实环境,这个数据集采集了2021年8月中10日到17日,总共7天的流量痕迹。为了能够更好地构建流量图,我们不能只收集一台主机网卡的流量,而是要收集不同主机的流量,并且这些不同主机网卡的流量也是在同一天产生的。我们对提取到的原始流量进行过滤,只保留SSL/TLS协议的流量,大概总共提取了89,375条流(648,780个包)。我们选取了诸如搜索,邮件,聊天,社交,购物,在线支付等应用服务的加密流量。表1列出了这些应用的名称以及它们的统计信息。

Table 1. Encrypts the app’s flow and packet information
表1. 加密应用的流和数据包信息
4.2. 实验设置
除了一些众所周知的英文缩写,如IP、CPU、FDA,所有的英文缩写在文中第一次出现时都应该给出其全称。文章标题中尽量避免使用生僻的英文缩写。
4.2.1. 评价标准
对于一条应用流,需要一个评价标准来判断它能够被正确分类以及错误分类的情况,因此我们使用两个有意义的指标来评估分类方法的性能:真阳性率和假阳性率(分别表示为TPR和FPR)。另外,我们还使用
(所有正确分类流在所有流中的比率),
(所有错误分类流在所有流中的比率)和FTF (TPR和FPR的分数组合)来衡量模型的整体表现 [24] [25] [26]。
和
分别是所有应用TPR和FPR的平均值,这个平均值不是简单的算术平均,还考虑了这些应用流在所有流中的占比。FTF这个指标是用来评价分类整体效果的。其中,TPR越大,FPR越小,这个值越大,表明分类效果越好。这3个指标定义如下:
(8)
(9)
(10)
其中
为第i个应用流的数目,C表示应用数量,N为总流量数,
和
分别为第i个应用的评价标准。
4.2.2. 对比方法
为了更好地评估本文所提出方法——基于图嵌入和多模态深度学习的分类算法(GeMDL)的优劣,我们选取了4种当前表现比较好的加密流量分类算法,进行对比实验。这4种算法如下:
一阶马尔可夫链指纹模型(FOM) [24]:FOM是最早的基于序列的加密流量识别方法,使用消息类型序列构建应用的一阶马尔可夫指纹。
二阶马尔可夫链指纹模型(SOB) [25] [26]:SOB是具有应用属性的二阶马尔可夫指纹的代表,比FOM具有更高的准确率。
基于多属性的马尔可夫概率指纹(MaMPF) [27]:MaMPF [11] 以消息类型的输出概率和长度块马尔可夫模型作为特征,使用随机森林分类器对加密流量进行分类。
流序列网络(FS-Net) [28]:FS-Net是基于深度学习的加密流量分类模型的代表,它的优点依然是挖掘了流的特征序列。
4.3. 对比实验
通过对比实验来评估我们的模型,实验结果如表2所示。

Table 2. Compare experimental results
表2. 对比实验结果
从实验结果不难看出,从表中我们可以得出如下结论:
1) GeMDL的表现要优于其他所有方法。我们在数据集上应用了FOM、SOB、MaMPF、FS-Net和GeMDL,结果如表2所示。GeMDL在
(0.944)、
(0.047)和FTF (0.903)中表现最好。
2) 相比于马尔可夫模型(FOM、SOB),GeMDL可以更好地对流序列进行建模。传统的基于马尔科夫的方法只能捕获一个流中相邻数据包的一到两个顺序信息,而GeMDL使用GRU网络对序列进行建模,具有保留整个流的上下文信息的优点。使用图嵌入方法来为主机的加密应用生成嵌入向量,仅仅只用到了加密的主机应用的连接关系,它的分类表现已经比FOM和SOB要好。这说明使用图嵌入技术为主机应用生成的词向量特征是
3) GeMDL取得了比分段模型MaMPF和FSNet更好的性能。FSNet仅将数据包长度序列作为其输入,MaMPF结合了数据包长度序列和消息类型序列来对加密流量进行分类。然而,MaMPF是一个分段模型,分类器无法指导从马尔可夫模型构建的特征。相反,FS-Net受益于端到端的模型,可以弥补这个缺点,特征学习可以由分类任务和重建机制来指导。从而FS-Net比MaMPF表现要好。由于我们的GeMDL不光使用数据包长度序列,同时还结合了应用本身的图嵌入特征,这个图嵌入特征反映了一个主机的不同应用之间的关系。因此,GeMDL的表现最好,并且还具有一定的抗干扰能力。
总之,如果只是考虑加密应用的流特征序列,它的分类性能有限。当攻击者对流量进行伪装,或者使流量特征模糊化,那么基于统计特征的流分类方法的准确率就会降低。然而,使用图嵌入特征的加密流量分类方法,攻击者是没办法修改其软件所产生流量的空间分布特性的。因此,基于图嵌入和多模态深度学习加密流量分类,不仅具有优秀的分类性能,还具有对网络攻击、对抗机器学习的抗干扰能力。
5. 总结
在本文中,我们设计了一种基于图嵌入和多模态深度学习的模型来对加密流量中的应用进行分类。该模型利用了加密应用的空间分布特征和序列特征,空间分布特征刻画了用户更偏好哪些应用,序列特征是加密应用的流统计特征。由于多模态深度学习的模型结合了这两种类型的特征进行训练,从而提高了分类性能。为了评估该模型的有效性,我们收集了真实网络环境的流量数据进行实验,对一些常用的应用进行分类。实验结果表明,本文所提出的方法在解决加密流量分类问题上具有出色的表现,并且优于最先进的方法。