1.一种基于分类器及网络结构的加密流量分类方法,其特征在于,代价敏感CNN网络包括CNN网络和代价敏感层,所述CNN网络包含普通卷积层、池化层和全连接层,当所述CNN网络发生错误分类时,所述代价敏感层被激活,为少数类的错误分类分配高代价,为多数类的错误分类分配低代价,形成代价敏感CNN网络并构建成代价敏感CNN网络流量分类器;所述代价敏感CNN网络流量分类器呈树状结构,将数据集中的大分类划分为小分类,再为每个划分后的小分类设置一个特定的分类器进行流量的识别;所述代价敏感CNN网络包括网络流量收集模块、流量数据预处理模块、流量解析模块和分类器训练及优化模块;
所述加密流量分类方法包括以下步骤:S1、通过所述网络流量收集模块进行网络流量收集:在网络关口中设置一个网络流量收集器用于捕获网络关口进出的网络数据流量,将捕获的网络数据流量按照会话的粒度进行分流,得到会话流;
S2、通过所述流量数据预处理模块进行流量数据预处理:将所述会话流按照一定的长度进行截断填充,并进行归一化处理,抽取部分流量数据用于最后的模型测试及调优;
S3、通过所述流量解析模块进行流量聚合:利用余弦相似性算法计算不同流量类型的相似性,将相似的流量类别聚合到一块,将所有流量样本分为若干部分,被聚合到一块的流量被称为子数据集,所述子数据集用于训练所述代价敏感CNN网络流量分类器模型中相应节点的分类器,所述代价敏感CNN网络流量分类器通过代价敏感矩阵对少数类的错误分类赋予更高的代价,在每一次对少数类的错误分类都会根据代价敏感矩阵重新计算损失值并对模型的权重进行更新,使得之后模型在少数类进行分类时更加慎重;
S4、再通过所述流量解析模块进行计算代价矩阵:由所述代价敏感CNN网络流量分类器模型通过各类别样本数量和总样本数量计算各类别占比,依据各类别在子数据集中的占比计算获得各个子数据集的代价矩阵,并在代价敏感CNN网络流量分类器的训练过程中将该代价矩阵加入;所述代价矩阵根据各流量类别在数据集中的占比制定,然后应用于代价敏感CNN网络最后一层全连接层的输出,以根据各种代价改变网络的权重;具体包括以下步骤:
S41、子数据集的流量类别数量为M,则生成一个M*M的代价矩阵r;
S42、将矩阵的对角线元素设置为0;
S43、 为i类流量样本数量, 为j类流量样本数量,若 ,则,否则 ,其中, 表示将i类流量错分为j类流量的代价, 表示将j类流量错分为i类流量的代价;
S5、通过所述分类器训练及优化模块进行分类器的训练:将各部分的流量数据输入到基于树状结构的代价敏感CNN网络流量分类器中,对分类器进行训练;
S6、通过所述分类器训练及优化模块进行分类器优化:利用S2中抽取的测试数据测试分类器性能,并对获得的指标结果分析,选择最优参数,优化分类器。
2.根据权利要求1所述的加密流量分类方法,其特征在于,步骤S1包括:定义TCP流:以三次握手建立连接时的SYN标志位为1的SYN包开始、以FIN标志位或以RST标志位为1的FIN包或者RST包结束的TCP双向流。
3.根据权利要求2所述的加密流量分类方法,其特征在于,步骤S1包括:定义UDP流为以第一个数据包到达为开始,如果两个数据包到达的时间间隔超过一分钟,则认为第一个数据包的数据流结束,第二个数据包的新数据流开始。
4.根据权利要求3所述的加密流量分类方法,其特征在于,步骤S2具体包括以下步骤:S21、依次读取所捕获的网络流量经过流量预处理后得到的会话流,判断每个会话的长度是否大于784个字节;
S22、若会话长度超过784个字节,则执行截断,如果会话长度小于784个字节,则执行零填充;
S23、对流量数据进行归一化处理;
S24、按照一定比例抽取部分流量数据用于后续分类器的测试以及调优。
5.根据权利要求4所述的加密流量分类方法,其特征在于,步骤S3具体包括以下步骤:S31、所捕获的所有流量的流量类别数量为N,分离所有流量数据的每个流量类别样本;
S32、将N设为根节点,在第一层令当前层s=1,计算N/2是否为整数,若为整数,则其左右子节点的流量类别数量为N/2,否则,左右子节点的类别数量分别为(N‑1)/2、(N+1)/2;
S33、从左向右遍历当前层s的节点,假设s层节点d的流量类别数量为M,若M<4,标记该节点并停止划分,否则确定M/2是否为整数后,重复S32的操作;
S34、如果当前树的所有叶节点都被标记,则完成划分,否则重复S33的操作;
S35、利用余弦相似性测量不同流量类别间的相似性,再根据各节点的流量类别数量M,将M个相似的流量类别样本放入同一数据集,作为该节点的训练数据,并为每个节点生成相应数据集,从而获得若干子数据集。
6.根据权利要求5所述的加密流量分类方法,其特征在于,步骤S5中对分类器的训练步骤包括如下:
S51、在所述CNN网络中加入代价敏感层,激活所述代价敏感层,形成代价敏感CNN网络流量分类器;
S52、用子数据集训练代价敏感CNN网络流量分类器,并将各代价敏感CNN网络流量分类器按节点顺序,排成树状结构,形成一个基于树状结构的代价敏感CNN网络流量分类器;
S53、用测试数据测试模型分类效果,调节模型参数;
S54、重复步骤S52和步骤S53,直至得到最优的基于树状结构的代价敏感CNN网络流量分类器。
7.根据权利要求6所述的加密流量分类方法,其特征在于,所述代价敏感层被激活过程主要分为以下3步:
指定实际和预测的流量类别;
利用代价矩阵r来确定误分类代价;
将指定的代价应用于实际的类别的输出和预测的类别的输出,形成实际的类别和预测的类别的新输出:
其中, 分别指预测的类别和实际的类别的输出, 分别表示预测的类别和实际的类别的新输出;
然后改变交叉熵函数,并引入新的代价函数;新的代价函数获得通过SoftMax函数计算得到的分类器的类别输出 和其对应的概率向量值 值作为输入,并返回每个类的损失值,在修改了实际和预测类别的输出之后,再次利用SoftMax函数使用如下方程计算预测类别的新损失值 和实际类别的新损失值 :其中, 为预测类别的新输出 的概率值, 为实际类别的新输出 的概率值;
最后将新的损失值应用到网络训练中。