Tor简史:从1995年洋葱路由研究到今天
Tor始于1995年美国海军研究实验室的洋葱路由研究,网络于2002年10月部署,Tor Project于2006年成立。本文按日期梳理关键里程,并核对网络由谁资助。
Tor 的简史
Tor 的历史始于 1995 年,当时美国海军研究实验室是美国海军的一所研究机构。David Goldschlag、Michael G. Reed 和 Paul Syverson 在那里构建了首批洋葱路由原型。Tor Project 自己的时间线称,他们当时提出的问题是:“是否存在一种建立互联网连接的方式,使人们无法得知谁在与谁通信?”今天人们使用的网络于 2002 年 10 月部署,其代码以自由开放软件许可证发布。Tor Project, Inc. 于 2006 年成立,是一家非营利组织。
下面的每个日期都来自 Tor Project 发布的时间线、版本说明或其官方支持页面。对于存在争议的说法(例如由谁资助这项工作),本节会说明现有证据,以及您可以在哪里自行核查。
洋葱路由实际实现的功能
洋葱路由将互联网通常关联在一起的两个事实分开:您是谁,以及您请求了什么。您的 Tor 客户端会选择 3 个中继,并通过它们建立一条电路。它会使用 3 层加密封装流量,每个中继对应 1 层。每个中继剥离 1 层加密,只知道下一跳的地址,然后转发数据包。这种分层方式就是名称的由来。
第一个中继称为 guard。它能看到您的 IP 地址,但看不到目标地址。最后一个中继称为 exit。它能看到目标地址,但看不到您的 IP 地址。中间中继两者都看不到。没有任何单个中继同时掌握这两部分信息,这就是整个安全性依据。这也是中继必须由互不相关的人员运营的原因。如果同一组织运营您的 guard 和 exit,这种分离就会消失,加密也无法提供保护。
已知的弱点是流量关联。能够同时监视电路两端的观察者,可以根据数据包的时间和大小,将进入的数据包与传出的数据包匹配起来。Tor 无法防御能够同时监视整个互联网的攻击者。Roger Dingledine、Nick Mathewson 和 Paul Syverson 在 2004 年的设计论文《Tor: The Second-Generation Onion Router》中也在威胁模型中明确说明了这一点。
为什么私有网络会毫无用处
这是简短摘要会略过的部分,也是理解本页其他内容的关键。
军事或情报机构无法从只承载自身流量的网络中获得匿名性。匿名性来自人群,而不是密码。如果离开该网络的每个连接都属于同一个办公室,那么观察者只要看到连接离开,就已经知道答案。加密仍然完全有效。但匿名性并不存在,因为没有其他对象可以混淆视线。
因此,这个设计必须公开,并且流量必须与其他人的流量混合。代码于 2002 年 10 月以自由软件许可证发布,任何人都可以运行中继。记者、活动人士、研究人员,以及想避开广告网络的普通人,都成为保护其中其他用户的群体。Dingledine 和 Mathewson 在 2006 年题为《匿名性需要陪伴:可用性与网络效应》的论文中阐述了这一论点。该论文在信息安全经济学研讨会上发表。结论是,用户群体的规模和多样性属于系统的安全属性,而不是营销数字。
从 alpha 代码到非营利组织
Tor Project 的时间线和已发布的论文记录了以下步骤:
- 2002 年 10 月:Tor 网络部署,代码采用“自由和开放的软件许可证”。
- 2003 年底:网络运行在“大约十几个志愿者节点上,其中大多数位于美国,德国有 1 个”。
- 2004 年:Dingledine、Mathewson 和 Syverson 发布设计论文《Tor:第二代洋葱路由器》。
- 2004 年:Electronic Frontier Foundation(EFF)开始资助 Tor 的相关工作。
- 2006 年:The Tor Project, Inc. 成立,作为 501(c)(3) 非营利组织维护 Tor 的开发工作。
- 2007 年:由于各国防火墙开始屏蔽公开中继列表,Tor 开始开发网桥。
- 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:版本 2 隐藏服务在 Tor 0.2.0.7-alpha 中推出。
- 19 December 2016:版本 3 开始开发,版本为 Tor 0.3.0.1-alpha。
- 9 January 2018:版本 3 发布于 Tor 0.3.2.9。
“隐藏服务”更名为“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 地址。在租用的服务器上执行此操作,主要是让 nginx 仅在 loopback 接口上运行,然后关闭可能将该地址关联回公网 IP 的泄漏;在自己的 VPS 上托管 .onion 站点会逐步介绍这一过程。
onion 地址也不是域名。RFC 7686 于 October 2015 发布,将 .onion 保留为特殊用途域名,以便普通解析器不再将这些查询泄漏到公共 DNS(domain name system)中。该 RFC 规定了一条明确的规则:“权威服务器 MUST 对 .onion 查询返回 NXDOMAIN。”将这一点与普通域名的解析过程对比,差异正是其设计目的。DNS 名称由注册机构分配给您,再通过您无法控制的服务器进行查询。onion 地址本身就是公钥,可以自行完成身份验证,因此不需要查询。
旧版 .onion 地址为何停止工作
这两种地址格式不兼容,旧版格式也已永久停用。
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 或电子邮件请求少量桥接,中审查者无法封锁自己无法枚举的地址。这些桥接之所以存在,只是因为志愿者不断添加。在廉价 VPS 上运行 obfs4 桥接只需要几条 torrc 指令和一条防火墙规则,并不复杂。
随后,封锁目标从地址转向流量特征。无论目标 IP 地址是什么,深度数据包检测都能识别线路上的 Tor 协议。解决方案是可插拔传输:在不改变 Tor 功能的情况下,改变 Tor 流量外观的封装层。在当前的 Tor Browser 中,这些传输由名为 lyrebird 的单个二进制文件提供。它是 obfs4proxy 的后继者。客户端配置只需 3 行 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 二进制文件的目录。完整复制 Bridge 行,不要手动输入;该行应从 Tor Project 的桥接站点获取。每种传输分别应对不同的封锁方式:
- obfs4 让流量看起来不像任何可识别的协议,因此过滤器没有可匹配的协议头。Tor 官方建议首先尝试它,因为这是一种随机化传输,对大多数用户都有效。
- snowflake 让连接经过志愿者在普通 Web 浏览器中运行的短期代理,因此您连接的地址会不断变化。它已在 2021 年 7 月 6 日的 10.5 版本中进入稳定版 Tor Browser。
- meek 通过大型云服务提供商路由连接,因此流量看起来像是发往该提供商。封锁它也意味着封锁该提供商。
- webtunnel 采取了与 obfs4 相反的方法。它不让流量看起来毫无特征,而是让流量看起来像发往 Web 服务器的普通 HTTPS 连接,方法是“将负载连接封装为类似 WebSocket 的 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 有后门?
Tor Project 的回答是:“Tor 没有后门。该软件采用开源许可,其代码可以由独立人员审计,并且每个版本都会进行签名,以防止篡改。”使这一说法可以验证,而不只是承诺的,是围绕 Tor 建立的机制。该协议公开规范,Tor Browser 的构建过程具有确定性,因此独立构建者可以重新构建版本,并将其与已发布的二进制文件进行比较;中继由志愿者运营,而不是由任何资助方运营。资金确实会影响哪些工作优先完成。Tor blog 上经过审计的财务报告也显示了资金来源。这涉及优先级,而不是代码本身。
为什么我以前的 .onion 地址停止工作了?
这是一个版本 2 地址,而 v2 onion 服务已于 2021 年停用。Tor 于 15 September 2020 开始对此发出警告,并在 Tor 0.4.6.x 中于 15 July 2021 从代码库中移除 v2,随后于 15 October 2021 在稳定版本中禁用 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。