一种基于深度学习的网络加密流量识别方法
技术领域
本发明涉及一种基于深度学习的网络加密流量识别方法。
背景技术
基于深度学习的加密流量识别方法的研究中,精细化识别出加密流量的应用服务是最终要完成的任务。主要识别方法涉及流量识别以及加密流量识别研究。在网络流量识别技术中,有许多传统的技术方法。随着科技的进步,流量识别技术也在不断地进步,技术方法可以大致分为以下几类:基于端口号的识别技术、深度包检测识别技术和基于机器学习的识别技术。
随着互联网应用多元化的发展,基于端口号的识别技术的识别准确率越来越低。由于越来越多的对等网络流量(Peer to Peer,P2P)的出现,许多应用服务使用动态端口,即不再使用映射表中的知名端口号,同时,许多web和ftp服务器为了提高服务器的灵活性,允许手动指定端口号。除此之外,很多恶意软件为了隐藏自己的流量不被检测,使用动态端口和端口伪装技术,进一步降低了端口识别技术的识别精度。
深度包检测识别技术的识别准确率极高且简单有效,但具有一些弊端;例如,人力成本巨大、在如今网络应用推陈出新和加密技术的普及下,DPI识别技术亦不能满足当前流量识别的需求。
基于机器学习的识别技术是目前常用的流量识别技术。因此,多以此用于加密流量识别研究。与未知协议的流量类似,使用加密技术的应用服务也越来越多。对于已加密的流量,Okada Y等人通过利用数据流中与加密无关的信息,例如数据包字节数长度和持续时间等,识别加密流量的应用层协议。Alshammari R等人根据未加密流量与加密流量的相关性,使用机器学习算法对加密流量识别达到了较好的效果。Haffner P等人使用多种监督学习算法证明机器学习在加密流量识别领域的可行性。张波通过利用特征统计和机器学习的方法实现了网络应用识别。Korczyński M等人针对以Skype和SSH为代表的加密流量识别,成功识别Skype协议下的应用服务类型,如视频、语音、文字等等。Alshammari R等人利用不同加密流量的不同数据流属性特征,选择几种机器学习算法进行加密流量进行识别。Alshammari R等人都在这方面做了大量的研究,包括P2P流量的识别研究。因不同的加密协议的加密方式不同,数据的封装格式就各不相同,所以不同的应用数据就有不同的特征与规律,类似的,当存在大量同种加密协议的流量数据时,加密协议亦有规律可循,可实现对加密协议的识别分类。
近年来,随着网络技术的高速发展以及人们对隐私数据的逐渐重视,SSL、SSH和Tor等加密技术在网络通信中得到广泛使用,网络加密流量快速增长且在改变着威胁形势。攻击者将加密作为隐藏活动的工具,加密流量给恶意网络攻击者隐藏其命令与控制活动提供了可乘之机。在对网络加密流量进行分析之前,需要识别加密流量。高准确度识别与检测加密流量对保证网络信息安全和维护网络正常运行具有重要实际意义。而传统特征工程存在流量特征提取和选择方面耗时耗力的问题,所以本发明对加密流量识别的研究是有意义的。
发明内容
本发明的目的是为了解决传统特征工程存在流量特征提取和选择方而耗时耗力的问题,而提出一种基于深度学习的网络加密流量识别方法。
一种基于深度学习的网络加密流量识别方法,所述方法通过以下步骤实现:
步骤一、获取数据集;
步骤二、对数据集进行预处理;
步骤三、利用SMOTE算法平衡数据集得到数据样本流;
步骤四、对DenseNet模型进行训练,并利用训练好的模型自动进行特征提取;
步骤五、添加softmax层,对加密流量进行识别判断。
在本发明的一个实施例中,优选地,所述的对数据集进行预处理的步骤,具体为:
步骤二一、数据负载提取:
采用Scapy模块对pcap文件进行读取和处理,读取流量数据后,通过Scapy模块分析每一条数据流的结构,提取出每条流量的数据流负载信息,即有效载荷字节,保存;
步骤二二、数据负载处理:
对有效载荷数据统一截取长度为1024字节,将数据中过长的前n个字节的数据流截断,对于不足n个字节数填充0,过短的数据用0来填充;去除数据包的数据链路层字节;之后,为了消除实验误差影响需要在UDP头部填充0;对提取的数据包字节进行归一化处理,将字节数值由[0,255]归一化为[0,1],将每个分组的数据填充到32*32维度的矩阵中。
在本发明的一个实施例中,优选地,利用SMOTE算法平衡数据集得到数据样本流的步骤,具体为:
首先,根据欧氏距离找到少数类样本的样本中心,根据距离中心点的欧式距离分为核心层样本点、第二层样本点、最外层样本点;其中每层样本点数量平均分配;
其次,根据不同的层设定不同的样本点选取概率,其中三层样本点的依据距离中心点由近及远分配选取概率;最终实现线性插值,达到样本均衡;
具体算法过程实现如下:
a)设训练集的少数类样本数为T,目标合成少数类到N个新样本(N必须是正整数且N>T),少数类的一个样本Xi,其特征向量为Xi,i∈{1,...,T};
b)根据少数类样本全体,依据欧式距离计算得到少数类样本中心点,依据中心点将少数类样本划分为核心层样本点Xi1,第二层样本点Xi2,最外层样本点Xi3,并依次由高到低设置每层样本点选取概率;
c)在少数类样本中选取到的任一点X,依据KNN算法选取最近的K个同类邻居Y,再生成一个0~1的随机数ζ1,从而合成K个新样本Z,Z定义如下:
Z=X+ζ1×(Y-X) (2)
d)将步骤c)重复进行N次,从而可以合成KN个新样本:Xnew,new∈1,...,N;
e)对全部的少数类样本进行步骤b)~d)操作,即达到了样本平衡的目标。
在本发明的一个实施例中,优选地,所述的DenseNet模型进行训练,并利用训练好的模型自动进行特征提取的过程为,
设在DenseNet中,每一层的输入来自前面所有层的输出,每层输入公式以及总连接次数为:
Xl=Hl([X0,X1,...,Xl-1]) (3)
Csum=L(L+1)/2 (4)
其中Xl为第l层输入,Hl表示一个非线性变换,Csum为总连接数,L为层数。
本发明的有益效果为:
本发明同时考虑样本数据集的类别不平衡性对分类精度的影响,提出一种在数据类别不平衡条件下的基于深度学习的加密流量识别模型。该模型首先对数据集进行预处理,具体的数据集预处理为截断数据流前n个字节,不够n个字节数填充0;为了防止物理硬件对分类的影响,需要去除数据包的数据链路层字节;由于UDP头部比TCP头部少12Byte,为了消除实验误差影响需要在UDP头部填充0;为了得到最佳算法分类效果,需要对提取的数据包字节进行归一化处理。之后利用SMOTE算法平衡数据集得到数据样本流。之后用DenseNet训练自动提取特征,从而解决传统特征工程在流量特征提取和选择方而耗时耗力的问题,最后添加softmax层进行判断完成加密流量的识别。
本发明在数据集类别不均衡的情况下,采取了用改进的SMOTE算法对数据集类别进行平衡。将DenseNet网络结构用于加密流量识别,解决了网络层数加深引起的梯度消失问题,加强了特征图(feature map)的传递,鼓励特征重用,实现了层与层之间的“短路连接”,使训练成果更深入、更有效、更精确。
附图说明
图1为本发明方法流程图;
图2为本发明数据预处理流程图;
图3为本发明数据负载处理图示;
图4为SMOTE算法示意图;
图5为本发明改进的SMOTE算法示意图;
图6为稠密块结构图示;
图7为卷积和卷积和作用图示;
图8为DenseNet结构图;
图9为最大池化示意图。
具体实施方式
具体实施方式一:
本实施方式的一种基于深度学习的网络加密流量识别方法,如图1所示,所述方法通过以下步骤实现:
步骤一、获取数据集;
步骤二、对数据集进行预处理;
步骤三、利用SMOTE算法平衡数据集得到数据样本流;
步骤四、对DenseNet模型进行训练,并利用训练好的模型自动进行特征提取;
步骤五、添加softmax层,对加密流量进行识别判断。
具体实施方式二:
与具体实施方式一不同的是,本实施方式的一种基于深度学习的网络加密流量识别方法,所述的对数据集进行预处理的步骤,具体为:
步骤二一、数据负载提取:
采用Scapy模块对pcap文件进行读取和处理,读取流量数据后,通过Scapy模块分析每一条数据流的结构,提取出每条流量的数据流负载信息,即有效载荷字节,保存;为下一步处理数据做准备,数据预处理流程如图2所示。
步骤二二、数据负载处理:
应用程序在传输数据时,数据所表示的文件类型可能是图片、音频或者视频等等,这些文件大小一般都很大,单单一条TCP流是远远不够传输所有完整信息的。对于一整段数据,TCP协议会对其进行分片,所以,提取到的数据包含了大量的分片数据,分片的一条数据长度一般为1514字节,除去以太层、EP层和TCP的首部报文的数据帧之后,负载数据的长度一般为1460字节。
然而UDP协议没有对超长数据进行分段的功能,因此当数据长度超过最大传输单元(Maximum Transmission Unit,MTU)规定的1500个字节时,会在网络层进行IP分片,但是UDP协议的首部报文与TCP协议的首部报文长度不同,且由于UDP协议本身是无连接协议,所以UDP协议上的负载数据长度与TCP协议上的不同,且差距明显。
为了保证数据的一致性,需要对有效载荷数据统一截取长度为1024字节,将数据中过长的前n个字节的数据流截断,对于不足n个字节数填充0,过短的数据用0来填充;为了防止物理硬件对分类的影响,需要去除数据包的数据链路层字节;之后,由于UDP头部比TCP头部少12Byte,为了消除实验误差影响需要在UDP头部填充0;为了得到最佳算法分类效果,需要对提取的数据包字节进行归一化处理,将字节数值由[0,255]归一化为[0,1],将每个分组的数据填充到32*32维度的矩阵中。具体数据负载处理如图3所示:
具体实施方式三:
与具体实施方式一或二不同的是,本实施方式的一种基于深度学习的网络加密流量识别方法,利用SMOTE算法平衡数据集得到数据样本流的步骤,具体为:
所述的SMOTE,是指合成少数类过采样技术,为了解决数据的非平衡问题,2002年由Chawla提出,即合成少数过采样技术,它是基于随机过采样算法的一种改进方案。该技术是目前处理非平衡数据的常用手段,并受到学术界和工业界的一致认同,其避免了通过简单的复制过采样策略导致的模型过拟合、不具有泛化效果的缺陷。SMOTE算法基本思想是首先随机选取样本点,计算该样本点与同类样本点的欧氏距离,并利用K近邻思想随机选择K个样本点,然后在两点之间随机线性插值生成新的样本,从而增加少数样本进而平衡数据集。其中欧氏距离公式如下:
其中dist(X,Y)为样本点X与样本点Y的欧式距离。
传统的SMOTE算法采取随机选择K近邻中K个样本进行线性插值。本发明不再采取SMOTE算法中随机选择K近邻中的K个样本;
首先,根据欧氏距离找到少数类样本的样本中心,根据距离中心点的欧式距离分为核心层样本点、第二层样本点、最外层样本点;其中每层样本点数量平均分配;
其次,根据不同的层设定不同的样本点选取概率,其中三层样本点的依据距离中心点由近及远分配选取概率;最终实现线性插值,达到样本均衡。图4为SMOTE算法示意图。图5为本发明改进SMOTE算法示意图。
具体算法过程实现如下:
a)设训练集的少数类样本数为T,目标合成少数类到N个新样本(N必须是正整数且N>T),少数类的一个样本Xi,其特征向量为Xi,i∈{1,...,T};
b)根据少数类样本全体,依据欧式距离计算得到少数类样本中心点,依据中心点将少数类样本划分为核心层样本点Xi1,第二层样本点Xi2,最外层样本点Xi3,并依次由高到低设置每层样本点选取概率;
c)在少数类样本中选取到的任一点X,依据KNN算法选取最近的K个同类邻居Y,再生成一个0~1的随机数ζ1,从而合成K个新样本Z,Z定义如下:
Z=X+ζ1×(Y-X) (2)
d)将步骤c)重复进行N次,从而可以合成KN个新样本:Xnew,new∈1,...,N;
e)对全部的少数类样本进行步骤b)~d)操作,即达到了样本平衡的目标。
具体实施方式四:
与具体实施方式三不同的是,本实施方式的一种基于深度学习的网络加密流量识别方法,所述的DenseNet模型进行训练,并利用训练好的模型自动进行特征提取的过程为,
传统的卷积神经网络中,如果层数为L层,则有L个连接,但是在DenseNet中,每一层的输入来自前面所有层的输出,每层输入公式以及总连接次数为:
Xl=Hl([X0,X1,...,Xl-1]) (3)
Csum=L(L+1)/2 (4)
其中Xl为第l层输入,Hl表示一个非线性变换,Csum为总连接数,L为层数;
图6中的结构是一个稠密块(dense block)。其中非线性变换均包含批归一化(Batch Normalization,BN),可以对输入激活函数的输入进行归一化。这样解决了输入数据发生偏移和增大的影响。ReLU为非线性激活函数的一种,其公式如下:
ReLU(x)=max(0,x) (5)
还包含卷积(Convolution,conv)在卷积层中,一个神经元只与部分邻层神经元连接。权值共享指的是,卷积层的同一特征平面中,神经元共享权值,即卷积核。共享权值能够减少网络各层之间的连接,降低了过拟合的风险。卷积核初始化通常使用随机小数矩阵,卷积核通过网络的训练得到合理的权值。卷积和卷积核的作用示意如图7所示。图8的结构是一个完整的稠密网(dense net),包括3个dense block。
稠密块之间存在卷积层与池化层,卷积层上面已经介绍。池化也称为采样技术,通常有均值子采样和最大值子采样两种形式。卷积层之间都会周期性地插入池化层。样本采样的目的不再关注特征的具体位置,而使系统只关注特征之间的相对位置,从而不断减小数据空间。因此,参数的数量和计算量减少,在一定程度上避免了过拟合。最大池化示意如图9所示。
为了客观评价算法的性能,选择精确率P、召回率R和F1-measure这三项评分指标进行评价,精确率是所有预测正确的占总的比重,召回率即正确预测为正的占全部实际为正的比例,F1值是一项综合评价指标,定义为精确率和召回率的调和均值;
计算公式为:
P=Tp/(Tp+Fp) (6)
R=Tp/(Tp+FN) (7)
F1=2PR/(P+R) (8)
其中,Tp真正表示加密流量的样本被正确识别的个数;Fp假正表示真实是加密流量但被错误标志的个数;FN假负表示未加密流量的样本被正确识别的个数。
以上仅为本发明的优选实施方式而已,并不用于限制本发明,对于本领域的技术人员来说,本发明可以有各种更改和变化。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。