面向技术人员的 Tor
2015 年 6 月 15 日
Tor 是一种技术,近年来经常出现在新闻报道中。然而,人们对它存在很多误解。即使许多技术人员也无法理解它在负面用途之外的应用,但 Tor 的功能远不止于此。它是一个重要的民主和言论自由工具,但它在技术人员的日常生活中也十分有用。Tor 也是一个有趣的案例研究,它展示了如何设计一个具有特定安全要求的系统。
互联网目前是一个充满敌意的场所。存在各种各样的威胁,从 脚本小子 和 钓鱼 攻击,到世界主要情报机构普遍存在的 网络监控。这些问题的严重程度直到最近才变得清晰。在这种情况下,像 Tor 这样的工具填补了一个非常重要的空白。你可以说,即使像 Facebook 这样的公司也鼓励 使用 Tor 访问他们的服务,这本身就说明了时代的变化。现在是将 Tor 添加到你的工具箱中的最佳时机。
Tor 如何工作?
Tor 的目标是实现匿名网络流量。Tor 这个词最初代表 The Onion Router(尽管 Tor 不应该像缩略词一样大写)。洋葱路由是 Tor 用于隐藏客户端 IP 地址的方法。这也有额外的好处,即让任何中间人难以看到谁在互联网上请求什么信息。实际上,这意味着如果有人拦截你计算机附近的流量,Tor 会隐藏你正在与哪些服务器通信。如果有人拦截服务器附近的流量,他们将无法看到谁正在访问该服务器。
Tor 的工作原理是让数千名志愿者托管被称为 Tor 中继的东西。从根本上说,这些是专门用于转发流量的服务器。因此,当你想要访问某个服务时,运行在你计算机上的 Tor 客户端程序会选择三个不同的中继。然后,它会将信息数据包用公钥密码术进行加密。它会对数据包进行三次加密,分别对应于为本次通信会话选择的三个中继的公钥。然后,它会将三次加密后的数据包发送到列表中的第一个中继。该中继会解开专为自己设计的加密 - 剩下的数据包有两个加密层。第一个中继会将数据包发送到第二个中继,第二个中继会解开另一层加密。它将数据包发送到最终的中继,最终的中继会解开最后一层加密。由于没有剩余的加密,最终的中继知道数据包的真实目的地 - 因此它会联系请求的原始服务。然后,它会接收答案并将信息发送回来,使用相同的过程反向进行。
最终的中继通常被称为出口中继。第一个中继通常被称为入口中继。这种工作方式只让入口中继知道你机器的真实 IP 地址 - 只有出口中继知道你实际上想要联系哪个服务。而服务只看到出口中继的 IP 地址。所有这些因素共同很好地保护了客户端的匿名性。
一个重要的点是,你不必信任所有 Tor 中继才能信任 Tor 网络。由于任何人都可以设置自己的中继,因此没有任何东西可以阻止恶意行为者设置中继。因此,Tor 的设计即使在这种情况下也不会被破坏。
Tor 的设计明确是为了成为一个 低延迟网络 - 这意味着在良好情况下,可以使用它进行即时消息、音频会议甚至视频会议。
Tor 客户端
如果你想使用 Tor,有两种选择:第一种是运行客户端程序,第二种是下载并运行名为 Tor 浏览器捆绑包 的东西。如果你想将 Tor 用于除网页以外的其他类型的流量,直接运行 Tor 客户端软件会很有用。通常通过你操作系统的常规包管理系统进行安装 - 安装完成后,它应该在你的机器后台运行,无需你做任何操作。由于 Tor 作为代理工作,你不会直接与 Tor 交互。相反,你让你的常规程序通过 Tor 隧道传输流量。
Tor 客户端程序默认情况下会使用名为 SOCKS 的协议监听端口 9050 - 这是一个标准的代理协议,许多应用程序都可以配置为使用它。例如,我使用名为 Gajim 的程序进行即时消息。在这个程序中,我将所有帐户配置为通过指定正确的 SOCKS 代理设置来连接到 Tor。
如果你使用的是命令行工具,通常可以使用名为 usewithtor 或 torsocks 的程序来透明地让程序使用 Tor。还有其他使用 Tor 的方法 - Thunderbird 可以配置为将所有流量通过 Tor 传输,如果你想让你的电子邮件更难追踪和拦截 - 然而,在 Thunderbird 中手动配置 Tor 存在一些风险。可能存在多种类型的泄露信息,例如 DNS 查询、标题中的地理位置信息,甚至在某些情况下邮件标题中的 IP 地址。幸运的是,存在一个名为 TorBirdy 的插件,它可以自动执行许多步骤并尝试阻止此类不安全的信息泄露。
Tor 浏览器捆绑包
迄今为止,使用 Tor 最简单的方法是下载 Tor 浏览器捆绑包,它甚至不需要安装 - 下载后可以直接运行(你也可以将它放在 USB 驱动器或 DVD 上,并从那里运行)。Tor 浏览器捆绑包基本上是 Tor 客户端软件与一个高度定制的浏览器相结合。由于浏览器有很多方法可以泄露你的匿名性,还有很多其他因素会威胁你的安全,因此 Tor 浏览器捆绑包比仅仅将你的常规浏览器配置为使用 Tor 安全得多。
Tor 浏览器捆绑包附带了一些插件,可以提高你的隐私,它还被配置为不会通过侧信道泄露信息,例如字体配置、Flash 插件和其他功能。
隐藏服务
Tor 还具有另一个有趣的特性,最近引起了很多关注。Tor 隐藏服务使服务能够隐藏其 IP 地址,就像常规的 Tor 操作允许客户端隐藏其 IP 地址一样。它通过使用一种称为会合协议的东西来实现,这有点复杂。基本上,你可以想象客户端和服务器都建立了自己的三个中继的完整电路。然后,它们在 Tor 网络中的某个地方相遇 - 从那时起,它们就可以建立连接。通常,隐藏服务是通过 .onion-URL 找到和联系的,它由 16 个字母数字字符后跟 .onion 组成。这 16 个字符代表隐藏服务的公钥,这意味着连接路由是自验证的。没有人可以在没有窃取其私钥的情况下伪造隐藏服务。
隐藏服务非常强大,原因有很多。首先,它们允许服务提供者保持匿名。这当然被用于许多好的和坏的原因。其次,如果你只将服务公开为隐藏服务,你可以强制你的客户端使用 Tor - 这使得他们更难意外地泄露自己的信息。第三,隐藏服务以这样一种方式实现,即流量永远不会离开 Tor 网络。隐藏服务没有出口中继。这意味着与隐藏服务的通信将始终被加密到服务为止。对于常规的 Tor 连接来说,这并不一定是真的。最后,你可以公开隐藏服务,而无需拥有可公开路由的 IP 地址。一个非常实用的例子是将 SSH 公开为隐藏服务。这允许你 SSH 到你自己的服务器,无论它在哪里,而无需打开防火墙或拥有公共 IP。我在家运行着几台无法公开访问的服务器,能够 SSH 到它们并管理它们非常强大。
Facebook 最近通过将他们的服务器公开为隐藏服务而引起轰动。这是一个巨大的进步。所以你可能会问,这是否是你应该为你的项目做的事情。总的来说,我会说是的 - 尽管它确实需要一些额外的努力和测试。让你的用户可以使用它,这通常对每个人都有好处。
桥接和混淆协议
在一些地区,审查制度非常严重,以至于以常规方式使用 Tor 无法奏效。大多数情况下,这是因为他们只是阻止了对所有 Tor 中继的流量。由于 Tor 中继必须是公开的,因此审查者可以轻松地下载要阻止的 IP 列表。
由于这种情况,Tor 软件支持一种叫做桥接的东西。这些是未知的入口中继 - 如果你需要一个,你可以随时请求一个。有时还需要使用的另一个解决方案是使用混淆协议。由于最先进的审查者使用深度数据包检测,因此 Tor 流量必须伪装成其他类型的流量非常重要。目前在 Tor 中实现了几个不同的插件来解决这个问题 - 但这是一个持续的军备竞赛,以战胜审查制度。
匿名性很难 - Tor 不能防御什么?
Tor 是一种工具,就像任何工具一样,它有它擅长的方面,也有它不擅长的方面。重要的是要知道,Tor 无法防御所有威胁。即使你正确地使用 Tor,也有一些事情需要牢记。
在匿名性和安全性方面,Tor 最大的日常问题是,如果您发送到服务器的流量未加密,那么 Tor 无法提供帮助。具体来说,您与前两个中继之间的流量将被加密,难以攻击。但是,出口中继将能够看到通过它的所有流量。防止这种情况的方法是使用一种协议,该协议将您的信息一直加密到端点(例如使用 HTTPS 或带有 STARTTLS 的 SMTP)。另一种方法是使用公开隐藏服务的服务,这可以确保您获得所有流量的端到端加密。
Tor 通常被归类为低延迟网络。这对匿名性有影响。基本上,Tor 的设计方式是,如果攻击者能够观察到中继之间大部分网络流量,他们就可以对大部分流量进行去匿名化。原因是,由于 Tor 流量应该实时发出并返回,因此可以对数据包时间进行关联。这可能会导致隐私泄露。但是,这是 Tor 的设计方式。目前的研究似乎表明,如果您想要接近实时流量,那么基本上不可能获得完全匿名性。如果您不介意每个数据包等待几个小时才能到达,那么可以使用 其他类型的技术,但 Tor 不是为这些用例设计的。
如果您犯了错误并以任何方式暴露了您的 IP 地址,Tor 也无法保护您。一个典型的例子是使用 Tor 进行点对点文件共享,这不仅会破坏 Tor 网络,而且也无法隐藏您的地址,因为大多数文件共享协议都会暴露您的真实 IP 地址。如果您想确保不暴露您的 IP 地址,您还需要避免运行可能暴露它的插件。这是 Tor 浏览器捆绑包不附带 Flash 插件的原因之一,因为它从隐私的角度来看太危险了。
如果您将服务器公开为隐藏服务,也会出现同样的问题。如果您真的想隐藏它,您需要确保您的服务器组件不会以任何方式暴露您的 IP 地址。这说起来容易做起来难,下一节将对此进行讨论。
Tor 被破解了吗?
当我与技术人员谈论 Tor 时,我经常会遇到的一个问题是,我是否认为 Tor 存在问题,或者我们是否真的可以信任它,政府是否在其中设置了后门等等。关于 Tor 有很多谣言和理论,总的来说,它们只是谣言和理论。也就是说,正如我上面提到的,Tor 无法防止所有事情。但是,如果 Tor 包含后门,我会非常惊讶。代码是开源的,多年来,许多专家都研究过它。该协议也是开放的,并且已经在其他开源项目中多次实现。当然,不可能存在没有人注意到的后门,但我个人不会押注它。我建议任何担心这种可能性发生的技术人员花几个小时浏览一下源代码。该项目始终欢迎更多人参与。
研究
尽管如此,Tor 已经被破解过很多次。主要原因是匿名性非常困难,而 Tor 正在突破以往的界限。因此,Tor 是研究人员最喜欢的研究对象,他们会研究它,看看是否能找到让它做一些意想不到的事情的方法。这也是我们了解匿名性极限的主要途径。Tor 是许多研究的主题,这对社区来说最终是好事,因为每次出现一篇关于 Tor 弱点的新论文时,Tor 开发人员都会修复它。没有什么是从一开始就完美的,所以这种迭代和修复的方式让我们能够信任一个工具。
2014 年的事件
人们担心 Tor 的安全性程度的一个原因是,在过去几年中发生了一系列可疑事件。具体来说,Tor 用户和使用隐藏服务的人在各种情况下都被逮捕。但是,目前我们没有任何迹象表明这些事件中的任何一个实际上是由于 Tor 软件或协议中的缺陷造成的。在我们所知的情况下,这些原因似乎可以归结为各种错误。在一个案例中,Tor 浏览器捆绑包所基于的 Firefox 版本中存在一个错误,因此在警方接管服务器后,他们可以攻击该浏览器并对相关用户进行去匿名化(但仅限于访问该特定隐藏服务的那些用户)。在第一个 Silk Road 的案例中,似乎很明显调查人员设法入侵了管理员界面,并说服它发送回其真实 IP 地址。
然后我们有 Onymous 行动。这次行动是几个不同执法机构之间的合作,旨在打击大量非法在线市场。这次行动的有趣之处在于围绕它的所有宣传。最初,他们声称已经关闭了 400 多个隐藏服务。但在尘埃落定之后,似乎只有 27 个网站被关闭,只有 17 人被逮捕。你仍然可以争辩说这很多,因为他们应该受到 Tor 和隐藏服务的保护。但事实是,似乎托管 Silk Road 2 的人把他的名字写在了某个地方,执法机构将他带走并开始审问他。显然,他提到了另外 16 个人,他们随后被捕,他们的电脑也被没收。所以这次没有涉及到 Tor 的突破,尽管英国的一个执法机构实际上在推特上嘲讽 Tor 被破解了。这都是宣传。更多信息可以在 这个视频 中找到。
此外,查看爱德华·斯诺登泄露的 文件,仍然很清楚,最强大的攻击者似乎没有很好的方法来破解 Tor。我发现这非常令人鼓舞。
Tor 的日常使用
现在您已经对 Tor 有了更好的了解,现在让我们快速谈谈如何在日常工作中使用 Tor。正如您从上面的信息中可以猜到的,Tor 可以用于许多不同的目的。但是对于开发人员所做的工作,使用 Tor 最简单、最容易的第一件事就是以不同的方式测试您的系统。在许多情况下,很难在没有 cookie 和个性化的前提下看到系统的模样。Tor 使这变得非常容易。
您可以进行的另一种测试是,可以非常轻松地以来自许多不同国家的方式尝试系统。您可以控制 Tor 将使用的中继,从而控制您的流量将从哪个国家发出。
正如我之前提到的,将 SSH 置于 Tor 隐藏服务之后,是一种非常有用的方法,可以从地球上的任何地方访问您的系统,并且至少在您的连接上添加两层加密。但是,即使对于这样的设置,拥有良好的密码(或者只对 SSH 使用公钥登录)并使远程登录 root 帐户变得不可能也很重要。
Tails
如果您碰巧处于 Tor 对您绝对必要并且您预计会受到强大对手攻击的情况,那么您将处于一个棘手的位置。仅仅在您的普通机器上安装 Tor 不一定足够。因此,有一个名为 Tails 的项目,它是一个从 CD/DVD 或 USB 驱动器运行的 Linux 发行版。它预先配置为仅通过 Tor 发送网络流量,并且还具有许多其他隐私和匿名功能。它捆绑了几个不同的工具,可以让您轻松地私密通信、发送加密电子邮件以及安全地处理文档。
Tails 的有趣之处在于它完全是失忆的,它在您运行它之后不会在您的计算机上留下任何痕迹。它可以保存少量数据,但默认情况下不会留下任何痕迹。
Tails 不是您日常工作中需要的工具,但在某些情况下,像 Tails 这样的工具可能非常强大。每个记者都应该知道如何使用它,律师也应该知道如何使用它。它是一个强大的工具,最好在它变得必要之前做好使用它的准备。
结论
Tor 是一款出色的工具,可以做很多令人惊叹的事情。它是目前我们拥有的最强大的安全部署有用密码学的例子之一。但正如我们所见,没有工具是完美的。为了正确使用 Tor,最好了解它的工作原理。下一步,我建议您下载 Tor 并试用一下。匿名性的一个有趣之处在于它喜欢陪伴,即使您不需要匿名性,您也可以通过使用 Tor 来保护需要匿名性的人。有一天,您可能会继续运行自己的 Tor 中继,这将为每个人改善 Tor 网络。
重大修订
2015 年 6 月 15 日:首次发布