首页> 中国专利> 一种基于双通道卷积神经网络的加密流量分类方法

一种基于双通道卷积神经网络的加密流量分类方法

摘要

本发明公开了一种基于双通道卷积神经网络的加密流量分类方法,基于网络数据包包头属性和基于时间分段的低阶统计特征两个维度对网络流进行表示,然后通过双通道卷积神经网络,同时从两种网络流表示中学习加密流量特征,实现对加密流量上承载的应用类型进行分类。本发明在不需要专家知识介入的情况下,充分利用数据包头属性和流量统计特征在局部和整体上的优势,自动从两个维度学习流量特征,提高加密网络流量分类精度;且仅利用数据包头部中的字段信息,泛化能力强,不会违背数据的机密性和隐私保护策略。

著录项

  • 公开/公告号CN110197234A

    专利类型发明专利

  • 公开/公告日2019-09-03

    原文格式PDF

  • 申请/专利权人 四川大学;

    申请/专利号CN201910509860.0

  • 申请日2019-06-13

  • 分类号G06K9/62(20060101);G06N3/04(20060101);H04L29/06(20060101);

  • 代理机构51284 成都禾创知家知识产权代理有限公司;

  • 代理人裴娟

  • 地址 610065 四川省成都市武侯区一环路南一段24号

  • 入库时间 2024-02-19 13:03:53

法律信息

  • 法律状态公告日

    法律状态信息

    法律状态

  • 2020-05-19

    授权

    授权

  • 2019-09-27

    实质审查的生效 IPC(主分类):G06K9/62 申请日:20190613

    实质审查的生效

  • 2019-09-03

    公开

    公开

说明书

技术领域

本发明属于网络安全与信息技术领域,具体涉及一种基于双通道卷积神经网络的加密流量分类方法。

背景技术

网络安全和隐私保护日益成为企业和网络用户关注热点,越来越多的企业选择VPN等来保护企业数据传输的安全,网络用户采用各种加密和匿名通信等技术来保护网络终端和个人隐私安全。而这些技术也被不法分子用于从事非法网络活动,以逃避网络安全监测。流量伪装与混淆技术被广泛使用,协议封装、流量代理等方法将一种加密流量封装在另一种加密流量中,改变了加密流量的原始特性。载体流量通常选择被广泛使用的协议类型,或是网络安全设备无法识别的流量类型。

基于传统机器学习方法的流量分类方法使用人工提取的特征,特征的有效性依赖专家知识。当加密流量统计特征发生变化时,基于人工提取特征的方法需重新对流量进行人工分析以寻找新的分类特征,灵活性和时效性差。

近年来深度学习开始应用到包括加密流量在内的网络流量分类中,以克服传统机器学习方法对特征工程的依赖。在基于深度学习的流量分类方法中,一个主要影响因素是输入数据。不同的流包含的数据包数量不同、持续的时间长度不同,在选择使用深度学习方法来解决加密流量分类问题时,并不能简单地按照和图像处理一样的方式,直接把网络流作为输入,需要对原始网络流量进行编码和取舍等预处理操作。输入数据中包含的信息量很大程度上决定了算法从流量中学习到的特征的有效性。把网络流量的哪些信息、以什么形式推送给深度学习算法,是将深度学习方法应用在流量分类任务时面临的首要问题,即网络流量的表示问题。

