洋葱路由

17 Mar 2025 | 5 分钟阅读

洋葱路由是一种在计算机网络上匿名通信的方法。洋葱网络中的消息被封装在多层加密中,类似于洋葱的层。

为了让用户更安全地浏览网页,有大量预防措施和最佳实践。假设您向服务器发送HTTPS请求,有人拦截了它,但该人无法读取消息,因为它已加密。然而,您不满足于这种安全级别,并希望将其提升到更高层次,即您不希望任何嗅探您网络的人知道您正在联系哪个服务器以及您是否正在发出任何请求。这就是洋葱路由发挥作用的地方。

洋葱路由程序由研究匿名通信网络、设计、构建和分析匿名通信网络的研究组成。重点是针对低延迟互联网连接的实用解决方案,这些连接能够抵御来自外部(如互联网路由器)和内部(如黑客)(洋葱路由服务器本身)的流量分析、窃听和其他攻击。由于洋葱路由将谁与谁通信隐藏在传输介质之外,因此网络只知道正在发生通信。此外,在传输离开OR网络之前,对话内容对窃听者是隐藏的。

洋葱路由的程序是什么?

当您使用标准网页浏览器(如Chrome或Firefox)浏览互联网时,您通过向服务器发送简单的GET请求来请求网页,没有中间人。这只是客户端和服务器之间的单个连接,任何嗅探您网络的人都可以确定您的计算机正在联系哪个服务器。

  • 这在洋葱路由中有所不同。连接在洋葱路由中的不同节点之间保持,即连接从一个服务器跳到另一个服务器,当它到达此电路上的最后一个服务器时,它就是我们想要联系的服务器,它将处理我们的请求并为我们提供所需的网页,该网页使用相同的节点网络返回给我们。
  • 您可能想知道为什么它被称为洋葱路由器。这是因为我们发送的消息和我们收到的响应都使用不同的密钥进行加密,每次跳跃或服务器访问都需要不同的加密密钥。
  • 客户端可以访问所有密钥,但服务器只能访问特定于该服务器加密/解密的密钥。
  • 因为此过程将您的消息包装在多层加密中,这些加密必须在每个不同的跳跃处剥离,所以它被称为洋葱路由器。

洋葱路由概念的解释

现在想象您正在使用Tor(洋葱路由器)——一个独特的浏览器,使您能够使用洋葱路由器来浏览互联网。由于YouTube在中国被屏蔽,您想访问YouTube,但您也不希望您的政府发现您正在这样做,因此您选择使用Tor。为了获取YouTube主页,您的计算机必须与特定服务器联系,但它不是直接联系。为了防止任何人跟踪您与该服务器的对话,它在与该服务器联系之前通过三个节点/服务器/路由器(由世界各地的志愿者维护)进行。尽管真实的Tor网络可能包含数百个中间节点,但我在此示例中仅使用3个节点以保持简单。

Onion Routing
  • 客户端对消息(GET请求)进行三次加密,将其包装成三层,就像一个洋葱,必须一层一层地剥开。此客户端可以访问密钥1、2和3。
  • 然后,此三重加密消息被转发到节点1,即第一个服务器(输入节点)。
  • 节点1中只存储节点2的地址和密钥1。它使用密钥1解密消息,但意识到这不合逻辑,因为仍然有两层加密,因此它将消息发送到节点2。
  • 密钥2以及输入和退出节点的地址位于节点2上。然后它在使用密钥2解密消息但意识到它仍然被加密后,将其传输到退出节点。
  • 节点3(退出节点)发现对youtube.com的GET请求,它删除最后一层加密并将其转发到目标服务器。
  • 服务器处理请求后,会交付请求的网页。
  • 响应通过相同的节点反向传输,每个节点都使用其独特的密钥添加一层加密。
  • 最后,它以三重加密响应的形式交付给客户端,由于客户端可以访问所有密钥,因此可以解密该响应。

它如何提供匿名性?

想象一下,第一个连接(客户端 - 输入节点)处存在一个嗅探器,它所能破译的只是输入节点的地址和一个已经三重加密的不合逻辑的消息。因此,间谍或攻击者知道您正在使用Tor进行浏览。

与此类似,如果嗅探在退出节点开始,嗅探器所看到的只是一个服务器与另一个服务器通信,但它无法识别客户端或请求的来源。

然而,您现在可能会想象,如果有人在节点2处窃听,如果他们知道输入和退出的地址,他们将能够跟踪客户端和目标服务器。但这并不容易;这些节点中的每一个都在同时运行数百个连接,因此很难确定哪个连接通向正确的源和目标。节点2是我们电路中的中间节点,但它也可以是另一个不同连接上的电路的一部分,在该连接中它充当分发来自各种服务器的网站的退出节点或接收请求的输入节点。

洋葱路由的攻击面

洋葱路由中唯一的安全漏洞是,如果有人同时监视一个服务器,并通过分析在目标服务器截获的请求或响应中字符的长度和频率,将网络另一端的客户端发出的请求与目标处服务器发出的请求进行比较,并用它来在一瞬间匹配客户端发出的相同请求(请求和响应上的时间戳也可以用作替代品),即使这很具有挑战性,但并非不可能。然而,修复Tor中的这个缺陷实际上是不可能的。