对Tor的去匿名化攻击的调查

news2024/12/29 0:18:46

文章信息

论文题目:De-Anonymisation Attacks on Tor: A Survey
期刊(会议): IEEE Communications Surveys & Tutorials
时间:2021
级别:中科院1区(IF:35.6)
文章链接:https://ieeexplore.ieee.org/stamp/stamp.jsp?arnumber=9471821

概述

在本文中,我们对Tor网络上的去匿名化攻击进行了最新调查,并对其进行了全面概述。虽然过去也有一些关于Tor攻击的调查,但大多数调查考虑了所有类型的Tor攻击,而我们缩小了调查范围,只包括去匿名化攻击。与过去的大多数调查相比,我们的调查涵盖的去匿名化攻击多了约30种。此外,我们还讨论了2016年之后发表的15种以上的去匿名化攻击(之前的大多数作品都没有报道过),包括使用深度学习等高级技术的攻击。我们还注意到,一些调查作品没有包含网站指纹攻击和隐藏服务攻击的详细信息,而这些攻击是去匿名化攻击的重要类型。

对Tor攻击的分类

本文提出的Tor攻击多级分类法如图6所示。在顶层,我们使用对手的主要目标或动机作为区分因素,将所有Tor攻击分为四大类:去匿名化攻击、网络破坏攻击、审查攻击和一般攻击。在中间层,我们根据Tor网络的目标组件进一步划分攻击。在最底层,区分因素是对手使用的方法(主动或被动)。

image.png

去匿名化攻击:由于Tor是一个匿名网络,因此这是针对Tor的最常见攻击类型。Tor上的去匿名化攻击主要有两种情况:1.将客户IP地址与客户通过Tor网络访问的网站IP地址关联起来。例如,某个实体(如执法机构)可能想调查可疑个人,并找出他们通过Tor访问了哪些网站。此外,执法机构可能会监控特定的网络服务,以识别其用户。2.揭示HS的实际IP地址,该地址受Tor的匿名性保护。

网络破坏攻击:这类攻击的主要目的是破坏网络,通常是通过DOS使用户无法使用网络。攻击对象可以是单个OR(例如网桥或出口节点),也可以是OR或DS的子集。Barbera等人的CellFlood攻击、Pappas等人的数据包旋转攻击和Jansen等人最近的基于带宽的DOS攻击就是这类攻击的一些例子。本文不详细介绍这些攻击。

审查攻击:Tor被普遍用作规避审查的工具。它允许专制和极权政府的用户绕过审查措施,访问受限制的内容。Tor引入的桥接器是不公开的中继器,以促进这一功能的实现。因此,这些政府会想方设法阻止人们访问Tor网络。因此,各方试图阻止人们访问Tor网络的行为被视为审查攻击。阻止Tor流量的深度数据包检查和Tor桥接发现攻击也可归类为审查攻击。

一般攻击:这是一个包罗万象的类别,包含了许多未被归入其他类别的攻击。它包括识别Tor流量或网桥的指纹攻击、控制过多节点的假人攻击以及拒绝服务攻击。我们注意到,通用类别下的大多数攻击都是其他攻击的前兆。例如,某些去匿名化攻击要求攻击者控制电路的入口节点。因此,在这种情况下,Li等人所讨论的操纵客户端选择被破坏的防护节点的攻击可能是有利的。同样,Tor流量指纹攻击通常是作为审查攻击的前奏来实施的。本文不详细介绍审查攻击和一般攻击。

去匿名化攻击

我们主要关注的是试图对用户、HS或两者进行去匿名化的攻击。对用户进行去匿名化通常有两个目的:找出谁在访问某个特定网站,或者找出某个特定用户正在访问哪些网站。对去匿名化攻击的研究在Tor研究中占有较大比重。因此,我们旨在对这类攻击进行明确的分类和广泛的分析。

