洋葱路由催生了暗网的产生

1995年,美国海军研究实验室的科学家开始开发一套匿名系统,可以避免人们在互联网上的行迹被追 踪到。由于在该系统中,数据被层层密码保护,这个技术被称为叫作“洋葱路由”。

该技术最初由美国海军研究办公室和国防部高级研究项目署(DARPA)资助。早期的开发由Paul Syverson、 Michael Reed 和 David Goldschla领导。这三个人都是供职美国军方的数学家和计算机系统的研究人员。

 
“洋葱路由”的最初目的并不是保护隐私,或者至少不是保护大部分人认为的那种“隐私”,它的目的是让情报人员的网上活动不被敌对国监控。在美国海军研究实验室1997 年的一篇论文中指出,“随着军事级别的通信设备日益依靠公共通讯网络,在使用公共通信基础设施时如何避免流量分析变得非常重要。此外,通信的匿名性也非常必要。”

该项目初期进展缓慢,到 2002 年,来自海军研究机构的Paul Syverson 还留在项目里,两个MIT的毕业生 Roger Dingledine 和 Nick Mathewson 加入了项目。 这两个人不是海军研究实验室的正式雇员。而是作为 DARPA和海军研究实验室的高可靠性计算系统的合同工方式加入的。在后来的几年里,这三个人开发了一个新版的洋葱路由,也就是后来的 Tor(The Onion Router)。

对于 Tor 是如何从军方走向民间的,有两种说法。一是研究人员也意识到,不能仅仅让美国政府自己使 用这个系统,那等于向别人表明身份,必须让其他人也能够使用这个系统,才能够实现真正意义的隐藏。 因此,Tor面向大众推出了普通用户版本,并且允许 每个人使用Tor的节点,把政府情报人员的流量与志愿者的流量混在一起,以达到隐藏的目的。二是由于美国海军研究实验室陷入财政紧缺的状态,主动终止了对 Tor 的资金支持并将其开源,后由一个名为电子前哨基金会(EFF)的组织接管了 Tor 的后续研发和支持。

 

无论出于何种原因,基于Tor的暗网从此便建立了起来,并日趋庞大。由于Tor匿名的特点,很快得到了大量的青睐,其中不乏异见人士、记者、学生、公司职员等,人们可以在暗网上发表自己的观点而无需担心被报复。也正是因为Tor匿名的特点,暗网很快成为毒品、枪支和非法色情交易的温床。暗网中逐渐出现了很多交易网站,贩卖枪支、毒品、违禁药品、被盗的身份、色情物品,雇佣黑客,甚至雇佣杀手、贩卖人口、在线观看直播杀人等形形色色的非法交易,如 Agora、Silk Road、Evolution 等。有些交易网站采用比特币交易, 因此不受传统金融渠道的控制,并且像我们常用的交易平台一样,买卖双方还能进行评价,甚至提供售后 服务。现在,Tor中继节点已经遍布全球,每年有近5000万人次下载Tor,以至于连Tor的发明者都承认“自己也无力摧毁 Tor”了。

Tor 是如何实现匿名的呢?

Tor 官网上简单介绍了Tor的原理。Tor是一个三重代理,Tor 客户端先与目录服务器通信获得全球活动中继节点信息,然后再随机选择三个节点组成电路 (circuit),用户流量跳跃这三个节点(hop)之后最终到达目标网站服务器, 这样Tor网络中就有两种实体,分别是用户和中继节点。当用户需要匿名访问网络时,首先访问目录服务器,得到全球的 Tor中继节点的信息,包括IP地址、公钥、出口策略、带宽和在线时间等。然后再随机选 择三个节点组成电路(circuit),分别为入口节点、中间节点和出口节点。在构建电路时,用户和每一个中继节点协商共享的会话密钥,之后将层层加密的信息发送到电路中,每个中继节点经过一次解密后,将信息发给下一个节点。这样,中继节点中只有入口节 点知道通信发起者的身份。中间节点知道通道中入口节点和出口节点的身份,但是不知道匿名通信发起者和接收者的身份。出口节点作为网关负责Tor网络和外部Internet网络的应用层连接,并充当加密的Tor网络传输流量和非加密的Internet传输流量之间的中继,知道匿名通信接收者的身份。在这种设计下,电路中没有任何一个节点知道完整的信息,因此实现了匿名通信。

Tor 的工作原理

具体来说,当用户启动 Tor 之后,Tor 客户端会在本机上运行一个 Onion Proxy(OP),之后开始和存有全球中继节点信息的目录服务器取得联系,获取全球的中继节点信息。OP 获取到中继节点信息后,OP会随机选取三个节点,组成电路,并分别协商会话密钥。 在这个过程中,每层会话都是被加密一次的信息,一直到被三重加密,只有出口节点能看到明文。当电路被确认建立后,才开始发送真正的用户访问信息。

