加密流量分类-论文3:FS-Net: A Flow Sequence Network For Encrypted Traffic Classification

本文主要是介绍加密流量分类-论文3:FS-Net: A Flow Sequence Network For Encrypted Traffic Classification,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

加密流量分类-论文3:FS-Net: A Flow Sequence Network For Encrypted Traffic Classification

  • 0、摘要
  • 1、问题引入
  • 2、问题定义
  • 3、模型结构
    • 3.1总览
    • 3.2 嵌入层
    • 3.3 编码层
    • 3.4 解码层
    • 3.5 分类器
  • 4、实验
  • 5、总结与思考

0、摘要

  FS-Net是一个端到端的分类模型,它从原始流中学习代表性特征,然后在一个统一的框架中对它们进行分类。采用多层编码器-解码器结构,可以深入挖掘流的潜在序列特征,并引入重构机制,提高特征的有效性。

1、问题引入

  传统的基于统计特征加上机器学习的流量分类,太依赖与专业经验,即人类的特征工程,特征工程的好坏直接影响分类性能。以往的基于DL的流量分类方法如Deep Packet:,只使用了网络流量的有效载荷进行分类,没有考虑到流量中的其他信息。因此提出基于DL的端到端的分类模型,尝试设计一种新的适合流序列特征的神经网络结构,可以直接从原始输入中学习特征,学习到的特征以真实标签为指导,从而提高性能。因此,它可以节省设计和验证功能的人力。

2、问题定义

  • FS-Net是基于网络流量的应用分类,即应用识别。
  • 一个原始流量可以表示为不同的类型序列,如消息类型序列或者包长度序列,本文将一个原始流量看作包长度序列。具体的,Xp表示第p个样本的序列表示:
    X p = [ L 1 p , L 2 p , . . . , L n p ) ] X_p=[L_1^p,L_2^p,...,L_n^p)] Xp=[L1p,L2p,...,Lnp)]
    其中n是Xp的长度,Lip是时间步长i的数据包值。

3、模型结构

3.1总览

类似于AE半监督的思想,模型由五大块组成

  • 嵌入层
  • 编码层
  • 解码层
  • 重构层
  • 分类器
    模型整体结构

3.2 嵌入层

  

  • 任务:将L1到Ln的序列信息转化为e1到en的向量表示。如果有K个数据,且嵌入向量的维度为d,那么K个数据经过嵌入层将转化为一个矩阵EK*d,矩阵E是可以在模型训练过程中训练出来的,矩阵的每一个行向量都对应着一个数据样本的嵌入向量表示。
  • 使用嵌入向量的优点:
    1. 一些非数值(如消息类型)可以很容易地表示为数值进行计算。
    2. 向量表示丰富了一个序列中每个元素保存的信息。嵌入向量的每个维度都是影响流生成的潜在特征。同一元素在不同的序列中可能有不同的含义和方面。
    3. 模型可以学习每个元素的嵌入向量的面向任务的较优秀的向量表示,从而提高分类性能。

3.3 编码层

  • 输入为嵌入向量,输出压缩后的特征
  • 编码采用的是堆叠的Bi-GRU神经网络模型。低层的编码器学习到局部特征,高层的编码器学习到相对全局的特征,最后将所有层的最终前向与后向的隐藏状态串联Ze作为编码器压缩后的特征。此时,Ze就包含了整个编码流程序列的双向上下文信息,将会作为分类器的输入的一部分。(既有局部的,又有全局的)

3.4 解码层

  • 解码器的结构如同编码器一样,为折叠的Bi-GRU网络结构。
  • 输入为Ze,输出由两个部分组成
    1.第一部分类似于编码器的输出,为解码器所有层的前向状态与后向状态的拼接,称之为,Zd这部分输出将会作用与最终的分类器输出的一部分。
    2.第二部分则是最后一层解码器的自身输出,这部分将会送入重构层,进行重构,重构目标是还原起初的模型输入。

