“洋葱头”路由安全性分析与改进

不让你的IP被追踪的信息交流平台TOR系统

 

 Jack zhai

 

一、问题提出

美国人运营的TOR系统,是一个隐匿源IP地址的信息交流平台,可以提供了很强的反跟踪能力。其原理是建立一个转发服务器矩阵,采用“洋葱头”式路由,服务节点按需逐层剥开,使得监管者无法将虚拟账户与现实网络连接者关联起来。这个方案在如下的条件具备情况下,成为一个不错的共用的隐匿者信息沟通平台。

    1、用户数量足够多:路径是临时设定的,监控者只有在用户发布信息的连接时间内可以反向跟踪,一旦用户下线,或调整路径,跟踪线索就马上断了。因此,当用户数量足够大时,无异于大海捞针;

    2、 服务矩阵是来自多方管理的服务器群,每个服务节点严格遵守TOR安全法则

  1. 只拨开洋葱的一层,只发现下一跳的路由即可;

  2. 将数据包的源IP,改为自己的IP

  3. 双向连接时,仅记录上下一跳的IP,为了连接断开前的数据转发使用。连接结束时,删除该连接的全部信息,即不存储连接日志;

  4. 发现来的数据包源IP不是上一跳的IP地址时,说明上一跳节点“违规”,此时的做法应该是,中断连接,丢弃该数据包;

其实,美国人的TOR系统也没有达到上诉条件的全部,安全法则的第三条就有待考证,第四条应该不具备。美国的TOR系统是由一家第三方非营利机构运营,很神秘,独立性如何,需要考证。

最近有一些报道:NSA已经可以有能力破译TOR系统,也确实有报道,破获了一些利用TOR系统的案件。有文章分析说,TOR系统从诞生时起,就与美国政府与军方有千丝万缕的联系我对这一点还是有怀疑的。美国人做事是不含蓄的,要是有如此“技术基础”,或者可以“直接操作”,应该不会对TOR上边很多事情“没办法”,也不会在破获那些案件时,那么大费周折。

接下来,我从技术角度,分析一下基于洋葱头路由的TOR系统的一些安全隐患。

 

二、对洋葱头路由的反跟踪能力分析

洋葱头路由的原理是多层加密,每个节点只能解开一层,既不知道信息的原始来源,也不知道信息的最终目的地,更加不知道信息的实际内容(洋葱的最里层)。洋葱头路由转发如下图:

每个服务节点在遵守TOR安全法则的情况下,TOR系统的反追踪能力还应该注意两个边界条件:

    1、服务节点数量必须大于三:因为服务节点可以知道它的上一跳与下一条,节点数目为三时,就可以直接看到全部路径了;

    2、 连接路径必须动态生成:路径不确定,包括起始节点与最后节点,路径是一次性使用,它限定了追踪时间只能在用户连接的这段时间内;

 

反过来,我们再分析一下,如何追踪TOR系统。

追踪者的办法是从两头开始的:

    1、  用户登录点:这里有用户的注册信息,以及用户实际连接的源IP地址,当然你不知道哪些话是他说的,与虚拟账户不对应;正向追踪的方式是:利用用户源IP,跟踪到连接的第一个节点,查询服务节点的连接链表,发现下一跳IP,再逐步进行路径前进;

    2、  代理服务点:这里是洋葱拨开的时候,知道了用户发布的实际内容,是否是监控者关注的,一目了然,但如何追踪到发布者呢?反向追踪的方式是:利用虚拟账户的源IP,跟踪到路径的最后一个节点,查询服务节点的连接链表,发现上一跳IP,再逐步进行路径回溯;

   

从上面的分析中,我们可以发现,追踪的关键点有两个:

    1、服务节点的连接链表是可查的:无论正向、还是反向路由追踪都是依据服务节点中记录了上、跳的IP。虽然TOR安全法则中要求清除该信息,但作为转发实现与效率的要求,暂存或存储该信息一段时间是可能的。只要有这个列表,查询它只是权限的问题;要解决这个问题隐患,主要是靠代码开发者的“自律”了。

    2、 路径是可追踪的:可追踪是因为连接列表中路径的出口是唯一的或是可确定的,追踪者可以直接定位追踪的下一个IP,有了IP就可以定位服务节点,当IP地址出现在用户登录的列表中,或者是代理服务的IP时,就完成了路径的追踪;要解决这个问题,可以在路径的定义上花些功夫。

 

三、对洋葱头路由反跟踪的一些改进设想

对于系统的建设者来说,代码的选择是静态的,选定后,就不会轻易改变的;运营方不提供服务节点内的数据,保护用户隐私的能力也只是相对的。作为一个TOR系统的用户来说,能够自己掌控的,就只有在路径上想办法了。

最容易想到的,就是增加路径的长度,路径越长,追踪的难度越大。当然,路径长,延迟就大幅度增大,更为要命的是,若服务节点是“临时”服务的,你连接时,有一个节点动态退出,路径就断了,发布就需要重来,连接的时间可能是指数级增长。若是双向实时通信,路径过长的灾难就更大了。因此,路径的长度最好在10个节点之内。

本文提供的技术改进有两个设想:

    1、循环重复路径:

    路径中有循环重复的路径,就会在连接列表中有重复的出口。追踪者在同来源,不同出口的路径中,不知道该选择哪一个。从洋葱头路由的设计来看,循环重复路径不会影响正常转发,因为他们处在不同的洋葱层上,解密出的下一跳是唯一的。

节点1:上一跳有两个,下一跳是一个,对反向追踪时,选择不对就会循环往复;

节点2:上一跳是一个,下一跳有两个,在正向追踪时,选择不对也会循环往复。

 

    2、黑洞路径:

    诱惑追踪者走入“死胡同”,就是所谓的黑洞路径。其具体的实现是这样的:连接时,发送两种数据包,一个是黑洞路径引导,数据是随机的;一个是正常路径,数据是要发布的。

    图中的黑洞路径在转向节点处,两种数据路包开始分离,正向追踪者无法区分那条路径是正确的。当黑洞路径采用不只一条时,追踪者要么碰运气地选择一条,要么采用回溯遍历的算法了。

 

    无论是循环重复路径,还是黑洞路径,目的都是增加追踪者的复杂度,延长他的跟踪时间。实际使用中,我们可以把两种技术一起使用,既有循环,又有黑洞,建立一个路径的“迷宫”,让追踪者在里面“兜圈子”。

 

四、小结

TOR系统是隐匿用户源IP,对抗追踪者的探索之一,技术上的可行性只是安全保障的一部分,这里也只是从洋葱头路由转发原理的角度进行的分析与改进;管理上的非集中式管理也是必须的,最好是大量利用“民间”爱好者的服务站作为动态服务节点,是躲避追踪的最好方法。

隐匿源IP不仅是黑市交易,一些敏感资料的查询者也常常使用。很多公共的查询平台目前都在采用大数据统计,对经常对敏感信息、特殊技术搜索的源IP进行统计追踪,一旦成为跟踪对象,你查询的信息结果就有待评估了(可能被有意屏蔽或篡改)

另外,随着人们对安全意识到加强,很多网站也采用访问者大数据统计分析,对一些安全部门的监管IP、检索网站IP、第三方评价的爬虫IP等,进行特殊处理,导致信息的失衡。

因此,建立中国自己的TOR平台,提供公众服务,从长期来看是必须的。