基于CNN卷积神经网络的加密流量识别方法

一、研究背景

应用机器学习的方法识别加密流量中的恶意行为在网络安全方面是必要的,

高效、准确、实时地对互联网流量的精确分类与识别是用户行为分析、流量管理、应用安全监测、 内容计费等应用的前提和基础。随着电商、搜索和社交应用的快速发展,这些应用在流量中的比重也越来越大。众所周知,这些应用均采用应用层加密,因此加密流量在网络传输中的比重越来越大,这给流量识别和分类带来了巨大的挑战。 因加密流量大多采用 SSL 技术来保障传输层以上的数据加密,因此,传统的非加密流量识别方法, 比如端口匹配、DPI 深度包检测等技术均失效。后来相关研究人员采用机器学习的方法来识别非加密流量( 尤其是 P2P 流量) ,取得了一定的进展,因此相关研究机构和人员也试图尝试通过各种机器学习的识别方法来识别加密流量,但是这些方法都存在准确率不高,流量特征的选择高度依赖于工程师的经验,耗时耗力。

二、摘要

随着互联网及各种在线应用的快速增长,加密流量在网络传输中的比重越来越大,各种流量逐渐都经过加密出现在互联网上,这给流量识别带来了巨大的挑战。文中提出一种基于CNN(卷积神经网络)的加密流量识别方法,相比传统的机器学习方法,CNN这一深度学习方法具有识别准确性高、无需人工选择特征的特点。文中选择ISCX数据集中的加密流量作为训练和测试样本,通过将流量样本预处理成为分组净荷字节矩阵(Packet Payload Byte Matrix),采用softmax做分类器,实现加密流量的识别和分类。实验表明,识别准确率可以达到98%以上。当CNN和RNN(循环神经网络)结合起来能达到更高的识别准确率。

三、神经网络和深度学习

加密流量大多采用SSL 技术来保障传输层以上的数据加密,因此,传统的非加密流量识别方法, 比如端口匹配、 DPI 深度包检测等技术均失效。 在机器学习中,应用流量识别算法可分为浅层学习和深度学习。深度学习采用训练多个单层非线性网络,组合底层特征构成数据的抽象表示, 从而表达数据的本质特征。在加密的恶意流量识别中表现良好。

文章中提出了一种基于 CNN 卷积神经网络的深度学习方法,选择“UNB ISCX VPN-non VPN traffic dataset”数据集中的加密流量作为训练和测试样本,通过数据预处理将流量样本转变为二维矩阵,作为输入数据输入到采用softmax 作为分类器的CNN加密流量识别模型中,从而实现加密流量的识别和分类。

3.1 人工神经网络

人工神经网络是一种通过模拟生物大脑的神经网络以期望能够实现人工智能的数学模型。典型的神经网络模型如图1 所示,主要由三部分构成,分别为输入层、中间层以及输出层。其中中间层也称隐藏层,可以由多层组成。图 1 中输入层有 3 个神经元,中间层有4 个神经元,输出层有 2 个神经元。
相邻层神经元通过不同权值 W1 /W2 进行连接,模型中的权值和偏置值在训练阶段将通过不断的训练调整到最佳值,从而使得整个网络的效果最好,同层神经元之间没有连接关系。

3.2 深度学习

深度学习是机器学习中的一个分支,它可被认为是具有多个隐藏层的特殊神经网络,根据是否有样本标签,可分为有监督学习和无监督学习。至今已有多种深度学习模型,包括自动编码器( SAE) 、 卷积神经网络( CNN) 、循环神经网络( RNN) 、深度置信网络( DBN) 等。随着计算机处理能力的增强, 数据集的增大,深度学习已广泛应用于实际问题中, 例如图像分类、语音识别、自然语言处理等领域。

3.3 CNN卷积神经网络


我们采用 CNN 卷积神经网络对加密流量进行识别,CNN是一种专门用来处理具有类似网格结构的数据的神经网络,例如图像数据可被看作是二维的像素网格。CNN 网络的基本结构由输入层、 中间层(隐藏层)以及输出层构成,其中中间层可由卷积层、池化层、全连接层组成,根据实际情况,可以重复组成,具体下图所示

经卷积池化全连接输出到带有分类器的输出层上去,就完成了卷积神经网络的分类功能。

四、加密流量识别模型

本文实验所采用的数据来源于“UNB ISCX VPN-non VPN traffic dataset”数据集。该数据集包括 了15 种常规加密不同应用的pcap 格式文件,如表1 所示。本文选取前面三种应用即 AIM_Chat、 Email及 Facebook_Chat 作为训练和测试的样本数据。

1 常规加密应用类别

序号

类别

序号

类别

1

AIM_Chat

9

SFTPdown

2

Email

10

Skype

3

Facebook

11

Spotify

4

Gmail

12

TorTwitter

5

Hangout

13

Vimeo

6

ICQ

14

Voipbuster

7

Netflix

15

Youtube

8

SCPdown


CNN 卷积神经网络的输入格式为类似网格结构的数据,如下图所示。首先将 pcap 文件通过数据预处理流程转化为二维矩阵,然后作为输入对象输入到 CNN 识别网络中。


4.1数据预处理

( 1) 读入 pcap 格式数据包文件。 首先对 pcap 文件进行简单处理,解析 pcap 文件头部信息,获取文件中所包含的分组的概要信息。

