SSD Nodes Learn 🎉 VPS $5.50/月起
指南 Matt Connor作者: Matt Connor

Tor简史:从洋葱路由到今天

Tor始于1995年美国海军研究实验室的洋葱路由研究,2002年10月部署公共网络,2006年成立非营利组织。本文按日期梳理关键里程,并核查Tor网络由谁资助。

Tor 的简史

Tor 的历史始于 1995 年的美国海军研究实验室,这是美国海军的研究机构。David Goldschlag、Michael G. Reed 和 Paul Syverson 在那里构建了最早的洋葱路由原型。Tor Project 自己的时间线称,他们当时思考的问题是,是否“有办法建立不会泄露通信双方身份的互联网连接”。如今人们使用的网络于 2002 年 10 月部署,其代码以自由和开放的软件许可证发布。Tor Project, Inc. 于 2006 年作为非营利组织成立。

以下每个日期都来自 Tor Project 发布的时间线、版本说明或其官方支持页面。对于资金来源等存在争议的说法,本节会说明现有证据以及您可以自行核查的位置。

洋葱路由实际实现的功能

洋葱路由将互联网通常关联在一起的两个事实分开:您是谁,以及您请求了什么。Tor 客户端会选择 3 个中继,并通过它们建立一条电路。它使用 3 层加密封装流量,每个中继对应一层。每个中继剥离一层,只知道下一跳的地址,然后转发数据包。这种分层方式就是名称的由来。

第一个中继称为 guard。它可以看到您的 IP 地址,但看不到目标地址。最后一个中继称为 exit。它可以看到目标地址,但看不到您的 IP 地址。中间中继两者都看不到。没有任何单个中继同时掌握这两部分信息,这就是其全部安全依据。因此,这些中继必须由彼此无关的人员运行。如果同一组织同时运行您的 guard 和 exit,这种分离就不复存在,加密也无法提供保护。

已知的弱点是流量关联。能够同时监视电路两端的观察者,可以根据进入和离开数据包的时间及大小进行匹配。Tor 无法防御能够同时监视整个互联网的攻击者。Roger Dingledine、Nick Mathewson 和 Paul Syverson 在 2004 年的设计论文《Tor:第二代洋葱路由器》中也在威胁模型部分明确说明了这一点。

为什么专用网络没有用

短摘要会跳过这一部分,但它解释了本页的其他所有内容。

军事或情报机构无法从只承载自身流量的网络中获得匿名性。匿名性来自人群,而不是密码。 如果离开网络的每个连接都属于同一个办公室,那么观察者看到连接离开时,就已经得到了答案。加密仍然完全有效。但匿名性并不存在,因为没有其他对象可以混淆。

因此,该设计必须面向公众,并且流量必须与其他人的流量混合。代码于 2002 年 10 月以自由软件许可证发布,任何人都可以运行中继。记者、活动人士、研究人员,以及希望避开广告网络的普通人,都成为保护其中其他用户的人群。Dingledine 和 Mathewson 于 2006 年在题为《匿名性需要伙伴:可用性与网络效应》的论文中阐述了这一观点。该论文发表于信息安全经济学研讨会。结论是,用户群体的规模和多样性属于系统的安全属性,而不是营销数据。

从早期代码到非营利组织

Tor Project 的时间线及其发布的论文记录了以下发展过程:

  • 2002 年 10 月:Tor 网络部署,代码采用“自由和开放的软件许可证”。
  • 2003 年底:网络运行在“大约十几个志愿者节点”上,其中大多数位于美国,另有一个位于德国。
  • 2004 年:Dingledine、Mathewson 和 Syverson 发布设计论文《Tor:第二代洋葱路由器》。
  • 2004 年:Electronic Frontier Foundation(EFF)开始资助 Tor 的开发工作。
  • 2006 年:The Tor Project, Inc. 成立,作为 501(c)(3) 非营利组织负责维护开发工作。
  • 2007 年:开始开发网桥,因为各国防火墙已经开始封锁公开中继列表。
  • 2008 年:Tor Browser 开始开发。

之后的两个时间点,对于理解当前网络的使用方式很重要。Tor Project 的时间线显示,Tor 在 2010 年底的阿拉伯之春期间开始被用于保护身份和访问遭封锁的网站。时间线还记录了 2013 年 Snowden 文件公开,称这是 Tor 的作用开始被广泛了解的时刻,并表示这些文件显示,当时 Tor 尚未被攻破。这两起事件都没有改变协议,但都改变了安装 Tor 的用户群体。

