DeepCorr:利用深度学习进行Tor的流关联攻击

文章信息

论文题目:DeepCorr: Strong Flow Correlation Attacks on Tor Using Deep Learning
期刊(会议):Proceedings of the 2018 ACM SIGSAC Conference on Computer and Communications Security
时间:2018
级别:CCF A
文章链接:https://dl.acm.org/doi/pdf/10.1145/3243734.3243824

概述

本文研究了Tor的流关联攻击。流关联是针对Tor(和类似匿名系统)研究的广泛攻击中使用的核心技术。我们认为,现有的流关联技术在关联Tor流量方面是低效的,因为它们使用通用统计相关算法,无法捕捉Tor中噪声的动态复杂性。与使用此类通用统计相关算法不同,在本文中,我们使用深度学习来学习一个适用于Tor生态系统的关联函数。我们的流关联系统称为DeepCorr,然后使用学习到的相关函数对实时的Tor流进行关联。请注意,与网站指纹攻击相反,DeepCorr不需要学习任何目标目的地或目标电路;相反,DeepCorr学习了一个可以用来连接任意电路和任意目的地上的流的关联函数。换句话说,即使连接目的地不属于学习集的一部分,DeepCorr也可以对Tor连接的两端进行关联。此外,即使在学习过程中使用的电路与发送流的Tor电路不同,DeepCorr也可以进行关联。这是因为DeepCorr的神经网络学习Tor中的通用噪声特征,而不管训练过程中使用的具体电路和终端。

我们通过在实时Tor网络上的大规模实验展示了DeepCorr的强大性能,并评估DeepCorr在关联记录的Tor连接的入口和出口段方面的真阳性率和假阳性率。据我们所知,我们的数据集是目前最大的关联Tor流数据集,我们已向公众提供该数据集。

预备知识

流关联攻击,也称为确认攻击,用于在存在加密和其他内容混淆机制的情况下关联网络流。特别是,流关联技术可以通过关联流量特征来链接匿名连接的出口和入口段,从而打破Tor和混合网络等匿名通信系统中的匿名性。或者,可以使用流关联技术来识别使用网络代理来混淆其身份的网络犯罪分子,即跳板攻击者。

图1显示了流关联场景的主要设置。该设置由具有M个入口流和N个出口流的计算机网络(例如Tor网络)组成。一些出口流是一些入口流的混淆版本;然而,由于使用了加密和类似的内容混淆技术(如洋葱加密),因此无法使用数据包内容来检测此类流之间的关系。例如,在Tor的情况下, F i F_{i} Fi F j F_{j} Fj是一个Tor连接的入口和出口段(见图 1),但是由于洋葱加密,通过检查 F i F_{i} Fi F j F_{j} Fj的数据包内容无法检测到这种关联。我们称 ( F i , F j ) (F_{i},F_{j}) (Fi,Fj)为一对相关流。
image.png

在此设置中,目标是通过比较所有入口和出口流的流量特征(例如数据包时序和大小)来识别(部分或全部)相关流对,例如 ( F i , F j ) (F_{i},F_{j}) (Fi,Fj)。使用流量特征链接关联的流对称为流关联。

先前的流关联算法使用的统计相关性度量的主要类型:

  1. 互信息
  2. 皮尔逊相关系数
  3. 余弦相似度
  4. 斯皮尔曼相关系数

本文方案

特征及其表示

我们用 F i = [ T i u ; S i u ; T i d ; S i d ] F_{i}=[T_{i}^{u};S_{i}^{u};T_{i}^{d};S_{i}^{d}] Fi=[Tiu;Siu;Tid;Sid]表示一个双向网络流i,其中T是流i的数据包间延迟 (IPD) 向量,S是第i个流的数据包大小的向量,上标u和d表示双向流i的“上游”和“下游”(例如, T i u T_{i}^{u} Tiu是i的上游IPD的向量)。另请注意,我们仅使用每个向量的前 ℓ \ell 个元素,例如,仅使用前 ℓ \ell 个上游 IPD。如果向量的元素少于 ℓ \ell ,我们通过补零将其填充至 ℓ \ell 个。

