一种面向网络管理设备的轻量级加密流量快速识别方法

未命名 09-20 阅读:79 评论:0


1.本发明涉及一种面向网络管理设备的轻量级加密流量快速识别方法,属于网络空间安全治理与监管、大数据环境下网络加密流量识别领域,具体应用于网络基础设施上的加密流量识别,为保障网络服务质量与网络空间安全提供基础。


背景技术:

2.伴随着网络安全意识的不断提高和对自身隐私保护需求的不断增长,互联网用户开始广泛使用加密网络通信工具或协议进行网络访问,以隐藏网络通信的行为与内容。来自firefox的研究报告显示,截止到2022年10月全球已有超过80%的互联网用户选择ssl/tls安全协议进行网络访问。此外,虚拟专用网络(virtual private network,vpn)和洋葱路由(the onion router,tor)也被用户广泛使用,以确保网络通信的匿名性。这些工具与协议在网络的不同层级使用加密算法来隐藏流量中的有效载荷和通信模式,给互联网服务提供商(internet service provider,isp)进行基于流量分类与识别的管理工作带来了严峻的挑战。当前,对网络加密流量准确识别能够为保障网络服务质量与网络空间安全提供坚实的基础。
3.随着深度学习在计算机视觉与自然语言处理领域的的广泛应用,以卷积神经网络(convolutional neural networks,cnn)、循环神经网络(recurrent neural networks,rnn)以及变压器(transformer)结构为主体的模型不断被提出。一些研究者将这些模型应用于网络加密流量识别领域,取得了优秀的成果。相比于传统基于机器学习的方法,基于深度学习的加密流量识别方法的优势在于能够从原始流量数据中自动提取特征,不依赖于专家知识与特征工程,因此普适性好、灵活度高,适用于复杂多变的网络环境。然而,目前主流基于深度学习的加密流量识别方法存在以下两点问题:(1)模型采用完整的ip数据包进行预处理,即以太网最大传输单元1500字节,导致预处理阶段时间开销巨大;(2)为追求高准确率采用复杂的神经网络堆叠结构,导致模型计算复杂度高,对网络管理设备的算力需求高,难以适配网络管理设备的实际硬件情况,导致无法真正地部署在isp的网络管理设备上。
4.针对上述问题,本发明提出了面向网络管理设备的轻量级加密流量快速识别方法,可以满足isp对网络加密流量识别方法准确率高,实时性强,配置要求低的需求。本方法通过设计基于ip数据包的低时间开销的预处理方法与低参数量的神经网络模型,很好地解决了预处理时间开销大与模型复杂度高的问题,进而实现对加密流量的快速、准确识别,为保障网络服务质量与网络空间安全提供有力的技术支撑。


技术实现要素:

5.本发明针对当前加密流量识别方法所存在的问题,提出了一种轻量级的加密流量快速识别方法,以满足在低配置的网络管理设备上实现快速、准确加密流量识别的需求。本方法分为设计基于ip数据包的加密流量预处理方法和设计低参数量的神经网络模型两个
主要步骤。
6.s1:设计基于ip数据包的加密流量预处理方法。该方法分为5个步骤:流量采集与划分、数据包过滤、数据包截断、数据包序列分词,数据集划分。
7.s11:流量采集与划分。本过程具体分为3个步骤:网络管理设备配置,网络流量采集、网络流量划分。
8.(1)网络管理设备配置:选定部署于出口的网络管理设备,在其上安装抓包软件、网络流量划分软件,并搭建相关框架以满足流量采集与分类的需求。
9.(2)网络流量采集:在网络管理设备上运行抓包软件,捕获目标网络环境下的加密网络流量,保存为原始流量文件。
10.(3)网络流量划分:按以太帧为单位对原始流量进行细粒度划分,将划分结果保存在独立的文件中。
11.s12:报文过滤。为减少无关报文以及报文中无关字段对分类模型的影响,对s11中获得的所有以太网帧进行过滤。如算法1所示,本过程具体分为4个步骤:
12.(1)以太网帧处理:为减少数据链路层无关信息对分类模型的影响,剔除以太网帧头部与尾部,保留ip数据包部分。
13.(2)ip地址掩码:为避免在流量数据有限的情况下ip地址对分类模型的干扰,将源ip地址与目的ip地址掩码为“0.0.0.0”。
14.(3)udp头部扩展:由于udp协议头部长度为8字节,而tcp协议头部长度为20字节,为保持长度一致性,用“0x00”将udp头部填充至20字节。
15.(4)无关报文删除:删除tcp连接建立与释放阶段的报文,以及dns报文。
[0016][0017]
s13:数据包截断。为了向神经网络模型提供形式与尺寸一致的输入,对s12中产生的所有ip数据包进行截断处理,本过程具体分为2个步骤:选定截断长度,截断字节序列。
[0018]
(1)选定截断长度:由于输入的ip数据包应包含ip头部、tcp/udp头部、tls头部的数据,因此截断长度t应不少于45字节。设定截断长度为t∈[45,100]字节,t作为超参数通过超参数选择算法搜索该范围确定。
[0019]
(2)截断字节序列:根据截断长度t的取值对过滤后获得的ip数据包进行截断。对长度大于t的ip数据包,直接截断;对长度小于t的ip数据包,用“0x00”将字节序列扩展至截断长度t。最终返回ip数据包字节序列。
[0020]
s14:数据包字节序列分词。对截断后的数据包字节序列进行转换。如算法2所示,本过程具体分为2个步骤:形式转换、字节分词。
[0021]
(1)形式转换:将截断后的字节序列转换为由16进制字符构成的字符串。
[0022]
(2)字节分词:以1个字节为单元进行分词,构造形如“ffef 00 1f

