Tor网络原理详解

2023-12-17

引入

匿名通信是一种通过采用数据转发、内容加密、流量混淆等措施来隐藏通信内容及关系的隐私保护技术。为了提高通信的匿名性,这些数据转发链路通常由多跳加密代理服务节点构成,而所有这些节点即构成了匿名通信系统(或称匿名通信网络)。匿名通信系统本质上是一种提供匿名通信服务的覆盖网络,可以向普通用户提供Internet匿名访问功能以掩盖其网络通信源和目标,向服务提供商提供隐藏服务机制以实现匿名化的网络服务部署。作为匿名通信系统的核心功能,隐藏服务机制通常利用多跳反向代理或通过资源共享存储来掩盖服务提供商的真实地址,可以保证匿名服务不可追踪和定位。

匿名通信技术的提出源于网络用户的隐私保护需求,但是随之而来的是各种匿名滥用问题。尤为突出的是,一些不法用户基于Tor,I2P,Freenet等匿名通信系统提供的隐藏服务机制,架设必须通过特殊软件或进行特殊配置才能访问的网络服务,形成了无法被直接检索的暗网。术语“DarkWeb”和“Darknet”经常被混用指代暗网。为了更好地厘清这2个术语之间的关系和差异,并界定本文所讨论的暗网的内容,给出如下定义:

  1. DarkWeb:必须通过特殊的软件、特殊的配置才能访问的拥有特殊域名的Web站点,搜索引擎无法对其进行检索。
  2. Darknet:必须通过特殊的软件、特殊的配置才能访问,包含Web、IRC、文件共享等各类资源和服务的匿名网络,搜索引擎无法对其进行检索。

两者的关系如图1所示,其中DarkWeb重点在于不可检索、不可直接访问,并不强调匿名,因此既包含匿名Web站点(如Tor隐藏服务站点),也包含非匿名Web站点(如ZeroNet提供的Web站点);而Darknet则强调匿名性,即所有的资源都需要基于相应的匿名通信系统才能进行访问,其中的资源不限于Web服务。
image.png

Tor匿名通信系统

Tor(the second-generation onion router)是目前使用范围最广的匿名通信系统之一,其核心技术“洋葱路由”在20世纪90年代中期由美国海军研究实验室提出,并在1997年交由美国国防高级研究计划局(DARPA)进一步开发。2003年Tor正式版发布,2004年Tor设计文档在第13届USENIX安全讨论会上正式发表,并在同年由美国海军研究实验室公开其源码。

Tor使用多跳代理机制对用户通信隐私进行保护:首先,客户端使用基于加权随机的路由选择算法分别选择3个中继节点,并逐跳与这些中继节点建立链路。在数据传输过程中,客户端对数据进行3层加密,由各个中继节点依次进行解密。由于中继节点和目的服务器无法同时获知客户端IP地址、目的服务器IP地址以及数据内容,从而保障了用户隐私。Tor于2004年开始支持隐藏服务,为Tor暗网的出现提供了技术支撑。Tor暗网是目前规模最大的暗网之一,其中包含大量的敏感内容与恶意内容。Tor隐藏服务是仅能在Tor暗网中通过特定形式的域名(.onion)访问的网络服务。Tor暗网的基本组件包括客户端、目录服务器(directory server)、隐藏服务目录服务器(hidden service directory)、洋葱路由器(onion router, OR)和隐藏服务器(hidden server),如图2所示。
image.png

  1. 客户端:客户端是运行在用户操作系统上的本地程序,称为洋葱代理(onion proxy, OP)。OP将用户数据封装成Tor信元并层层加密,为各类TCP应用程序提供匿名代理服务。
  2. 洋葱路由器:Tor暗网中的数据中继节点。Tor默认匿名链路由3个OR组成,分别为入口节点(Entry)、中间节点(Middle)和出口节点(Exit),其中入口节点一般选择可信度较高的守护节点(Guard)。
  3. 隐藏服务器:提供Web,IRC等TCP应用服务。隐藏服务器受到Tor匿名性的保护,必须使用Tor客户端才能够访问其TCP应用服务。
  4. 目录服务器:目录服务器保存了所有洋葱路由器的IP地址、带宽等信息。客户端在首次启动后向目录服务器请求洋葱路由器信息,以便完成节点选择和链路建立。
  5. 隐藏服务目录服务器:隐藏服务目录服务器存储并为客户端提供隐藏服务器的引入节点(introduction point, IPO)、公钥等节点信息。