现在假设我们的目标是关联两个流 i 和 j。我们用以下由 8 行组成的二维数组来表示这对流: F i , j = [ T i u ; T j u ; T i d ; T j d ; S i u ; S j u ; S i d ; S j d ] F_{i,j}=[T_{i}^{u};T_{j}^{u};T_{i}^{d};T_{j}^{d};S_{i}^{u};S_{j}^{u};S_{i}^{d};S_{j}^{d}] Fi,j=[Tiu;Tju;Tid;Tjd;Siu;Sju;Sid;Sjd]

网络架构

我们使用卷积神经网络(CNN)来学习Tor噪声网络的相关函数。我们使用CNN,因为网络流特征可以建模为时间序列,并且已知CNN在时间序列上具有良好的性能。此外,CNN对于数据流中模式的位置是不变的,这使得它们非常适合寻找可能发生变化的流量模式。

图2显示了DeepCorr的CNN网络的结构。网络采用流对 F i , j F_{i,j} Fi,j作为输入(在左侧)。 DeepCorr的架构由两层卷积和三层全连接神经网络组成。第一个卷积层有 k 1 k_{1} k1个内核,每个内核的大小为 ( 2 , w 1 ) (2,w_{1}) (2,w1),其中 k 1 k_{1} k1 w 1 w_{1} w1是超参数,我们使用的步幅为 ( 2 , 1 ) (2,1) (2,1)。使用第一个卷积层背后的直觉是捕获输入矩阵 F i , j F_{i,j} Fi,j的相邻行之间的相关性,这些行应该与相关的Tor流相关,例如, T i u T_{i}^{u} Tiu T j u T_{j}^{u} Tju之间。
image.png

DeepCorr 的第二个卷积层旨在从所有时序和大小特征的组合中捕获流量特征。在这一层,DeepCorr 使用 k 2 k_{2} k2个内核,每个内核大小为 ( 4 , w 2 ) (4,w_{2}) (4,w2),其中 k 2 k_{2} k2 w 2 w_{2} w2也是我们的超参数,并且它使用的步幅为 ( 4 , 1 ) (4,1) (4,1)

第二个卷积层的输出被拉平并馈送到具有三层的全连接网络。 DeepCorr在每层卷积之后使用最大池化来确保排列不变性并避免过度拟合。最终网络的输出为: p i , j = Ψ ( F i , j ) p_{i,j}=\Psi (F_{i,j}) pi,j=Ψ(Fi,j)。为了标准化网络的输出,我们应用了sigmoid函数,将输出缩放到0到1之间。因此, p i , j p_{i,j} pi,j表示流i和j关联(相关)的概率。如果 p i , j > η p_{i,j}>\eta pi,j>η,则 DeepCorr 认为流i和j相关,其中 η \eta η是我们在实验期间讨论的检测阈值。参数 ( w 1 , w 2 , k 1 , k 2 ) (w_{1},w_{2},k_{1},k_{2}) (w1,w2,k1,k2)是我们系统的超参数;我们将通过实验调整它们的值。

训练

为了训练我们的网络,我们使用了通过Tor创建的大量流对。这包括大量关联流对和大量非关联流对。关联的流对 F i , j F_{i,j} Fi,j由Tor连接的两个段组成(例如,i 和 j 是 Tor 连接的入口和出口段)。我们用 y i , j = 1 y_{i,j}=1 yi,j=1标记关联对。另一方面,每个非关联流对(即负样本)由两个不属于同一Tor连接的任意Tor流组成。我们用 y i , j = 0 y_{i,j}=0 yi,j=0标记这些非关联对。对于每个捕获的 Tor入口流i,我们通过形成 F i , j F_{i,j} Fi,j对来创建 N n e g N_{neg} Nneg个负样本,其中j是任意Tor连接的退出段。 N n e g N_{neg} Nneg是一个超参数,其值将通过实验获得。