我们提出的分类法是多层次的。对于去匿名化攻击,在最高层,我们根据攻击者破坏和控制网络组件的能力考虑了四个子类别。考虑的网络组件包括洋葱代理(Tor客户端)、洋葱路由器(入口、中间、出口、引入点、会合点 (RP))、HS和外部网络服务器。这些组件之外的任何其他资源都被视为侧信道。此外,使用混合组件的攻击被归类为混合攻击。

  • 入口和出口路由器:这些攻击要求攻击者同时控制线路的入口和出口节点。
  • 洋葱代理(OP)/洋葱路由器(OR)/服务器:这些攻击由控制单个Tor节点(Tor客户端、洋葱路由器或服务器)的攻击者发起。与其他攻击相比,这类攻击的范围似乎更广一些。不过,Tor的威胁模型本身就很难通过单个组件实施去匿名化攻击,这一事实已被考虑在内。
  • 侧信道:侧信道攻击是指利用其他手段进行的攻击,例如监控和操纵电路组件之间的链接,如用户与入口节点之间的链接。
  • 混合型:该类别综合考虑了上述类别中使用的组件。

入口和出口洋葱路由器

这类攻击要求对手同时访问Tor电路的入口和出口OR,可以通过破坏现有的Tor节点或在Tor网络中引入由攻击者控制的新节点来实现。在引入新节点时,可以采取一些措施来增加Tor节点被选为入口或出口节点的机会。Tor节点可以指定自己只能用作出口节点,并配置出口策略以允许选定的协议,从而提高特定Tor节点被选为出口节点的可能性。此外,节点还可以虚假宣传高带宽和高正常运行时间,以被选为入口守卫。在Tor网络的早期阶段,活跃节点数量较少,攻击者部署的节点被选为电路一部分的成功概率很高。图7显示了此类攻击的一般场景,其中恶意入口守卫和恶意出口节点都是被攻击者攻陷或运行的节点。从概念上讲,这两个节点都连接到另一个由攻击者控制的设备,即中心机构。不过,中心机构代表的是一个可以访问入口节点和出口节点数据的组件。它可以是一个完全不同的设备,也可以是其中一个节点本身(例如,如果入口节点将其所有数据发送到出口节点,我们就可以将出口节点视为中心机构)。由于中心机构拥有来自入口节点和出口节点的数据,因此它可以处理这些数据并将流量关联起来,从而实现客户/用户的去匿名化。

image.png

洋葱代理/洋葱路由器/服务器

在这一类攻击中,对手只使用一个Tor网络组件,如OP、服务器或OR。假设使用OP(Tor客户端)来实施攻击。在这种情况下,通常会对其默认功能进行修改,以满足攻击要求,例如发送周期性流量模式。如果攻击需要入侵服务器,可以通过托管服务器或控制目标服务器来实现。表2总结了属于前两类的攻击,并显示了Tor网络是如何随着时间的推移而扩展,从而使通过控制Tor节点来实施攻击变得具有挑战性的。

image.png

侧信道

侧信道攻击利用破坏Tor主要组件以外的手段实施攻击。针对Tor的最常见侧信道类型是拦截Tor客户端与入口节点之间的流量。网络管理员或互联网服务提供商(ISP)可以监控这些流量。

image.png

混合型

如果在攻击中混合使用了前几类中的Tor网络组件,则该攻击属于混合攻击。例如,这种攻击需要结合使用Tor节点、服务器、客户端和侧信道。

image.png

防止去匿名化