客户端、洋葱路由器、目录服务器、隐藏服务目录服务器和隐藏服务器的功能都集成在Tor软件包中,用户可以通过配置文件对具体功能进行配置。

Tor隐藏服务器在启动时会选择3个引入节点作为其前置代理,并将引入节点及其公钥信息上传至隐藏服务目录服务器。客户端访问隐藏服务时,首先建立3跳链路访问隐藏服务目录服务器,获取引入节点和公钥信息。客户端选择一个汇聚节点(rendezvous point, RPO)作为客户端和隐藏服务器通信链路的汇聚点,并将汇聚节点的信息通过引入节点告知隐藏服务器。客户端和隐藏服务器各自建立到达汇聚节点的链路,完成6跳链路的搭建后即可开始通信。Tor用户通过6跳链路访问隐藏服务器,在此过程中任意节点无法同时获知Tor客户端IP地址、隐藏服务器IP地址以及数据内容,保障了Tor客户端与隐藏服务器的匿名性。

匿名接入技术

匿名接入技术是匿名通信网络为了规避网络监管而提供的客户端隐蔽接入技术。网络监管者出于安全审计的考虑,会检测匿名网络的中继节点并阻止用户接入。为了规避此类网络审查,研究人员提出了各种匿名接入技术,包括bridge,pbfs,meek,FTE,Flashproxy等。

bridge节点

Tor的设计者在2011年提出了bridge节点的概念以突破网络监管。由于此类节点的信息不公开,因此Tor客户端可以将其作为入口节点从而接入匿名网络。
bridge是匿名网络为了提升自身隐蔽性和规避基于IP阻断的网络监管而开发的一种接入机制。bridge节点功能上与一般的Tor中继节点相同,但其信息并未被目录服务器公开,从而降低了被网络监管者发现和阻断的风险。为了方便用户获取此类节点信息,Tor项目提供了2种获取方式:

  1. 在bridgeDB数据库中保存了bridge节点信息,用户可通过直接访问官网站点获取3个bridge节点;
  2. 用户还可通过Google和Yahoo邮箱向指定邮箱发送请求,邮件服务器会自动回复3个bridge节点信息。由于Google和Yahoo申请虚假邮件地址比较困难,所以可有效防止无限制获取bridge节点信息等恶意攻击。

obfs混淆代理

虽然Tor可以使用bridge节点来规避基于IP阻断的监管,但监管者仍能通过深度包检测(deep packet inspection, DPI)技术来识别出Tor流量。鉴于此,Tor项目开发了第1个传输插件obfs混淆代理。Obfs后续又经历了3次版本改进,分别为obfs2,obfs3,obfs4,当前最新版本的Tor使用的是obfs4。其中,obfs2设计于2012年,采用分组密码(AES-CTR-128)对Tor的传输数据进行加密,擦除了Tor流量相关的标识信息,从而实现了有效混淆。但是obfs2在设计上存在2个问题:

  1. 握手阶段的连接容易被识别。通信双方在传输数据之前需要交换秘密信息并协商出会话密钥,而在这一阶段的密钥种子是通过明文传输且报文格式固定,导致这种obfs2流量容易被中间审查机制识别并计算出双方的会话密钥。
  2. 可利用Tor客户端探测bridge节点以检查其是否可进行obfs2握手,从而实施主动的bridge探测攻击。

鉴于上述设计缺陷,Tor后续又推出了obfs3和obfs4方案。作为obfs2的后续设计,obfs3使用Diffie-Hellman协议来计算通信双方的共享秘密,并由此生成对称密钥。相较于obfs2,obfs3在握手阶段有了很大的改进,但其在密钥交换阶段仍然缺乏对bridge身份的验证,存在中间人攻击和主动探测攻击的风险。