在现有的基于深度学习的流量分类研究中,根据对网络流量表示方式的不同,主要有基于原始数据、基于统计特征和基于数据包时序三种。基于原始数据的方法以数据包或流的包头与有效负载的字节二进制表示作为深度学习的输入。然而数据包的头部中存在与训练数据集相关的IP地址和端口信息,负载数据中协议握手阶段的明文信息往往也与训练数据集相关,容易导致模型泛化能力差,难以在真实网络环境中应用。而且,负载特征的使用还会违背用户隐私策略。基于统计特征的方法是把人工提取的流量统计特征作为输入,使用深度学习方法分类流量。但这种方法仅使用统计信息表征网络流量,可能导致流量中隐含的许多区分性信息丢失,且没有充分发挥深度学习的学习能力,其分类有效性将受输入特征有效性的影响。基于数据包时序的方法是将一条流的前多个数据包的属性特征按时间序列排序,然后利用深度学习方法提取特征和分类。但由于网络环境中的一些常见的网络事件会改变数据包级的特征分布,例如网络流量中常见的重传数据包,重复的ACK包,乱序数据数据包等。基于统计的方法可能能够免疫于这些不相关的数据包,但基于数据包时序的方法受这个问题的影响可能较大。因此,需要解决在尽可能保留网络流量数据原始特性的前提下,将任意长度的网络流处理为满足拟采用的深度学习算法要求的输入的问题。

另外,现有这些解决方案中,均使用单一通道结构,以某一种形式的网络流表示作为模型输入。如前所述,输入很大程度决定了输出,某一种方式的网络流表示容易存在仅表达了网络流量某一方面的特性(如局部细节特征),而缺少对其他方面特性的表征(如全局特性)的问题。为提升分类器的分类准确性,需要从多个不同的网络流表示中学习特征。而不同网络流表示通常是通过基于不同的维度或粒度的网络流预处理方法形成,存在尺寸不一致的问题。因此,需要解决从多个不同尺寸的网络流表示中同时学习特征的问题,即如何把不同尺寸的网络流表示作为分类模型的输入,并构建网络流量分类模型。

发明内容

本发明所要解决的技术问题是提供一种基于双通道卷积神经网络的加密流量分类方法,充分利用数据包头属性和流量统计特性在局部和整体上的优势,同时从这两个维度获取流量信息,以有效区分加密流量上承载的多种不同应用类型,该方法也能为深度学习方法在网络流量分析中的深入应用提供良好的实践基础。

为解决上述技术问题,本发明采用的技术方案是:

一种基于双通道卷积神经网络的加密流量分类方法,包括以下步骤:

步骤1:对网络流进行预处理,形成基于数据包头属性的流量表示;

步骤1.1:以流开始时间、源IP地址、目的IP地址、源端口、目的端口为关键字,对输入数据进行聚合,具有相同关键字的数据包记录被聚合在一个数据集合中,并按照数据包到达时间的先后按顺序排列;聚合后的数据作为一条网络流数据进行处理;

步骤1.2:从形成的网络流数据中,选择排在最前面的n个数据包记录,并从每个记录中提取8个属性:包括数据包字节数、数据包到达时间间隔、数据包的方向、SYN标志位值、FIN标志位值、ACK标志位值、PSH标志位值、RST标志位值,形成一个长度为n×8的属性序列;

步骤1.3:对形成的n×8的属性序列进行重新编排,转换为n×8的矩阵:每一行表示一个数据包,每一列表示从数据包头部抽取的某一种属性;

步骤2:对网络流进行预处理,形成基于时间分段的低阶统计特征的流量表示;

步骤2.1:按照等差级数对时间进行分段;假设初始时间段时长为t0,公差为d,划分的时间段数量为k,则划分时间段的等差级数为t0,t0+d,t0+2d,...,t0+(k-1)d,总时长为

步骤2.2:计算网络流中的每个数据包的包到达时间与网络流中的第一个数据包的包到达时间的间隔值U={u1,u2,u3,...,ui,...};对于每个数据包,根据时间间隔ui的取值,把网络流中的数据包划分到根据步骤2.1形成不同的时间段中;

步骤2.3:计算每个时间段的12个特征:包括发送数据包字节数、接收数据包字节数、发送数据包数量、接收数据包数量、平均数据包到达时间间隔、发送数据包平均到达时间间隔、接收数据包平均到达时间间隔、SYN标志位数量、FIN标志位数量、ACK标志位数量、PSH标志位数量、RST标志位数量,形成一个长度为k×12的属性序列;