谁为 Tor 提供资金,以及如何核查

Tor Project 在自己的支持页面上这样回答:“Tor Project 的资金来自政府拨款、私人基金会和个人捐赠者。”政府资金是其中一部分,而且从项目成立之初就是如此。支持者页面列出了美国国务院,以及 Ford Foundation、Open Technology Fund、Craig Newmark Philanthropies,还有 Brave、DuckDuckGo、Mullvad VPN 和 Fastly 等公司。经过审计的财务报表以博客文章形式发布,最近一份于 2025 年 12 月发布,涵盖 2023 至 2024 财政年度。该项目明确表示:“公开讨论我们的赞助方和资金模式,是与社区保持信任的最佳方式。”

真正有用的问题不是谁提供了资金,而是资金能买到什么。Tor 不是需要登录的服务。它是一份协议规范、一个源代码可供阅读的客户端,以及一个由陌生人运行的中继网络。任何想植入后门的人,都必须将其放在以下三个位置之一,而且每个位置都可以核查。

  • 在源代码中。客户端采用开源许可,协议也公开规定。学术研究人员会定期发布针对 Tor 的攻击研究,而且他们有充分的职业动机优先找出漏洞。
  • 在二进制文件中。Tor Browser 的构建过程自 2013 年 8 月起可确定性复现,因此独立构建者可以重新构建某个发行版,并与已发布的下载文件逐字节比较。不匹配源代码的二进制文件无需信任发布者即可被发现。
  • 在中继中。Tor Project 不运行该网络。“Tor 网络依靠志愿者提供带宽”,入口中继、中间中继、出口中继和网桥由数千名互不相关的运营者运行。攻破某个资助方并不会攻破这些运营者。

该项目的官方声明很简短:“Tor 没有后门。软件采用开源许可,其代码可以由独立人员审计,并且每个发行版都会签名,以防止被篡改。”这句话之所以有价值,是因为其中每个分句都指出了可以自行核查的事项。

确实存在一个需要说明的问题,但它涉及优先级,而不是完整性。拨款会决定哪些工作优先开展,因此,与网络性能等工作相比,规避审查获得了更持续的资金支持。这是对该项目的合理批评。但它不同于“代码已被攻破”这一说法。要回答前一种批评,应阅读财务报告,而不是相信任何人的保证。

隐藏服务更名为 onion 服务

onion 服务是一个从不公开其 IP 地址的服务器。客户端和服务器各自在网络内部构建通往会合点的电路,因此任何一方都无法获知另一方的地址。这个地址不是由注册机构分配给某个实体的名称,而是由服务器的公钥派生而来。因此,.onion 地址看起来像随机字符。

onion 服务时间线列出了各版本的发布情况:

  • 8 April 2004:Tor 0.0.6pre1 首次实现隐藏服务。
  • 21 September 2007:Tor 0.2.0.7-alpha 引入第 2 版隐藏服务。
  • 19 December 2016:Tor 0.3.0.1-alpha 开始第 3 版的开发。
  • 9 January 2018:Tor 0.3.2.9 发布第 3 版。

“隐藏服务”更名为“onion 服务”是一个逐步完成的过程,并非发生在某个具体日期。Tor Project 的文档目前仍会同时使用这两个名称。旧名称描述的对象并不准确。许多 onion 网站是公开的,会被索引并进行宣传;隐藏的是服务器的位置,而不是网站本身。原名称仍保留在配置文件中,像一段有用的历史痕迹。现在仍可通过以下方式在 torrc 中声明服务:

HiddenServiceDir /var/lib/tor/my_service/
HiddenServicePort 80 127.0.0.1:8080

该目录保存服务密钥,以及包含地址的 hostname 文件。端口行将 onion 地址上的端口映射到同一台机器上的本地地址,因此 Web 服务器可以继续绑定到 127.0.0.1,完全不必在公网接口上监听。第 3 版是默认版本,因此今天使用这两行创建的服务会获得 v3 地址。

onion 地址也不是域名。2015 年 10 月发布的 RFC 7686.onion 保留为特殊用途域名,使普通解析器不再将这些查询泄露到公共 DNS(域名系统)中。该 RFC 规定了一条明确的规则:“权威服务器 MUST 对 .onion 查询返回 NXDOMAIN。”将此规则与普通域名的解析方式进行对比,区别正是 onion 服务的核心。DNS 名称由注册机构分配给您,并通过您无法控制的服务器进行查询。onion 地址本身就是公钥,因此可以自行完成身份验证,无需进行查询。

