观成科技:基于自监督学习技术的恶意加密流量检测方案

1.前言

当前,随着加密协议技术的广泛应用,互联网用户的个人流量隐私得到了有效保护,但与此同时也衍生出一系列安全问题。由于加密流量在传输过程中无法被解密,导致传输信息呈现“黑盒化”特征,这为恶意攻击者利用加密流量实施网络攻击创造了条件——攻击者可借助加密通道隐蔽开展攻击行为,而防御者难以通过传统手段察觉。加密流量的不可见特性使得传统针对明文流量的防御技术面临失效困境,安全研究领域开始探索引入新兴技术手段,其中机器学习检测技术近年来备受关注。该技术通过提取协议字段、时序信息等专家特征,收集现网已知的正常流量与异常流量样本,利用随机森林等算法训练检测模型来进行检测。然而,在实际应用中,该方法的检测能力受到两类因素制约:

  • 特征提取依赖研究人员手工筛选自认为可区分恶意与非恶意流量的信息,但恶意流量来源广泛且成分复杂,手工提取的特征难以有效表征流量差异;
  • 训练集需由数量相近的恶意与非恶意流量构成,但现实中恶意流量收集难度大、样本量少,导致数据集存在严重的不平衡问题,进而影响检测效果。

针对上述挑战,我们提出基于自监督学习的检测方案:首先采集充足的白流量样本,借助计算机视觉领域成熟的VIT-Transformer架构,将流量包抽象为图像形式,通过模型自动完成特征提取与预训练;随后利用少量恶意流量对预训练模型进行微调,构建流量检测模型。现网环境验证表明,该方案具备优异的检测性能,对现实场景下的加密流量安全检测具有重要实用价值。

2.方案原理与设计

2.1 方案背景

自监督学习作为一种创新的机器学习范式,致力于挖掘数据自身蕴含的内在结构与语义信息,有效缓解有监督学习面临的标注数据稀缺困境。该技术通过设计精心构造的代理任务,从海量未标注数据中自动学习特征表示,最终结合少量标注数据完成模型微调,实现数据价值的最大化利用。

在计算机视觉领域,自监督学习通过数据增强策略构建正负样本对:对原始图像样本进行随机裁剪、颜色抖动等操作生成语义相似的正样本,代表同一目标的不同观察视角;同时将其他图像样本定义为负样本。通过优化对比学习目标函数,不断拉近正样本间特征距离,推远负样本间特征距离,从而学习到具有鲁棒性的图像浅层表征。

自然语言处理领域中,以BERT为代表的预训练模型则采用独特的代理任务设计:通过掩码语言模型(MLM)随机遮蔽句子中的部分单词,训练模型基于上下文预测被掩盖词汇;结合下一句预测(NSP)任务判断句子间逻辑连贯性,从而深度捕捉自然语言的上下文语义信息。

反观现有的加密流量检测模型,大多依赖有监督学习框架。这类模型依赖人工标注数据构建训练集,不仅耗费大量人力与时间成本,且在实际应用中面临诸多挑战:现实场景中存在海量未标注流量数据,而恶意流量样本的标注难度大、获取成本高,导致标注数据难以满足模型训练需求;同时,当模型面临新任务、新领域或新场景时,需重新收集并标注数据进行训练,这不仅显著增加训练成本与时间开销,还可能引发模型泛化能力不足的问题,难以适应动态变化的网络安全环境。

2.2 MoCo架构介绍

MoCo(Momentum Contrast)是由何恺明团队于2019年提出的一种基于对比学习的无监督视觉表示学习方法。其核心目标是通过构建动态字典和大规模负样本,解决计算机视觉领域无监督学习中特征一致性不足和字典规模受限的难题,最终在多个下游任务中超越有监督模型的性能。