3.5 分类器

  • 分类器之前,设置了Dense层对分类器的输入(即Ze与Zd向量的拼接)进行压缩,得到新的特征向量z.
    压缩公式
    然而,z的维度还是太高,使用两层带Selu的激活函数的MLP对z进行降维得到Zc,降维过后能有效避免过拟合问题。
    降维
    公式中的W1,b1,b2都是可以学习的参数。
  • 输入为Zc,经过softmax分类器,得到预测标签A-,与真实标签A之间构造一个交叉熵损失LC
  • 在重构器后面,解码器中的Bi-GRU经过重构,输出的Li^与原始的输入特征Li之间可以构造另外一个交叉熵损失LR
  • 因此,最终的损失函数
    L = L C + α L R L=L_C+αL_R L=LC+αLR
    α是超参数。

4、实验

  • 实验设置:以报文长度序列作为FS-Net的输出,嵌入向量维度d设置为128,GRU的隐藏状态维度也是128,α设置为1,dropout设置为0.3,Adam优化器的lr设置为0.0005

  • 与其他模型结果实验对比的结论:加密流分类任务中,报文长度比消息类型更具有代表性。主要原因可能是[11]发现的不同应用程序的消息类型序列高度重叠。有更多的信息蕴含在包长度集合中而不是消息类型的集合中。

  • 对FS-Net的一些分析

    1. 摒弃解码器层、重构层和重构损失,即只将基于编码器的特征向量Ze传递到密集层进行分类。该变体称为FS-ND.此时FS-Net与其变体FS-ND的默认输入仍旧为包长度序列(The packet length sequence)

    个人感觉这种变体特别像BERT,BERT就是只使用了Transformer的编码器结构,经历预训练后,在诸多下游任务中均获得了不错的效果。当然,BERT是有MLM与NSP的预训练任务的,而此处的FS-ND貌似并没有提及,只是单纯砍掉了解码器与重构器那一部分。

    1. 因为传统的消息类型马尔可夫方法(FoSM、SOCRT、SOB)以**消息类型序列(The message type sequences)**作为输入。为了便于比较,FS-Net和FS-ND也结合消息类型序列进行测试,对应的方法记为FS-Net- s和FS-ND- s。
    2. 采用多属性序列(消息类型序列和报文长度序列)来提高性能。即同时关注包长度序列(The packet length sequence)消息类型序列(The message type sequences),这两种不同的模型被称为FS-Net-SL和FS-ND-SL。
      实验结构
    • 结果分析
      1. 重构机制(即包含解码层、重构层)有用,提高分类性能。与不同序列比较,FS-Net的FTF性能始终优于FS-ND,提高了0.01左右。利用重构机制,引导从编码器学习到的特征存储更丰富的信息。
      2. 重构机制有用,但是对比FS-ND提示不大,并且加了那么多结构,有点不太划算。变体模型FS-ND也优于现有的模型,而且FS-Net和FS-ND之间的性能差距不大。然而,FS-ND模型比FS-Net需要更少的层,可以更快地训练。
      3. 报文长度序列的信息比消息类型序列的信息更丰富。消息类型序列的信息几乎被合并到包长度序列中。从FS-Net到FS-Net- sl的改进不显著(如FTF为0.0005)。FSND和FS-ND-SL之间也存在类似的现象。
  • 调参分析

    1. GRU的隐藏状态维度:太大,模型冗余,过拟合的同时容易从噪声中学习无用信息;太小,不足以提取数据的隐藏特征。研究中设置为128。
    2. 超参数α:建议α值设为[0.125,2]。

5、总结与思考

  • 模型结构,类似与NLP中的Seq2Seq结构,可否在中间的编码器与解码器之间照葫芦画瓢加上Attention机制来进一步优化捏?
  • 去除解码器与重构器,模型复杂度减少,并且实验证明在数据集上的表现FS-ND也跟FS-Net差之无几,能否在FS-ND上做出改进,使之效率与复杂度要比现在的模型好。

这篇关于加密流量分类-论文3:FS-Net: A Flow Sequence Network For Encrypted Traffic Classification的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!


