目前,公知的基于深度学习的加密流量识别算法可分为基于端口、基于有效载荷和基于流的识别方法。在这一框架下,基于端口的流量识别方法假设大多数应用程序使用默认的TCP协议或UDP端口号来推断服务或应用程序的类型。因此,端口伪装、随机及隧道技术等方法失效。而基于有效载荷的识别方法需要匹配数据包内容,因此无法处理加密流量。和前两种方法不同,基于流的识别方法通常依赖于统计特征或时间序列特征,采用机器学习方法对流量数据进行建模,再给出识别结果。
然而,机器学习方法存在的局限性包括:(1)难以自动提取和选择特征,需要依赖专家经验进行手动提取特征、选择特征等,使得识别效果难以保证;(2)离线提取特征的方式使得识别算法难以应对在线流量识别的场景,需离线更新特征,重新训练识别模型,难以实时提供流量识别结果。因此,解决上述问题,是流量识别算法设计的重中之重。
为了克服现有流量识别方法的不足,解决现有流量识别方法难以自动提取和选择特征的问题。本发明专利提供一种基于深度学习技术的加密流量识别算法。该流量识别算法不仅能够自动从流量数据中准确提取特征、选择特征,而且能够在线训练流量识别模型。
解决技术问题所采用的技术方案是:
(1)流量数据预处理,加密流量数据集划分为原始数据包数据集、流量文件和统计特征三种类型。预处理包括数据包过滤、报头去除、数据包填充与阶段以及数据归一化。
(2)自动特征提取,输入数据为原始数据包数据、流量特征、原始数据与流量特征组合三种。使用深度学习技术自动提取原始数据包中的特征,流量特征采用包级别特征,即源与目的端口,包长度、到达时间间隔、有效载荷字节、TCP窗口大小及流向。会话特征采用接收与发送数据包的个数、会话持续时间和有效负载。统计特征采用平均数据包长度、平均延误时间间隔和平均上下行数据比例。原始数据与流量特征则包含上述特征的优化组合结果。
(3)深度神经网络搭建,采用深度卷积网络作为流量识别模型,使用多个卷积层处理高维输入,利用池化层减少模型参数。将流量数据转换为二维图像,提高流量识别模型的泛化能力。
(4)深度神经网络的训练,采用随机梯度下降方法训练模型,并采用在线训练方法对模型进行实时更新,使识别模型能够提供在线识别结果。
本方法的有益效果是,可以在线提供流量数据的识别结果。能够自动进行特征提取、计算和选择,有效提高了实时场景下的流量识别效果。