此外,为了加强安全性,Tor 每隔十分钟就会再重新选择三个节点以规避流量分析和蜜罐节点。

仔细分析这一过程,会发现一个问题,由于出口节点能够获得明文信息,因此这个过程中只保障了用户的访问不能被攻击者完全地获知。也就是说,只保障了用户访问表层网络时的匿名性。而对于想要隐藏自己 IP 的 暗网网站来说,这个方法是不行的,因为出口节点会获知用户的访问请求和服务器的 IP 地址。那么,如果用户匿名访问暗网网站时,情况又是怎样的呢?

与表层网络中可以通过 URL 和域名解析服务器获得目标网站的 IP 地址不同,暗网中的服务器 IP 地址是不能够暴露的。暗网中有一个类似于DNS功能的分布式散列表,其中存储着一些站点的相关信息。在暗网中,想要建立一个网站,首先要随机选择几个介绍点(introduction point),并与之建立电路,方式与前文所述基本一致,因此介绍点并不知道服务器的真实IP。然后服务器组合起一个描述符,里面包括了公钥和各个介绍点的摘要,然后用私钥签名,最后把描述符上传到前面提到的分布式散列表中,网站就建立好 了。网站的域名就是一个从公钥中派生出的 16 位字符,通常采用顶级域名.onion。

 

当有人需要访问暗网站点时,在设置好 Tor 的浏览器中输入网址,OP 就通过电路与分布式散列表建立连接,开始查询目标网址的描述符。之后会随机选 择一个节点作为汇合点(rendezvous point),并生成一个随机的一次性 cookie。OP 用站点的公钥加密 cookie 和汇合点 IP,再把密文发送给介绍点,介绍点接到数据之后就通过 Tor 电路回传给服务器。服务器用私钥解密信息,获得汇合点 IP 和cookie,之后通过 Tor 电路与汇合点建立连接,并回传 cookie。用户收到 cookie 之后确认已经和站点建立了连接,之后开始正式访问该站点。最终在用户和暗网服务器之前有六个中继节点,分别是用户的入口节点、中间节点、汇合点、服务器的出口节点、中间节点、入口节点,并且其上的通信全都是 TLS 加密的,这样就同时保障了用户的匿 名访问和站点服务器 IP 的隐藏。

Tor 真的安全吗?

Tor 的研究人员很早就意识到,更多的用户将带来更好的匿名能力,因此在 Tor 设计之初,就将易用性和可部署性作为重要目标。他们认为,Tor 不应该需要用户修改任何的应用,不应该需要用户进行复杂的系统配置,不应该要求用户修改操作系统。最终, Tor 也确实成为一个多平台的、配置简单的软件,因此Tor 的使用并不复杂。Tor 网络可以由The Tor Project 提供的 Tor 软件访问,Tor 是软件的核心,Vidalia 是配合 Tor 使用的可视化软件,可以更方便地使用Tor。

但是 Tor 真的绝对安全么?这可能是每一个使用 Tor 的用户关心的问题。首先,Tor 是开源的,任何人都可以去验证 Tor 中是否存在着后门,而至今没有后门被发现的报道,但这只能说明 Tor 并没有“故意的 不安全”。

在 2015 年的 USENIX 安全研讨会上,麻省理工学院和卡塔尔计算研究所的研究人员表示,通过分析志愿人员在独立电脑上的 Tor 网络上进行的加密数据传输,攻击者可以推断出隐藏服务器的位置,或者通过信息源找到指定的 Tor 用户信息。在一个电路的建立过程中,Tor 网络上的计算机们将大量的来回地传递数据。 研究人员发现,通过一个 guard可以很简单地找到在各个方向上传递的数据包流量。利用机器学习算法,就能以 99% 的准确率分辨出这是一个普通的网页环路,introduction-point circuit 还是一个 rendezvous-point。此外,通过使用 Tor 的电脑连接到一系列不同的隐藏服务,类似于流量分析模式可以以 88% 的准确率确定这些服务。 这意味着一个幸运的攻击者进入到了隐藏服务的 guard 的位置时,它将有 88% 的把握,确定它就是该隐藏服务的主机。而如果一个 Tor 回路中使用的是普通的浏览 器,这一精度甚至可以提升到 99% 以上。

 

该研究结果也印证了 EFF(电子前哨基金)的 观点,在密码学层面上,是无法被破译的,最可能的攻击方式是利用浏览器漏洞单边信道攻击、用户错误配置、流量相关性攻击。同时 EFF 也承认,如果有人能够同时获得通信双方的数据,通过统计的方法,是有办法确认你的流量的。此外,Tor 在设计时的威胁模型是针对单点不可靠情况的,而当某一组织掌握足够多的节点时,Tor 的匿名效果就会大打折扣。因此 2011 年,在一个有关 Tor 的安全性的讨论上,Tor 的开发人员 Mike Perry 承认,Tor 在对付强大的有组织、有能力监控大量互联网流量的攻击者(也就是政府) 方面并不那么有效。

