(12)发明专利申请
(10)申请公布号 CN 111131069 A(43)申请公布日 2020.05.08
(21)申请号 201911164936.7(22)申请日 2019.11.25
(71)申请人 北京理工大学
地址 100081 北京市海淀区中关村南大街5
号(72)发明人 张继 薛静锋 肖恩 赵小林
单纯 郭宇 (74)专利代理机构 北京理工大学专利中心
11120
代理人 张维佳 温子云(51)Int.Cl.
H04L 12/851(2013.01)H04L 12/26(2006.01)G06N 3/04(2006.01)G06N 3/08(2006.01)
权利要求书1页 说明书6页 附图1页
G06K 9/62(2006.01)H04L 29/06(2006.01)
(54)发明名称
一种基于深度学习策略的异常加密流量检测与分类方法(57)摘要
本发明提出了一种基于深度学习策略的异常加密流量检测与分类方法,既能对使用公有加密协议的已知类型异常加密流量进行在线快速识别,又能对使用私有加密协议的未知类型异常加密流量进行检测与分类。该方法利用相邻做差法对原始数据进行特征加强,利用加强后的数据集中带有协议标签的数据训练1dCNN(一维卷积神经网络)模型来对已知类型异常加密流量进行检测与分类,利用k-means算法(k-均值算法)对加强后的数据集中没有协议标签的未知类型异常加密流量进行分类。CN 111131069 ACN 111131069 A
权 利 要 求 书
1/1页
1.一种基于深度学习策略的异常加密流量检测与分类方法,其特征在于,包括:利用相邻做差法对原始流量数据进行特征加强;利用加强后的数据集中带有协议标签的数据训练1dCNN模型,利用k-means算法对加强后的数据集中没有协议标签的数据进行分类。
2.如权利要求1所述的基于深度学习策略的异常加密流量检测与分类方法,其特征在于,所述利用相邻做差法对原始流量数据进行特征加强,具体包括:
获取数据集后进行图像化处理,再采用相邻做差法将所述数据集中图像化后的流量数据相邻字节做差值。
3.如权利要求2所述的基于深度学习策略的异常加密流量检测与分类方法,其特征在于,所述获取数据集采用以下方式:
捕获pcap包文件,去掉所述pcap包文件的文件头信息,将剩下的pcap包文件切分成独立的数据包,所述独立的数据包构成数据集。
4.如权利要求2或3所述的基于深度学习策略的异常加密流量检测与分类方法,其特征在于,所述采用相邻做差法将所述数据集中图像化后的流量数据相邻字节做差值采用以下方式:
获取异常加密流量平均值序列,然后将所述流量平均值序列相邻数据两两做差。5.如权利要求1或2所述的基于深度学习策略的异常加密流量检测与分类方法,其特征在于,所述利用加强后的数据集中带有协议标签的数据训练1dCNN模型,其中所述1dCNN模型依次包括:输入层、卷积层、池化层、卷积层、池化层、全连接层、输出层;所述输入层输入一维流量数据。
6.如权利要求5所述的基于深度学习策略的异常加密流量检测与分类方法,其特征在于,所述卷积层采用128组单通道9*1卷积核进行卷积。
7.如权利要求5或6所述的基于深度学习策略的异常加密流量检测与分类方法,其特征在于,所述池化层利用步长为2,过滤器大小为2*1的最大池化函数进行池化。
8.如权利要求5或6所述的基于深度学习策略的异常加密流量检测与分类方法,其特征在于,所述1dCNN模型的学习率Learning rate设定为0.001,dropout设定为0.5。
9.如权利要求8所述的基于深度学习策略的异常加密流量检测与分类方法,其特征在于,采用指数衰减法调整所述学习率。
10.如权利要求1或2所述的基于深度学习策略的异常加密流量检测与分类方法,其特征在于,所述k-means算法模型引入调节参数α,β,具体为:
对于数据集中的样本点,如果该点的密度Density(X)小于β与数据集密度标准差SDensity(X)乘积时,则将该点确定为k-means算法中的孤立点;
对于数据集中的样本点,如果该点的密度Density(X)大于α与数据集密度标准差SDensity(X)乘积时,则将该点确定为k-means算法中的中心点;
并通过中心点的个数来确定聚类的数目,即k值等于中心点的数目;其中,
当k-means算法中k的值等于1时,0<α<1,0<β<1;当k-means算法中k的值大于等于2时,α>1,β>1。
2
CN 111131069 A
说 明 书
1/6页
一种基于深度学习策略的异常加密流量检测与分类方法
技术领域
[0001]本发明属于异常加密流量检测技术领域,具体涉及一种基于深度学习策略的异常加密流量检测与分类方法。
背景技术
[0002]在网络安全领域,为了对异常加密流量采取相应措施,通常需要先从混合流量种识别出正常流量和异常加密流量。相对来说这是比较容易的,因为它是一个二分类问题,而且流量是否经过加密很容易就可以判断出来。在此基础上,正常流量和异常加密流量可能分别包含对应多种具体应用和协议的流量;在进行网络管理时,需要将混合流量按照不同的协议或应用具体划分。
[0003]按发展历史异常加密流量检测技术分为三大类:第一种,基于端口检测,适合于传统网络环境中各种协议使用固定端口的情况,简单、直接、高效,并且不会涉及到用户隐私;第二种,基于深度包检测(DPI),检测数据包负载中的特征码从而识别流量协议;第三种,由于机器学习的强大能力,基于机器学习(ML)的网络协议识别技术越发热门,通过统计流量的宏观特征,而不是关注布局特征,进行流量的识别。这使得网络协议识别技术更加智能化,准确率更高,应用范围更广。[0004]从2004年开始,已经出现了将机器学习方法与网络协议分类结合到一起的尝试。其中,2004年,McGregor首先提出将机器学习运用到网络协议分类领域,他运用的是基于EM的无监督学习方法。利用这种方法,成功的尝试了对HTTP,FTP,SMTP,IMAP等协议进行分类。2005年,Zander使用贝叶斯分类器和EM构建模型分类器,提出了AutoClass。利用这个模型对8种网络协议进行了分类,平均分类准确率达到了80%以上。2005年,Moore使用机器学习方法尝试对网络协议进行分类。248个函数用于训练分类器并分类批量数据传输,实现超过90%的网络协议的平均分类准确度。但是该方法分类P2P网络流量的协议时准确率不尽人意,只有55%。2007年,Erman提出了半监督的网络协议分类方法,成功将分类准确率提高到了94%,实现了跨时代的进步。中国科学院的研究人员率先提出了基于FPGA的10千兆流并行实时处理系统。北邮的马严提出了基于多决策树的分类方法;国防科大教授孙志刚提出了基于Bloom Filter的数据包分类方法。[0005]基于端口的检测方法简单、直接、高效,并且不会涉及到用户隐私,但由于现在新的协议已不再在IANA登记端口,并且很多协议采用动态端口,因此基于端口的检测方法已不再适用,只能作为一种辅助方法。基于深度包检测的方法理论上可以检测识别所有的协议,但是计算的时间和空间复杂度都很高,且会侵犯到用户隐私;并且需要维护当前所有协议的特征库,当出现新的协议时,需要更新数据库来同步新的协议;不能应对加密网络协议。Sherry等提出了一种新的DPI系统,可以直接检测加密的数据包载荷,检测过程不需解密数据包,可以保护了用户的隐私,但它只能处理HTTPS流量。目前研究较多的是基于机器学习的分类方法,从人工智能的角度看,基于端口和基于负载深度包的方法是基于规则的方法,它通过匹配预定义的硬编码规则来执行流量分类。机器学习方法是基于统计和行为
3
CN 111131069 A
说 明 书
2/6页
的方法,它通过使用一组选择性特征从经验数据中提取模式来对流量进行分类。基于机器学习的方法更加智能化,准确率更高,应用范围更广;但也存在一定的缺陷,需要手工设计流量特征,然后进行特征提取,再进行分类,十分繁琐。
[0006]自2012年Hinton课题组通过构建CNN网络AlexNet从而证明了深度学习的巨大潜力后,对于深度学习的研究呈爆发式增长。随着计算机性能的指数型增长,深度学习的实现变得简单,计算能力也有越发强悍的趋势。深度学习具有更多的网络层和更强大的复杂函数拟合函数。当数据集比较大时,深度学习算法较机器学习算法有明显的优势。面对大数据集时,深度学习算法可以更容易的进行数据扩展,对数据进行充分利用,以达到更高的分类精度;相对的,机器学习属于浅层模型,计算能力有限,想要提高模型分类精度往往需要更加复杂的方法,简单的增加数据量很难达到效果。深度学习算法不需要人工进行特征选择、提取;同时深度学习适应性强,易于迁移。发明内容
[0007]本发明提出了一种基于深度学习策略的异常加密流量检测与分类方法,既能对使用公有加密协议的已知类型异常加密流量进行在线快速识别,又能对使用私有加密协议的未知类型异常加密流量进行检测与分类。[0008]本发明通过以下技术方案实现:
[0009]一种基于深度学习策略的异常加密流量检测与分类方法,包括:[0010]利用相邻做差法对原始数据进行特征加强,利用加强后的数据集中带有协议标签的数据训练1dCNN(一维卷积神经网络)模型,利用k-means算法对加强后的数据集中没有协议标签的数据进行分类。
[0011]所述利用相邻做差法对原始数据进行特征加强,具体包括:[0012]获取数据集后进行图像化处理,再采用相邻做差法将所述数据集中的流量数据相邻字节做差值。
[0013]所述利用加强后的数据集中带有协议标签的数据训练1dCNN模型,其中所述的1dCNN模型具体依次包括:输入层、卷积层、池化层、卷积层、池化层、全连接层、输出层;所述输入层输入一维流量数据。
[0014]所述k-means算法模型采用改进的k-means算法模型,具体改进点在于:[0015]对于数据集中的样本点,如果该点的密度Density(X)小于β与数据集密度标准差SDensity(X)乘积时,称该点为孤立点;[0016]对于数据集中的样本点,如果该点的密度Density(X)大于α与数据集密度标准差SDensity(X)乘积时,称该点为中心点;
[0017]并通过中心点的个数来确定聚类的数目,即k的值等于中心点的数目s;[0018]其中,
[0019]当K-means算法中k的值等于1时,0<α<1,0<β<1;[0020]当K-means算法中k的值大于等于2时,α>1,β>1。[0021]本发明的有益效果:[0022]1、本发明提出相邻做差法用于异常加密流量数据预处理,处理后的数据能够加快检测模型的训练速度,并且能够提高异常加密流量检测的准确率;
4
CN 111131069 A[0023]
说 明 书
3/6页
2、本发明基于二维CNN模型,分析网络流量的特点,创新性的提出了1dCNN模型进
行异常加密流量的检测与分类,1dCNN模型能够更好的学习到异常加密流量特征,实验验证,1dCNN模型在异常加密流量检测与分类上具有较二维CNN更好的效果;[0024]3、本发明对k-means算法做了改进,提出了中心点和孤立点新的定义方式,加入了调整参数α、β;利用改进的k-means算法构建分类器,对使用私有加密协议的未知类型异常加密流量进行检测与分类,能够提高分类器对数据中孤立点和中心点的判断的准确性,将未知类型异常加密流量按其协议类型划分不同类簇;[0025]4、相比于基于机器学习方法对异常加密流量进行检测与分类,本发明基于深度学习的方法绕过了人工特征选择、提取,更方便、更灵活,且避免了人工特征选择提取对于经验的依赖。实验表明,这种基于深度学习策略的方法可以有效准确地对已知类型异常加密流量进行检测与分类;同时,该方法具有学习和扩展的能力,可用于分类新的使用未知加密协议的未知类型异常加密流量。
附图说明
[0026]图1为本发明基于深度学习策略的异常加密流量检测与分类方法流程图;[0027]图2为本发明实施例中1dCNN模型结构图。
具体实施方式
[0028]下面结合附图对本发明的实施例进行详细的描述。[0029]如图1所示,本实施例的一种基于深度学习策略的异常加密流量检测与分类方法,包括:[0030]利用相邻做差法对原始流量数据进行特征加强,利用加强后的数据集中带有协议标签的数据训练1dCNN(一维卷积神经网络)模型,利用k-means算法(k-均值算法)对加强后的数据集中没有协议标签的数据进行分类。
[0031]这里所述的带有协议标签是指公有协议,即由IEEE、ISO、ITU等国际组织制定的结构公开的网络通信协议。
[0032]这里所述的没有协议标签是指私有协议,也称非标准协议,即未经国际或国家标准化组织采纳或批准,由某个企业自己制订,协议实现细节不愿公开,只在企业自己生产的设备之间使用的协议。私有协议具有封闭性、垄断性、排他性等特点。[0033]下面详细介绍本发明的具体实施例:
[0034]本实施例对于异常加密流量的分析是以pcap包文件为基础进行的,所述pcap包文件是存储网络流量数据的一种文件。[0035]步骤一、利用相邻做差法对原始流量数据进行特征加强;[0036]1、获取数据集:捕获pcap包文件,去掉所述pcap包文件的文件头信息,将剩下的pcap包文件切分成独立的数据包,所述独立的数据包构成数据集;[0037]2、对所述数据集进行图像化:对每个所述独立的数据包中的数据,以字节为单位,将2进制的数转化为0-255的整数,xi∈Rk,即数据包中第i个字节用k维向量表示,一个长度为n的数据包表示为:
[0038]
5
CN 111131069 A[0039]
说 明 书
4/6页
其中,为连接(concatenation)操作符,然后将xi归一化到0-1,完成图像特征的
表示。
本实施例选择数据包中的前784字节作为特征。
[0041]3、采用相邻做差法将所述数据集中的数据包的相邻字节做差值;[0042]本实施例中该步骤的设计思想如下:协议具有自己的帧结构定义,当发送数据时,对于不同的协议比特流在相同的位置会有不同的概率分布,尤其是在帧结构的分界处,这种差异尤其明显。利用这个特点,可以将图像化后的流量数据的相邻字节做差值,来突显使用不同加密协议的异常加密流量之间的差异,这个操作可以让异常加密流量检测模型更好地学习到各种类型的异常加密流量之间的差异,从而更精准地分类。[0043]例如:设A协议有m个数据包,A协议的数据包集合可以表示为:
[0044][0045][0046][0047][0048][0049][0040]
A协议所有数据包在第k个字节处的平均值表示为:
所有数据包的第k个字节的方差为:
设A协议前4字节表示目的地址,B协议前4字节表示端口号,那么,Var(A)和Var(B)在前4个字节应该会有明显的区别。此时,如果采用相邻做差的方法对A和B进行处理。A协议和B协议在第4个差值处(第4字节和第5字节的差值)将会有更显著的差异,用方差来表示所述差异,那么A协议和B协议在第4个差值处的方差会有显著的区别。[0050]对于A协议,第4个差值处的平均值表示为:
[0051]
[0052][0053]
对于B协议,第4个差值处的平均值表示为:
那么:
[0055]ua与ub应该不相等,并且:[0056]ub-ua=ε[0057]其中ε为常数,即随着样本量的增大,ε约趋于某一个常数。[0058]上面的分析是从不同协议出发的,那么对于同一协议,如果有一定量的样本,是可以算出该协议在各个差值处的方差分布。这个方差分布对于同一协议应该是一种独有的模式。根据深度学习的特点,因为不同协议用相邻做差处理后的方差分布模式不同,那么通过深度学习的深层网络就可以学习不同协议的模式,从而进一步完成分类。[0059]那么对某一未知协议η进行分类时,可以算出该协议已知协议的距离,然后距离某协议近的,就偏向于该协议。[0060]基于上述设计思想,下面详细介绍该步骤具体包括:[0061]3.1、获取异常加密流量平均值序列;[0062]为了分析各个网络协议的结构特征,对于同一协议,将第1字节的数据累加求和后除以该协议样本数,得到该协议第1字节处的平均值。然后对于该协议所有字节进行同样的
6
[0054]
CN 111131069 A
说 明 书
5/6页
处理,最后得到该协议长度为783的网络流量平均值序列,最后补0以符合分类模型的输入大小。对所有协议进行同样的处理得到所有协议的网络流量平均值序列,即得到原始序列集合,命名为UE-NPD-1集合,该集合中的序列与具体协议一一对应。[0063]3.2、将所述网络流量平均值序列相邻数据两两做差;[0064]在所述UE-NPD-1集合基础上,对每个网络流量平均值序列中的相邻数据两两做差,作为新的序列,形成了相邻做差数据集,命名为UE-NPD-2。[0065]根据协议的制定规范可知,所有数据包的前面字节是协议头,后面大部分字节是载荷部分。本实施例选取21~30字节部分的特征代替协议头,选取291~300字节部分的数据作为载荷的特征,利用这两部分数据进行实验分析,对比原始数据集和相邻做差数据集在这两部分的网络流量分布。经实验证明,在21~30字节部分的数据经过相邻做差法处理后可以凸显出同一协议在某些位置流量的跳变,在291~300字节部分同一协议不再发生明显的跳变。
[0066]步骤二、利用加强后的数据集中带有协议标签的数据训练1dCNN模型,具体依次包括:输入层、卷积层、池化层、卷积层、池化层、全连接层、输出层。[0067]本实施例中该步骤的设计思想如下:目前利用卷积神经网络进行异常加密流量检测大多是直接将流量数据转换成二维图片,然后套用已有的分类模型进行分类。但是一维的流量数据转化为二维的过程中可能导致某些重要的数据被划分到了二维矩形的边界,对于某些类型的异常加密流量可能把一个具体信息(例如端口号)直接分割了,这就直接破坏了流量数据的结构特点,反而不利于异常加密流量检测。根据深度学习领域著名学者YamleCun,如果信号具有很强的局部相关性,信号可能出现在任意位置,并且轻微的失真,目标不会改变,具备这些特性的的数据都适合用卷积神经网络进行分类。显然,网络流量数据是满足这些特性的。基于此,本实施例设计一个一维卷积神经网络(1dCNN),用于异常加密流量进行检测。这样在卷积过程中可以最大限度的保留原有协议的结构,这个是二维卷积神经网络不能比拟的。[0068]如图2所示,本实施例中采取9*1和4*1的卷积核,池化层采用2*1的过滤器,所述1dCNN模型采用具有6层的神经网络模型。具体模型设计如下:[0069]1)输入层:输入特征加强后的一维流量数据;本实施例中输入为784个字节数据大小,输入层为784*1。[0070]2)卷积层:用128组单通道9*1卷积核进行卷积,然后添加偏移项,使用ReLU激活函数进行非线性处理;[0071]3)池化层:利用步长为2,过滤器大小为2*1的最大池化函数进行池化;[0072]4)卷积层:使用64组128通道4*1卷积内核对前一层的输出进行卷积,然后添加偏移项,然后使用ReLU激活函数进行处理;[0073]5)池化层:利用步长为2,过滤器大小为2*1的最大池化函数进行池化;[0074]6)全连接层:经历了两个步长为2*1的池化,图像大小从784*1变为196*1,第二个卷积层的卷积核为64,输出张量大小为196*1*64。对输出进行张量变形,然后输入到全连接层;该层有3136个神经元,隐式节点1024个,使用ReLU激活函数。[0075]7)输出层:使用Dropout层来避免过度拟合,Dropout层的输出连接到Softmax层以获得最终概率输出,并输出最终的协议分类结果。
7
CN 111131069 A[0076]
说 明 书
6/6页
在上述的1dCNN模型中学习率Learning rate设定为0.001,dropout设定为0.5。采
用指数衰减法调整学习率,以效防止了学习率过大而无法达到最优化问题和学习率过小而需要训练时间较长的问题。[0077]步骤三、利用k-means算法(k-均值算法)对加强后的数据集中没有协议标签的未知类型异常加密流量进行检测分类。
[0078]本实施例对k-means算法做了改进,目前已有学者提出了基于密度标准差优化初始聚类中心的改进算法,本实施例在此基础上,提出了孤立点、中心点新的定义方式,引入了调节参数β、α,所述参数β、α的调节策略如下:[0079]策略1:对生成k值为1的数据集(异常加密流量数据平均密度相近)采用降低参数β、α的策略,这样生成的中心点数量k值会提高,接近真实k值,孤立点识别错误率会下降;[0080]策略2:对生成k值大于2的数据集(协议网络流数据平均密度差别程度大)采用提高参数α值和降低参数β的策略,预期结果是生成的中心点数量K值会降低接近真实,孤立点识别错误率会下降;[0081]其中,聚类数目k由中心点的数目确定,k等于中心点的数目;[0082]具体如下:
[0083]对于数据集中的样本点,如果该点的密度Density(X)小于β与数据集密度标准差SDensity(X)乘积时,称该点为孤立点,如公式(1)所示;[0084]对于数据集中的样本点,如果该点的密度Density(X)大于α与数据集密度标准差SDensity(X)乘积时,称该点为中心点,如公式(2)所示;[0085]Density(xi)<β·SDensity(X) (1)[0086]Density(xi)>α·SDensity(X) (2)[0087]其中,
[0088]当k-means算法中k的值等于1时,0<α<1,0<β<1;[0089]当k-means算法中k的值大于等于2时,α>1,β>1。[0090]本实施例的改进k-means算法的核心思想为:基于密度的思想,根据数据的密度值找出数据集中的孤立点,舍弃掉,在剩下的数据中找出密度中心点作为初始聚类中心,可以加快收敛,密度中心点的个数可作为k-means算法分类数k值,最后用传统k-means算法进行聚类。
[0091]本实施例经实验证明,通过调节参数β、α的值,可以大幅提升未知类型的异常加密流量检测的准确率,同时也保证了异常加密流量检测模型在面对新的流量类型时具有扩展性。如果没有调节参数β、α,算法对不同数据类型的孤立点、中心点的判断会失去适应性,判断效果可能好可能坏。
8
CN 111131069 A
说 明 书 附 图
1/1页
图1
图2
9
因篇幅问题不能全部显示,请点此查看更多更全内容