崔永俊,郝立鑫
(中北大学仪器科学与动态测试教育部重点实验室,山西太原 030051)
加密流量分类对于网络安全、网络入侵检测、QoS 分析等具有重要意义[1],传统的流量识别有基于端口、基于负载、基于测度[2]等识别方法,深度学习与之相比在这一方面表现出优越的特性,无需人工提取特征、模型训练简单、准确率较为理想等优点让深度学习成为当下研究的热点。
文献[3]中选用CNN 对三种加密流量进行识别,准确率达到了98%。文献[4]中选用CNN 对14 种应用的加密流量进行分类,识别准确率达到了96.22%。文献[5]中将CNN 与RNN 串联在一起,对五种未加密流量和五种加密流量进行测试,识别准确率达到98%。
该文综合模型的识别、训练鲁棒性等各个方面,提出了并联融合模型[6]识别加密流量分类方法。
为了增加实验的可信度,选用ISCX VPN-non VPN 加密流量数据集[7],此数据集是pcap 格式的文件,选取其中五种常见的加密流量类型。将加密流量进行五元组(源IP 地址、目的IP 地址、源端口号、目的端口号、协议)分类,将数据包中的源IP 地址、目的IP 地址以及MAC 地址等都过滤掉,这些地址信息对加密流量的特征提取没有帮助,当模型迁移到其他设备工作时,还可能对模型造成干扰,所以认为过滤掉这些信息更有利于进行模型的训练。数据预处理的整体流程图如图1 所示。
图1 数据预处理的整体流程图
在CNN 的选择中,选用了二维CNN[8],其相较于一维CNN 具有更好的分类效果。二维CNN 对图片格式的数据更为敏感,将数据包转化为灰度图作为输入,更有利于CNN 学习特征。经实验证明28*28 像素大小的灰度图效果最好[9],数据包的长度不一,提取每个数据包前784 Byte,不足784 Byte的数据包用零补足到784 Byte,对于超过784 Byte的数据包,舍弃掉多余字节,保证所有样本的长度相同,数据包中的原始字节是十六进制的两位数,将其转换为0~255 的十进制数据,进行归一化将其变为0~1 之间的数据,采用瀑布流构图[10]方式将其转换为28*28 像素的灰度图,此种构图方式会增加像素点之间的联系,有利于模型的训练,构图方式如图2 所示。
图2 瀑布流构图方式
为了发挥GRU[11]提取时序特征的特性,随机选取连续四个数据包的前196 Byte,同理,不足补零,溢出舍弃,将其前后拼接为784 Byte,此样本中含有丰富的时序特征,进制转换并归一化后将其作为GRU的输入。
该文的整体模型设计如图3 所示,CNN 与GRU并联结合,模型经过决策融合后输出最后分类结果。
图3 整体模型设计
CNN 的结构及参数如图4 所示。
图4 卷积神经网络模型结构及参数
该文设计的CNN 结构为四层卷积层与两层全连接层,CNN 中没有池化层,因为池化方法[12]中无论是最大池化还是平均池化都会造成特征丢失,且池化层没有学习的能力,所以用卷积层来代替池化层[13]。
经过卷积之后,图片尺寸的输出公式如式(1)-(2)所示:
由上式可以看出选用不同参数时,输出图片的尺寸也会相应变化,当padding=SAME,步长stride=2时图片的输出尺寸会变为输入的一半,此时的卷积层可以代替池化层进行工作,实验证明此改变可以提高模型的准确率。
CNN 训练时的优化器采用Adam[14]优化器,网络层的激活函数均采用ReLU 激活函数。
模型的右边是循环神经网络,LSTM[15](Long Short Term Memory)和GRU 都是较为常用的循环神经网络,GRU 是在LSTM 的基础上变化而来,与LSTM 相比,GRU 不仅结构简单,还有良好的时序列特征学习能力。
该文设计的循环网络模型采用了三层GRU 网络进行堆叠,三层网络中隐藏单元的数量为128,每层GRU 网络具体结构如图5 所示。
图5 GRU单层结构
其中,A 代表GRU cell 结构,Xt是每个时刻的输入单元,在文中输入分为四个时刻,每个时刻的输入向量为196 维,ht是每个时刻的输出向量,每一层网络的输出作为下一层网络相同时刻的输入,第三层网络中最后一个时刻的输出作为整个网络的输出,输出再经过全连接层转化为相应维度。
模型融合就是对一组基分类器以特定方式进行组合,以提升模型整体性能的方法。模型融合的常见方法有Voting、Averaging、Ranking、Bagging、Boosting、Stacking 等,该文选用Averaging 方法,也就是平均法,平均法又分为三种方法,分别是算数平均法、几何平均法以及加权平均法,如下所示:
其中,f1+f2+f3+…+fk=n,加权平均法相较其他两种方法融合效果更为理想,经实验得出CNN 与GRU 预测结果的权数分别设为1.2 与0.8 最为理想,融合表达式为:
该文按照控制变量法分别设置了三组对照实验,以便更好地评估该文所提出的模型性能。
1)该文模型与单一卷积神经网络进行对比,因该文模型中卷积神经网络的结构参数均为现有方法中最为有效的,所以将单一卷积神经网络的结构参数均与该文一样并设其为CNN,设该文模型为CNN+RNN。
2)该文模型与卷积神经网络和循环神经网络的串联融合模型进行对比,设置对比模型的参数与现有方法中效果最好的参数一致,设此对比模型为CNN-RNN。
该文所有实验均使用相同的数据集,基于TensorFlow[16]框架构建模型,所有实验都在Nvidia RTX 2060 GPU 实现,在训练趋于稳定时结束训练并进行验证与测试。
该文的实验评价指标有两个,一个是查准率(Precision)和召回率(Recall)的综合值F1,查准率与召回率同等重要,为了避免两个指标发生冲突难以评价模型性能,所以提出了F1 值,另一个是准确率(Accuracy),计算方法如下:
式中,TP 代表真正(True Positive),TN 代表真负(True Negative),FP 代表假正(False Positive),FN 代表假负(False Negative),具体如表1 所示。
表1 分类结果混淆矩阵
将ISCX VPN-nonVPN 数据集中的数据预处理之后,按照7∶1∶2 的比例划分为训练集、验证集与测试集,按照实验设置进行实验得到三种模型的测试准确率,由于篇幅所限,只给出CNN+RNN 模型的数据,如表2 所示。
表2 模型测试数据
将表2 中的加密流量按照从上到下的顺序标号为1-8,对比实验结果如图6-7 所示。
图6 对比实验1
图7 对比实验2
由对比实验的结果图可知,该文所提出模型CNN+RNN的准确率相对于CNN平均提高了14.07%,有着较大提升,说明单一模型在流量识别方面的局限性;CNN+RNN 的准确率相对于CNN-RNN 平均提高了2.79%,虽然准确率提高的并不算非常明显,但是由于显示生活中流量的基数非常大,所以小的提升所节省下的资源也是非常可观的。三种模型的F1 值对比图如图8 所示。
图8 F1值对比图
可以看出CNN+RNN 模型的鲁棒性也优于其他两种模型。在训练准确率方面,三种模型趋于稳定的训练轮次基本相同,如图9 所示。
图9 训练准确率
在训练时间上,CNN 因结构较为简单所以耗费时间较少,CNN+RNN 耗费时间略多于CNN-RNN,如表3 所示。
表3 模型训练效率
CNN+RNN 耗费时间更多是因为此模型拥有两个完整的神经网络,结构上相较而言更为复杂。总体来说,训练效率在可接受范围之内。
该文针对加密流量分类问题提出了一种基于融合模型的分类方法,此方法将卷积神经网络与循环神经网络以并联的方式结合起来,每个神经网络都能发挥出自己的特性,卷积神经网络提取加密流量的空间特征,循环神经网络提取加密流量的时序特征,此方法还将卷积神经网络的池化层用卷积层代替,解决了加密流量特征丢失以及池化层不能学习等问题。并联融合模型的识别准确率相较于单一模型和串联融合模型分别提高了14.07%与2.79%,实验证明此模型性能优于现有模型。该文所用数据集为离线数据集,在未来将进行加密流量实时分析等方面的工作,在线流量处理将会增加相当大的处理性能开销,因此需要在准确性、误报率、实时性以及性能优化等方面做进一步研究。