一文讀懂暗网与洋葱路由
暗网一词,素来给人感觉恐惧且神秘,尤其是在近年恐惧小说作家及媒体的大肆渲染下,使“暗网”一词增添了不少邪恶的色彩元素。各种犯罪行为,都市传说,人类内心最阴暗的部分,传说都能够暗网裡找得到,甚至有人说暗网中所提供的网站佔全部网站的 96%。
那麽,到底什麽才是暗网?
0x00 暗网
暗网,是指相对于一般表层网络之下,需要使用特殊的配置方式或协议才能进入的“深层”网络。在暗网中因为能够持续保持匿名地畅游网络,网页不能被搜索引擎轻易找出等特性以及进入暗网必须要有一定的“门槛”,使得暗网成为犯罪分子以及技术爱好者经常出没的地方。
0x01 历史
那麽,暗网是怎麽而来的呢?
1990年,美国海军研究试验室(United States Naval Research Laboratory)国防部高级研究项目署(DARPA)进行了一个军事研究计画「洋葱计画」,目的是希望能够建立出一个不能被反追踪的点对点网络,也就是洋葱网络,现时暗网的技术原型。
那麽,既然是出处军方用途的研究项目,为什麽会出现在大众的视野上,使得今天的你和我都有机会认识暗网呢?
2004年,暗网始祖「洋葱计画」的主持人 Roger Dingledine 在一场演讲中提及到,若要令暗网的使用者达到“真正匿名”的目标,最好的方法就是公开给公众使用。此举其实是为了保护政府的情报人员,不然当网页管理员发现网页的有一个来自洋葱路由的特殊来访者时就会惊觉:
「FBI又來了,嘻嘻。」
0x02 Tor 洋葱网络
洋葱网络 (以下简称为 Tor) 这个名字也是十分有意思的,“洋葱”一词形象地描述了资料在其网络中传输过程的封装,而在接下来的这个章节中,我们将简单介绍一下 Tor的技术实现,以及 Tor 是怎麽使你“隐藏”在大众之中的。
Tor 是一个由全球志愿者共同搭建的网络,这些志愿者当中不乏技术爱好者,研究人员,以及在 Tor 中设下层层陷阱的政府情报人员。当我们开始透过 Tor 的浏览器连接到 Tor 网络的时候,等于是连接到这个由各地志愿者共同提供的一个巨大的网络,并透过不停地转换网络中志愿者的中继节点,达到难以追踪的效果。
0x03 技术原理
连接 Tor 的第一步,我们会先连接到 Tor 网络的服务器,随后会得到一份所有志愿节点的资讯列表,而透过这份列表,可以让我们得知各节点的状况。
得知各节点的资讯后,Tor 透过随机的方式与 Tor 网络中的节点进行连接,并透过中继点连接其他中继点,最后再由出口的中继点访问你的目的网站。
注意在整个过程中,每一个中继点并不会得知整条路径的讯息,他们只会收到从上一个节点所给的数据,而且这条路径中每经过一段短时间就会随机的转换,以确保路径不被有心人进行关联。
说到这裡,也许你会有疑问,这怎麽能确保中继节点不能透过接收到的数据分析出整条传送路径呢?
这就牵涉到我们伟大的密码学了。
0x04 对称加密与非对称加密
接下来讲述的东西就要开始进入密码学的领域了,可是别担心,这只是一些前置知识,我们会一切从简!
我们先来了解一下对称加密的原理:
假如我今天要传送一个文件给 Alice,可是 Eve 有机会在路上拦截,那麽最好的方法是我和 Alice 事先共享同一条密钥,然后在每次的传输过程中我先对文件进行加密,当文件传送到 Alice 手中的时候,Alice 再进行解密,完成整个流程,而这种加密方法,我们称之为对称加密方法。
而非对称式加密又是什麽呢?
非对称加密,指的是相比起对称加密而言,加密与解密的过程并非对称的,即加密和解密可能会使用不同的金钥。在上图中,我们可以看到有两把金钥,分别为公钥及私钥,透过公钥加密的文件,可以被另外一把完全不同的私钥所解密,而被私钥加密过的文件,也可以透过公钥进行解密,这其中公钥和私钥的存在是成对的,我们称这为一对公私钥对。通常接收者的公钥会公开到网络上供大家使用,若我们需要向接收者传送讯息,会先使用接收者公开的公钥进行加密,而接收者收到加密的讯息后,再使用自己的私钥进行解密。
既然前置知识介绍完,那接下来我们就来说说在 Tor 网络中,是如何透过非对称式加密,使每个中继节点间能够做到互相连接但又不知道整条 Tor 传输路径吧!
0x05 Tor 中的密码学
终于又回到了 Tor 网络,正如我们之前也提及过,在 Tor 网络中的每一段讯息,都像像洋葱似一片片地被包裹着,洋葱的核心部分当然就是我们最关键的讯息,而外层这些“洋葱瓣”的功用,就是用来保护我们的要传送的讯息。
很複杂吗?不一点也不複杂,我们直接来看例子吧!
假设我们现在正在使用 Tor 网络来访问右上角的服务器,这裡用回我们上述的知识,还记得连接 Tor 网络的第一步吗?先拿到所有 Tor 中继节点(即 ABCDEFGHI)的资讯清单以及他们的公钥,然后随机选择几个节点组成传输路径。
当我们选取好中继节点(A,D,G)之后,接着就到非对称加密派上用场的时候了!每个节点都拥有自己的公私钥对,公钥是在网络上的公开的,而私钥是只有节点自己才会知道。假设现在我想直接加密发送我的讯息给右上角的服务器,我只需取得他的公钥(绿色的钥匙)进行加密,当讯息到达服务器时,他再用自己的私钥解密,即可完成整个加解密传送流程,但,这样路径上的所有人不就都知道了你要传送给右上方的服务器吗?Tor 网络当然不会让这种事情发生,接下来让我们看一下 Tor 的传送流程。
假设现在我们要向 1.1.1.1 发送搜索 Toyota 的讯息,我们需要先取得 A,D,G 以及 1.1.1.1 的公钥,随后依照路径使用每一个中继节点的公钥逆序进行加密,最后组成像洋葱一样的层层加密结构。
最后从自己那边发出的讯息就变成了左下方的“洋葱”一样,当讯息经过第一个节点 A,A 节点会使用自己的密钥进行解密(剥洋葱),解密后得到的讯息是 “传送到 D 节点”,随后即把剥了一层后的洋葱送到节点 D 后,D 节点再使用自己的密钥进行解密,一直到最后一个节点 1.1.1.1 用自己的密钥解开洋葱的最后一层,才会得到真正讯息(洋葱核心),这样可以把每个节点收到的资讯隔离,大大加强 Tor 网络中的私隐性以及安全性。
0x06 总结
本文介绍了暗网的基本相关知识,从历史、技术方面出发扼要地探讨了 Tor 网络以及相关的密码学知识(对称加密与非对称加密等),最后使用简单的实用例子讲述 Tor 的加解密流程。
本文首發於 laochanlam 个人博客,转载请注明出处。
个人主页 - blog.laochanlam.me