2016-10-08 11:42:39
来源:安全客 作者:cruel_blue_
阅读:2360次
点赞(0)
收藏
1. Tor的介绍
Tor是一种匿名工具, 在浏览互联网时,它可以为那些不想暴露身份的人提供便利。这些年来,它的发展势头相当不错,一些底层网络的安全性、稳定性和速度也取决于它。但Tor到底是怎样工作的呢?在这个系列文章中,我们将深入探究Tor网络使用的结构和协议,从而得到Tor的运作方式的第一手资料。
2.Tor的一些简要历史
洋葱路由(Onion Routing)的概念于1995年被首次提出,它最初是由美国海军研究办公室(ONR)资助的, 1997年又得到了美国国防部高级研究计划局的帮助。自那时以后, Tor项目有了一系列不同的赞助商。
现在的Tor软件最初于2003年10月开源,它是洋葱路由的第三代软件。洋葱路由的概念是,我们可以将流量包裹在加密层中(像洋葱那样),从而尽可能好地在将数据内容在发送方和接收方之间匿名保护起来。
3.Tor 101
现在,我们已经知道了一点Tor的历史,让我们接着来讨论它是如何工作的。通过一系列的中间电脑或中继器,Tor可以在你的电脑和目的地之间建立一种跳跃的连接(如google.com)。
目前,大约有6000个中继器路由流量经过Tor网络。这些中继器位于世界各地,依靠一群愿意放弃一些带宽的志愿者来运作。请注意,大多数中继器没有特别用于运行的硬件或软件。他们只会配置上Tor软件,并将其作为一个中继器来运行。
至于Tor网络的速度和匿名性——中继器越多,效果会越好。这是有道理的,因为每个中继器只能提供有限的带宽。另外,如果有更多的中继器可供选择,用户的足迹将会更难跟踪。
4.中继器的类型
在默认的情况下,Tor通过3个中继器进行跳转连接。这几个中继器有各自特定的作用(我们将在后面详细讲它们):
Entry/guard中继器-这是Tor网络的入口点。这些中继器在存在了一段时间后,如果被证明是稳定的,并具有高带宽,就会被选来作为guard中继器。
Middle中继器-middle中继器事实上是中间节点,用于将流量从guard中继器传输到exit中继器。这可以避免guard中继器和exit中继器探查到彼此的位置。
Exit中继器——这些中继器是位于Tor网络边缘的出口点。这些中继器会将流量发送到客户指定的最终目的地。
一般来说,在任何VPS或共享服务器(比如DigitalOcean或EC2)上运行一个guard中继器或middle中继器都是安全的,因为所有的服务器运营商都将看到这是无害的加密流量(后面会详细讨论)。
5.为什么说像洋葱呢?
下面的问题是,我们如何判断中继器是否可信任呢?我们如何确保中继器不会跟踪我们连接对象、获取我们发送的数据信息呢?回答是:我们根本不需要考虑这些问题。
Tor的设计目的就是尽可能地不去信任中继器。它通过使用加密做到了这一点。
那么为什么说这种结构形如洋葱呢?要回答这个问题,我们需要看看当一个客户端通过Tor网络进行连接时,加密是如何运作的。
客户端以这样一种方式加密原始数据,只有exit中继器可以解密。
这个加密的数据随后会以这样一种方式再次加密,只有middle中继器可以解密。
最后,这个加密的数据再以这样一种方式加密,只有guard中继器可以解密。
这意味着我们将原始数据隐藏在多个加密层中,就像一个洋葱那样被层层包裹起来。
这样的话,每个中继器只会获得它所需要的信息——它从哪里获得了加密的数据,下面又需要将数据发送给谁。这样加密数据对双方都有利:客户端流量不会被盗用,中继器也不需要为它们看不到的信息负责。
注意:需要记住的是,exit中继器可以看到客户端发送的原始数据,这是因为他们需要将数据传递到目的地。这意味着,如果凭证通过了HTTP、FTP或其他明文协议,exit中继器可以嗅探出流量!
6.中继器的问题
当Tor客户端启动时,它需要一种方法来获取所有可用的中继器的列表,列表里包括guard中继器、middle中继器和exit中继器。这个包含所有中继器的列表并不是一个秘密,虽然公开这个列表是必要的,但这也成为了一个问题。
为了证明这个问题的威胁性,让我们来扮演攻击者的角色,问自己:一个Oppressive Government(OG)会怎么做?通过思考真正的OG会做什么,我们就能明白为什么Tor会以这种方式构建。
真正的OD会怎么做?因为审查制度是一件相当麻烦的事情,而Tor最擅长的就是绕过它,所以OG通常会阻止用户使用Tor。有两种方法可以阻止Tor的使用:
阻止用户从Tor中出来
阻止用户进入Tor
第一种情况是可能的,这取决于设备(路由器等)和网站所有者的判断能力。站点所有者需要下载Tor的出口节点的列表,并阻塞这些节点的所有流量。
然而,第二种情况更加糟糕。阻止Tor用户传入后,用户会被禁止进入某一个特定的网站,这样一来, 对于最需要Tor一些用户来说, Tor实际上就已经失效了。只需使用中继器, OG就可以下载guard中继器的列表,并阻止任何流向它们的流量。
值得庆幸的是,Tor项目考虑到了这种情况,并想出了一个巧妙的解决方案——网桥。
7.网桥的介绍
网桥是一个聪明的解决方案。究其核心,网桥是未被公开的输入中继器。在受审查网络背后的用户可以使用网桥来访问Tor网络。
那么如果网桥未被公开,用户如何知道他们在哪里呢?事实上,有一个由Tor项目维护着的网桥列表。
这个列表没有公开。但是Tor项目还创造了一种方式,可以让用户得到一个小的网桥列表,这样他们就可以连接到其他的Tor网络了。这个项目叫做BridgeDB,每次会给用户提供一些网桥的信息。
一次只给用户提供小部分网桥的信息,可以有效防止OG阻塞所有进入Tor网络的入口节点。
8.是否有人能找到每一个网桥?
包含所有网桥的列表仍是一个严守的秘密。如果一个OG能够获得这个列表,就能完全阻止用户使用Tor。Tor项目所做的研究正在探寻一种可能的方法,探究人们是否可以发现所有的网桥。
我想简单地谈谈名单上的# 2和# 6,因为研究人员在它们中已经取得了一些重要的成功。在第一个场景中,研究人员使用名为ZMap的快速端口扫描器扫描了整个IPv4空间,目的寻找Tor网桥,并且最终“能够确定79 %- 86%的网桥”。
第二个场景是对Tor的一项重要挑战。所有这一切都归结到一个简单的概念——用户不能被信任。为了保持Tor网络的匿名和锁定,Tor网络以故意不信任中继器操作者的方式被设计出来。稍后我们将会看到更多的例子。
9.维护中继器、网桥列表
在前面的内容中,我们提到了Tor中继器以及Tor网桥的主列表。在谈论这个列表是如何进行维护的之前,我们需要讨论是谁在维护着它。可信任的志愿者们运行着大约10个主要的Tor节点,节点的信息会被写死到每个Tor客户端。这些节点扮演着一个非常特殊的角色——负责维持整个Tor网络的运行,它们被称为DA (directory authorities)。
DA分散在世界各地,负责分发包含所有已知Tor中继器的主列表。它们是把关人,负责选出有效的中继器。
为什么是10个节点呢 ?我们知道,如果在选举中,总票数是偶数不是一件好事。我在前面提到过,中继器和网桥各自有一个主列表,因此,9个DA维持着中继器的主列表,剩下的一个DA(Tonga)则维持网桥的主列表。
下面就是这些DA:
10.得到共识文档
那么, DA是如何维持Tor网络的呢?
所有Tor中继器的信息都保存在一个名为共识(consensus)的动态文档中。DA维护着这个文档,并且每小时根据投票数对其进行更新。这里有一个关于更新过程的基本流程。
每个DA编写一份包含所有已知中继器的列表
然后每个DA计算出所需的其他数据,如带宽权重等
DA将这些数据作为“status-vote” 提交给其他部门
下面,每个DA将去其他部门处获取它们之前遗漏的信息
它们将所有的参数、传递信息相结合,然后每个DA进行签名
这个签名随后会被发布给其他DA
在大部分的DA都对数据达成一致意见时,确认新的共识文档
随后每个DA都会发布新的共识文档
你会注意到,我说的是每个DA都会发布这个共识文档。这是通过HTTP完成的,因此任何人都可以在http://directory_authority/tor/status-vote/current/consensus/上下载最新的副本。
我们已经能够看到共识文档了,但这意味着什么呢?
11.解析共识文档
只是阅读规范的话,很难马上理解共识文档。观察它的结构有助于我们直观地了解它。
为了实现这一目的,我做了一个corkami风格的海报。这是对Tor共识文档剪辑版的解析:
12.下面的步骤
共识文档是一个很强大的文档。它通过DA来维持中继器的主列表,可以为客户提供Tor中继器的添加和删除信息。
现在,你会发现我们还没有真正剖析过exit中继器。这些中继器在Tor网络中处于非常重要的地位,值得讨论。在下一篇文章中,我们将讨论exit中继器是如何工作的,请期待后续的更新。
本文转载自 安全客
原文链接:http://jordan-wright.com/blog/2015/02/28/how-tor-works-part-one