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 等公司。2026年10月,该项目表示,会继续与 Mullvad 开展范围受限的技术合作,但在外界对 Mullvad 联合创始人的一笔政治捐款表示担忧后,已暂停与该公司的联合品牌活动。经审计的财务报表以博客文章形式发布,最近一份于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 地址为何停止工作
这两种地址格式不兼容,旧版格式也已永久停用。
此图表背后的数据
[
{
"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 年 7 月发布,时间安排如下:
- 2020 年 9 月 15 日,Tor 0.4.4.x:Tor 开始警告操作员和客户端,说明 v2 已弃用。
- 2021 年 7 月 15 日,Tor 0.4.6.x:从代码库中移除 v2 支持。
- 2021 年 10 月 15 日:所有受支持系列的新稳定客户端版本停用 v2。
实际版本并未按这些日期发布。代码变更提前完成:Tor 0.4.6.1-alpha 的变更日志日期为 2021 年 3 月 18 日,其中写道:“从此版本开始,Tor 不再支持旧版 v2 onion service。”2021 年 5 月 10 日,Tor 0.4.5.8 在“连接到现已弃用的 v2 onion service”时增加了警告,Tor 0.4.6.3-rc 则为“不再受支持”的服务提供了更明确的错误消息。浏览器的迁移则较晚。稳定版 Tor Browser 在 2021 年 11 月 8 日发布的 11.0 版本中停用 v2:“更新到 Tor 0.4.6.8 后,Tor Browser 将无法再访问 v2 onion service。”
官方给出的原因是密码学安全性。“随着人类对数学和密码学的理解不断发展,版本 2 所依赖的基础变得脆弱,在当前阶段已不再安全。”截至 2021 年,80 位截断 SHA-1 哈希和 1024 位 RSA 密钥都低于合理的安全标准,而且该地址格式没有为替换这两项算法或参数留下空间。
对读者而言,后果很简单,因此需要明确说明。2021 年之前发布的每个 16 字符 .onion 链接都已永久失效,而且没有重定向。v2 地址无法升级,因为该地址是旧 RSA 密钥的截断哈希。操作员必须创建新服务,并通过用户已经信任的渠道发布新地址。
桥接和可插拔传输:审查持续变化
公开中继列表是有意发布的,因此客户端可以自行选择路径,而不是信任某台服务器代为选择。同一份公开列表也会直接成为任何想要阻止 Tor 的国家的封锁列表。桥接的开发始于 2007 年。桥接是未列入公开列表的中继。您可以通过 Web 或电子邮件请求少量桥接;审查者无法封锁自己无法枚举的地址。桥接的供应完全依赖志愿者持续添加,在廉价 VPS 上运行 obfs4 桥接只需几条 torrc 指令和一条防火墙规则,并不是一个复杂项目。
随后,封锁对象从地址转向流量特征。无论目标 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 Browser 的构建过程具有确定性,因此独立构建者可以重新构建某个版本,并将其与已发布的二进制文件进行比较;中继由志愿者运行,而不是由任何资助方运行。资金确实会影响哪些工作优先完成,Tor 博客上经过审计的财务报告也会说明资金来源。但这是优先级问题,不是代码问题。
为什么我以前的 .onion 地址停止工作了?
这是一个 v2 地址,而 v2 onion 服务已于2021年停用。Tor Project 于2020年7月宣布停用计划,Tor 0.4.6.1-alpha 于2021年3月移除了对 v2 的支持,稳定版 Tor Browser 在2021年11月8日发布的11.0版本中停止访问 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。Tor 的支持页面建议依次尝试 obfs4、webtunnel、snowflake 或 meek。因此应先尝试 obfs4;如果连接始终无法完成,再按该顺序继续尝试。