步骤2.4:对形成的k×12的属性序列进行重新编排,转换为k×12的矩阵:每一行表示一个时间分段,每一列表示从时间段得到的某一个统计特征;k个时间分段按开始时间的先后排序,依次构成矩阵的每一行;

步骤3:构建具有两个独立输入通道的基于卷积神经网络的分类模型;

基于卷积神经网络的分类模型包括两个输入通道,其中一个输入通道以基于数据包头属性的流量表示作为输入,另一个通道以基于时间分段的低阶统计特征的流量表示为输入;两个通道的网络结构相同,均是由多个卷积层、激活层、池化层构成的卷积神经网络;令第一个通道形成的输出向量为CH1=(c11,c12,c13,...),第二个通道形成的输出向量为CH2=(c21,c22,c23,...),紧跟着两个通道的是一个拼接层,即将两个通道的输出向量拼接,形成新的输出向量CH,其形式化表达为:CH=CH1||CH2=(c11,c12,c13,...,c21,c22,c23,...),其中,“||”表示向量的连接操作;在拼接层之后是若干全连接层,最后是一个用于输出分类结果的分类器层。

进一步的,还包括步骤4:以步骤1和步骤2的两种流量表示的样本数据同时作为输入,通过基于卷积神经网络的分类模型训练和测试,验证模型的分类效果。

进一步的,在步骤1.1中,输入数据的每条记录表示一个数据包,包括流开始时间、源IP地址、目的IP地址、源端口、目的端口、数据包到达时间、数据包的方向、SYN标志位值、FIN标志位值、ACK标志位值、PSH标志位值、RST标志位值、应用类型标识符;流开始时间是指数据包所属的双向流的第一个数据包到达时间;数据包的方向字段取值为‘0’和‘1’,其中‘0’表示数据包是从源端发送到目的端,‘1’表示数据包是从目的端发送到源端。

进一步的,在步骤1.2中,当网络流数据中的数据包数量超过n个数据包时,舍弃第n个数据包以后的所有包;对于不足n个数据包的流,用0来填充所有的特征。

进一步的,所述步骤2.3中,当流持续时长超过T时,放弃T时长以后的时间段特征,对于持续时间未超过T时长的流或时间段内无数据包时,用0来填充相应时间段的特征。

与现有技术相比,本发明的有益效果是:1)能够自动从网络流量中学习到分类特征,实现端到端(End-to-End)的加密流量分类;2)能够从两个维度学习网络流量的特性,提高网络流量分类器的精度;3)能够在不依赖数据包原始负载信息的情况下,仅利用数据包头部中的一些字段信息,且不包括IP地址、端口号等,模型不会产生与训练样本数据耦合的问题,泛化能力强;4)不需要存储完整的数据包,不会违背数据的机密性和隐私保护策略。

附图说明

图1为本发明中的实施流程图;

图2为本发明中基于数据包包头属性的网络流表示示意图;

图3为本发明中基于时间分段低阶统计特性的网络流特征表示示意图;

图4为本发明中基于等差级数的时间段划分示意图;

图5为本发明中双通道卷积神经网络的加密流量分类模型示意图。

具体实施方式

如图1所示,以ShadowSocks加密流量的应用类型分类为例,待划分的应用类型为视频(Video)、Tor、邮件(Mail)、文件传输(File Transfer)、音频(Audio)和网页访问(Web)几种类别,包括以下步骤:

步骤1:对网络流进行预处理,形成基于数据包头属性的流量表示;

步骤2:对网络流进行预处理,形成基于时间分段的低阶统计特征的流量表示;

步骤3:构建具有两个独立输入通道的基于卷积神经网络的分类模型;

步骤4:以步骤1和步骤2的两种流量表示的样本数据同时作为输入,通过模型训练和测试过程,验证模型的分类效果。

步骤1和步骤2中的网络流均为双向流(bidirectional flow),由具有相同五元组(源IP地址、目的IP地址、源端口、目的端口、协议)或反转相同的五元组的所有数据包组成。

