Traffic morphing阅读笔记

article/2025/9/4 19:21:43

文章目录

  • 前言
  • 1 变形
    • 1.1 符号表示及算法讲解
      • 1.1.1 符号
      • 1.1.2 凸优化求解
      • 1.1.3 降低开销
      • 1.1.4大样本空间分治
      • 1.1.5实验中的注意事项
        • 短会话
        • 源分布变化多样
        • 数据包分片
  • 2 实验评估
    • 2.1 加密IP语音识别
      • 白盒变形
      • 黑盒变形
      • 2.1.1 与原始分类器对抗
        • 二元分类器
        • 三元分类器
      • 2.1.2 不可区分性评估
    • 2.2 网页识别
      • 2.2.1 与原始分类器的对抗
      • 2.2.2 不可区分性评估
    • 2.3 讨论
  • 总结


前言

Traffic morphing是一种流量混淆方法,原作者采用凸优化技术将源流量侧信道的特征更改为另一种目标流量的侧信道特征来阻止流量分析攻击。


1 变形

变形的目的是为加密用户提供一种有效的方法来防止信息泄露,该方法比传统的填充法开销要小得多。要求是模仿目标流量、尽量降低开销、并且保证实时性。

1.1 符号表示及算法讲解

1.1.1 符号

源流量 X = [ x 1 , x 2 , . . . , x n ] T X=[x_1,x_2,...,x_n]^T X=[x1,x2,...,xn]T, X i X_i Xi是源流量中第i大数据包长度的概率。
目标流量 Y = [ y 1 , y 2 , . . . , y n ] T Y=[y_1,y_2,...,y_n]^T Y=[y1,y2,...,yn]T Y i Y_i Yi是目标流量中第i大数据包长度的概率。
变形矩阵 A = [ a ( i j ) ] A=[a(ij)] A=[a(ij)],其中a(ij)表示将源流量只不过第j大的数据包长度 S j S_j Sj变为目标流量中第i大的数据包长度 d i d_i di的概率。变形矩阵A采用凸优化技术求出。当变形算法接收到大小为Sj的数据包时,算法会根据变形矩阵A中的概率分布采样,改变数据包大小以匹配 d i d_i di
采样:将概率求和获得 S j S_j Sj转换为 d 1 , d 2 , . . . , d n d_1,d_2,...,d_n d1,d2,...,dn的概率分布函数,算法先进行伪随机数r∈[0,1]采样,并以累积概率中第一个≥r的 d i d_i di为目标。步骤如下:

  • 先求得 F = P ( s j ≤ d i ) , i ∈ [ 1 , n ] F=P(s_j≤d_i),i∈[1,n] F=P(sjdi)i[1,n]
  • 按随机分布生成随机数 r ∈ [ 0 , 1 ] r∈[0,1] r[0,1]
  • 选择 P ( s j ≤ d k ) ≥ r ,且 P ( s j < = d k − 1 ) P(s_j≤d_k)≥r,且P(s_j<=d_k-1) P(sjdk)r,且P(sj<=dk1)
  • 若通过以上采样得到的 d k ≥ s j d_k≥s_j dksj,则填充源数据至 d k d_k dk
  • 若通过以上采样得到的 d k < s j d_k<s_j dksj,则将源数据包分片

1.1.2 凸优化求解

变形公式为Y=AX,展开后如下:
在这里插入图片描述
从上可得: y i = a i 1 x 1 + a i 2 x 2 + . . . + a i n x n y_i=a_{i1}x_1+a_{i2}x_2+...+a_{in}x_n yi=ai1x1+ai2x2+...+ainxn
其中 a i 1 + a 2 j + . . . + a n j = 1 a_{i1}+a_{2j}+...+a_{nj}=1 ai1+a2j+...+anj=1时等式才有意义,因为 a 1 j a_{1j} a1j表示的是 x j x_j xj a 1 j a_{1j} a1j的概率转换为 y 1 y_1 y1 a 2 j a_{2j} a2j表示的是 x j x_j xj a 2 j a_{2j} a2j的概率转换为 y 2 y_2 y2,以此类推。
又因为变形会带来开销,变形技术的目标之一是尽量降低开销,所以定义成本函数如下:
f 0 ( A ) = ∑ i , j ∈ [ 1 , n ] x j a i j ( ∣ d i − s j ∣ ) ] = ∑ j n ∑ i n x j a i j ( ∣ d i − s j ∣ ) f_0(A)=\sum_{i,j∈[1,n]}x_ja_{ij}(|di-sj|)]=\sum_{j}^{n}\sum_{i}^{n}x_ja_{ij}(|d_i-s_j|) f0(A)=i,j[1,n]xjaij(disj)]=jninxjaij(disj)
其中, d i d_i di为目标数据包长度, s j s_j sj为源目标数据包长度