MoCo采用采用对比学习的思想来利用大量无标签数据的信息,具体来说是通过对同一个样本进行数据增强为正样本,而不同样本之间为负样本,其数据增强的结果具有相似性,通过拉进正样本之间的距离,拉远负样本间的距离来进行浅层表征的学习。MoCo一共有两个编码器f_q(Query Encoder),f_k(Key Encoder)其中f_q在训练的过程中进行梯度更新,f_k不进行梯度更新,而是通过对f_q的参数进行动量更新。对于编码器的训练将其视为一个字典查询的任务,。假设有一个编码的查询q以及一组编码的样本{K0,K1,K2...}即字典中的键值,字典通过一个先进先出的队列来维护,具体来说每次训练结束,最早batch所在的样本出队列,而最近的batch所在的样本入队,正样本x_q经过编码器f_q得到特征向量q=f_q(x_q),另外一个正样本x_k经过编码器f_k得到另一个特征向量K+=f_k(x_k),其为与query所匹配的键值(Positive key),而队列中其他样本为负样本,其为与query不匹配的键值(Negative key)。通过计算对比损失函数InfoNCE如下所示,用梯度下降算法来更新编码器f_q,用动量更新来更新编码f_k的参数

采用MoCo模型具体优势在于以下几点:

  • 动态字典

MoCo将字典视为一个队列,以往的方法中字典的大小通常与batch_size相等使得负样本数量规模有限,而MoCo将字典大小设置成为一个超参数,每一次将batch_size大小的样本送入到字典中,当队列满时,会将队列中最旧的批次淘汰掉,来扩展字典的大小。

  • 动量更新

MoCo通过动量更新来保持字典中样本的一致性,具体来说通过设置动量m的值来保证字典解码器的缓慢更新

2.3 具体方案

  • 将流量按照五元组进行划分,五元组主要指(source IP,source Port,destination IP,destination Port, transport-level protocol), 通过按照五元组划分来区分不同的网络通信会话。
  • 对数据集进行数据清洗,去除与流量识别无关的协议如DNS协议,去除一些无效的状态包,其没有携带任何的payload信息,例如TCP的三次握手,其主要作用在于建立连接,并没有携带任何信息。
  • 对于一个给定的flow我们选取其前n个packet,每一个packet我们进行如下预处理,去除packet的前38个字节,主要用来去除一些强干扰特征,例如MAC地址受到采集环境的影响,而IP地址在给定的数据集下是有限的,训练集和现网中差异很大,如果没有将IP地址去除,可能会导致在训练中效果很好,而在现网中效果差,在去除无关信息之后选取前1500个字节,不够1500字节的进行补0,对于flow的表示是[n,1500]的矩阵,对矩阵进行归一化操作,最后flow的表示如图5-1所示。

图5-1 Flow的数据表示

  • 对于样本flow记为x我们进行如下数据增强,示意图如图5-2所示。

图5-2 数据增强示意图

随机重传:随机选择flow序列中的某个packet将其随机复制多次,以模拟现网中的数据包重传如图5-3所示。

图5-3 TCP重传

随机丢包:随机选择flow序列中的某个packet进行删除,以模拟现网中的数据包丢包,最后结果如图5-4所示。

图5-4 数据包丢包

  • 选取resnet50作为编码器来进行预训练,预训练任务为一个分类任务,两个正样本x_q=aug(x),x_k=aug(x), x_q和x_k在语义上是相似的为正样本,通过训练编码器区分正样本和负样本学习流量的浅层表征,预训练pipe-line如图5-5所示。

图5.5 预训练Pipe-line

  • 在微调阶段,冻结预训练模型线性层之前的参数,在少量有标签的数据集下进行有监督学习进行微调,采用的交叉熵损失函数计算loss,来进行梯度更新,从而更好的适应不同的任务。

3.实验结果

在现网场景下,收集现网正常加密业务TLS协议流量约2000万条,进行预训练,然后使用公司积累的加密恶意攻击流量约100万条进行模型微调。在实验验证环节,对现网中约2天的白流量约480万条进行检测以及使用非微调使用的黑流量验证集约20万条进行验证,结果如下。

真 实

预 测

白流量

黑流量

白流量

4770000

30000

黑流量

5000

195000

这里用两个指标来评判模型效果,即准确率以及误报率。经计算,准确率:(4770000+195000)/5000000=99.3%,误报率为(30000+5000)/5000000=0.7%,从结果来看模型检测效果可以满足现网环境。