为了免受去匿名化攻击的影响,Tor协议也做了一些安全改进。Tor项目维护了一个博客(https://blog.torproject.org/),其中提供了一些为提高Tor安全性而实施的开发和修复。我们的讨论仅限制在Tor博客中涉及去匿名化攻击的文章上。

目录系统的安全性改进

在最初的Tor版本中,网络中的每个路由器都会生成一个路由器描述符,该描述符经过签名并上传到其中一个DS。每个DS创建其描述符的签名列表,并根据客户端的请求将其发送给客户端。上述机制的许多问题中也存在一些安全问题。

  1. 没有分布式信任,每个DS都是单独信任的。因此,受损的DS可用于对其所有客户端执行攻击。
  2. 目录内容未加密,容易被窃听。
  3. 不一致的DS可能会分割客户端知识,从而允许攻击者根据客户端最近与DS的连接对客户端进行分类。

在此过程中,DS发生了一些变化,包括在引入目录投票系统之前为节点分配标志(例如快速、稳定、良好的保护节点)。在目录投票制度下,DS将定期共享投票文件并产生共识文件,并由每个DS签署。因此,客户只需下载一份文档并确保大多数已知的DS都签署了该文档。这些更改有助于解决原始设计中的一些安全问题。

引入守卫节点

早期的一些去匿名化攻击都是基于有一个对手控制的入口节点。根据Øverlier和 Syverson的建议,Tor实施了守卫节点功能,以降低电路被入侵的概率。现在,普通的Tor节点会根据带宽和正常运行时间等几个特征来分配保护标志。Tor客户端一旦选择了一组守卫节点,就会将其保留30-60天。这种情况大大降低了对手通过引入新的Tor节点并期望它们被选为入口节点来破坏电路的几率。另一方面,如果一个受敌方控制的节点被选为守护节点,敌方就有很大机会解除用户的匿名身份,因为该节点会在相当长的时间内反复用于许多电路。

引入带宽管理机构

在Tor的最早版本中,电路的节点是统一随机挑选的。然而,这造成了许多带宽瓶颈,严重影响了Tor的性能。因此,Tor协议被修改为根据节点的带宽和能力(如入口守卫、出口节点)按比例选择节点。这一功能增加了攻击者通过为其控制的节点申请高带宽来破坏更多电路的机会。起初,为了将这种影响降至最低,我们设置了最大带宽限制,但后来又指派了一组带宽管理机构来测量和表决观察到的节点带宽。这些测量值在共识文件中公布,从而避免了之前的漏洞。此外,还允许诚实的节点操作员将其节点声明为同一系列,以防止客户端在其电路中选择来自同一系列的两个节点。这些节点族可防止节点操作员无意中将自己的节点选为电路的入口和出口节点。

缓解链接性攻击

由于创建新电路会给网络带来计算和带宽开销,Tor客户端会尝试重复使用电路,通过电路发送多个TCP流。这种情况的问题在于,如果一个数据流泄露了用户去匿名化的信息,被入侵的出口节点可能也能对该电路中的其他数据流进行去匿名化处理。为了降低这种风险,Tor将切换到新电路前的电路使用时间限制为十分钟。Tor用户还可以为新的数据流创建新的线路,并配置Tor以根据目标IP/端口隔离数据流。默认情况下,Tor会分离来自不同客户端、同一Tor客户端的不同SOCKS端口或具有不同身份验证凭据的SOCKS连接的数据流。

部署填充方案

Tor采用了一种填充方案来掩盖HS电路创建过程中的客户端流量。

总结

本文总结了几个重要特征:

  1. 大多数早期的去匿名化攻击都集中在破坏Tor电路的网络组件上。其主要原因是这些攻击发布时,Tor网络中的中继器数量较少。然而,随着Tor的日益普及,自愿中继站的数量也在增加,通过破坏一小部分Tor中继站来实施攻击的实用性已经降低。因此,最近的攻击都假定对手是被动的,可以观察到源链接和目的链接上的流量。
  2. 其他研究领域的技术和概念启发了Tor研究人员为Tor引入新的攻击方案。这种跨学科研究将使研究人员能够设计出更有创意、更强大的针对Tor网络的攻击方案。
  3. 最近的研究还尝试使用深度学习等技术来攻击Tor网络。深度学习和人工智能正在快速发展,并影响着其他技术。Tor研究界必须努力跟上这些新技术的步伐,因为它们可能成为现实生活中对手手中的强大工具。

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

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

相关文章

Python 面向对象之反射

Python 面向对象之反射 【一】概念 反射是指通过对象的属性名或者方法名来获取对象的属性或调用方法的能力反射还指的是在程序额运行过程中可以动态获取对象的信息(属性和方法) 【二】四个内置函数 又叫做反射函数 万物皆对象(整数、字符串、函数、模块、类等等…

黑马程序员Java项目实战《瑞吉外卖》,轻松掌握springboot + mybatis plus开发核心技术的真java实战项目——第三部分

黑马程序员Java项目实战《瑞吉外卖》,轻松掌握springboot mybatis plus开发核心技术的真java实战项目——第三部分 1. 菜品管理的业务功能1.1 文件的上传和下载🙇‍♂️1.2 新增菜品1.3 接收页面提交的数据🙇‍♂️(涉及两张表&a…

大数据技术架构

1 技术架构矩阵 大数据技术栈虽然比较多,但可以抽象为输入(数据接入)--处理(数据处理、数据分析)--输出(数据应用)。工作角色分工,数据处理以数据仓库开发人员为主,数据分析以数据分析师为主,其他所有组件、系统、技术相关归为数据平台。 2 数据源 大数据的数据来源…

媒体捕捉-iOS自定义二维码扫描功能

引言 随着iOS 7引入AV Foundation框架,二维码扫描功能已经成为iOS应用程序中不可或缺的一部分。现今,几乎每个应用都充分利用这一功能,为用户提供了诸如扫码登录、扫码填充等丰富多彩的便捷体验。这项技术不仅丰富了应用功能,也为…

我与nano实验室交流群

感兴趣的同学、朋友可以加入群聊共同学习聊天哦。 主要是工训赛、电赛、光电、集成电路等等,会分享一些开源代码,博主自己做的项目,自己画的PCB等等,包含但不限于STM32、K210、V831、机器视觉,机械臂,ROS&a…

Packet Tracer - Configure AAA Authentication on Cisco Routers

Packet Tracer - 在思科路由器上配置 AAA 认证 地址表 目标 在R1上配置本地用户账户,并使用本地AAA进行控制台和vty线路的身份验证。从R1控制台和PC-A客户端验证本地AAA身份验证功能。配置基于服务器的AAA身份验证,采用TACACS协议。从PC-B客户端验证基…

我的隐私计算学习——联邦学习(2)

笔记内容来自多本书籍、学术资料、白皮书及ChatGPT等工具,经由自己阅读后整理而成 (三)联邦学习的算子 ------------------------ 算子是什么?--------------------------- ​ 从广义上讲,对任何函数进行某一项操作都可…

【Verilog】基于Verilog的DDR控制器的简单实现(一)——初始化

在FPGA中,大规模数据的存储常常会用到DDR。为了方便用户使用,Xilinx提供了DDR MIG IP核,用户能够通过AXI接口进行DDR的读写访问,然而MIG内部自动实现了许多环节,不利于用户深入理解DDR的底层逻辑。 本文以美光(Micro…

Linux驱动学习—中断

1、中断基础概念 1.1 什么是中断 CPU在正常运行期间&#xff0c;由外部或者内部引起的时间&#xff0c;让CPU停下当前正在运行的程序&#xff0c;转而去执行触发他的中断所对应的程序&#xff0c;这就是中断。 响应中断的过程&#xff1a; <1>中断请求 <2>中断…

给您的应用添加弹窗

概述 在我们日常使用应用的时候&#xff0c;可能会进行一些敏感的操作&#xff0c;比如删除联系人&#xff0c;这时候我们给应用添加弹窗来提示用户是否需要执行该操作&#xff0c;如下图所示&#xff1a; 弹窗是一种模态窗口&#xff0c;通常用来展示用户当前需要的或用户必须…

cookie和session、请求转发和重定向

会话 分为有状态会话和无状态会话 在HTML中&#xff0c;"会话"一般指的是Web服务器与客户端&#xff08;通常是浏览器&#xff09;之间进行的一系列请求和响应。它是一种在网络上模拟人与人之间通信的方式&#xff0c;常见于Web应用程序中。 会话、Cookie和Sessio…

JavaScript 基础二part1.运算符:赋值、一元、比较、逻辑运算符

JavaScript 基础二 1.1 赋值运算符1.2 一元运算符自增运算符的用法&#xff1a;例题 1.3 比较运算符不同类型间的比较严格相等对 null 和 undefined 进行比较 1.4 逻辑运算符例题 1.5 运算符优先级 1.1 赋值运算符 赋值运算符&#xff1a;对变量进行赋值的运算符 已经学过的赋…

c++学习第八讲---类和对象---继承

继承&#xff1a; 使子类&#xff08;派生类&#xff09;拥有与父类&#xff08;基类&#xff09;相同的成员&#xff0c;以节约代码量。 1.继承的基本语法&#xff1a; class 子类名&#xff1a;继承方式 父类名{} &#xff1b; 例&#xff1a; class father { public:in…

李沐-《动手学深度学习》-- 01-预备知识

一、线性代数知识 1. 矩阵计算 a. 矩阵求导 ​ 当y和x分别为标量和向量时候&#xff0c;进行求导得到的矩阵形状&#xff0c;矩阵求导就是矩阵A中的每一个元素对矩阵B中的每一个元素求导 ​ 梯度指向的是值变化最大的方向 ​ 分子布局和分母布局&#xff1a; b. 常识 ax…

cube生成电机库,启用了RTOS,编译报错[0xc43ed8:5050106] in osSignalWait

cube生成电机库&#xff0c;启用了RTOS&#xff0c;编译报错[0xc43ed8:5050106&#xff0c;解决办法] in osSignalWait 1.现象 编译报错[0xc43ed8:5050106] in osSignalWait 导致链接失败 2.解决办法 将keil5的版本升级到5.18.00&#xff0c;我的版本也是5.14.00。

我的第一个前端项目,vue项目从零开始创建和运行

​入门前端&#xff0c;从基础做起&#xff0c;从零开始新建项目 背景&#xff1a;VUE脚手架项目是一个“单页面”应用&#xff0c;即整个项目中只有1个网页&#xff01; 在VUE脚手架项目中&#xff0c;主要是设计各个“视图组件”&#xff0c;它们都是整个网页中某个部分&…

Python如何生成个性二维码

Python-生成个性二维码 一、问题描述 通过调用MyQR模块来实现生成个人所需二维码。 安装&#xff1a; pip install myqr 二、代码实现 1.普通二维码 from MyQR import myqr # 普通二维码 myqr.run(wordshttp://www.csdn.net/mayi0312,save_nameqrcode.png ) 效果图&#…

学习录

概述 这几年在迷茫中看了不少资料&#xff0c;有觉得写得很棒的&#xff0c;也有写的很糟糕的。所以一直想写这块的总结来进行归纳&#xff0c;同时也希望能给其他处于迷茫中的朋友提供一份高质量的资料列表(也许一个读者也没有)&#xff0c;以下清单个人觉得值得反复看以及思…

利用ChatGLM3构建Prompt实现Text2SQL

之前使用ChatGLM3的自定义工具实现了查询MySQL数据库&#xff0c;但感觉功能还是比较受限。 https://blog.csdn.net/weixin_44455388/article/details/135270879?spm1001.2014.3001.5501 使用ChatGLM3实现Text2SQL 前言Text2SQL的构建第一阶段&#xff1a;SQL脚本构建&#xf…

听GPT 讲Rust源代码--compiler(32)

File: rust/compiler/rustc_middle/src/middle/exported_symbols.rs 在Rust的源代码中&#xff0c;rust/compiler/rustc_middle/src/middle/exported_symbols.rs文件的作用是实现编译器中处理导出符号的功能。 该文件中定义了一些结构体和枚举&#xff0c;用于描述导出符号的信…