即便是在理论层面,Tor能够保护的也仅仅是用户匿名的安全,而非用户数据或信息的安全。出口节点就是一个重大的安全隐患。由于用户的数据包需要 通过出口节点传送到网络上,而在 Tor 网络中,出口节点是不能被用户控制的,因此在这些节点上,用户的流量很容易在不知情的情况下被窥探。瑞典的安全研究人员 Chloe 通过蜜罐网站测试了 Tor 出口节点,证实了信息在出口节点确实被窃取了。

所以,并不是在暗网中就可以做到绝对的隐 藏身份,前段时间臭名昭著的“丝绸之路”创始人被抓获就是一个最好的例证。

此外,一方面是技术上的问题使得 Tor 的安 全性受到质疑,而另一方面,Tor来源于军方项目的身份也使得一部分人相信 Tor 的匿名完全是一个假象。

据国外媒体报道,Tor项目被美国军方转让后, 还一直通过各种相关机构的资助和政府合同受到官方的支持,其中五角大楼的资金资助的项目描述里这样描述 Tor的,“这是一个在海军命令、控制、通信、计算机、情报、监控方面的基础和应用研究项目。”

 

2013年,华盛顿邮报报道了 NSA 掌握了破解匿名Tor网络的若干种办法,其中提到“根据一份名为‘Tor’的研究论文,从2006年,NSA就在研究如何能够在大规模网络上破解匿名流量的不同方法。例如,其中的一种方法可以通过他们的计算机利用 Tor 网络的速度变化来分析辨别用户。从斯诺登解密的 NSA文件来看,NSA 似乎已经掌握了若干方法,‘比较有把握’”。

事实上,美国的执法机构就曾经抓获过多起 利用 Tor 网络的网络犯罪分子。其中最典型的例子要数 2013 年年底哈佛大学学生 Eldo Kim 用 Tor 网络发布炸弹威胁信息被捕的例子。也许是受斯诺登的影响,Kim 高估了 Tor 的“隐身”能力, 通过 Tor 发布了炸弹袭击的假警报,试图以此拖延期末考试的日期,但不幸的是 FBI 的探员很快就找到了 Kim 同学。此外,在 2013 年,美国的执法机构还捣毁了托管在 Tor 网络上的儿童色情站 Free Hosting和网络黑市Silk Road,并在 2014年捣毁了 Silk Road 2.0。这些事件本身也说明 Tor 并不是绝对的安全。一般这世界也不存在绝对安全的系统!

Tor安全防范措施

1、确保正确的配置了 Tor。

正确的配置 Tor 是安全使用暗网的基础。

2、不定期的更新。

Tor 和其它软件一样,会出现一些小的 bug,所以需要定期更新来解决这个问题。

3、使用HTTPS。

增强终端到终端的加密协议,其中最有 用的一般是HTTPS。Tor 网站默认支持 HTTPS 的功能。 在你发送任何敏感信息之前检查一下 HTTPS 按钮是否为绿色。

3、使用匿名服务。

您也可以使用不会记录活动的网站和服 务提高你的安全。例如,使用像Duck DuckGo 浏览器, 它有一个服务功能就是不会保留任何关于你信息。你也可以结合 Cryptocat 加密聊天功能进行私人会话。

4、避免传输个人信息。

避免个人信息泄漏的最安全的方式就是在使用的时候就避免发送信息。

5、避免登录。

和上一条同理,尽量避免使用需要你登录的 网站。

需要注意的问题

1、不要将其用于 BT 下载等 P2P 应用。抛开合法性不谈, Tor 的转发节点都是网络上的志愿者们使用自己的服务 器和网络带宽建立起来的,如果通过 Tor 网络来进行巨 额数据的传输,会影响服务性能。

2、不要利用 Tor 发送垃圾邮件。

Tor 的加密功能可以帮助实现匿名电子邮件的发送,请不要使用这一功能发送垃圾邮件,给别人造成麻烦。

3、不要用 Tor 进行恶意攻击。

由于加密和层层转发的特性, 通过 Tor 进行攻击很难被发现,为了 Tor 可以一直提供服务,请不要将其用于这类违法活动。当然 Tor 在设计时也考虑到这些问题,具备上述特性的网络活动很可 能会在Tor的内部环路中被过滤掉,不会发送到外网去。

4、远离黑暗网络。