最后,我们使用交叉熵函数定义 DeepCorr 的损失函数,如下所示:
L = − 1 ∣ F ∣ ∑ F i , j ∈ F y i , j log ⁡ Ψ ( F i , j ) + ( 1 − y i , j ) log ⁡ ( 1 − Ψ ( F i , j ) ) \mathcal{L}=-\frac{1}{|\mathcal{F}|} \sum_{F_{i, j} \in \mathcal{F}} y_{i, j} \log \Psi\left(F_{i, j}\right)+\left(1-y_{i, j}\right) \log \left(1-\Psi\left(F_{i, j}\right)\right) L=F1Fi,jFyi,jlogΨ(Fi,j)+(1yi,j)log(1Ψ(Fi,j))
其中 F \mathcal{F} F是我们的训练数据集,由所有关联和非关联的流对组成。我们在实验中使用Adam优化器来最小化损失函数。Adam优化器的学习率是我们系统的另一个超参数。

实验设置

数据集

图 3 显示了Tor 实验的实验设置。我们使用在不同虚拟机内运行的多个Tor客户端来生成和收集Tor流量。我们使用每个Tor客户端通过Tor浏览前50,000个Alexa网站,并捕获这些连接进入和退出Tor网络的流量(我们使用一半连接进行训练,另一半用于测试)。因此,进入的流采用Tor单元格式,退出Tor的流采用常规HTTP/HTTPS格式。我们使用1,000个任意Tor电路通过Tor浏览网站,即每个电路用于浏览大约50个网站。我们在形成 Tor 电路时使用了不同的保护节点;我们能够通过禁用 Vanilla Tor 强制保护中继重用的选项来替换我们的保护节点。我们还使用了常规的Firefox浏览器,而不是Tor的浏览器,以便能够强制执行电路选择。我们使用 Tor 版本 0.3.0.9,由 Python 脚本自动化。
image.png

我们没有出于实验目的设置自己的 Tor 中继,我们只是在所有实验中使用公共 Tor 中继。我们在 Tor 客户端上使用 tcpdump 捕获了 Tor 的入口流。为了捕获出口 Tor 流量,我们通过自己的 SOCKS 代理服务器创建了出口 Tor 流量隧道(如图 3 所示),并在其上使用 tcpdump收集了出口 Tor 流量 。我们还通过Tor可插拔传输收集了500个网站,以评估它们作为针对DeepCorr的对策表现如何。

我们分两步收集了 Tor 流量:首先,我们在两周的时间内收集了流量,然后在三个月的时间间隔后,我们在一个月内收集了更多 Tor 流量(以显示时间对训练的影响)。

超参数

经过实验,下表中的超参数具有较好的效果
image.png

评估指标

真阳、假阳,阈值 η \eta η用于区分真阳和假阳,从而绘制ROC曲线

实验结果

性能初探

图4显示了 DeepCorr 对于不同阈值 η \eta η值的真阳性和假阳性率。该图显示了DeepCorr在关联 Tor 流方面的良好性能——每个流仅使用300个数据包。
image.png

DeepCorr可以关联任意电路和目的地

如前所述,DeepCorr学习了Tor的关联函数,可用于将任何电路上的Tor流关联到任何目的地,而不管训练过程中使用的电路和目的地如何。为了证明这一点,我们在两个实验中比较 DeepCorr 的性能,每个实验包含2000个 Tor连接,因此有2000个关联对和2000*1999个非关联流对。在第一个实验中,DeepCorr测试相关性的流使用与 DeepCorr训练期间使用的流相同的电路和目标。在第二个实验中,DeepCorr测试相关性的流程(1)使用与训练期间的电路完全不同的电路,(2)使用与训练期间使用的目标网站不同的网站,(3)训练数据一周之后的数据。图5比较了DeepCorr两个实验的ROC曲线。可以看出,DeepCorr在这两个实验中表现相似,表明DeepCorr学习到的相关函数可用于将任意电路上的Tor流与任意目的地相关联。
image.png