下面结合附图和具体实施方式对本发明做进一步详细说明,详述如下:

步骤1和步骤2的输入数据中,每条记录表示一个数据包,包括流开始时间、源IP地址、目的IP地址、源端口、目的端口、数据包到达时间、数据包的方向、SYN标志位值、FIN标志位值、ACK标志位值、PSH标志位值、RST标志位值、应用类型标识符等字段。流开始时间是指数据包所属的双向流的第一个数据包到达时间。数据包的方向字段取值为‘0’和‘1’,其中‘0’表示数据包是从源端发送到目的端,‘1’表示数据包是从目的端发送到源端。

影响分类结果的首要因素是输入数据。需要对网络流进行预处理,以在充分保留网络流数据中原始特征的前提下,满足深度学习算法对输入的要求。每个应用程序都有明确定义的消息序列,可以将其与其他应用程序区分开来。两个对等体之间最开始发送的一些数据包具有一些特别的模式。本发明利用网络流的前几个数据包的属性来表示网络流。

步骤1中形成基于数据包头属性的流量表示过程为:

步骤1.1:以流开始时间、源IP地址、目的IP地址、源端口、目的端口为关键字,对输入数据进行聚合,具有相同关键字的数据包记录被聚合在一个数据集合中,并按照数据包到达时间的先后按顺序排列,聚合后的数据作为一条网络流数据进行处理。本发明的首要目的是对网络流进行预处理,使其适用于深度学习算法,且充分保留网络流数据中原始特征。

步骤1.2:从形成的网络流数据中,选择排在最前面的n(本实例中设置n=32)个数据包记录,并从每个记录中提取如下8个属性:数据包字节数、数据包到达时间间隔、数据包的方向、SYN标志位值、FIN标志位值、ACK标志位值、PSH标志位值、RST标志位值,形成一个长度为n×8的属性序列。其中,数据包到达时间间隔是当前数据包的到达时间与前一个数据包到达时间之差,第一个数据包的数据包到达时间间隔等于零;当网络流数据中的数据包数量超过n个数据包时,舍弃第n个数据包以后的所有包;对于不足n个数据包的流,用0来填充所有的特征。

步骤1.3:对形成的n×8的属性序列进行重新编排,转换为n×8的矩阵:每一行表示一个数据包,每一列表示从数据包头部抽取的某一种属性,如图2所示。

基于数据包头属性序列的流量表示方法从一条流的局部抽取信息,包含了应用程序在初始化流时消息交换的大量细节信息,如较高频率出现的特定长度数据包。基于数据包头属性序列的流量表示方法关注了流的细节信息,却丢失了整个流的信息,而流的统计信息正好可以形成补充,使得对流的表征更加完整。实际上,对于超长流,应用程序在通信一段时间后,其通信特征已经完全体现,后续的交互通常都只是大量数据的传输。因此,仅用流开始一段时间内的流数据统计信息即可表示一条流的通信行为特性。为了使统计特征的粒度更合理,借鉴图像降采样的思路,对时间分段后,采用分段内的低阶统计信息来代表某一个分段。

步骤2中形成基于时间分段的低阶统计特征的流量表示过程为:

步骤2.1:按照等差级数对时间进行分段。假设初始时间段时长为t0,公差为d,划分的时间段数量为k,则划分时间端的等差级数为t0,t0+d,t0+2d,...,t0+(k-1)d,总时长为如图3所示。也就是说,第一个时间段的时长为t0,第二个时间段的时长为t0+d,第三个时间段的时长为t0+2d,第k个时间段的时长为t0+(k-1)d。形成的时间段用时间区间表示,分别为[0,t0),[t0,2t0+d),[2t0+d,3t0+3d),…,其中k>2。本实例中设置t0=100毫秒,d=75毫秒,k=34,则形成的每个时间段依次为(100,175,250,325,400,475,550,…,2425,2500,2575),每个时间段的起始时间区间依次为[0,100),[100,275),[275,525),[525,850),[850,1250),…,[37975,40400),[40400,42900),[42900,45475)。