网络:Tor的更多相关文章

  1. TCP协议漏洞影响大量Linux设备

    导读 本周三在得州奥斯丁举行的 USENIX 安全研讨会上,加州大学河滨分校研究生 Yue Cao 将报告一个严重的TCP协议边信道漏洞(PDF),该漏洞允许攻击者远程劫持任意两主机之间的会话.该漏洞 ...

  2. Tor网络突破IP封锁,爬虫好搭档【入门手册】

    本文地址:http://www.cnblogs.com/likeli/p/5719230.html 前言 本文不提供任何搭梯子之类的内容,我在这里仅仅讨论网络爬虫遇到的IP封杀,然后使用Tor如何对抗 ...

  3. MIT研发的新型匿名网络Riffle,下一个Tor

    现在的隐私问题是一个网络热词,如果你担心你上网的隐私会泄露,最有效的解决办法就是使用Tor.这款免费的匿名通信软件,能够让人们在与其他人通信时隐藏自己真实的信息. 虽然Tor是一个很好的匿名网络系统, ...

  4. 【Window】Tor(洋葱头路由)+Privoxy 网络实践(附带Java实例代码)

    1.背景 平时我们需要访问onion后缀的网站,需要通过Tor(The Onion Router,洋葱路由器).一般来说安装Tor Broswer就可以满足需要.但是项目我要做的是通过程序来获取oni ...

  5. ------ Tor(洋葱路由器)匿名网络源码分析——主程序入口点(一)------

    --------------------------------------------------------<概览> tor 的源码包可以从官网下载,可能需要预先利用其它FQ软件才能访 ...

  6. 使用tor网络

    在www.torproject.org/projects/torbrowser.html.en上找到合适的版本下载 下载好tor浏览器之后,解压双击Tor Browser,出现这个错误 这是因为kal ...

  7. Tor网络介绍

    Tor网络介绍 1.Tor的全称是“The Onion Router”,“An anonymous Internet communicaton system:通过Tor访问一个地址时,所经过的节点在T ...

  8. ------ 开源软件 Tor(洋葱路由器,构建匿名网络的方案之一)源码分析——主程序入口点(二)------

    ---------------------------------------------------------- 第二部分仅考察下图所示的代码片段--configure_backtrace_han ...

  9. Neutron 理解 (1): Neutron 所实现的虚拟化网络 [How Netruon Virtualizes Network]

    学习 Neutron 系列文章: (1)Neutron 所实现的虚拟化网络 (2)Neutron OpenvSwitch + VLAN 虚拟网络 (3)Neutron OpenvSwitch + GR ...

随机推荐

  1. fsdfd

    static int kWeiOfVal(int val, int k) { int n = 1; int temVal = val; int result; while (1) { temVal = ...

  2. 一个html标签到底包含了多少信息(1)

    先来看一段代码: var dom = document.querySelector('body'); for(var i in dom){ console.log(i,dom[i]) } 可以看到很多 ...

  3. IDEA中 mybatis-config、applicationContext.xml、log4j.properties、SpringMVC等文件没有图标标识符号,不是一个xml文件

    1. 举例说明 mybatis-config.xml文件不显示图标,识别不出该xml文件 2. 解决办法 1)先点击 File -> Settings-,然后贴入下面代码 (2) 具体操作如下图 ...

  4. redis从0-1学习记录(完结)

    1. NoSQL(not only sql):不仅仅是数据库,非关系型数据库,关系型数据库是以表格的行列进行存储的,而非关系型数据库是以键值对进行存储,不需要固定的格式.非关系型数据库的特点,方便扩展 ...

  5. crm多对多

    多对多要使用service.Associate传入两表的id和中间表的 service.Associate("invoice", entityReferenceInvoice.Id ...

  6. 02 | 自己动手,实现C++的智能指针

    第一步:针对单独类型的模板 为了完成智能指针首先第一步的想法. class shape_wrapper { public: explicit shape_wrapper( shape* ptr = n ...

  7. drf认证、权限、限流

    认证Authentication(5星) 认证逻辑及编写步骤 逻辑 认证类:用来校验用户是否登录,如果登录了,继续往下走,如果没有登录,直接返回 编写步骤 -第一步:写一个类,继承BaseAuthen ...

  8. 利用js获取不同页面间跳转需要传递的参数

    获取参数的js函数如下: function GetQueryValue(queryName) { var query = decodeURI(window.location.search.substr ...

  9. HTTP和HTTPS有什么不同

    网站的URL会分为两部分:通信协议和域名地址. 域名地址都很好理解,不同的域名地址表示网站中不同的页面,而通信协议,简单来说就是浏览器和服务器之间沟通的语言.网站中的通信协议一般就是HTTP协议和HT ...

  10. Blazor Bootstrap 组件库浏览器通知组件介绍

    通知组件 通过浏览器API发送通知信息 , 桌面浏览器表现为右下角系统提示框弹出消息, 移动浏览器表现为弹窗或者到消息列表, blazor页面不在前台也可以通过本组件提醒用户. DEMO https: ...