综上,该优化问题可写为:
m i n i m i z e f 0 ( A ) minimize f_0(A) minimizef0(A)

约束:
∑ j = 1 n a i j x j = y i , i ∈ [ 1 , n ] \sum_{j=1}^na_{ij}x_j=y_i,i∈[1,n] j=1naijxj=yi,i[1,n]
∑ i = 1 n a i j = 1 , i ∈ [ 1 , n ] \sum_{i=1}^na_{ij}=1,i∈[1,n] i=1naij=1,i[1,n]
a i j ≥ 0 , i ∈ [ 1 , n ] j ∈ [ 1 , n ] a_{ij}≥0,i∈[1,n] j∈[1,n] aij0,i[1,n]j[1,n]

1.1.3 降低开销

为了减少分片,降低开销,可以将 d i < s j d_i<s_j di<sj的所有变形概率都指定为0,但是直接指定为0可能会导致变形效果不佳,因此开销和变形效果需要进行折衷。该论文提出了一个多级规划的方法来解决以上问题,思想是找一个满足所有约束的矩阵 A ′ A' A,使得 Z = A ′ X Z=A'X Z=AX,其中Z是非常接近于原目标分布Y的,但由X变为Z满足去掉所有可能产生分片的情况。

由此可以进一步得到一个新的凸优化问题求解如下:
m i n i m i z e f d ( Y , Z ) minimize f_d(Y,Z) minimizefd(Y,Z)

约束:
Z = A ′ X Z=A'X Z=AX
∑ i = 1 n a i j ′ = 1 , j ∈ [ 1 , n ] \sum_{i=1}^na'_{ij}=1,j∈[1,n] i=1naij=1,j[1,n]
a i j ′ > 0 , i 、 j ∈ [ 1 , n ] a'_{ij}>0,i、j∈[1,n] aij>0,ij[1,n]
a i j ′ = 0 , d i < s j a'_{ij}=0,d_i<s_j aij=0,di<sj

此外,原有的凸优化问题也需要继续求解:
m i n i m i z e f 0 ( A ) minimizef_0(A) minimizef0(A)

约束:
∑ j = 1 n a i j x j = z i , i ∈ [ 1 , n ] \sum_{j=1}^na_{ij}x_j=z_i,i∈[1,n] j=1naijxj=zi,i[1,n]
∑ i = 1 n a i j = 1 , j ∈ [ 1 , n ] \sum_{i=1}^na_{ij}=1,j∈[1,n] i=1naij=1,j[1,n]
a i j ≥ 0 , i 、 j ∈ [ 1 , n ] a_{ij}≥0, i 、j∈[1,n] aij0,ij[1,n]
a i j = 0 , d i < s j a_{ij}=0,d_i<s_j aij=0,disj

1.1.4大样本空间分治

如果变形矩阵大小为1460x1460(1460是最大报文长度),则会产生非常多的约束,在求解变形矩阵的时候产生巨大的开销。具体产生的开销有多大可以看下原文,原文进行了详细的描述。

因此为了解决大样本空间开销大的问题,论文作者将n各大空间划分为m个小分区,每个分区大小为 n / m n/m n/m,然后到处m个输入分区到m各输出分区的粗变形矩阵。

分治的好处就在于将一个难以求解的大问题转化为了一个个易于求解的小问题,在该论文里面具体来说就是 n ∗ n n*n nn的X变形为Y的问题,转化为 m ∗ m m*m mm的X’变形为Y’的问题

X ′ = [ X 1 ′ , X 2 ′ , . . . , X m ′ ] X'=[X'_1,X'_2,...,X'_m] X=[X1,X2,...,Xm] Y ′ = [ Y 1 ′ , Y 2 ′ , . . . , Y m ′ ] Y'=[Y'_1,Y'_2,...,Y'_m] Y=[Y1,Y2,...,Ym],其中 X 1 ′ X'_1 X1是原来X向量中的 [ X 1 , X 2 , . . . , X n / m ] [X_1,X_2,...,X_{n/m}] [X1,X2,...,Xn/m]的中位数或平均数或其他能代表该区间的数,总之 X i ′ X'_i Xi代表的是一个区间,同理 X i ′ X'_i Xi也是。