为了抵御上述攻击,需要能够有效保证双方通信真实性、完整性和机密性的优化方案。ScrambleSuit提出利用带外方式交换共享秘密实现通信双方的互认证,能够有效防御主动探测攻击。在此基础上,obfs4进一步利用BridgeDB实现了基于bridge身份验证的密钥交换。客户端通过BridgeDB查询bridge节点,获得其IP地址、节点ID和公钥信息。只有同时匹配这3个信息才能通过obfs4节点的身份验证并建立连接。obfs4是对obfs3的重大升级,既有效地混淆了Tor流量,又实现了bridge身份验证,达到能够抵御主动探测攻击和中间人攻击的效果。

meek隐蔽通道构建技术

meek是一种基于前置域(domain fronting)的隐蔽通道构建技术,其工作原理如图7所示。首先,meek-client向前置域名服务器发送一个TLS Client Hello消息,并将该服务器域名填入SNI(server name indication)字段。在TLS握手成功后,meek-client把实际传输的Tor流量封装在HTTP POST载荷中,并将目标bridge地址写入HTTP HOST字段。由于监管者无法查看加密后的HTTP POST内容,因此无法识别真正的目标bridge地址。前置域服务器接收到meek-client数据后,根据HTTP HOST字段值将数据转发到目标bridge节点。该节点上运行的meek-server对HTTP报头处理后将封装的Tor流量转发给后续中继节点。在当前Tor网络中,meek的实现主要依赖于Google,Amazon和Azure等大型服务提供商提供的白名单前置域名服务器,造成Tor客户端在访问正常网站的假象,从而规避网络流量监控。
image.png

FTE加密流量转换技术

FTE(format-transforming encryption)由Dyer等人在2013年ACM计算机与通信安全会议(ACM Conference on Computer and Communications Security, CCS)上发表,其主要原理是通过扩展传统对称加密,将密文转换为指定的传输格式。与obfs流量混淆方式不同,FTE没有将原协议流量转换为无序的未知流量,而是根据用户输入的正则表达式,输出具有一定协议格式的流量。其中,用户输入的正则表达式可以从DPI系统源码中直接提取或根据应用层流量自动学习得到。这使得基于正则表达式的DPI技术会将其误识别为用户选定的协议流量,从而实现规避审查的目的。由于大部分Tor流量为HTTP流量,默认情况下采用HTTP正则表达式将之转化为HTTP协议,从而实现流量伪装。

洋葱匿名路由技术

匿名路由技术是匿名通信系统为用户提供匿名服务时所使用的一种关键技术。该技术具体涉及路由节点选择、链路建立、数据传输等多个阶段。通过匿名路由技术,匿名通信系统的安全和性能都能够得到保障。目前,低延迟匿名通信系统所使用的路由技术主要包括洋葱路由、大蒜路由和基于DHT的路由。

洋葱路由技术的核心思想是通过多跳代理与层层加密的方法为用户的通信隐私提供保护。Tor是最典型的使用洋葱路由技术的匿名通信系统。在Tor暗网中,客户端与隐藏服务器之间需要各自选择3个节点建立多跳链路才能进行通信。目前,Tor主要采用基于加权随机的路由选择算法选择洋葱路由器构建链路。该算法依据服务器描述符(server descriptor)与共识文档(consensus document)中的带宽信息与放缩因子计算各节点的加权值,并按照出口节点、入口节点和中间节点的顺序选择链路节点。值得注意的是,链路中任意2个洋葱路由器应来自不同的C类网段。

在节点选择完成之后,OP从入口节点开始逐跳建立匿名链路,节点之间均采用TLS/SSLv3对链路进行认证。为增强可读性,下面将入口节点、中间节点、出口节点用OR1,OR2,OR3表示。首先,OP与OR1建立TLS链接,即OP发送CELL_CREATE信元,OR1进行响应以完成Diffie-Hellman握手并协商会话密钥 k 1 k_{1} k 1 ,从而建立第1跳链路。其中,CELL_CREATE信元是Tor中一种数据传输的基本单元,长度为512B。然后,OP向OR1发出与OR2建立链路的Tor信元,OR1收到后与OR2建立TLS链路,并通过Diffie-Hellman协议协商OP与OR2之间的会话密钥 k 2 k_{2} k 2 。OR1将会话密钥通过加密报文告知OP,完成第2跳链路的建立。以此类推,Tor建立多跳链路实现与通信目标的安全连接。

