基于深度学习的I2P流量识别方法及系统

文档序号:25290039发布日期:2021-06-01 17:41阅读:229来源:国知局
基于深度学习的I2P流量识别方法及系统

本发明涉及网络通信中报文识别领域,并特别涉及一种基于深度学习的i2p流量识别方法及系统。



背景技术:

近年来,随着互联网技术飞速发展,海量信息数据通过互联网进行传输。匿名通信技术作为保护用户隐私与个人信息数据安全的工具,得到了广泛关注。匿名通信技术通常利用内容加密、多跳转发、流量混淆等手段实现通信数据和通信关系的匿名化,保护通信双方的通信关系与通信内容。

i2p作为当前主流的匿名通信工具,依靠大蒜路由技术实现通信的匿名性。使用大蒜路由技术的通信双方均使用多跳单向加密隧道进行通信,通信隧道中的每一跳节点只掌握相邻节点的信息,无法获知通信双方的通信关系。目前,i2p报文识别算法多为基于i2p流量包特征、流特征匹配的识别算法。例如《基于i2p的匿名通信协议分析与流量检测的研究》采用基于载荷长度熵过滤及载荷长度序列过滤的方法来过滤未知流量并识别i2p流量。该方法的核心思路是提取i2p会话中流长度熵特征及载荷序列特征,利用贝叶斯网络统计学习算法来识别i2p报文。其中,载荷序列特征为i2p会话密钥交互过程中的流量上下行关系,以↑表示上行网络数据长度,↓表示下行网络数据长度,i2p会话建立过程中会出现“↑288↓304↑448↓48”、“↑288↓304↑464↓48”等固定载荷序列。流长度熵特征的计算方法主要有两步:(1)统计当前会话中各数据包的报文长度,按<报文长度,该长度出现次数>进行聚合,之后计算某报文长度出现次数占数据包总数的比率p(ai),例如,a会话中共含20个数据包,长度为334的数据包出现次数为3,则p(a334)=15%,形成当前会话的数据包长度分布;(2)计算会话a与各已识别会话的数据包长度分布的相对熵,公式如下:

若相对熵超过阈值,则标记该会话为i2p会话。

深度学习作为人工智能的核心技术,近年来在计算机视觉、自然语言处理等领域取得巨大成功。基于深度学习的图像识别系统也得到了广泛应用,利用深度学习技术识别流量“图像”的想法也得到了广泛关注。例如采用lenet深度学习网络识别tor网络报文,通过改进lenet神经网络结构,并根据tor网络通信特点提出源ip地址、目的ip地址、源端口、目的端口、传输层协议的数据包五元组通信特征来完成tor流量的识别。

现有方案多基于传统统计机器学习方法,该类方法往往伴随着繁琐、复杂的数据预处理及人工筛选特征过程,在解决实际流量识别问题时,尤其是构建问题特征阶段,需要研究人员对该问题具有较为充分的认识。而基于深度学习的流量识别算法在保证识别准确度的前提下,对原始流量的预处理较少,没有繁琐的特征提取过程,极大的减少了特征工程阶段的工作量。



技术实现要素:

本发明的目的是简化i2p流量识别过程中繁琐的数据预处理过程与人工筛选特征的过程,提出了一种基于深度学习的i2p流量识别方法,其中包括:

步骤1、获取已标记i2p流量类别标签的流量文件作为训练数据,提取该训练数据中数据包的报文字段,得到五元组信息,该五元组信息由该数据包的源ip地址、目的ip地址、源数据端口、目的数据端口及载荷长度组成;

步骤2、判断该数据包中运输层的协议类型是否为tcp协议,若是,则按tcp流对数据包的载荷长度进行聚合,否则按由源ip地址、源数据端口、目的ip地址和目的数据端口组成的四元组对数据包的载荷长度进行聚合;

步骤3、将聚合结果进行灰度图像编码,得到灰度图像并输入至包括卷积神经网络和二分类网络的i2p流量识别模型,得到训练数据的流量识别结果,根据已标记的该i2p流量类别标签和该流量识别结果计算该i2p流量识别模型的损失函数,若损失函数结果高于设定阈值,则进行反向传播更新该i2p流量识别模型内参数,再次执行步骤3,直到损失函数结果低于该设定阈值,保存当前i2p流量识别模型作为最终识别模型;