然后可以继续将 X i ′ X'_i Xi Y i ′ Y'_i Yi继续往下分区,直到一个区间的数量小到便于求解为止。

1.1.5实验中的注意事项

短会话

该论文提出的方法适用于大量数据包生成的场景,大部分视频、音频类的流量包还是比较多的,但有些服务产生的流量包较少。解决方法是让整个变形效果与原目标流量相似度达到一定程度后终止变形,然后直接从目标流量中采样产生数据包,直到相似度达到一个阈值。

源分布变化多样

如果源分布具有明显的差异性,则变形方法性能会有所下降,解决方法是采用粗粒度的变形矩阵,同上述1.1.4中所说的分治产生的粗粒度变形矩阵类似,但是不会继续往下产生更细致的确定的变形子矩阵。也就是说,将源流量和目标流量包大小按分区划分,计算源流量包大小,各分区到目标流量包大小各分区的粗变形矩阵。每次仅限变形时,先计算源流量所属的分区A,然后根据粗变形矩阵进行采样,得到目标流量分区B,再在分区B中直接按目标流量包大小分布进行采样得到最终要变形的目标包大小 d i d_i di,最后再将 s j s_j sj变形为 d i d_i di,由此完成变形。

数据包分片

如果目标流量大小 d i d_i di<源包大小 s j s_j sj,源包就需要进行分片,处理流程是将 s j s_j sj大小的包分为 d i d_i di s j − d i s_j-d_i sjdi大小的两个包, s j − d i s_j-d_i sjdi不再计算其变形矩阵,因为 s j − d i s_j-d_i sjdi的先验概率难以获取。所以直接对目标分布采样得到 s j − d i s_j-d_i sjdi的应变形的包长。需要注意的是,有可能一次分片不能解决问题,这样就需要多次分片,直到所有数据发送完成。

2 实验评估

为了验证方法的有效性,该论文设计了两个实验。

2.1 加密IP语音识别

实验将CSLU的"22 Language"电话音频作为分类数据集,采用Language Identification of Encrypted VoIP Traffic: Alejandra y Roberto or Alice and Bob?论文中提出的分类方法对该数据集进行分类,变形的目的就是降低该分类器的效果,变形方法有两类,其一是白盒变形,其二是黑盒变形。

白盒变形

在编码解码器中修改语音比特率以修改数据包大小

黑盒变形

对编码解码器一无所知,直接对流量包进行变形,但不允许进行分片

2.1.1 与原始分类器对抗

在Language Identification of Encrypted VoIP Traffic: Alejandra y Roberto or Alice and Bob?一文中有两种分类器,分别是二元分类器和三元分类器(这里因为没有看该论文,所以我也不是很了解这两种分类器,只从Traffic morphing中知道三元分类器效果要比二元分类器效果好)

二元分类器

原性能:平均准确率为71%
黑盒变形后:平均准确率45%
白盒变形后:平均准确率30%

三元分类器

原性能:平均准确率76%
黑盒变形后:平均准确率45%
白盒变形后:平均准确率38%

2.1.2 不可区分性评估

该实验的目的是查看已变形流量和目标流量是否具有不可区分性。
猜想:若变形完美,则分类器无法区分上述两类流量,分类器的平均准确率应为50%
结果:如下图所示,对于二元分类器无法区分变形流量与正常流量;对于三元分类器不可区分性比二元分类器差一些。
在这里插入图片描述

2.2 网页识别

Inferring the Source of Encrypted HTTP Connections一文中提出的网页分类器仅使用包大小和传播方向即可识别加密下载的网页。

2.2.1 与原始分类器的对抗

原始分类器:平均准确率98.4%
变形后:平均准确率为4.5%
效果如下图所示
在这里插入图片描述

2.2.2 不可区分性评估

变形方法获得的不可区分性:以38.9%的开销实现了63.4%的准确度
填充方法获得的不可区分性:以4.5%的开销实现了86.2%的准确度

2.3 讨论