原文地址:https://blog.csdn.net/qq_45125356/article/details/126690908
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.chinasem.cn/article/833475

相关文章

SpringBoot3使用Jasypt实现加密配置文件

《SpringBoot3使用Jasypt实现加密配置文件》这篇文章主要为大家详细介绍了SpringBoot3如何使用Jasypt实现加密配置文件功能,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编... 目录一. 使用步骤1. 添加依赖2.配置加密密码3. 加密敏感信息4. 将加密信息存储到配置文件中5

SpringBoot整合jasypt实现重要数据加密

《SpringBoot整合jasypt实现重要数据加密》Jasypt是一个专注于简化Java加密操作的开源工具,:本文主要介绍详细介绍了如何使用jasypt实现重要数据加密,感兴趣的小伙伴可... 目录jasypt简介 jasypt的优点SpringBoot使用jasypt创建mapper接口配置文件加密

Java实现MD5加密的四种方式

《Java实现MD5加密的四种方式》MD5是一种广泛使用的哈希算法,其输出结果是一个128位的二进制数,通常以32位十六进制数的形式表示,MD5的底层实现涉及多个复杂的步骤和算法,本文给大家介绍了Ja... 目录MD5介绍Java 中实现 MD5 加密方式方法一:使用 MessageDigest方法二:使用

Nginx如何进行流量按比例转发

《Nginx如何进行流量按比例转发》Nginx可以借助split_clients指令或通过weight参数以及Lua脚本实现流量按比例转发,下面小编就为大家介绍一下两种方式具体的操作步骤吧... 目录方式一:借助split_clients指令1. 配置split_clients2. 配置后端服务器组3. 配

基于.NET编写工具类解决JSON乱码问题

《基于.NET编写工具类解决JSON乱码问题》在开发过程中,我们经常会遇到JSON数据处理的问题,尤其是在数据传输和解析过程中,很容易出现编码错误导致的乱码问题,下面我们就来编写一个.NET工具类来解... 目录问题背景核心原理工具类实现使用示例总结在开发过程中,我们经常会遇到jsON数据处理的问题,尤其是

SpringBoot使用Jasypt对YML文件配置内容加密的方法(数据库密码加密)

《SpringBoot使用Jasypt对YML文件配置内容加密的方法(数据库密码加密)》本文介绍了如何在SpringBoot项目中使用Jasypt对application.yml文件中的敏感信息(如数... 目录SpringBoot使用Jasypt对YML文件配置内容进行加密(例:数据库密码加密)前言一、J

Node.js net模块的使用示例

《Node.jsnet模块的使用示例》本文主要介绍了Node.jsnet模块的使用示例,net模块支持TCP通信,处理TCP连接和数据传输,具有一定的参考价值,感兴趣的可以了解一下... 目录简介引入 net 模块核心概念TCP (传输控制协议)Socket服务器TCP 服务器创建基本服务器服务器配置选项服

C#使用DeepSeek API实现自然语言处理,文本分类和情感分析

《C#使用DeepSeekAPI实现自然语言处理,文本分类和情感分析》在C#中使用DeepSeekAPI可以实现多种功能,例如自然语言处理、文本分类、情感分析等,本文主要为大家介绍了具体实现步骤,... 目录准备工作文本生成文本分类问答系统代码生成翻译功能文本摘要文本校对图像描述生成总结在C#中使用Deep

使用zabbix进行监控网络设备流量

《使用zabbix进行监控网络设备流量》这篇文章主要为大家详细介绍了如何使用zabbix进行监控网络设备流量,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 目录安装zabbix配置ENSP环境配置zabbix实行监控交换机测试一台liunx服务器,这里使用的为Ubuntu22.04(

Java中的密码加密方式

《Java中的密码加密方式》文章介绍了Java中使用MD5算法对密码进行加密的方法,以及如何通过加盐和多重加密来提高密码的安全性,MD5是一种不可逆的哈希算法,适合用于存储密码,因为其输出的摘要长度固... 目录Java的密码加密方式密码加密一般的应用方式是总结Java的密码加密方式密码加密【这里采用的