步骤4、将待识别的流量文件输入该最终识别模型,得到i2p流量识别结果。

所述的基于深度学习的i2p流量识别方法,其中该步骤4包括利用网络抓包工具对网卡进行流量抓包,得到该待识别的流量文件。

所述的基于深度学习的i2p流量识别方法,其中该流量文件为pcap格式。

所述的基于深度学习的i2p流量识别方法,其中该损失函数为二分类交叉熵损失函数。

所述的基于深度学习的i2p流量识别方法,其中该步骤3中灰度图像具体为:

该灰度图像的前8字节为运输层协议标志,之后的12字节为源ip地址、源数据端口、目的ip地址和目的数据端口,再之后的4字节为该载荷长度,再之后的1000字节为数据流中的前500个报文段的长度信息。

本发明还提出了一种基于深度学习的i2p流量识别系统,其中包括:

模块1,用于获取已标记i2p流量类别标签的流量文件作为训练数据,提取该训练数据中数据包的报文字段,得到五元组信息,该五元组信息由该数据包的源ip地址、目的ip地址、源数据端口、目的数据端口及载荷长度组成;

模块2,用于判断该数据包中运输层的协议类型是否为tcp协议,若是,则按tcp流对数据包的载荷长度进行聚合,否则按由源ip地址、源数据端口、目的ip地址和目的数据端口组成的四元组对数据包的载荷长度进行聚合;

模块3,用于将聚合结果进行灰度图像编码,得到灰度图像并输入至包括卷积神经网络和二分类网络的i2p流量识别模型,得到训练数据的流量识别结果,根据已标记的该i2p流量类别标签和该流量识别结果计算该i2p流量识别模型的损失函数,若损失函数结果高于设定阈值,则进行反向传播更新该i2p流量识别模型内参数,再次执行模块3,直到损失函数结果低于该设定阈值,保存当前i2p流量识别模型作为最终识别模型;

模块4,用于将待识别的流量文件输入该最终识别模型,得到i2p流量识别结果。

所述的基于深度学习的i2p流量识别系统,其中该模块4包括利用网络抓包工具对网卡进行流量抓包,得到该待识别的流量文件。

所述的基于深度学习的i2p流量识别系统,其中该流量文件为pcap格式。

所述的基于深度学习的i2p流量识别系统,其中该损失函数为二分类交叉熵损失函数。

所述的基于深度学习的i2p流量识别系统,其中该模块3中灰度图像具体为:

该灰度图像的前8字节为运输层协议标志,之后的12字节为源ip地址、源数据端口、目的ip地址和目的数据端口,再之后的4字节为该载荷长度,再之后的1000字节为数据流中的前500个报文段的长度信息。

由以上方案可知,本发明的优点在于:

本发明将各流量信息转换为相应的灰度图像,为之后利用深度学习卷积神经网络进行流量识别提供模型输入,以实现快速识别i2p流量的目标。在保证算法准确率的条件下,优化现有i2p流量识别算法的数据预处理流程,减少了现有方法在特征工程阶段的工作量。

附图说明

图1为本发明流程图。

具体实施方式

发明人在进行i2p流量识别算法研究时,发现可以通过基于深度学习cnn(卷积神经网络)模型优化现有i2p流量识别方法中存在的繁琐的数据预处理过程与人工筛选特征的过程,具体发明过程包括:将i2p会话流量转化为i2p流量灰度图像的流量信息的编码方式,以及基于卷积深度学习网络lenet的i2p流量识别模型,并针对流量识别任务进行模型改造与调优,确保了改进后的lenet在i2p流量识别任务上的可用性。

对i2p流量进行编码。利用网络抓包工具对网卡进行流量抓包,或者某些研究机构会定期开放流量包数据集供研究人员使用,以得到流量报文,将流量报文编码为灰度图像:通过对流量信息按字节(byte)进行编码,得到各会话流量的灰度图像,具体编码方法如下:

<1>提取各数据包中网络层源ip地址、目的ip地址、运输层的协议类型、源数据端口、目的数据端口及载荷长度,构建基础信息五元组(源ip地址-源数据端口-目的ip地址-目的数据端口-载荷长度);