DeepCorr不需要经常重新训练

由于Tor流量的特征会随着时间的推移而变化,因此任何基于学习的算法都需要偶尔重新训练以保持其相关性能。我们进行了两项实验来评估DeepCorr需要重新训练的频率。在我们的第一个实验中,我们通过连续30天收集的 Tor流评估了我们的预训练模型。图6显示了关联和非关联流对每一天的相关函数的输出。正如我们所看到的,非关联流的相关值没有显着变化,但是,关联流的相关值在大约三周后开始略有下降。这表明对手只需每三周甚至每月一次重新训练 DeepCorr。
image.png

DeepCorr的性能不会随着测试流数量的增加而降低

DeepCorr的相关性能并不取决于相关的流数量,即测试数据集的大小。图7显示了具有不同流量数量的数据集上的TP和FP结果(针对特定阈值)。可以看出,对于不同数量的相关流,结果是一致的。这表明,即使DeepCorr 应用于截获流的大得多的数据集(例如,大型恶意IXP收集的流),DeepCorr 的相关性能也将与通过我们的实验得出的结果相似。
image.png

DeepCorr的性能随着流长度的增加而快速提高

图 8 比较了DeepCorr在不同长度的流下的性能,表明DeepCorr的性能对于较长的流观测有显着提高。
image.png

DeepCorr的性能随着训练集的大小而提高

图 9 比较了使用不同数量的流进行训练时DeepCorr的ROC曲线(对于所有实验,我们使用固定数量的1000个流进行测试)。该图证实,增加训练集的大小可以提高DeepCorr的性能。image.png

DeepCorr显著优于最先进的技术

我们进行了实验,将DeepCorr与此类现有系统在关联Tor流方面的性能进行比较。图10将DeepCorr与其他系统的ROC曲线进行了比较,其中所有系统都在完全相同的Tor流集(每个流最多300个数据包)上进行测试。
image.png
为了确保公平比较,我们在完全相同的设置中评估DeepCorr和RAPTOR。图11中显示的结果证明了DeepCorr的性能极其优越。
image.png
另一方面,我们表明,对于较短的流观测,DeepCorr 和 RAPTOR 之间的性能差距明显更大。为了证明这一点,我们根据DeepCorr和RAPTOR从每个流拦截的流量进行比较。图12中显示的结果表明DeepCorr显著优于其他方法,尤其是对于较短的流观测。
image.png

DeepCorr的计算复杂度

在表 2 中,我们显示了与以前的技术相比执行单个DeepCorr相关的时间(所有系统的相关流均为300个数据包长)。我们发现DeepCorr明显比以前的技术慢,例如比RAPTOR慢大约两倍。但请注意,由于所有系统都使用相同长度的流,因此DeepCorr在相同的时间开销下提供了更好的相关性能。
image.png

DeepCorr也适用于非Tor应用程序

虽然我们将DeepCorr介绍为对Tor的流关联攻击,但它也可用于关联其他流关联应用程序中的流。我们通过将 DeepCorr应用于跳板攻击问题来证明这一点。

对于我们的跳板检测实验,我们使用了2016年CAIDA匿名数据轨迹。与之前的工作类似,我们使用拉普拉斯分布模拟网络抖动,并通过不同速率的伯努利分布模拟数据包丢失。我们通过在跳板设置中学习DeepCorr将 DeepCorr应用于这个问题。由于这种情况下的噪声模型比Tor简单得多,因此我们为此应用程序使用DeepCorr的更简单的神经网络模型。此外,我们只使用双向连接的一个方向,以便与以前的系统进行公平的比较,以前的系统都只使用单向流。图14和表3分别显示了我们定制的神经网络和参数选择。
image.png
image.png

我们的评估表明,当网络条件稳定时,DeepCorr提供的性能可与Houmansadr等人的“最佳”流相关技术相媲美。 然而,当网络条件变得嘈杂时,DeepCorr在检测跳板攻击方面提供了明显更强的性能。如图15所示,其中通信网络存在标准偏差为0.005秒的网络抖动,并且网络随机丢弃1%的数据包。
image.png

