一种基于关系网络的小样本应用层协议识别方法与流程

文档序号:37221732发布日期:2024-03-05 15:19阅读:21来源:国知局
一种基于关系网络的小样本应用层协议识别方法与流程

本发明属于网络安全领域,具体涉及一种基于关系网络的小样本应用层协议识别方法。


背景技术:

1、协议识别是指从网络流量中提取协议数据,进而提取协议数据中富有区分度的关键特征,基于所提取关键特征区分不同类别的协议数据。利用协议识别技术能够及时准确分析网络所捕获网络流量的组成成分,为提升网络管理质量和保证网络安全提供坚实基础。

2、现有协议识别方法主要包括基于端口、基于深度包检测、基于机器学习和基于深度学习四类。由于动态端口和端口伪装等技术的广泛使用,基于端口号的协议识别方法已经失效。基于深度包检测的协议识别技术通过提取协议数据的特征字符串,与预先建立的特征库进行匹配来区分不同协议,该方法存在计算较大、特征库更新维护困难和无法识别加密协议的问题。基于机器学习的协议识别方法通过收集协议数据的统计特征,例如某条网络流内数据包的数目,然后利用特征工程去掉部分冗余特征,得到最优特征子集,最后利用机器学习模型基于最优特征子集识别不同协议,该方法存在需要丰富的经验知识来为所捕获网络流量设计合理的统计特征等问题。基于深度学习的协议识别方法利用深度学习模型自动挖掘协议数据的特征并分类,与机器学习模型等浅层模型不同,深度学习模型所挖掘的协议数据特征更具区分度和代表性,是目前协议识别领域的研究热点。

3、当标注好的协议数据数量较少时,基于深度学习的协议识别模型在训练过程中将会出现过拟合,导致协议识别准确率极低。但是收集能够反映当前网络发展现状的协议数据集并进行有效标注的难度较大,并且在网络攻击发现初期无法收集足够数量的协议数据。因此,研究如何基于少量的协议数据准确识别不同协议具有十分重要的意义。


技术实现思路

1、(一)要解决的技术问题

2、本发明旨在解决现有协议识别方法需要大量标注好的协议数据对模型进行训练,当标注好的协议数据数量较少时,无法对模型进行有效训练,导致协议识别准确率较低的问题。

3、(二)技术方案

4、为了解决上述技术问题,本发明提供了一种基于关系网络的小样本应用层协议识别方法,包括以下步骤:

5、(1)采集原始网络流量,利用wireshark、tcpdump等工具捕获原始网络流量,并利用含端口号的信息为每一个数据包打上协议标签。

6、(2)对原始网络流量进行预处理,包括步骤:

7、(2-1)对原始网络流量进行清洗,剔除与协议识别无关的数据包,具体是首先剔除非ip网络流量,然后剔除tcp和udp之外的网络流量;

8、(2-2)对原始网络流量进行流重组,将多个数据包重组为有序网络流,并进一步剔除tcp syn和tcp fin等与协议识别无关的数据包;

9、(2-3)对重组后的网络流进行切分,截取网络流的前n个字节用于协议识别,网络流长度超过固定长度n则舍弃多余部分,不足则在末尾用零填充;

10、(2-4)对切分后的网络流进行归一化处理:为消除量纲不同带来的不良影响,加快模型收敛速度,需要对网络流进行归一化处理,具体步骤为:对于每一条网络流,将网络流每个字节转化为十进制数值并除以256,得到一个一维向量,该向量中每个分量的取值范围为[0,1);由于本发明要求输入为二维矩阵,因此将得到一维向量进一步转化为二维矩阵。

11、(2-5)给每一条网络流设置协议标签。

12、(3)基于预处理后得到的网络流量构建训练协议识别模型所需任务集,包括步骤:

13、(3-1)根据样本数量多少,将预处理后得到的网络流量划分为大量类协议集dlarge和少量类协议集dsmall;

14、(3-2)从大量类协议数据集dlarge中随机抽取n类协议,每类协议随机抽取(k+m)个样本,前k个样本加入当前子任务ti的支持集,剩余m个样本加入当前子任务ti的查询集;

15、(3-3)重复步骤(3-2),从大量类协议数据集dlarge构建元训练集ttrain={t1,t2,…,ta},a为子任务的个数。

16、(3-4)和步骤(3-2)~(3-3)类似,从少量类协议数据集dsmall中抽取样本,构建元测试集ttest={t1,t2,…,tb},b为子任务的个数,元训练集、元测试集构成所述任务集。

17、(4)分类模型构建,即,将任务集输入神经网络,得到训练成熟的小样本协议识别模型,包括步骤:

18、(4-1)每次从元训练集ttrain随机抽取多个子任务,选取均方误差函数(meansquare error,mse)作为协议识别模型的损失函数。

19、(4-2)依次利用抽取的子任务训练协议识别模型(神经网络),将每个子任务的支持集样本输入协议识别模型,计算相应损失函数值,基于该损失函数值利用梯度下降算法调整协议识别模型的参数。进一步地,将当前子任务的查询集样本输入协议识别模型,计算相应损失函数值。

20、(4-3)依次重复执行步骤(4-2),直至抽取的所有子任务的支持集样本均用于模型训练,该次训练任务结束,将该批次所有查询集样本对应损失函数值进行累加,根据累加后的损失函数值调整协议识别模型的参数。

21、(4-4)依次重复执行步骤(4-1)~(4-3),直至协议识别模型收敛。

22、(4-5)利用元测试集ttest对上述得到的协议识别模型进行微调,得到训练成熟的小样本协议识别模型。

23、(5)未知协议识别,即,将预处理后得到的网络流量输入到小样本协议识别模型,输出预测协议类别(预测目标类型),包括步骤:

24、(5-1)将数据集(包括dlarge和dsmall)中所有样本作为支持集,首先,输入训练成熟的小样本协议识别模型的特征提取模块后得到对应样本特征,计算每类协议所有样本对应特征的对应各分量累加后除以该类协议样本总数得到的算数平均值,将其作为该类协议的代表特征。

25、(5-2)利用所得小样本协议识别模型的特征提取模块提取待测样本的特征,与代表每类协议的特征分别进行拼接,将拼接后的数据输入小样本协议识别模型的相似度计算模块进行相似度计算,自动计算出待测样本与各类协议的相似度,返回相似度最高对应的协议类别为预测输出结果;如果待测样本与任一类协议的相似度均不大于某一阈值,则将测样本识别为未知协议。

26、(三)有益效果

27、本发明的方法包括以下步骤:网络流量采集、数据预处理、任务集构建、分类模型构建和未知协议识别。本发明首先采集原始网络流,其次对原始网络流进行预处理,包括网络流量清洗、网络流重组与切分、协议数据归一化和协议标签标注等子步骤,利用网络流量清洗剔除原始网络流量中的冗余数据包,利用流重组将原始网络流量中多个数据包转化为有序网络流,通过流切分和协议数据归一化将网络流转化为符合协议识别模型输入格式要求的二维矩阵,进而为网络流标注好协议类别。由于小样本协议识别问题属于“n-way k-shot”分类问题,因此接着构建训练协议识别模型所需任务集。然后将任务集输入协议识别模型,利用任务集训练并调整协议识别模型参数,得到成熟的小样本协议识别模型。最后将待测网络流量样本输入小样本协议识别模型,输出预测协议类别。本发明能够更好地识别小样本应用层协议。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1