<2>将数据包按tcp流(flow)进行划分,并计算本flow中载荷的总长度(以byte为单位),同时提取该flow前500个tcp报文段中的载荷长度信息(若该flow中报文段数量不足,通过填充0补齐),若数据包运输层采用非tcp协议,按(源ip-源端口-目的ip-目的端口)四元组进行组织,并将每个四元组下的载荷长度信息分别进行统计;

<3>灰度图像编码:灰度图像的前8字节为运输层协议标志,之后的12字节为flow的源ip(4字节)、源端口(2字节)、目的ip(4字节)、目的端口(2字节),再之后的4字节为flow载荷总长度,之后的1000字节为flow中的前500个tcp报文段的长度信息,其中,每个报文段长度以byte为单位,占2byte的空间大小。最终,编码形成大小为32*32的灰度图像。

(2)构建解决i2p流量识别问题的cnn网络:cnn网络模型采用针对i2p流量识别问题改进lenet网络模型,其中,网络中全连接层中节点改为20,输出层节点数改为2,代表某流量是否为i2p流量。网络结构如下表1所示:

表1针对i2p流量识别问题改进的lenet网络

为让本发明的上述特征和效果能阐述的更明确易懂,下文特举实施例,并配合说明书附图作详细说明如下。

软件执行流程分为两步,其中第一步为模型训练,共分为两小步(如图1所示):

(1)数据预处理:解析原始pcap格式流量文件,提取是pcap格式流量文件中数据包的报文字段信息,构建基础信息五元组,对于tcp报文,按tcp流对数据包进行聚合,对于其他运输层报文。则按(源ip-源端口-目的ip-目的端口)信息对数据包进行聚合,最后将聚合后的数据进行灰度图像编码;

(2)训练改进过的lenet网络,当模型二分类交叉熵损失函数loss低于设定阈值α后,停止训练。

软件执行流程的第二步为获取未知流量的判别结果,具体的执行方式为:将待测pcap格式流量文件输入训练完成的改进lenet网络,获取流量识别结果,该流量识别结果可为“是i2p流量”或“不是i2p流量”。

以下为与上述方法实施例对应的系统实施例,本实施方式可与上述实施方式互相配合实施。上述实施方式中提到的相关技术细节在本实施方式中依然有效,为了减少重复,这里不再赘述。相应地,本实施方式中提到的相关技术细节也可应用在上述实施方式中。

本发明还提出了一种基于深度学习的i2p流量识别系统,其中包括:

模块1,用于获取已标记i2p流量类别标签的流量文件作为训练数据,提取该训练数据中数据包的报文字段,得到五元组信息,该五元组信息由该数据包的源ip地址、目的ip地址、源数据端口、目的数据端口及载荷长度组成;

模块2,用于判断该数据包中运输层的协议类型是否为tcp协议,若是,则按tcp流对数据包的载荷长度进行聚合,否则按由源ip地址、源数据端口、目的ip地址和目的数据端口组成的四元组对数据包的载荷长度进行聚合;

模块3,用于将聚合结果进行灰度图像编码,得到灰度图像并输入至包括卷积神经网络和二分类网络的i2p流量识别模型,得到训练数据的流量识别结果,根据已标记的该i2p流量类别标签和该流量识别结果计算该i2p流量识别模型的损失函数,若损失函数结果高于设定阈值,则进行反向传播更新该i2p流量识别模型内参数,再次执行模块3,直到损失函数结果低于该设定阈值,保存当前i2p流量识别模型作为最终识别模型;

模块4,用于将待识别的流量文件输入该最终识别模型,得到i2p流量识别结果。

所述的基于深度学习的i2p流量识别系统,其中该模块4包括利用网络抓包工具对网卡进行流量抓包,得到该待识别的流量文件。

所述的基于深度学习的i2p流量识别系统,其中该流量文件为pcap格式。

所述的基于深度学习的i2p流量识别系统,其中该损失函数为二分类交叉熵损失函数。

所述的基于深度学习的i2p流量识别系统,其中该模块3中灰度图像具体为:

该灰度图像的前8字节为运输层协议标志,之后的12字节为源ip地址、源数据端口、目的ip地址和目的数据端口,再之后的4字节为该载荷长度,再之后的1000字节为数据流中的前500个报文段的长度信息。

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