根据上述两个实验可知,Traffic morphing提出的变形方法比确定性填充减少了开销,同时增强了用户隐私性。


总结

总的来说,作者针对之前流量混淆方法(主要是填充法)的不足——开销大且易于识别,提出了一种新的流量变形技术,该方法将源流量侧信道特征变形为目标流量侧信道特征,以避免基于侧信道信息的流量分析攻击。
这个方法虽然是比较09年提出了,但到现在仍然还有很多文章引用他,我认为原因主要有两个,其一是这个方法是流量模仿的第一篇,其二是这篇论文之后没有更好的流量模仿的论文了。


http://chatgpt.dhexx.cn/article/rAklsYcK.shtml

相关文章

云波社区 l Mecha Morphing(变形机甲)游戏介绍

Mecha Morphing&#xff08;变形机甲&#xff09;由YGG领投的一个创新型GameFi项目即将开始打金&#xff01; 简单介绍一下&#xff0c;该游戏由Call of duty核心团队研发&#xff0c;画风完美阐释暴力美学。在MechaMorphing元宇宙中&#xff0c;玩家可以通过参与PVE, PVP, 土地…

Real-Time Rendering——4.5 Morphing 变形

Imagine that one model is displayed at time t0 and we wish it to change into another model by time t1. For all times between t0 and t1, a continuous “mixed” model is obtained, using some kind of interpolation. An example of morphing is shown in Figure 4.…

《数字图像处理》dlib人脸检测获取关键点,delaunay三角划分,实现人脸的几何变换warpping,接着实现两幅人脸图像之间的渐变合成morphing

这学期在上《数字图像处理》这门课程&#xff0c;老师布置了几个大作业&#xff0c;自己和同学一起讨论完成后&#xff0c;感觉还挺有意思的&#xff0c;就想着把这个作业整理一下 &#xff1a; 目录 1.实验任务和要求 2.实验原理 3.实验代码 3.1利用人脸特征点检测工具dli…

OpenCV:图像变形(Image Morphing)

融合/形变技术 Image Morphing的原理是十分简单的。有两幅图像 I 和 J ,我们希望通过融合图像 I 和 J 来创建一幅新的图像 M. 图像 I 和 J 的融合过程是由参数 alpha 来控制&#xff0c;参数 alpha 介于0和1之间。当alpha 0&#xff0c;新的图像 M看起来更接近 I;当alpha 1&…

计算机动画作业:图像morphing

本学期选了计算机动画课程&#xff0c;第一次作业是图像morphing&#xff0c; 本来打算选择基于四边网格的morphing&#xff0c; 但因为要用到曲面插值&#xff0c;感觉比较麻烦&#xff0c;因此使用基于三角网格的face morphing。 一、总体方案 1、检测人脸特征点&#xff0…

Morphing

<script src"http://widgets.amung.us/classic.js" type"text/javascript"></script> <script type"text/javascript"> </script> Morphing 这篇文章给大家介绍一下morphing&#xff0c;它是一种变型动画&#xff0c;…

深度学习中的GPU与CUDA

对应视频教程&#xff1a;https://www.bilibili.com/video/BV1S5411X7FY/ 文章目录 1. 显卡&#xff08;GPU&#xff09;与驱动2. 显卡与CUDA3. 如何查看自己的显卡 1. 显卡&#xff08;GPU&#xff09;与驱动 显卡&#xff0c;也称之为 GPU。GPU 的全称是 Graphics Processin…

CUDA详解

CUDA&#xff08;Compute Unified Device Architecture&#xff0c;统一计算设备架构&#xff09;&#xff0c;是显卡厂商NVIDIA推出的运算平台。 CUDA™是一种由NVIDIA推出的通用并行计算架构&#xff0c;该架构使GPU能够解决复杂的计算问题。 它包含了CUDA指令集架构&#xf…

CUDA入门

1. 引言 CUDA为a platform and programming model for CUDA-enabled GPUs。该平台通过GPU来进行计算。CUDA为GPU编程和管理 提供C/C语言扩展和API。 CUDA编程中&#xff0c;会同时使用CPU和GPU进行计算&#xff1a; CPU system&#xff1a;称为host。GPU system&#xff1a;…

cuda和cudatoolkit

