加密流量分类-论文4Endtoend Encrypted Traffic Classification with One-dimensional Convolution Neural Networks

加密流量分类-论文4:End to End Encrypted Traffic Classification with One-dimensional Convolution Neural Networks

  • 0、摘要
  • 1、概念介绍
    • 1.1 流量加密技术
    • 1.2 常见加密协议
    • 1.3 端到端的流量分类方法与传统方法的对比
    • 1.4 网络流量划分粒度
  • 2、ISCX-VPN-NonVPN-2016数据集
  • 3、模型结构
    • 3.1总览
    • 3.2 数据预处理
    • 3.3 训练阶段
    • 3.4 测试阶段
    • 3.5 1D-CNN模型
  • 4、实验
  • 5、总结与思考

0、摘要

  此篇方法是第一个将端到端的方法应用到加密流量分类领域,使用数据集ISCX-VPN-NonVPN-2016数据集进行研究。

1、概念介绍

1.1 流量加密技术

  依据ISO/OSI层的不同,加密技术可以分为

  • 应用层加密:应用程序在应用层实现自己的协议以实现数据的安全传输(如BitTorrent或Skype),在一些论文中也称为常规加密。

  • 表示层加密

  • 网络层加密:如IPSec加密协议

1.2 常见加密协议

  • IPSec协议:网络层加密协议。分为传输隧道两种模式
    • 传输模式:在IP报头和高层协议报头中插入一个IPSec报头,该模式不会改变IP报头中的目的地址,源IP地址也保持明文状态。
    • 隧道模式:报文的源IP地址以及数据被封装成一个新的IP报文,并在内部和外部报头之间插入一个IPSec报头,原来的IP地址作为需要进行安全业务处理的一部分来提供安全保护,并且该模式下,可以对整个IP报文进行加密操作,常用来实现虚拟专用网VPN
  • SSL/TLS协议:传输层协议。对于TLS,简单地说,是在TCP层之上再封装了SSL层。安全套接层协议 SSL 提供应用层和传输层之间的数据安全性机制,在客户端和 服务器之间建立安全通道,对数据进行加密和隐藏,确保数据在传输过程中不被改变。 SSL 协议在应用层协议通信之前就已经完成加密算法和密钥的协商,在此之后所传送的 数据都会被加密,从而保证通信的私密性。
  • HTTPS协议:应用层加密协议。HTTPS中,通信协议使用安全传输层TLS或者SSL进行加密。
  • QUIC协议:应用层加密协议。全称(Quick UDP Internet Connection),是谷歌制定的一种基于UDP的低时延的互联网传输层协议。QUIC融合了包括TCP、TLS、HTTP/2.0等协议的特性,但是基于UDP传输,主要目标就是减少连接延迟,避免HTTP/2.0的线头阻塞(Head-of-Line Blocking)问题。

1.3 端到端的流量分类方法与传统方法的对比

加密流量分类-论文4Endtoend Encrypted Traffic Classification with One-dimensional Convolution Neural Networks_第1张图片

  • 传统的分类方法流程:从原始流量中,经过人类专家精心设计的特征工程模块进行特征提取,形成基于流级(flow)或者包级(packet)的特征,最后送入分类器进行分类(一般是传统的基于机器学习的分类模型,如LR、SVM、C4.5等分类器)
  • 端到端的分类方法流程:从原始流量直接进入模型,映射到它对应的label。

1.4 网络流量划分粒度

  不同的拆分粒度会导致不同的流量单位。主流的研究分为包级(packet)、流级(flow)、会话级(session)

  • 原始流量(raw traffic)可以定义为|P|个包的集合
    P = { p 1 , . . . p ∣ P ∣ } P=\{p^1,...p^{|P|}\} P={p1,...pP}
    其中,
    p i = ( x i , b i , t i ) , i = 1 , 2 , . . . , ∣ P ∣ p^i=(x^i,b^i,t^i),i=1,2,...,|P| pi=(xi,bi,ti),i=1,2,...,P

    • 第一个分量xi 表示五元组(源IP、源端口、目的IP、目的端口和传输级协议)
    • 第二个分量bi表示包的长度,单位是字节(byte)
    • 第三个分量ti表示当前包开始传输的时间
  • 流级:一组原始流量P可以划分为多个子集,子集中的所有数据包按照时间排列,每一个子集就称为一个流(flow)
    f = ( x , b , d , t ) = { p 1 = ( x 1 , b 1 , t 1 ) , p 2 = ( x 2 , b 2 , t 2 ) , . . . , p n = ( x n , b n , t n ) } , t 1 < . . . < t n f=(x,b,d,t)=\{p^1=(x^1,b^1,t^1),p^2=(x^2,b^2,t^2),...,p^n=(x^n,b^n,t^n)\}, t^1<...f=(x,b,d,t)={p1=(x1,b1,t1),p2=(x2,b2,t2),...,pn=(xn,bn,tn)},t1<...<tn

    • x表示流中所有包的五元组(都是相同的)
    • b表示流中所有包的字节总和
    • d表示流持续时间,可以表示为d=tn-t1
    • t则是流中第一个数据包开始发送的时间
  • 会话级:一个会话可以定义为双向流,即流的五元组中的源IP/源port与目的IP/目的port可以互换(session)

