MENU

The Anankke's Guide to Tor - Part One: How Tor Works

洋葱路由网络详解

Don't Panic!

Tor 是可以帮助你网上冲浪时保持申必的免费开源软件系统。当你使用 Tor 浏览器冲浪时,你的流量会在到达最终目的地之前通过服务器网络随机定向,以保护你的位置安全和身份申必。(废话)

Tor 是「洋葱路由器 (The Onion Router) 」的缩写,形容 Tor 通过将数据包装在多个加密层中(如洋葱一般)来保护其数据的方式。

Tor 本质是匿名工具,代理非其所长,不加可插拔传输的直球 Tor 连接流量特征明显。

但是 Tor 是如何在让你匿名冲浪的呢?在本系列废话中,我们将深入研究 Tor 网络使用的结构和协议,以便第一手了解 Tor 的工作方式。

Tor 101

在一个非常抽象的层次上,Tor 是通过一系列服务器(称为节点或中继 (Relay) )进行路由转发流量的。

入口节点中间节点出口节点目标服务器

目前 Tor 全网大约有 6300+ 个中继和 1000+ 网桥通过 Tor 网络路由流量。这些中继遍布世界各地,完全由愿意为 Tor 网络贡献带宽的志愿者,非营利机构,科研院校和图书馆和开蜜罐的 FBI、国安局等运行。中继越多越好!这是有道理的,因为每个中继只能提供一定的带宽。Tor 的节点越多,网络的性能、冗余性和安全性就越好。

Types of Relays

默认情况下,Tor 客户端通过 3 个中继建立连接,每个中继都有特定的作用。RT

用户入口中继中间中继出口中继目标服务

中继种类有:

  • 入口中继 (Guard Relay) —— Tor 链路的第一个中继。当使用网桥时,网桥会取代入口中继。稳定高带宽的一般通过中继经过一段时间的使用会被挂上入口中继 Flag。
  • 中间中继 (Middle Relay) —— 中间中继就像名字说的一样是将流量从入口中继传输到出口中继的,这样可以防止入口中继和出口中继互通有无。
  • 出口中继 (Exit Relay) —— 出口中继是 Tor 网络边缘的出口点,将流量发送到客户端预期的最终目的地。所谓蜜罐也都是在出口中继上的。出口中继的流量如果没过 TLS,那么从出口到目标服务的连接就是明文流量,会暴露非 Onion 地址的 DNS 查询记录(因为 DNS 查询也是出口处理的)。
  • 网桥 (Bridge) —— 不出现在公共 Directory 里的入口中继,可部署可插拔传输插件,是非公开的节点们。

要注意除了配置了现代可插拔传输插件的网桥,其他的节点是必墙的,方式是很 Old School 的路由黑洞。(立竿见影的墙 IP 手段)

当用户通过 Tor 客户端(例如 Tor 浏览器)连接到互联网时,加密后的流量会从用户出发,先经过入口中继/网桥进入 Tor 网路,随后发送到中间中继,最后从出口中继发送明文到达访问目标。由于每个路径都是随机生成的,并且没有保留任何一个中继的记录,因此很难被追踪。

Onions? Onions!

现在,我们通过一系列的申必中转冲浪了,那如何知道用来冲浪的中继不视奸我们在干嘛呢? 我们不需要知道!

Tor 的设计是尽量不信任中继。 它通过多层加密实现这点。

  1. 客户端以仅出口中继可以解密原始数据的方式加密原始数据
  2. 然后,以仅中间中继可以解密的方式再次加密此加密数据。
  3. 最后,再次加密已加密数据,使得只有入口中继/网桥才能解密。
image/svg+xml入口中继加密中间中继加密出口中继加密原始数据

将原始数据包装在加密层中就像洋葱被包装在一层一层的洋葱皮里。这样,每个中继仅具有它需要知道的信息 —— 从何处获取加密数据,以及从何处将数据发送到下一个中继。这种方式加密数据对双方都有利:客户端流量不会受到影响,中继也不必为看不见的数据承担责任。

出口中继可以看到客户端发送的原始数据,因为它们必须将数据传递到目的地,如果用 HTTP,FTP 或其他明文协议冲浪,则出口中继可以看到你在冲什么浪或者在冲

Next Steps

进入 Tor 的旅程才刚刚开始。在这个系列后面的废话中,我们将研究 Tor 网络的组织方式,讨论入口中继和网桥之间的差异,分别讨论可插拔传输组件的实际作用,深入研究加密的工作原理,分析首次启动Tor客户端的网络交互等等。

我们下期再见。(咕咕)

下期来了:The Anankke's Guide to Tor - Part Two: Build Your Relay