问大家一个问题:如果你访问了某个网站,又不想让人知道怎么办?
你可能会说,把浏览器浏览历史记录清除,或者直接用无痕模式。
如果你只能想到这一层,那只能说图young!
这么说吧,理论上来说,你产生的每一次互联网通信,在上面的某个网络流量出口,都有一堆设备在分析。你和互联网上的哪些IP建立过网络通信连接,都能给你清清楚楚地罗列出来。
即便是HTTPS通信,虽然不能看到你的通信内容,但通过SSL/TLS握手阶段的证书信息,也依然能知道你访问了哪些网站。
兄弟,你也不想有人知道你访问了xxHub吧?
那有些人可能想到,我用代理!通过代理转发就不知道我干了啥!
如果你能想到这一层,那还不错。
使用代理,确实在很大程度上,让别人很难知道你访问了什么网站。
但注意,我说的是很大程度上,并不是绝对安全。为什么这么说呢,因为如果你的代理服务商想要知道你访问了哪些网站,那还是轻而易举的。
那还有没有更安全的办法呢?
这就是今天要介绍的主角:tor——洋葱浏览器。
说到这个tor,跟美国军方有深厚背景。早在1995年的时候,美国海军研究实验室的科学家就开始着手开发一套匿名系统,可以避免人们在互联网上的行迹被追踪到。那为什么叫洋葱呢?等一下你就会知道。
开发这套系统的目的是让情报人员的网上活动不被敌对国监控。在美军1997年的一篇论文中指出,“随着军事级别的通信设备日益依靠公共通讯网络,在使用公共通信基础设施时如何避免流量分析变得非常重要。此外,通信的匿名性也非常必要。”
说直白点,就是老美要窃取情报和数据,需要一套稳定的网络通信链路,所以开发了这么个东西出来。
不过现在,tor早已不止美国军方在使用了,已经成为访问暗网的事实上的工具。那对于tor是如何从军方走向民间的,有好几种说法,其中有一种是,研究人员也意识到不能仅仅让美国政府自己使用这个系统,那不等于明摆着向对手表明身份了吗,必须让其他人也能够使用这个系统,才能够实现真正意义的隐藏。因此,tor面向大众推出了普通用户版本,并且允许每个人使用tor的节点,把政府情报人员的流量和普通人的流量混在一起,以达到隐藏的目的。
有美军的背景,听上去挺厉害的,那这玩意儿的工作原理是怎样的,它真的能让你浏览网站不被发现吗?
普通的上网方式,浏览器作为客户端和服务器之间建立TCP连接后,发起HTTP请求,服务器返回响应,完成一次上网浏览。
这个过程中,浏览器到服务器之间的数据包,虽然要经过各级路由不断转发,但在逻辑上,浏览器和服务器是“直通的”,中间路由节点只是负责把你的数据包一级一级交接下去,最终传递给服务器。
而使用代理的上网方式则不同,代理作为中间人,你的浏览器得先和它建立TCP连接,随后向它发起HTTP请求,“索要”对应的Web内容。代理再和真正的服务器建立连接,把你的请求发过去,收到服务器的连接后,再转回给你。
刚才说过,这种方式的问题在于,代理能够知道你访问了什么网站。
既然一个代理不安全,那就多整几个,tor正是这么个思路。
如下图所示,Alice使用tor来访问Bob的网站,tor在访问之前,先在它的网络中,随机选择三个节点,构建起一条网络通路,数据通过三个节点层层转发,最终到达Bob的网站服务器。
但如果仅仅是多整几个代理节点,只要顺藤摸瓜,还是能知道你访问了什么网站,tor方案绝就绝在它的层层加密。
在正式通信之前,tor将和选定的三个中继节点进行秘钥协商,之后在通信的时候,Alice电脑上的tor浏览器将把通信数据按照顺序层层加密,中间节点只能解密自己当层的数据。
数据被一层层加密,然后中间节点一层层解开,就像洋葱一样,洋葱路由的名字也就是这么来的。
那这样做为什么安全呢?
还是以这个图为例,假设我们把中间节点标记为A、B、C。
其中节点A只知道Alice访问了网络,但不知道它访问的是什么网站,因为数据被加密了。
对于节点C来说,只知道有人访问了Bob的网站,但它不知道具体是谁在访问,它只知道是tor网络中的B节点发来的数据。
对于节点B来说就更不用说了,既不知道是谁在访问,也不知道访问的是什么网站。
因为A-B-C这条网络通路是随机变化的,所以很难追踪。
最后,需要特别强调的是,网络不是法外之地,我国法律规定,严禁使用非法信道访问国际网络,另外世界上也没有绝对的安全,不要想着有什么软件工具就能干坏事,国家相关部门如果真要溯源你,也是轻而易举,所以大家千万不要想着靠软件工具就能逍遥法外。