在匿名链路建立后,用户可以通过OP访问公共网络进行数据传输。当OP获得目标服务的IP地址和端口后,使用 k 1 k_{1} k 1 k 2 k_{2} k 2 k 3 k_{3} k 3 对数据信元进行层层加密封装,即 { { { < I P : p o r t > } k 3 } k 2 } k 1 \{\{\{<IP:port>\}_{k_{3}}\}_{k_{2}}\}_{k_{1}} { { { < I P : p or t > } k 3 } k 2 } k 1 ,这种加密方式称为“洋葱加密”。该信元经过每个OR节点时,都会被使用对应的密钥对最外层进行解密并转发。当到达OR3后进行最后一次解密,即可识别出目标服务器的IP地址和端口,从而建立TCP连接。在此过程中,用户的上行数据经过OP层层加密,由各OR逐层解密并转发至目标服务器;与此相反,目标服务器的下行数据经过各OR加密,由OP逐层解密并最终返回给应用程序。对于目标服务器来说,Tor用户是透明的,其始终认为自己在和OR3通信,而各OR无法同时获得Tor用户IP、目的服务器IP和应用数据,从而保证了通信的匿名性。

Tor隐藏服务

Tor隐藏服务是通过隐藏服务域名(即洋葱域名)唯一标识和查找的。服务器首次运行后将生成一个隐藏服务域名,其域名形式为.onion。其中是长度为16B的字符串,由RSA公钥Hash值的前80b进行base32编码获得。

image.png

Tor隐藏服务器在启动过程中会将其信息上传至隐藏服务目录服务器,Tor客户端能够通过目录服务器获取足够的信息与隐藏服务器建立双向链路。图2展示了客户端访问隐藏服务的具体过程:

  1. 隐藏服务器选择3个洋葱路由器作为其引入节点,并与引入节点建立3跳链路;
  2. 隐藏服务器将其隐藏服务描述符(hidden service descriptor)上传至隐藏服务目录服务器,描述符中包含引入节点的信息与自身RSA公钥;
  3. 客户端通过隐藏服务域名(.onion)进行访问时,从隐藏服务目录服务器获取引入节点的相关信息;
  4. 客户端选择一个洋葱路由器作为汇聚节点并与该节点建立3跳链路;
  5. 客户端建立到达引入节点的3跳链路,并通过引入节点将汇聚节点的信息发送到隐藏服务器;
  6. 隐藏服务器建立到达汇聚节点的3跳链路,并对该链路进行认证;
  7. 经过汇聚节点,客户端与隐藏服务器通过6跳链路进行交互。

Tor隐藏服务器运行时,将自身的RSA公钥及引入节点信息上传至通过下式选定的6个隐藏服务目录服务器上,其中 H ( x ) H(x) H ( x ) 是结果长度为160b的Hash函数, ∥ \parallel 为拼接函数。
D e s c r i p t o r − i d = H ( P u b l i c − k e y − i d ∥ S e c r e t − i d − p a r t ) Descriptor-id=H(Public-key-id\parallel Secret-id-part) Descr i pt or i d = H ( P u b l i c k ey i d S ecre t i d p a r t )
其中,Public-key-id即为RSA公钥的SHA1摘要的前80b。Secret-id-part,可计算为
S e c r e t − i d − p a r t = H ( T i m e − p e r i o d ∥ D e s c r i p t o r − c o o k i e ∥ R e p l i c a − i n d e x ) Secret-id-part=H(Time-period\parallel Descriptor-cookie\parallel Replica-index) S ecre t i d p a r t = H ( T im e p er i o d Descr i pt or coo ki e R e pl i c a in d e x )
其中,Descriptor-cookie为可选字段,该字段可以用来防止未授权客户端访问隐藏服务;Replica-index有2种取值,其作用为选择不同的隐藏服务目录服务器。Time-period字段用于分散隐藏服务重新选择隐藏服务目录服务器的时间,可计算为
T i m e − p e r i o d = t + P [ 0 : 1 ] × 86400 256 86400 Time-period=\frac{t+P[0:1]\times \frac{86400}{256} }{86400} T im e p er i o d = 86400 t + P [ 0 : 1 ] × 256 86400
其中,t为当前的UNIX时间。该字段将一天划分为256个时段,并在其中某个时刻重新选择隐藏服务目录服务器上传信息。