2、ISCX-VPN-NonVPN-2016数据集

  • ISCX-VPN-NonVPN-2016包括7种常规加密流量和7种协议封装流量

    数据集结构如下:

    加密流量分类-论文4Endtoend Encrypted Traffic Classification with One-dimensional Convolution Neural Networks_第2张图片

  • ISCX数据集的流特征有14类标签,但原始流量没有标签,因此我们根据数据集中pcap文件的论文描述对其进行标签。而一些文件,如Facebook_video.pcap可以被标记为“浏览器”或“流媒体”,所有与“浏览器”和“ -浏览器”相关的文件都有这个问题。决定不给这些文件贴上标签。

最后,标记的ISCX数据集有12类,包括6类常规加密流量和6类协议封装流量。

3、模型结构

3.1总览

加密流量分类-论文4Endtoend Encrypted Traffic Classification with One-dimensional Convolution Neural Networks_第3张图片

3.2 数据预处理

  使用论文团队开发的工具USTC-TL2016进行数据预处理

  • 流量分割:这个步骤将一个连续的原始流量分割为多个离散的流量单元。输入数据格式为pcap。如果表示类型为Flow + All或Session + All,则输出数据格式为pcap。当表示类型为Flow + L7或Session + L7时,输出数据格式为bin。即.pacp 转化为.pacp或者.bin。
    • ALL表示使用了所有层的包层选择

    • L7表示仅仅使用了OSI模型的第七层(应用层)的包层选择

  • 流量清理:对数据链路层和IP层的MAC地址和IP地址分别进行随机化。
  • 图像生成(非必要):将所有文件修剪为统一的长度。如果文件大小大于784字节,则裁剪为784字节。如果文件大小小于784字节,则在最后添加0x00以补充到784字节。然后,具有相同大小的结果文件被转换为灰色图像。原始文件的每个字节代表一个像素,例如0x00是黑色的,0xff是白色的。这种转换是可选的,可以简单地直接将文件转换为IDX文件。
  • IDX转换:此步骤将图像转换为IDX格式文件,IDX文件包含一组图像的所有像素和统计信息。IDX格式是机器学习领域中常用的文件格式。

3.3 训练阶段

  采用小批量随机梯度下降(SGD)。采用10倍交叉验证技术,保证了CNN模型的泛化能力。

3.4 测试阶段

  利用训练好的CNN模型进行测试

3.5 1D-CNN模型

  • 输入:取流或者会话的前n个字节作为模型输入,n取784(28*28)

  • 使用1D-CNN的理由:CNN主要应用于计算机视觉领域,如图像分类。CNN适用于以下类型的数据:

    • 多数组形式的数据;

    • 具有强局部相关性的数据;

    • 特征可以出现在任何地方的数据;

    • 对象不受平移和扭曲影响的数据。

具体来说,1D-CNN适合于诸如顺序数据或语言之类的数据。2D-CNN适用于图像或音频声谱图等数据。3D-CNN适用于视频或体积图像等数据。网络流量本质上是顺序数据。它是一种按层次结构组织的一维字节流。字节、分组、会话和整个流量的结构与自然语言处理领域中的字符、单词、句子和整篇文章的结构非常相似。近年来,CNN在NLP中的成功应用均采用1D-CNN,如情感分析、文本分类。本文在这些研究的启发下,使用一维cnn执行加密流量分类任务,并将其性能与二维cnn进行比较。

4、实验

  • 模型参数

    加密流量分类-论文4Endtoend Encrypted Traffic Classification with One-dimensional Convolution Neural Networks_第4张图片

  • 超参数设置

    epoch:40

    learn_rating: 1.0e-4

    batch_size: 50

  • 实验结果
    加密流量分类-论文4Endtoend Encrypted Traffic Classification with One-dimensional Convolution Neural Networks_第5张图片

论文给出的源码是基于tensorflow实现的,这里用torch写了一个CNN做了一下exp4,也就是上图的红色箭头的结果。如下,基本差不多
加密流量分类-论文4Endtoend Encrypted Traffic Classification with One-dimensional Convolution Neural Networks_第6张图片

class OneCNNC(nn.Module):
    def __init__(self,label_num):
        super(OneCNNC,self).__init__()
        self.layer_1 = nn.Sequential(
            # 输入784*1
            nn.Conv2d(1,32,(1,25),1,padding='same'),
            nn.ReLU(),
            # 输出262*32
            nn.MaxPool2d((1, 3), 3, padding=(0,1)),
        )
        self.layer_2 = nn.Sequential(
            # 输入262*32
            nn.Conv2d(32,64,(1,25),1,padding='same'),
            nn.ReLU(),
            # 输入262*64
            nn.MaxPool2d((1, 3), 3, padding=(0,1))
        )
        self.fc1=nn.Sequential(
            # 输入88*64
            nn.Flatten(),
            nn.Linear(88*64,1024),
            # 这里自己加了两个dropout层
            nn.Dropout(p=0.5),
            nn.Linear(1024,label_num),
            nn.Dropout(p=0.3)
        )
    def forward(self,x):
        # print("x.shape:",x.shape)
        x=self.layer_1(x)
        # print("x.shape:",x.shape)
        x=self.layer_2(x)
        # print("x.shape:",x.shape)
        x=self.fc1(x)
        # print("x.shape:",x.shape)
        return x

  • 对比分析
    1. 与2D-CNN的对比
    2. 与C4.5分类器的对比

5、总结与思考

  • 学习一下流量数据的预处理套路
  • 第一个端到端的基于神经网络的分类模型?1D-CNN结果简单,分类效果好,基于深度学习的方法在流量分类中有巨大潜力。

你可能感兴趣的:(加密流量分类,分类,网络)