旧版 .onion 地址为何停止工作

这两种地址格式不兼容,旧版格式也已永久停用。

ChartOnion service addresses, v2 against v3
The data behind this chart
[
  {
    "version": "v2 (retired 2021)",
    "address_length_chars": 16,
    "service_key": "RSA-1024",
    "address_hash": "SHA-1, truncated to 80 bits"
  },
  {
    "version": "v3 (current)",
    "address_length_chars": 56,
    "service_key": "Ed25519",
    "address_hash": "SHA3-256"
  }
]

v2 地址为 16 个字符,因为它只包含 RSA-1024 公钥的 SHA-1 哈希值前 80 位。v3 地址为 56 个字符,因为它包含完整的 Ed25519 公钥,以及校验和与版本字节。v3 地址更长,是因为它不再截断公钥,因此地址本身现在就是服务的完整身份。

弃用按已公布的时间表进行

  • 2020 年 9 月 15 日,Tor 0.4.4.x:Tor 开始警告运维人员和客户端,v2 已弃用。
  • 2021 年 7 月 15 日,Tor 0.4.6.x:从代码库中移除 v2 支持。
  • 2021 年 10 月 15 日:所有受支持系列的新稳定版客户端禁用 v2。

官方给出的原因是密码学问题。“随着人类对数学和密码学的理解不断发展,v2 的基础变得脆弱,并且截至目前已不再安全。”截至 2021 年,80 位截断 SHA-1 哈希和 1024 位 RSA 密钥都低于合理的安全标准,而该地址格式也没有为替换这两者留下空间。

对读者而言,后果很简单,因此需要明确说明。2021 年以前发布的每个 16 字符 .onion 链接都已永久失效,并且不存在重定向。v2 地址无法升级,因为该地址本身就是旧密钥。运维人员必须创建新服务,并通过用户已经信任的渠道发布新地址。

网桥与可插拔传输:审查不断转移

公开中继列表是有意发布的,这样客户端可以自行选择路径,而不必信任某台服务器代为选择。同一份公开列表也会直接成为任何想阻止 Tor 的国家的阻止列表。网桥的开发始于 2007 年。网桥是不在公开列表中的中继。您可以通过 Web 或电子邮件请求少量网桥;审查者无法阻止它无法枚举的地址。

随后,阻止方式从地址转向流量特征。深度包检测无论流量发往哪个 IP 地址,都能识别线路上的 Tor 协议。可插拔传输解决了这个问题:它会改变 Tor 流量的外观,但不改变其功能。在当前版本的 Tor Browser 中,这些传输以名为 lyrebird 的单个二进制文件提供,它是 obfs4proxy 的后继产品;客户端配置只需三行 torrc

UseBridges 1
ClientTransportPlugin meek_lite,obfs4,snowflake,webtunnel exec [PATH]/lyrebird
Bridge obfs4 <IP ADDRESS>:<PORT> <FINGERPRINT> cert=<CERTIFICATE> iat-mode=0

[PATH] 替换为 lyrebird 二进制文件所在的目录,并从 Tor Project 的网桥网站获取完整的 Bridge 行,不要手动输入。每种传输分别应对不同的阻止方式:

  • obfs4 让流量看起来完全无法识别,因此过滤器没有可匹配的协议标头。Tor 官方建议首先尝试它,因为这是一种随机化传输,对大多数用户都有效。
  • snowflake 通过志愿者在普通 Web 浏览器中运行的短时代理转发连接,因此您连接的地址会不断变化。它在 2021 年 7 月 6 日发布的 10.5 版本中进入稳定版 Tor Browser。
  • meek 通过大型云服务提供商路由连接,因此流量看起来像是发往该提供商;阻止它也意味着阻止该提供商。
  • webtunnel 采取了与 obfs4 相反的方法。它不是让流量看起来无法识别,而是通过“将负载连接封装成类似 WebSocket 的 HTTPS 连接”,使其看起来像是连接到 Web 服务器的普通 HTTPS 连接。Tor Project 于 2024 年 3 月 12 日在稳定版 Tor Browser 中发布了它,面向仅允许少量协议的网络。

这段演进过程反映了过去二十年的真实情况。每种新传输都是因为某种特定的阻止技术开始奏效而出现的,而这些版本的发布日期记录了审查者在当年采取的措施。

Tor 不是 VPN,VPS 也不是