对策

混淆流量模式:可插拔传输
减少对手执行流量关联的机会:为 Tor 设计实用的 AS 感知中继选择机制

总结

我们设计了一个名为DeepCorr的流关联系统,它在关联Tor连接方面远远优于最先进的系统。 DeepCorr利用先进的深度学习架构来学习适合Tor 复杂网络的流关联函数(而不是之前的作品使用通用统计相关指标)。我们表明,通过充分的学习,DeepCorr可以将Tor连接关联起来(从而打破其匿名性),其准确性明显强于现有算法,并且使用的流观测长度要短得多。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

android下的app性能测试应主要针对那些方面,如何开展?

如何开展安卓手机下的App性能测试,对于优秀的测试人员而言,除了要懂得性能测试的步骤流程外,还应该懂的性能测试的一些其他知识,比如性能测试指标、各指标的意义,常用的性能测试工具、如何查看结果分析等等知识。所以本…

ES6 面试题 | 13.精选 ES6 面试题

🤍 前端开发工程师(主业)、技术博主(副业)、已过CET6 🍨 阿珊和她的猫_CSDN个人主页 🕠 牛客高级专题作者、在牛客打造高质量专栏《前端面试必备》 🍚 蓝桥云课签约作者、已在蓝桥云…

(五)STM32 按键输入实验及 GPIO做普通 IO 的注意事项

目录 1. 按键硬件连接 2. 按键软件设计 3. 按键消抖 4. 使用 IO 口时的 注意事项(踩坑) 上一节我们介绍了 STM32F1 的 IO 口作为输出的使用,这一章,我们将介绍如何使用 STM32F1 的 IO 口作为输入用。在本章中,我们…

网络(十)ACL和NAT

前言 网络管理在生产环境和生活中,如何实现拒绝不希望的访问连接,同时又要允许正常的访问连接?当下公网地址消耗殆尽,且公网IP地址费用昂贵,企业访问Internet全部使用公网IP地址不够现实,如何让私网地址也…

Java 基础学习(十一)File类与I/O操作

1 File类 1.1 File类概述 1.1.1 什么是File类 File是java.io包下作为文件和目录的类。File类定义了一些与平台无关的方法来操作文件,通过调用File类中的方法可以得到文件和目录的描述信息,包括名称、所在路径、读写性和长度等,还可以对文件…

力扣LCR 130. 衣橱整理(DFS 解法)

Problem: LCR 130. 衣橱整理 文章目录 题目描述思路解题方法复杂度Code 题目描述 思路 首先该问题可以归纳为一类遍历二维矩阵的题目,此类中的一部分题目可以利用DFS来解决,具体到本题目: 我们可以利用一个布尔类型的二维数组记录我们已经访…

LeetCode(65)LRU 缓存【链表】【中等】

目录 1.题目2.答案3.提交结果截图 链接: LRU 缓存 1.题目 请你设计并实现一个满足 LRU (最近最少使用) 缓存 约束的数据结构。 实现 LRUCache 类: LRUCache(int capacity) 以 正整数 作为容量 capacity 初始化 LRU 缓存int get(int key) 如果关键字 k…

Vue3使用了Vite和UnoCSS导致前端项目启动报错:Error:EMFILE:too many open files

一个 Vue3 的项目,用的是 Vite 打包,通过 npm run dev 运行时,遇到了以下错误(尤其是引入了 Element-Plus 后): Error: EMFILE: too many open files,后面是具体的文件路径。。甚至到了 node_mo…

基于 Gin 的 HTTP 代理上网行为记录 demo