4.结论

针对传统机器学习算法检测恶意加密流量能力有限的问题,引入视觉领域的MoCo模型,采用对比学习的思路进行流量自监督学习方法,收集大量的无标记数据进行训练,而后仅采用少量恶意流量进行模型微调达到检测效果。这种方法的优点在于无需大量的标记数据,符合目前国内的安全流量场景,是一种加密流量破局的有效方法。观成科技团队将持续深入运用自监督学习技术,争取在未来能够检测出更多的未知威胁。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/news/914406.shtml
繁体地址,请注明出处:http://hk.pswp.cn/news/914406.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

通用定时器GPT

目录 GPT核心特性 GPT 计数器操作模式 重启模式 自由运行模式 GPT时钟源 GPT框图 输入捕获:测量外部信号的高电平脉冲宽度 输出比较:生成 1kHz PWM 波 GPT模块外部引脚复用与功能映射表 GPT使用注意事项 GPT Memory Map GPT寄存器 GPTx_CR寄存…

#oda0095. 字符串通配符【B卷 100分】-字符串

题目描述问题描述:在计算机中,通配符一种特殊语法,广泛应用于文件搜索、数据库、正则表达式等领域。现要求各位实现字符串通配符的算法。要求:实现如下2个通配符:* :匹配0个或以上的字符(注&…

面向对象设计原则

面向对象:是一种编程思想,面向过程是关注实现的步骤,每个步骤定义一个函数,调用函数执行即可。面向对象关注的是谁来执行,把具有相同属性和行为的一类事物进行抽象成类,然后再通过实例化出一个个具体的对象…

Hyperledger Fabric深入解读:企业级区块链的架构、应用与未来

一、引言:企业级区块链的标杆Hyperledger Fabric是Linux基金会主导的开源项目,专为企业级应用设计,以模块化架构、许可链机制和隐私保护为核心,广泛应用于金融、供应链、医疗等领域。相较于公有链(如以太坊&#xff09…

从0开始学习R语言--Day45--Hausman检验

当我们在探究数据本身是否和变量相关时,往往都会对这两者进行回归分析,控制一下变量来看看趋势走向。但其实在分析前,我们可以先尝试做Hausman检验,这可以帮助我们判断数据的变化到底是因为变量不一样了还是因为自己的个体效应所以…

闲庭信步使用图像验证平台加速FPGA的开发:第九课——图像插值的FPGA实现

(本系列只需要modelsim即可完成数字图像的处理,每个工程都搭建了全自动化的仿真环境,只需要双击top_tb.bat文件就可以完成整个的仿真,大大降低了初学者的门槛!!!!如需要该系列的工程…

Android事件分发机制完整总结

一、核心概念事件分发的本质Android事件分发采用责任链模式,事件从Activity开始,依次经过ViewGroup和View。整个机制只有一个入口:dispatchTouchEvent方法。onInterceptTouchEvent和onTouchEvent都不是独立的事件入口,而是被dispa…

【论文阅读】AdaReasoner: Adaptive Reasoning Enables More Flexible Thinking

AdaReasoner: Adaptive Reasoning Enables More Flexible Thinking3. AdaReasoner3.1 动机3.2 问题定义3.3 动作选择过程3.3.1 动作空间定义3.3.2 动作选择3.4 探索策略3.5 强化学习训练3.5.1 训练算法3.5.2 目标函数3.5.3 损失函数AdaReasoner: Adaptive Reasoning Enables Mo…

深入了解Modbus TCP:工业通信的“通用语言”

目录 简介一、Modbus TCP的“前世今生”二、Modbus TCP的核心特点三、Modbus TCP的工作原理1. 报文结构2. 功能码四、Modbus TCP的应用场景五、使用Modbus TCP的注意事项六、总结简介 在工业自动化的世界里,不同设备之间的“对话”至关重要。从PLC(可编程逻辑控制器)到传感…

基于Selenium和FFmpeg的全平台短视频自动化发布系统

一、项目背景与概述在当今短视频营销盛行的时代,许多企业和个人需要同时管理多个短视频平台账号。手动上传视频到抖音、快手、小红书等平台不仅效率低下,而且容易出错。本文将介绍一个基于Python的自动化短视频处理与发布系统,它能够&#xf…

技术演进中的开发沉思-31 MFC系列:类层次结构

提及MFC,不得不说他的类层次。如果把 MFC 框架比作是座精密的钟表,那类层次结构便是其内部咬合的齿轮组。每个类都有明确的 “家族地位”,既继承着先辈的本领,又发展出独特的专长。这种层级分明的设计,让 Windows 编程…

2023.05.06 更新前端面试问题总结(12道题)

2023.05.04 - 2023.05.06 更新前端面试问题总结(12道题) 获取更多面试相关问题可以访问 github 地址: https://github.com/pro-collection/interview-question/issues gitee 地址: https://gitee.com/yanleweb/interview-question/issues 目录&#xff1…

【网络】Linux 内核优化实战 - net.ipv4.tcp_keepalive_intvl

目录1. TCP Keep-Alive 机制回顾2. 参数作用3. 参数取值与影响4. 使用场景与建议5. 相关参数6. 如何配置该参数临时生效(重启后失效):永久生效(需重启或重载配置):7. 性能优化建议8. 监控与故障排查net.ipv…

20250710解决KickPi的K7的SDK编译异常:rk3576-android14.0-25250704.tar.gz【降低BUILD_JOBS】

20250710解决KickPi的K7的SDK编译异常:rk3576-android14.0-25250704.tar.gz【降低BUILD_JOBS】 2025/7/10 20:59缘起:KickPi的K7的SDK编译异常:rk3576-android14.0-25250704.tar.gzZ:\14TB\SDK\rk3576_data\1-SDK软件源码\Android14\20250704…

《Java EE与中间件》实验一 基于MyBatis的留言本

目 录 一、实验目的和要求 1、实验目的 2、实验要求 二、实验实现思路及步骤 1、实验思路 2、实验步骤 3、实验方案 三、主要开发工具 四、实验效果及实现代码 1、留言本数据库构建实现 (1)建立javaee-project数据库 (2&#xf…

ARM汇编编程(AArch64架构) - 第14课:安全扩展(ARM TrustZone)

目录1. TrustZone基础概念1.1 安全扩展架构1.2 关键组件2. 世界切换机制2.1 状态切换流程2.2 关键寄存器配置3. SMC调用实现3.1 调用规范3.2 完整调用流程4. 实战练习4.1 实验:实现双世界通信4.2 调试技巧1. TrustZone基础概念 1.1 安全扩展架构 startuml rectang…

OpenCV哈希算法------Marr-Hildreth 边缘检测哈希算法

操作系统:ubuntu22.04 OpenCV版本:OpenCV4.9 IDE:Visual Studio Code 编程语言:C11 算法描述 该类实现了 Marr-Hildreth 边缘检测哈希算法(Marr-Hildreth Hash),用于图像相似性比较。它基于 Marr-Hildreth …

【git#5】远程操作 标签管理

📃个人主页:island1314 ⛺️ 欢迎关注:👍点赞 👂🏽留言 😍收藏 💞 💞 💞 生活总是不会一帆风顺,前进的道路也不会永远一马平川,如何面…

如何使用 Python 删除 Excel 中的行、列和单元格 – 详解

目录 开发环境准备 使用 Python 删除 Excel 表格中的行 删除特定行 删除空白行 删除含指定数据的行 使用 Python 删除 Excel 表格中的列 删除特定列 删除空白列 删除含指定数据的列 使用 Python 删除 Excel 中的单元格并自动移动剩余内容 删除特定单元格 删除空白单…

箭头函数(Arrow Functions)和普通函数(Regular Functions)

在 JavaScript 中,箭头函数(Arrow Functions)和普通函数(Regular Functions)有以下主要区别:1. 语法箭头函数:使用 > 语法,更简洁,可省略 function 和 return&#xf…