Pytorch 使用不同版本的 cuda 由于课题的原因&#xff0c;笔者主要通过 Pytorch 框架进行深度学习相关的学习和实验。在运行和学习网络上的 Pytorch 应用代码的过程中&#xff0c;不少项目会标注作者在运行和实验时所使用的 Pytorch 和 cuda 版本信息。由于 Pytorch 和 cuda 版…

最新CUDA环境配置(Win10 + CUDA 11.6 + VS2019)

最新CUDA环境配置(Win10 CUDA 11.6 VS2019) 本篇博客根据NVIDIA 官方文档所述, 并根据自己实践得出. 供各位需要的朋友参考. 1.前言 本篇文章的软件环境为: Windows 10CUDA 11.6VS2019 CUDA是目前做人工智能, 深度学习等方向的必备工具库. 由CUDA衍生出的加速工具很多, …

一文搞懂CUDA

什么是cuda 统一计算设备架构&#xff08;Compute Unified Device Architecture, CUDA&#xff09;&#xff0c;是由NVIDIA推出的通用并行计算架构。解决的是用更加廉价的设备资源&#xff0c;实现更高效的并行计算。 CUDA是NVIDIA公司所开发的GPU编程模型&#xff0c;它提供…

GPU,CUDA,cuDNN的理解

我们知道做深度学习离不开GPU,不过一直以来对GPU和CPU的差别,CUDA以及cuDNN都不是很了解,所以找了些资料整理下,希望不仅可以帮助自己理解,也能够帮助到其他人理解。 先来讲讲CPU和GPU的关系和差别吧。截图来自资料1(CUDA的官方文档): 从上图可以看出GPU(图像处理器,…

CUDA编程之快速入门

CUDA(Compute Unified Device Architecture)的中文全称为计算统一设备架构。做图像视觉领域的同学多多少少都会接触到CUDA,毕竟要做性能速度优化,CUDA是个很重要的工具,CUDA是做视觉的同学难以绕过的一个坑,必须踩一踩才踏实。CUDA编程真的是入门容易精通难,具有计算机体…

CUDA学习

想想学习CUDA的时间也应该有十来天了&#xff0c;也该是做一个小总结了&#xff0c;说说我理解的CUDA&#xff0c;它到底是什么东西&#xff1f; 其实说到CUDA&#xff0c;还真的没几个人知道&#xff0c;说实话&#xff0c;我也听说不久&#xff0c;主要因为它2007年才刚发布&…

CUDA简介

CUDA简介 CUDA是什么 CUDA&#xff0c;Compute Unified Device Architecture的简称&#xff0c;是由NVIDIA公司创立的基于他们公司生产的图形处理器GPUs&#xff08;Graphics Processing Units,可以通俗的理解为显卡&#xff09;的一个并行计算平台和编程模型。 通过CUDA&#…

CUDA是什么-CUDA简介

在大家开始深度学习时&#xff0c;几乎所有的入门教程都会提到CUDA这个词。那么什么是CUDA&#xff1f;她和我们进行深度学习的环境部署等有什么关系&#xff1f;通过查阅资料&#xff0c;我整理了这份简洁版CUDA入门文档&#xff0c;希望能帮助大家用最快的时间尽可能清晰的了…

java队列和栈 共同_java 栈和队列的模拟--java

栈的定义&#xff1a;栈是一种特殊的表这种表只在表头进行插入和删除操作。因此&#xff0c;表头对于栈来说具有特殊的意义&#xff0c;称为栈顶。相应地&#xff0c;表尾称为栈底。不含任何元素的栈称为空栈。 栈的逻辑结构&#xff1a;假设一个栈S中的元素为an,an-1,..,a1&am…

栈和队列学习总结

一、栈 1、特点及应用 先进后出。(如果会和队列先进先出记混的话,就记场景吧:弹栈弹栈,就是把最上面的最新进来的弹出去;而队列就像我们火车站排队检票出站一样,谁排在前面谁就先出去。) 应用的话,其实我们经常接触呀。比如Undo操作(就是撤销操作)就是使用的栈的思想…

栈和队列的共同点和不同点

堆栈都是一种数据项按序排列的数据结构&#xff0c;只能在一端(称为栈顶(top))对数据项进行插入和删除。 要点&#xff1a;堆&#xff1a;顺序随意 栈&#xff1a;后进先出(Last-In/First-Out) 堆 堆&#xff1a;什么是堆&#xff1f;又该怎么理解呢&#xff1f; ①堆通常是一…