前言: 前端时间写了好几篇使用 Gin 框架来做 HTTP 代理 demo 的文章,然后就想着做一个记录上网行为的小工具,就是简单记录看看平时访问了什么网站(基于隧道代理的,不是中间人代理,所以只能记录去了哪里,不能…

vue3:直接修改reative的值,页面却不响应,这是什么情况?

目录 前言: 错误示范: reactive() 的局限性 解决办法: 1.使用ref 2.reative多套一层 3.使用Object.assign 前言: 今天看到有人在提问,问题是这样的,我修改了reative的值,数据居然失去了响…

详细了解stm32---按键

提示:永远支持知识文档免费开源,喜欢的朋友们,点个关注吧!蟹蟹! 目录 一、了解按键 二、stm32f103按键分析 三、按键应用 一、了解按键 同学们,又见面了o(* ̄▽ ̄*)ブ,最…

【Java代码审计】XSS篇

【Java代码审计】XSS篇 1.Java中XSS常见触发位置2.反射型XSS3.存储型XSS4.XSS漏洞修复 1.Java中XSS常见触发位置 XSS漏洞产生后必然会有相关的输入/输出,因此我们只需快速找到这些输入/输出点,即可快速地进行跟踪发现漏洞。输入在Java中通常使用“reque…

ES6 面试题 | 02.精选 ES6 面试题

🤍 前端开发工程师(主业)、技术博主(副业)、已过CET6 🍨 阿珊和她的猫_CSDN个人主页 🕠 牛客高级专题作者、在牛客打造高质量专栏《前端面试必备》 🍚 蓝桥云课签约作者、已在蓝桥云…

C++试卷(华南理工大学)

华南理工大学期末考试 《高级语言程序设计(I)》A卷 注意事项: 1. 考前请将密封线内各项信息填写清楚; 2. 所有答案写在答题纸上,答在其它地方无效; 3.考试形式:闭卷&#xff1b…

LT7911D是TYPE-C/DP或者EDP转2 PORT MIPI和LVDS加音频

1.概述: T7911D是一款高性能TYPE-C/DP/EDP转2 PORT MIPI或者LVDS的芯片,目前主要在AR/VR或者显示器上应用的很多,对于DP1.2输入,LT7911D可配置为1/2/4车道。自适应均衡化使其适用于长电缆应用,最大带宽可达21.6Gbps。…

AI智能配音助手微信小程序前后端源码支持多种声音场景选择

大家好今天给大家带来一款配音小程序 ,这款小程序支持多种不同声音和场景的选择更人性化, 比如说支持各地区的方言,英文,童声呀等等、 另外也支持男声女声的选择,反正就是模板那些非常的多 当然啦音量,语调,语速那些都是可以DIY跳转的哟,所以说这一款小程…

【单元测试】Junit 4--junit4 内置Rule

1.0 Rules ​ Rules允许非常灵活地添加或重新定义一个测试类中每个测试方法的行为。测试人员可以重复使用或扩展下面提供的Rules之一,或编写自己的Rules。 1.1 TestName ​ TestName Rule使当前的测试名称在测试方法中可用。用于在测试执行过程中获取测试方法名称…

​SQL (关系型) 数据库-fastapi集成

SQL (关系型) 数据库 - FastAPI FastAPI不需要你使用SQL(关系型)数据库。 但是您可以使用任何您想要的关系型数据库。 在这里,让我们看一个使用着SQLAlchemy的示例。 您可以很容易地将SQLAlchemy支持任何数据库,像: PostgreSQLMySQLSQLi…

云原生之深入解析Linkerd Service Mesh的功能和使用

一、简介 Linkerd 是 Kubernetes 的一个完全开源的服务网格实现,它通过为你提供运行时调试、可观测性、可靠性和安全性,使运行服务更轻松、更安全,所有这些都不需要对代码进行任何更改。Linkerd 通过在每个服务实例旁边安装一组超轻、透明的…

Python常见面试知识总结(一):迭代器、拷贝、线程及底层结构

前言: Hello大家好,我是Dream。 今天来总结一下Python和C语言中常见的面试知识,欢迎大家一起前来探讨学习~ 【一】Python中迭代器的概念? 可迭代对象是迭代器、生成器和装饰器的基础。简单来说,可以使用for来循环遍历…