"的输入,即p={t1,t2,

,tn},其中"00"≤ti≤"ff",(i=1

n)为2个16进制字符构成的字符串,p为数据包字符串序列。
[0023][0024]
s15:数据集构建。针对所有经过s11~s14步骤处理后的数据,构建数据集。本过程具体分为3个步骤:数据欠采样,数据打标签,数据集划分。
[0025]
(1)数据欠采样:为克服数据不平衡问题带来的负面影响,从数据集每个类别中随机选择相同数量的ip数据包字符串作为样本,以保证数据集中各类别样本数量均衡。
[0026]
(2)数据打标签:对每一条ip数据包字符串序列p,用其原pcap文件所属的加密流量分类任务的类别对其进行标记。
[0027]
(3)数据集划分:将所有样本按照8:1:1的比例划分为训练集,验证集与测试集。
[0028]
s2:设计低参数量的神经网络模型。为降低模型复杂度,设计低参数量的神经网络模型。本过程分为4个主要步骤:设计数据包表征模块,设计分类模块,模型训练,模型测试。
[0029]
s21:设计数据包表征模块。对s1处理后的ip数据包字符串序列进行表征,转化为矩阵形式,作为分类模型的输入。本过程分为以下4个步骤:
[0030]
(1)设计uni-gram嵌入层:将经过s1处理后的ip数据包字符串p={t1,t2,

,tn}中的每一个ti作为一个单元,以此构建大小为256的uni-gram词表。依据词表对p进行one-hot编码,然后构造可训练词嵌入权重矩阵u
(1)
对p进行词嵌入。如公式(1)所示,其中d是嵌入的维度,为超参数将在s23中确定。
[0031]e(1)
=pu
(1)
ꢀꢀ
(1)
[0032]
(2)设计2-gram嵌入层:构造2-gram嵌入层来表征蕴含在p中的ip数据包结构与顺序信息,利用大小为2的滑动窗口对p进行变换,获得p
(2-gram)
={t1t2,t2t3…
,t
n-1
tn},以t
i-1
ti作为一个单元,构建大小为5000的2-gram词表。依据词表对p
(2-gram)
进行one-hot编码,然后构造可训练词嵌入权重矩阵u
(2)
对p
(2-gram)
进行词嵌入。如公式(2)所示,进行词嵌入。如公式(2)所示,
[0033]e(2)
=p
(2-gram)u(2)
ꢀꢀ
(2)
[0034]
(3)设计3-gram嵌入层:构造3-gram嵌入层来进一步表征蕴含在p中的ip数据包结构与顺序信息,利用大小为3的滑动窗口对p进行变换,获得p
(3-gram)
={t1t2t3,t2t3t4…
,t
n-2
t
n-1
tn},以t
i-1
tit
i+1
作为一个单元,构建大小为5000的3-gram词表。依据词表对p
(3-gram)
进行one-hot编码,然后构造可训练词嵌入权重矩阵u
(3)
对p
(3-gram)
进行词嵌入。如公式(3)所示,
[0035]e(3)
=p
(3-gram)u(3)
ꢀꢀ
(3)
[0036]
(4)融合计算数据包最终表征:联结e
(1)
,e
(2)
,e
(3)
获得后对矩阵e
p
的列元素求平均值,最终得到ip数据包字符串序列的矩阵表达如公式(4)和公式(5)所示。
[0037]ep
=[e
(1) e
(2) e
(3)
]
ꢀꢀ
(4)
[0038][0039]
s22:设计分类模块。构造基于3层感知器结构的分类模块。本过程具体分为以下4个步骤:
[0040]
(1)设计输入层:设置1层输入层,其神经元数量|x
p
|=3d,该层输入数据包表征模块的输出x
p
,并前向传播至隐藏层。
[0041]
(2)设计隐藏层:设置1层隐藏层,其神经元数量为h,h作为超参数会在s23中确定。隐藏层的计算过程如公式(6)所示,其中与分别为输入层与隐藏层连接的可训练权重与偏置项。本方法引入了批归一化(batch normalization,bn)技巧,同时选用gelu作为隐藏层的激活函数,gelu函数如公式(7)所示。
[0042]f(1)
=gelu(bn(w
(1)
·
x
p
+b
(1)
))
ꢀꢀ
(6)
[0043][0044]
(3)执行dropout操作:执行dropout以比例r随机失活部分隐藏层神经元,以缓解神经网络的过拟合现象,如公式(8)所示。
[0045]f(2)
=dropout(f
(1)
,r)
ꢀꢀ
(8)
[0046]
(4)设计输出层:设置1层输出层,其神经元数量为|y|。该层以dropout操作的输出作为输入,计算最终分类结果。如公式(9)~(11)所示,其中与为隐藏层与输出层连接的可训练权重与偏置项,|y|为s15中所明确的加密流量分类任务中的类别数。通过交叉熵损失函数评估样本真实标签y
p
与预测标签的距离loss,然后利用反向传播不断迭代模型,减少loss。
[0047]f(3)
=w
(2)
·f(2)
+b
(2)
ꢀꢀ
(9)
[0048][0049][0050]
s23:模型训练。利用s15中构建好的训练集训练s21与s22所设计的模型结构。本过程具体分为3个步骤:
[0051]
(1)利用超参数随机选择算法确定所有的超参数,待确定超参数的定义与指定的搜索范围如表1所示。
[0052]
(2)使用随机权重初始化算法对s21,s22中所有可训练权重与偏置项进行初始化。
[0053]
(3)按步骤(1)确定的b大小,分批次训练模型。在训练集上,重复训练n轮至模型loss稳定不再下降。
[0054]
表1超参数列表
[0055][0056]
s24:模型测试。采用s23训练出的模型在测试集进行指标测试。本过程具体分为3个步骤:模型权重保存与调用、测试指标选定、测试指标测量。
[0057]
(1)模型权重保存与调用:确定并存储s23中训练完成的模型权重文件。在测试时,通过接口实现对模型权重的调用。
[0058]
(2)测试指标选定:从加密流量的分类表现与执行效率两个方面考虑,选定测试指标。
[0059]
(3)测试指标测量:为测试集中验证模型训练的最终效果,测量步骤(2)中选定的各类指标的具体数值。
[0060]
本发明的优点
[0061]
本发明提出一种面向网络管理设备的轻量级加密流量快速识别方法。与已知方法相比,本方法的优点在于:
[0062]
(1)本方法设计一个基于ip数据包的加密流量预处理方法。首先,在步骤s11中本方法使用ip数据包作为原始流量pcap文件的划分单元与分类模型输入,该粒度能够减少预处理的时间开销。其次,在步骤s12中对报文进行过滤与选择,确保输入中包含更多有效信息以帮助模型进行分类。同时,在步骤s13和s14中有效控制模型输入长度,构造合适的输入形式,降低输入尺寸以减少预处理时间开销。最后,在步骤s15中,构建有效的数据集为神经网络模型训练提供可靠的基础。该预处理方法拥有较低时间开销和更细的处理粒度,适用于实时网络流量的识别。
[0063]
(2)本方法提出了一个低参数量的神经网络模型。首先,在步骤s21中通过三种词嵌入结构对步骤s1处理后的数据包进行表征,能够提取隐藏在数据包字节序列中的有效信息。其次,在步骤s22中构造了基于三层感知器的分类模型,整体结构简单,复杂度极低。该神经网络模型的设计大幅降低了模型参数量与计算复杂度,有利于在低配置的网络管理设备上实现对加密流量的快速、准确识别,为保障网络服务质量与网络空间安全提供基础。
附图说明
[0064]
图1轻量级加密流量快速识别方法总体示意图;
[0065]
图2报文过滤流程图;
[0066]
图3数据包截断流程图;
[0067]
图4低参数量的神经网络结构图;
[0068]
图5超参数选择流程图;
[0069]
图6神经网络训练流程图。
具体实施方式
[0070]
下面结合本发明附图,对实施例中的技术方案进行详细描述。显然,以下文字所描述的实施例仅仅是本发明方法的一个实施例,而不是全部实施例。基于以下实施例,本领域普通技术人员在未做出创造性劳动前提下所获得的所有其它实施例,均属于本发明保护的范围。实施例:参见图1-图5,一种面向网络管理设备的轻量级加密流量快速识别方法,本发明的实施过程分为2个主要步骤:设计基于ip数据包的低时间开销的加密流量预处理方法和设计低参数量的神经网络模型。
[0071]
s1:设计基于ip数据包的预处理方法。本实施过程包含5个步骤:流量采集与划分、报文过滤、数据包截断、数据包字节序列分词,数据集划分。
[0072]
s11:流量采集与划分。本实施过程具体分为3个步骤,网络管理设备配置,网络流量采集、网络流量划分。
[0073]
(1)网络管理设备配置:在本实施例中,本专利所提出的方法部署在一台常规网络管理设备平台上,其硬件配置为cpu intel core i5-7500,操作系统windows 10,ram 8gbddr4,存储500gb hdd。安装了抓包软件wireshark、流量划分软件splitcap和深度学习框架pytorch-cpu 1.9。
[0074]
(2)网络流量采集:本实施例在配置完毕的网络管理设备上部署wireshark作为加密流量采集工具,捕获目标网络环境下的加密网络流量,并存储为pcap格式的原始流量文件。
[0075]
(3)网络流量划分:本实施例在配置完毕的网络管理设备上部署splitcap作为流量划分工具。按以太网帧为单位对原始流量进行细粒度划分,划分步骤(1)中所捕获的原始流量文件,划分结果保存在独立的pcap文件中。网络流量划分命令如下所示,其中sourcepcappath为步骤(1)所采集的原始流量文件的存储路径,outpath为划分后单个以太网帧文件的目标存储地址。
[0076]
mono splitcap.exe-r sourcepcappath-s packets 1-o outpath
[0077]
s12:报文过滤。编写python脚本,调用python流量处理库scapy对s11中获得的所有以太网帧进行过滤,如图2所示,具体实施流程分为以下4个步骤:
[0078]
(1)以太网帧处理:调用get_ether_payload函数,获得以太网帧的负载部分,即完整的ip数据包packet,剔除以太网帧头部与尾部。
[0079]
(2)ip地址掩码:scapy提供了对流量报文的结构化访问形式,本实施例通过调用scapy提供的packet[ip].src和packet[ip].dst接口访问报文的源ip地址和目的ip地址,并掩码为“0.0.0.0”。
[0080]
(3)udp头部扩展:为保持传输层头部长度一致性,若报文传输层为udp协议,则调用packet[udp].header接口访问完整的udp头部,并在后方附加12字节的“0x00”将udp头部长度扩展至20字节。
[0081]
(4)无关报文删除:若报文的传输层为tcp协议,首先调用packet[tcp].flags接口获得tcp头部标志位信息,然后调用get_length(payload)函数获得该报文的tcp负载长度判断其长度是否为0,最终判断该报文是否属于tcp连接建立与释放阶段的报文,若是则删除,反之则保留进行下一步判断。若报文的协议类型为dns则直接删除该报文,反之则保留。
[0082]
s13:数据包截断。为了向神经网络模型提供形式与尺寸一致的输入,对s12中产生的所有ip数据包进行截断处理。如图3所示,具体实施流程分为以下2个步骤:
[0083]
(1)选定截断长度:在本实施例中,t作为超参数通过超参数选择算法在[45,100]范围内进行搜索。在s23中,执行随机超参数选择算法确定当t=50时,实施例获得最高的准确率,因此确定t取值为50。
[0084]
(2)截断字节序列:获取s12过滤后的数据包字节序列长度|packet|,按照截断距离t=50,|packet|≥t的数据包字节序列直接截断;|packet|<t的数据包字节序列,用“0x00”将字节序列扩展至截断长度t。
[0085]
s14:数据包字节序列分词。编写python脚本,将s13截断后的ip数据包原始数据转换为16进制字符串形式。具体实施流程分为以下2个步骤:
[0086]
(1)形式转换:调用binascii_hexlify与decode函数将数据包字节序列转换为ip数据包字符串序列形式。
[0087]
(2)字节分词:首先通过create_list函数构建长度为|packet|=t=50字节的空列表其次,将步骤(1)中转换生成的字符串中的每2个字符合并,即将形如“ff”的字符串作为一个元素存入最后,调用convert_list2string函数,将列表p转换为字符串序列p={t1,t2,

,tn}。
[0088]
s15:数据集构建。本实施例将iscx-vpn公开数据集作为一个具体的加密流量识别任务,将iscx-vpn中的所有数据都经过s11~s14步骤处理,并以此进一步构建模型训练所需要的数据集。具体实施流程分为以下3个步骤。
[0089]
(1)数据欠采样:iscx-vpn公开数据集的分类任务如表2所示,共有11种流量类别。本实施例使用随机欠采样方法,针对每一流量类别随机选取50000条ip数据包字符串样本,若某类样本数小于50000则选择该类别的所有样本,从而尽量保证数据集中各类别流量样本数量的平衡。
[0090]
(2)数据打标签:对s14处理后生成的每一条ip数据包字符串样本均采用其原pcap文件的所属的加密流量分类任务的类别作为标签,即根据表2为每一条ip数据包样本赋予0~10的唯一标签值。
[0091]
(3)数据集划分:将所有经过步骤(1)(2)处理后的样本集合,按照8:1:1的比例划分为训练集,验证集与测试集,在本实施例中三类数据集的具体样本数量如表3所示。
[0092]
表2 iscx-vpn公开数据集流量类别
[0093][0094]
表3预处理后各数据集样本数量
[0095][0096]
s2:设计低参数量的神经网络模型。本实施过程分为4个主要步骤:设计数据包表征模块,设计分类模块,模型训练,模型测试。本实施例利用pytorch深度学习框架构造神经网络模型,通过继承nn.module模块类,并在类的内部根据s2中的具体模块设计依次定义子模块与前向传播的计算方法,最终实现本实施例所设计的低参数量的神经网络模型。在构建模块类时,首先导入torch.nn库,然后继承nn.module的方法构建深度学习模型。整个模型的结构主要由两个方法组成:(1)通过_init_方法初始化整个模块,同时利用super方法来获取当前类的父类,然后调用父类的构造方法,初始化一些必要的变量和参数。(2)通过forward方法实现前向传播进行模型训练。
[0097]
s21:设计数据包表征模块。本实施例在获得s1预处理后的ip数据包字符串后,将构造数据包表征模块对其进行抽象表征,即将其转化为矩阵形式作为分类模型的输入。数据包表征模块的结构如图4所示,详细配置如表4所示,具体实施流程分为以下4个步骤:
[0098]
(1)设计uni-gram嵌入层:调用nn.embedding函数,构造uni-gram嵌入层中所需的可训练词嵌入权重矩阵u
(1)
,实现对ip数据包字符串p的词嵌入,获得其中超参数d=config.embed将在s23中明确。
[0099]
(2)设计2-gram嵌入层:首先,对p进行尺寸为2的滑动窗口变换构造p
(2-gram)
。然后,调用nn.embedding函数,构造2-gram嵌入层中所需的可训练词嵌入权重矩阵u
(2)
,实现对p
(2-gram)
的词嵌入,获得
[0100]
(3)设计3-gram嵌入层:首先,对p进行尺寸为3的滑动窗口变换构造p
(3-gram)
。然后,调用nn.embedding函数,构造3-gram嵌入层中所需的可训练词嵌入权重矩阵u
(3)
,实现对p
(3-gram)
的词嵌入,获得
[0101]
(4)融合计算数据包最终表征:调用torch.concat函数联结e
(1)
,e
(2)
,e
(3)
获得获得然后调用mean函数对e
p
的列元素求平均值,最终得到ip数据包字符串的矩阵表征
[0102]
s22:构造数据包分类模块。构造基于3层感知器结构的分类模块,如图4所示,具体实施流程分为以下4个步骤:
[0103]
(1)设计输入层:本实施例设计有1层输入层,其神经元数量|x
p
|=3d。将输入s21中产生的矩阵x
p
,并前向传播至隐藏层。
[0104]
(2)设计隐藏层:本实施例设计有1层隐藏层,其神经元数量为h。首先,调用nn.linear函数构造输入层至隐藏层的可训练权重与偏置项该层的神经元数量设置为h=config.hidden_size,作为超参数将在s23中明确。然后,调用nn.batchnnorm1d函数实现批归一化(bn),同时从torch.nn.functional库中导入f.gelu函数作为隐藏层的激活函数。
[0105]
(3)执行dropout操作:本实施例调用nn.dropout函数执行dropout操作,以随机失活比例r=config.dropout随机失活部分隐藏层神经元,r作为超参数将在s23中明确。
[0106]
(4)设计输出层:本实施例设计有1层输出层,其神经元数量为|y|=11。首先,调用nn.linear函数构造隐藏层至输出层的可训练权重与偏置项
[0107]
其中在s16中确定了本实施例中的识别类别数|y|=11。然后,在训练过程中调用softmax与cross_entropy函数用以评估样本真实标签y
p
与预测标签的距离loss,后利用反向传播不断迭代模型,不断减少loss直至其不再下降。
[0108]
表4低参数量的神经网络模型详细设计
[0109][0110]
s23:模型训练。利用s16中构建好的训练集根据s21与s22中所设计的模型结构与训练流程训练模型。具体实施流程分为以下3个步骤:
[0111]
(1)调用python的ray.tune接口实现超参数随机选择算法,以准确率作为搜索的基准指标。在准确率不上升时,明确所有的超参数取值。本实施例中所明确的超参数取值如表5所示。
[0112]
(2)调用xavier权重初始化函数对s21,s22中所有可训练权重与偏置项按照均匀分布进行初始化。
[0113]
(3)在训练集上,根据步骤(1)中所规定的b,以每批次204个样本(ip数据包字符串)的规模分批次训练模型,在训练集上重复训练24轮至模型loss稳定不再下降。
[0114]
表5超参数搜索结果
[0115][0116]
s24:模型测试。利用s23训练完成的模型使用测试集进行对应指标测试。具体实施流程分为以下3个步骤:
[0117]
(1)模型权重保存与调用:当s23模型训练完成后,调用torch.save(model,savepath)函数对权重文件进行存储,其中参数model为训练模型,savepath为目标存储地址。部署测试时,使用model.load_state_dict(torch,load(savepath))函数实现对保存后的权重文件的调用。
[0118]
(2)测试指标选定:本实施例实现了一种面向网络管理设备的轻量级加密流量快速识别方法,从分类表现与执行效率两个维度评估本实施例的最终效果。其中以准确率、精确率、召回率、f1评估本实施例的分类表现,以吞吐量、模型参数量、模型权重文件大小、cpu占用率、内存占用评估本实施例的执行效率。
[0119]
(3)测试指标测量:本实施例使用s16中构造的测试集进行测试。经过测试,各项指标值如表6所示,充分说明本实施例完全可以在网络管理设备上高效运行,适用于实时网络流量的识别,同时实现加密流量类型的准确判断。
[0120]
表6本实施例测试指标值
[0121][0122]
以上说明,仅仅为本发明方法的较佳实施例,本发明并不限于上述实施例,应当说明的是,任何熟悉本领域的技术人员在本说明书的教导下,所做出的所有等同替代、明显变形形式,均落在本说明书的实质范围之内,理应受到本发明的保护。