隐藏服务目录服务器利用DHT进行组织,每个目录服务器都是DHT中的一个节点,DHT结构如图12所示。
image.png

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Tor网络原理详解 的相关文章

随机推荐

  • CNN-LSTM-Adaboost回归预测 | Matlab基于卷积神经网络-长短期记忆神经网络Adaboost回归预测

    作者简介 热爱科研的Matlab仿真开发者 修心和技术同步精进 代码获取 论文复现及科研仿真合作可私信 个人主页 Matlab科研工作室 个人信条 格物致知 更多Matlab完整代码及仿真定制内容点击 智能优化算法 神经网络预测 雷达通信
  • 【计算机毕设文章】新闻资讯微信小程序开发后端+php

    摘 要 随着我国经济迅速发展 人们对手机的需求越来越大 各种手机软件也都在被广泛应用 但是对于手机进行数据信息管理 对于手机的各种软件也是备受用户的喜爱 新闻资讯被用户普遍使用 为方便用户能够可以随时进行新闻资讯的数据信息管理 特开发了基于
  • 【计算机毕设文章】基于微信小程序的科创微应用平台

    基于微信小程序的科创微应用平台 摘要 随着信息技术在管理上越来越深入而广泛的应用 管理信息系统的实施在技术上已逐步成熟 本文介绍了基于微信小程序的科创微应用平台的开发全过程 通过分析基于微信小程序的科创微应用平台管理的不足 创建了一个计算机
  • 从零开始搭建自动化测试平台,构建自动化测试平台的最全指南!

    前言 随着软件开发的不断进步 测试工程师也需要跟上趋势并适应新的测试方法 自动化测试已成为现代测试领域中不可或缺的一部分 它可以提高测试效率 减少测试成本 并且可以避免人为错误对测试结果的影响 在这篇文章中 我们将介绍如何构建一个自动化测试
  • 每天花2小时复习Java面试指南,高级架构视频,我进了阿里定级P7

    Java进阶架构师必备 基础 容器 并发 JVM Java8 计算机网络 计算机操作系统 Linux 数据结构 算法 mysql 优化思路 系统设计 分布式 线上问题调优 虚拟机 tomcat 面试指南 工具 添加图片注释 不超过 140
  • NAT场景案例分析

    目录 问题现象一 NAT Server故障排错思路 问题现象二 NAT Server问题 问题现象三 NAT Server问题 问题现象四 LAN LAN映射 问题现象一 NAT Server故障排错思路 NAT Server故障排查思路
  • GA-LSTM分类预测 | Matlab遗传算法(GA)优化长短期记忆网络的数据分类预测

    作者简介 热爱科研的Matlab仿真开发者 修心和技术同步精进 代码获取 论文复现及科研仿真合作可私信 个人主页 Matlab科研工作室 个人信条 格物致知 更多Matlab完整代码及仿真定制内容点击 智能优化算法 神经网络预测 雷达通信
  • 冗余备份组网——HSRP和GLBP协议

    目录 HSRP 思科私有协议 HSRP基本概念 HSRP工作过程 HSRP的状态 HSRP的可靠性 HSRP相关配置 GLBP协议 HSRP 思科私有协议 HSRP基本概念 HSRP Host Standby Router Protocol
  • 每日一练2023.12.16——吃火锅【PTA】

    题目链接 L1 070 吃火锅 题目要求 以上图片来自微信朋友圈 这种天气你有什么破事打电话给我基本没用 但是如果你说 吃火锅 那就厉害了 我们的故事就开始了 本题要求你实现一个程序 自动检查你朋友给你发来的信息里有没有 chi1 huo3
  • 基于卷积神经网络结合注意力机制的长短记忆网络CNN-LSTM-Adaboost实现风电功率回归预测附matlab实现

    作者简介 热爱科研的Matlab仿真开发者 修心和技术同步精进 代码获取 论文复现及科研仿真合作可私信 个人主页 Matlab科研工作室 个人信条 格物致知 更多Matlab完整代码及仿真定制内容点击 智能优化算法 神经网络预测 雷达通信
  • 目前最火的大模型训练框架 DeepSpeed 详解来了

    目前 大模型的发展已经非常火热 关于大模型的训练 微调也是各个公司重点关注方向 但是大模型训练的痛点是模型参数过大 动辄上百亿 如果单靠单个GPU来完成训练基本不可能 所以需要多卡或者分布式训练来完成这项工作 一 分布式训练 1 1 目前主
  • SpringMVC上传下载文件解读

    知识点 文件上传 File Upload 创建一个控制器方法 使用 MultipartFile 参数来接收上传的文件 在 Spring 配置文件中配置一个 MultipartResolver 常用的实现类是 CommonsMultipart
  • 【计算机毕设文章】模拟考试小程序

    摘 要 随着我国经济迅速发展 人们对手机的需求越来越大 各种手机软件也都在被广泛应用 但是对于手机进行数据信息管理 对于手机的各种软件也是备受用户的喜爱 模拟考试被用户普遍使用 为方便用户能够可以随时进行模拟考试的数据信息管理 特开发了基于
  • 【计算机毕设文章】微信阅读小程序的设计与实现

    毕 业 设 计 论 文 题目 微信阅读小程序的设计与实现 摘 要 由于APP软件在开发以及运营上面所需成本较高 而用户手机需要安装各种APP软件 因此占用用户过多的手机存储空间 导致用户手机运行缓慢 体验度比较差 进而导致用户会卸载非必要的
  • 双非本科进不了大厂?阿里技术四面+交叉面+HR面,成功拿到offer

    前言 前两天 我收到了阿里巴巴的实习offer 从学长内推开始面试到拿到最后offer经历了4面技术 一面交叉面和一面HR面 经过了漫长的等待和几次几乎折磨的面试之后 终于拿到了实习offer 自我介绍 本人来自西南某双非本科学校 该校学的
  • 这应该是最全的大模型训练与微调关键技术梳理

    作为算法工程师的你是否对如何应用大型语言模型构建医学问答系统充满好奇 是否希望深入探索LLaMA ChatGLM等模型的微调技术 进一步优化参数和使用不同微调方式 现在我带大家领略大模型训练与微调进阶之路 拓展您的技术边界 通过阅读文章 你
  • 【计算机毕设文章】微信点餐小程序

    微信点餐小程序 摘 要 随着社会的发展 社会的方方面面都在利用信息化时代的优势 互联网的优势和普及使得各种系统的开发成为必需 本文以实际运用为开发背景 运用软件工程原理和开发方法 它主要是采用java语言技术和mysql数据库来完成对系统的
  • 第三章 Linux的目录结构

    第三章 Linux的目录结构 学习目标 1 熟悉Linux目录的组织习惯 2 熟悉一些Linux的常见目录及作用 第一节 Linux中的常见目录 Linux常见的目录结构 不同版本的Linux目录结构可能略有不同 Centos7的文件目录结
  • 毕业设计 江科大STM32的智能温室控制蓝牙声光报警APP系统设计

    基于STM32的智能温室控制蓝牙声光报警APP系统设计 1 项目简介 1 1 系统构成 1 2 系统功能 2 部分电路设计 2 1 stm32f103c8t6单片机最小系统电路设计 2 2 LCD1602液晶显示电路设计 2 2 风
  • Tor网络原理详解

    引入 匿名通信是一种通过采用数据转发 内容加密 流量混淆等措施来隐藏通信内容及关系的隐私保护技术 为了提高通信的匿名性 这些数据转发链路通常由多跳加密代理服务节点构成 而所有这些节点即构成了匿名通信系统 或称匿名通信网络 匿名通信系统本质上