步骤2.2:计算网络流中的每个数据包的包到达时间与网络流中的第一个数据包的包到达时间的间隔值U={u1,u2,u3,,ui,...}。对于每个数据包,根据时间间隔ui的取值,把网络流中的数据包划分到根据步骤2.1形成不同的时间段中。例如,ui<100时,相应的数据包落在区间[0,100)表示的时间段中;ui=1000时,相应的数据包落在区间[850,1250)表示的时间段中。

步骤2.3:计算每个时间段的以下12个特征:发送数据包字节数、接收数据包字节数、发送数据包数量、接收数据包数量、平均数据包到达时间间隔、发送数据包平均到达时间间隔、接收数据包平均到达时间间隔、SYN标志位数量、FIN标志位数量、ACK标志位数量、PSH标志位数量、RST标志位数量,形成一个长度为k×12的属性序列。当流持续时长超过T时,放弃T时长以后的时间段特征;对于持续时间未超过T时长的流或时间段内无数据包时,用0来填充相应时间段的特征。

步骤2.4:对形成的k×12的属性序列进行重新编排,转换为k×12的矩阵:每一行表示一个时间分段,每一列表示从时间段得到的某一个统计特征。k个时间分段按开始时间的先后排序,依次构成矩阵的每一行,如图4所示。

步骤3中构造的具有两个独立输入通道的基于卷积神经网络的分类模型如图5所示。模型主要有基于双通道的卷积神经网络构成,为了提取出加密流量中区分不同应用类型的特征,模型的两个通道分别以步骤1和步骤2形成的两种流量表示向量为输入,然后应用一系列的卷积、激活和池化等操作,分别从两种网络流表示中自动地学习流量高层次特征。最后,将两个通道输出的特征向量连接在一起后,经过全连接网络进一步融合和抽象,送给分类器部分。

具体地,一个通道的网络通道网络结构为:第一个卷积层C1使用32个大小3*3的卷积核,以步长1进行卷积操作,然后依次接着一个批归一化层和激活层。激活层使用常见的激活函数——修正线性单元(ReLU)。第二个卷积层C2使用64个大小为3*3的卷积核,以步长1进行卷积操作,然后和C1一样,依次接着一个批归一化层和激活层。使用连续的两个卷积层与非线性的激活层交替的结构是为了提取出流量深层的更好的特征。两个卷积层C1和C2之后,紧跟着一个2*2的池化层,采用最大池化(MaxPooling)方法。由于本发明中的输入的列尺寸偏小,为了在执行具有破坏性的池化操作前,让多重的卷积层可以从输入数据中学习到更多的复杂特征,在本发明中仅设计了一个池化层。最后是一个扁平层(FlattenLayer),将抽取的高维流量特征拉平为一个向量CH1=(c11,c12,c13,...);分类模型的第二个通道的网络结构与第一个完全相同,形成向量CH2=(c21,c22,c23,...)。

紧接着的是拼接层,是连接两个通道的输出,即把两个通道的输出向量CH1和CH2进行拼接,即形成CH=CH1||CH2=(c11,c12,c13,...,c21,c22,c23,...)。然后是全连接层。本实例中设计了1个全连接层,其神经元个数分别为16。为了减少过拟合,本实例中采用了20%的Dropout来处理训练过程中的过拟合问题。模型的最后是一个基于归一化指数函数Softmax的分类器,其输出分别对应本实例中6种流量类别,用于输出分类结果。

步骤4的验证过程为:把样本数据划分为训练集和测试集,对模型进行训练和测试。通过某对比实验,本发明提供的模型对ShadowSocks流量的分类准确度可以达到93.59%,且在具有相似行为的应用类型加密流量上,相比传统机器学习模型和别的深度学习模型有更好的分类效果。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号