技术特征:
1.一种面向网络管理设备的轻量级加密流量快速识别方法,其特征在于,所述识别方法包括以下步骤:s1:设计基于ip数据包的加密流量预处理;s2:设计低参数量的神经网络模型;其中,s1:设计基于ip数据包的加密流量预处理,具体如下:s11:流量采集与划分;s12:报文过滤;s13:数据包截断;s14:数据包字节序列分词;s15:数据集构建,其中,s2:设计低参数量的神经网络模型,具体如下:s21:设计数据包表征模块,s22:设计分类模块,s23:模型训练,s24:模型测试。2.根据权利要求1所述的面向网络管理设备的轻量级加密流量快速识别方法,其特征在于,s11:流量采集与划分具体分为3个步骤:网络管理设备配置,网络流量采集、网络流量划分;(1)网络管理设备配置:选定部署于出口的网络管理设备,在其上安装抓包软件、网络流量划分软件,并搭建相关框架以满足流量采集与分类的需求;(2)网络流量采集:在网络管理设备上运行抓包软件,捕获目标网络环境下的加密网络流量,保存为原始流量文件;(3)网络流量划分:按以太帧为单位对原始流量进行细粒度划分,将划分结果保存在独立的文件中。3.根据权利要求2所述的面向网络管理设备的轻量级加密流量快速识别方法,其特征在于,s12:报文过滤,具体分为4个步骤:(1)以太网帧处理:为减少数据链路层无关信息对分类模型的影响,剔除以太网帧头部与尾部,保留ip数据包部分;(2)ip地址掩码:为避免在流量数据有限的情况下ip地址对分类模型的干扰,将源ip地址与目的ip地址掩码为“0.0.0.0”;(3)udp头部扩展:由于udp协议头部长度为8字节,而tcp协议头部长度为20字节,为保持长度一致性,用“0x00”将udp头部填充至20字节;(4)无关报文删除:删除tcp连接建立与释放阶段的报文,以及dns报文。4.根据权利要求3所述的面向网络管理设备的轻量级加密流量快速识别方法,其特征在于,s13:数据包截断具体分为2个步骤:选定截断长度,截断字节序列,(1)选定截断长度:由于输入的ip数据包应包含ip头部、tcp/udp头部、tls头部的数据,因此截断长度t应不少于45字节,设定截断长度为t∈[45,100]字节,t作为超参数通过超参数选择算法搜索该范围确定,(2)截断字节序列:根据截断长度t的取值对过滤后获得的ip数据包进行截断,对长度
大于t的ip数据包,直接截断;对长度小于t的ip数据包,用“0x00”将字节序列扩展至截断长度t,最终返回ip数据包字节序列。5.根据权利要求4所述的面向网络管理设备的轻量级加密流量快速识别方法,其特征在于,s14:数据包字节序列分词,具体分为2个步骤:形式转换、字节分词,(1)形式转换:将截断后的字节序列转换为由16进制字符构成的字符串,(2)字节分词:以1个字节为单元进行分词,构造形如“ffef 00 1f
…″
的输入,即p={t1,t2,

,t
n
},其中