( 2) 对分组数据进行截断或补零。该步骤目的是形成分组字节矩阵 PBM( Packet Byte Matrix) 作为 CNN 神经网络的输入。由于每个分组的大小都不一致,考虑到 CNN 神经网络的输入维度需统一,因此需要对分组进行截断或补零。 图5 给出了数据集中分组大小的分布,可以看 出分组大小主要分布在头部( 前300 个字节) 和尾部( 后1200 ~1 500 字节) 。因此,从保障准确性的角度出发,选择截取长度为1 500。

( 3) 对分组数据进行归一化( Normalization)。为了提升训练的性能,将每个分组归一化为[ 0 -1],每个分组值为0~255,因此每个分组均除以256。

( 4) 对 PBM 分组字节矩阵进行标记。 通过在矩阵中增加一列用于标记每一行,或者 可单独建立 label vector 用于标记。

4.2 模型架构


本文所采用的基于 CNN 的加密流量识别模型 如图6 所示,包括一个输入层、两个卷积 +池化连接层、两个全连接层以及一个输出层。其中输入层为预处理过程输出后的每一个分组,两个卷积 + 池化连接层中,输出层采用 softmax 进行分类,由三个神经元组成,分别代表三种不同的 应用: AIM_Chat, Email 和 Facebook_Chat。具体处理 流程如下所述。

( 1) 输入层数据采用预处理后得到的分组字节向量输入。

( 2) 第一层卷积+池化连接层中卷积层进行卷积运算,采用 8 个滤波器,大小为[ 3, 3],移动步长 为1。输出结果通过激活函数 ReLU( 整形线性单元) 进行运算,假设输出为 a( x) ,ReLU 运算定义为:

a( x) = max[ x,0]


( 3) 第一层卷积 +池化连接层中池化层所采用 的池化函数为最大池化,其大小为[ 2, 2],移动步长 为1。最大池化函数定义为:

( 4) 第二层卷积 + 池化连接层中卷积层采用 16 个滤波器,大小为[ 3, 3],移动步长为 1。输出结果通过ReLU 进行运算。

( 5) 第二层卷积 +池化连接层中池化层所采用的池化参数同第( 3) 步。

( 6) 通过两层全连接层。全连接层把网络输入的二维特征转化为一维向量,主要用于最后的分类。考虑到参数量及准确率,通过调参,本文所使用的模型采用两层全连接层。

( 7) 输出层采用 softmax 进行分类,输出网元为 3 个,分别对应 3 种不同的加密流量应用。假设输入函数为 x, softmax 输出函数定义为:


另外还需指出,在训练过程中,本模型所采用的损失函数为 CrossEntropy( 交叉熵函数) ,则代价函 数定义如下:


其中,式( 5) 右边第一项为常规的交叉熵,第二项为 L2 正则项, λ 为正则参数。 反向传播过程中采用随机梯度下降算法不断更 新权值 w 和偏置值 b,假设学习速率为 ρ,具体迭代更新定义如下:

其中,为代价函数对 w 进行求偏导,为代价函数对 b 求偏导。

4.3实验结果分析

下图给出了本实验环境下三种加密应用流量的测试数据集上的识别结果,具体指标性能如表2 所 示。表2 同时给出了 Deep Packet 中三种相同加密应用流量的识别结果,可以看出,本文实验结果 Precision, Recall 及 F1-Score 都显示出很好的性能。

                                                                             表 2 加密应用流量识别结果

应用类别

Deep Packet

结果

Pr

Re

F1

Pr

Re

F1

AIM_Chat

0. 56

0. 70

0. 63

0. 985 7

0. 983 7

0. 984 7

Email

0. 96

0. 99

0. 98

0. 995 5

1. 000 0

0. 997 7

Facebook_Chat

0. 95

0. 95

0. 95

0. 998 9

0. 990 9

0. 994 8

平均

0. 823 3

0. 88

0. 853 3

0. 993 4

0. 991 5

0. 992 4

下图给出了在训练过程中( epoch =10) 准确率 的变化趋势,图9为训练过程中(epoch = 10)的损失 率变化情况可以很明显地看出,当epoch大于7 之后,准确率较为稳定地处于98%以上

五、结束语

针对加密应用的流量识别的问题,提出了一种基于CNN 卷积神经网络的加密流量识别方法。这种方法与之前的非加密流量识别方法,如端口匹配、 DPI 深度包检测技术比起来提高了不少可行性和精确率,并且出色的完成了加密流量的识别和分类。通过对数据集进行预处理形成分组字节矩阵,作为神经网络的输入,通过中间层参数共享、池化操作等,最后采用 softmax 作为分类输出。从实际的测试可以看出,分类性能非常优秀, 识别准确率达到98%以上。

在未来工作中,我们将考虑如何对数据进行降维,从而减少训练参数及其复杂度,另外对于样本标记的难度,还需要考虑如何采用无监督学习方法进行解决。

参考文献

[]基于卷积神经网络的加密流量识别方法基于卷积神经网络的加密流量识别方法--《南京邮电大学学报(自然科学版)》2018年06期

[2] LOTFOLLAHI M, ZADE R S H, SIAVOSHANI M J, et al. Deep packet: a novel approach for encrypted traffic classification using deep learning[EB/OL] . ( 2017-09-08) [ 2018-06-03] . https: ∥arxiv. org/abs/1709. 02656v3.

[ 3] GIL G D, LASHKARI A H, MAMUN M, et al. Characterization of encrypted and VPN traffic using timerelated features[C]∥Proceedings of the 2nd International Conference on Information Systems Security and Privacy ( ICISSP) . 2016:407 -414.

  • 4
    点赞
  • 31
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值