很多人是在了解 VPN 后才接触 Tor,因此需要明确区分。VPN(虚拟专用网络)会将您的流量发送到由某家公司运营的一台服务器,该公司可以同时看到您的真实地址和访问目标。Tor 会将您的流量依次经过由不同人员运营的 3 个中继,因此其中任何一个中继都无法同时掌握这两项信息。这是两种不同的信任模型,也对应不同的故障模式。VPS 与 VPN 的区别介绍了它们各自适用的场景。

如果您需要的是在自己控制的机器之间建立私有隧道,而不是在大量用户中实现匿名,那么您需要自行运行 VPN。您可以用大约 40 行配置在 VPS 上自行托管 WireGuard VPN。这可以保护您的流量,避免被本地网络和互联网服务提供商查看。但它无法让您对服务器托管公司保持匿名,因为您使用自己的付款信息租用了该服务器。另一个独立问题是VPS 托管是否安全,它对应的是另一种威胁:还有谁可以访问您的服务器。

运行中继则是另一种参与方式,Tor 网络依赖中继运营者。桥接中继、入口中继、中间中继和出口中继都需要运营者,Tor Project 的中继指南明确指出:“运行中继需要技术能力和持续投入。”出口中继还会带来法律风险,因为他人的流量会使用您的 IP 地址访问互联网,托管服务提供商也会因此收到投诉。在启动中继前阅读该指南,不要等启动后再阅读。

FAQ

Tor 是由美国政府开发的吗?

洋葱路由始于1995年的美国海军研究实验室。David Goldschlag、Michael G. Reed 和 Paul Syverson 在那里开发了最初的原型。Tor 本身是下一代设计,由 Roger Dingledine、Nick Mathewson 和 Paul Syverson 于2001年和2002年前后开始开发。该网络于2002年10月以自由软件许可证发布。Tor Project, Inc. 自2006年以来一直是独立的501(c)(3)非营利组织。它确实起源于政府项目,这也是该网络必须向所有人开放的原因:如果网络只承载某个组织的流量,该组织就无法获得匿名性,因为离开该组织的每个连接都会因使用该网络而暴露发送方。

政府提供资金是否意味着 Tor 有后门?

Tor Project 的回答是:“Tor 没有后门。该软件是开源的,其代码可以由独立机构审计,并且每个发行版都会签名,以防止被篡改。”使这一点可以验证,而不只是承诺的,是围绕 Tor 建立的机制。协议公开规范,Tor Browser 的构建过程具有确定性,因此独立构建者可以重新构建发行版,并与发布的二进制文件进行比较;中继由志愿者运行,而不是由任何资助方运行。资金确实会影响哪些工作优先开展,Tor 博客中经过审计的财务报告也说明了资金来源。这是关于工作优先级的问题,而不是关于代码的问题。

为什么我以前的 .onion 地址停止工作了?

这是一个版本2地址,v2 onion 服务已于2021年停止使用。Tor 从2020年9月15日开始发出相关警告,于2021年7月15日在 Tor 0.4.6.x 中从代码库移除 v2,并于2021年10月15日在稳定版本中禁用 v2。v2 地址在 .onion 之前有16个字符,v3 地址有56个字符。不存在重定向或升级路径,因为地址是根据旧密钥派生的。因此,运营者必须创建新服务并发布新地址。

Tor 和 VPN 是一回事吗?

不是。VPN 会将您的流量发送到由一家公司运营的一台服务器,该公司可以同时看到您的真实 IP 地址和访问目标。Tor 会将流量依次通过由不同人员运营的3个中继,因此第一个中继能看到您的地址,但看不到访问目标;最后一个中继能看到访问目标,但看不到您的地址。Tor 速度更慢,适用于防范不监控整个互联网的观察者。VPN 速度更快,适用于防止本地网络和互联网服务提供商了解您的流量。

什么是可插拔传输?我需要使用它吗?

可插拔传输是一种包装层。它会改变 Tor 流量在网络传输中的外观,但不会改变 Tor 的工作方式,因此识别 Tor 协议的过滤器无法据此匹配流量。只有在普通 Tor 无法连接时才需要使用它,这通常意味着您的网络或所在国家/地区正在阻止 Tor。Tor Browser 在一个名为 lyrebird 的二进制文件中提供 obfs4、snowflake、meek 和 webtunnel。请先使用 obfs4,因为它是一种随机化传输,适用于大多数用户。如果连接始终无法完成,再尝试 webtunnel 或 snowflake。