00

≤t
i


ff

,(i=1

n)为2个16进制字符构成的字符串,p为数据包字符串序列。6.根据权利要求5所述的面向网络管理设备的轻量级加密流量快速识别方法,其特征在于,s15:数据集构建,具体分为3个步骤:数据欠采样,数据打标签,数据集划分;(1)数据欠采样:为克服数据不平衡问题带来的负面影响,从数据集每个类别中随机选择相同数量的ip数据包字符串作为样本,以保证数据集中各类别样本数量均衡;(2)数据打标签:对每一条ip数据包字符串序列p,用其原pcap文件所属的加密流量分类任务的类别对其进行标记;(3)数据集划分:将所有样本按照8:1:1的比例划分为训练集,验证集与测试集。7.根据权利要求6所述的面向网络管理设备的轻量级加密流量快速识别方法,其特征在于,s21:设计数据包表征模块,对s1处理后的ip数据包字符串序列进行表征,转化为矩阵形式,作为分类模型的输入,具体分为以下4个步骤:(1)设计uni-gram嵌入层:将经过s1处理后的ip数据包字符串p={t1,t2,

,t
n
}中的每一个t
i
作为一个单元,以此构建大小为256的uni-gram词表,依据词表对p进行one-hot编码,然后构造可训练词嵌入权重矩阵u
(1)
对p进行词嵌入,如公式(1)所示,其中d是嵌入的维度,为超参数将在s23中确定,e
(1)
=pu
(1)
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
(1)(2)设计2-gram嵌入层:构造2-gram嵌入层来表征蕴含在p中的ip数据包结构与顺序信息,利用大小为2的滑动窗口对p进行变换,获得p
(2-gram)
={t1t2,t2t3…
,t
n-1
t
n
},以t
i-1
t
i
作为一个单元,构建大小为5000的2-gram词表,依据词表对p
(2-gram)
进行one-hot编码,然后构造可训练词嵌入权重矩阵u
(2)
对p
(2-gram)
进行词嵌入,如公式(2)所示,进行词嵌入,如公式(2)所示,e
(2)
=p
(2-gram)
u
(2)
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
(2)(3)设计3-gram嵌入层:构造3-gram嵌入层来进一步表征蕴含在p中的ip数据包结构与顺序信息,利用大小为3的滑动窗口对p进行变换,获得p
(3-gram)
={t1t2t3,t2t3t4…
,t
n-2
t
n-1
t
n
},以t
i-1
t
i
t
i+1
作为一个单元,构建大小为5000的3-gram词表,依据词表对p
(3-gram)
进行one-hot编码,然后构造可训练词嵌入权重矩阵u
(3)
对p
(3-gram)
进行词嵌入,如公式(3)所示,e
(3)
=p
(3-gram)
u
(3)
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
(3)(4)融合计算数据包最终表征:联结e
(1)
,e
(2)
,e
(3)
获得后对矩阵e
p
的列元素求平均值,最终得到ip数据包字符串序列的矩阵表达如公式(4)和公式(5)所示,e
p
=[e
(1)
e
(2)
e
(3)
]
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
(4)
8.根据权利要求7所述的面向网络管理设备的轻量级加密流量快速识别方法,其特征在于,s22:设计分类模块,构造基于3层感知器结构的分类模块,具体分为以下4个步骤:(1)设计输入层:设置1层输入层,其神经元数量|x
p
|=3d,该层输入数据包表征模块的输出x
p
,并前向传播至隐藏层;(2)设计隐藏层:设置1层隐藏层,其神经元数量为h,h作为超参数会在s23中确定,隐藏层的计算过程如公式(6)所示,其中与分别为输入层与隐藏层连接的可训练权重与偏置项,引入了批归一化(batch normalization,bn)技巧,同时选用gelu作为隐藏层的激活函数,gelu函数如公式(7)所示,f
(1)
=gelu(bn(w
(1)
·
x
p
+b
(1)
))
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
(6)(3)执行dropout操作:执行dropout以比例r随机失活部分隐藏层神经元,以缓解神经网络的过拟合现象,如公式(8)所示,f
(2)
=dropout(f
(1)
,r)
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
(8)(4)设计输出层:设置1层输出层,其神经元数量为|y|,该层以dropout操作的输出作为输入,计算最终分类结果,如公式(9)~(11)所示,其中与为隐藏层与输出层连接的可训练权重与偏置项,|y|为s15中所明确的加密流量分类任务中的类别数,通过交叉熵损失函数评估样本真实标签y
p
与预测标签的距离loss,然后利用反向传播不断迭代模型,减少loss,f
(3)
=w
(2)
·
f
(2)
+b
(2)
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
(9)(9)9.根据权利要求8所述的面向网络管理设备的轻量级加密流量快速识别方法,其特征在于,s23:模型训练,利用s15中构建好的训练集训练s21与s22所设计的模型结构,具体分为3个步骤:(1)利用超参数随机选择算法确定所有的超参数,待确定超参数的定义与指定的搜索范围如表1所示;(2)使用随机权重初始化算法对s21,s22中所有可训练权重与偏置项进行初始化;(3)按步骤(1)确定的b大小,分批次训练模型,在训练集上,重复训练n轮至模型loss稳定不再下降。表1超参数列表
10.根据权利要求9所述的面向网络管理设备的轻量级加密流量快速识别方法,其特征在于,s24:模型测试,采用s23训练出的模型在测试集进行指标测试,具体分为3个步骤:模型权重保存与调用、测试指标选定、测试指标测量;(1)模型权重保存与调用:确定并存储s23中训练完成的模型权重文件,在测试时,通过接口实现对模型权重的调用,(2)测试指标选定:从加密流量的分类表现与执行效率两个方面考虑,选定测试指标,(3)测试指标测量:为测试集中验证模型训练的最终效果,测量步骤(2)中选定的各类指标的具体数值。

技术总结
本发明公开了一种面向网络管理设备的轻量级加密流量快速识别方法。本方法包含一个基于IP数据包的加密流量预处理方法与一个低参数量的神经网络模型。基于IP数据包的加密流量预处理方法主要包括流量采集与划分、报文过滤、数据包截断、数据包字节序列分词、数据集划分5个步骤。低参数量的神经网络模型主要包括2个模块,一是数据包表征模块用于对预处理后的IP数据包进行有效表征,二是分类模块用于对数据包表征进行准确地分类识别。本方法的模型参数量少,时间开销较低,适用于网络流量的实时监测;在不依赖高性能网络管理设备的前提下能够准确识别网络加密流量,为实现网络管理,增强用户体验提供基础。强用户体验提供基础。强用户体验提供基础。


技术研发人员:曹捷 许昱玮 范心宇 梁志远 李江峰 程光
受保护的技术使用者:东南大学
技术研发日:2023.06.21
技术公布日:2023/9/19
版权声明

本文仅代表作者观点,不代表航家之家立场。
本文系作者授权航家号发表,未经原创作者书面授权,任何单位或个人不得引用、复制、转载、摘编、链接或以其他任何方式复制发表。任何单位或个人在获得书面授权使用航空之家内容时,须注明作者及来源 “航空之家”。如非法使用航空之家的部分或全部内容的,航空之家将依法追究其法律责任。(航空之家官方QQ:2926969996)

航空之家 https://www.aerohome.com.cn/

飞机超市 https://mall.aerohome.com.cn/

航空资讯 https://news.aerohome.com.cn/

分享:

扫一扫在手机阅读、分享本文

相关推荐