⭐⭐⭐ Spring Boot 项目实战 ⭐⭐⭐ Spring Cloud 项目实战
《Dubbo 实现原理与源码解析 —— 精品合集》 《Netty 实现原理与源码解析 —— 精品合集》
《Spring 实现原理与源码解析 —— 精品合集》 《MyBatis 实现原理与源码解析 —— 精品合集》
《Spring MVC 实现原理与源码解析 —— 精品合集》 《数据库实体设计合集》
《Spring Boot 实现原理与源码解析 —— 精品合集》 《Java 面试题 + Java 学习指南》

摘要: 原创出处 编程技术宇宙 「轩辕之风」欢迎转载,保留摘要,谢谢!


🙂🙂🙂关注**微信公众号:【芋道源码】**有福利:

  1. RocketMQ / MyCAT / Sharding-JDBC 所有源码分析文章列表
  2. RocketMQ / MyCAT / Sharding-JDBC 中文注释源码 GitHub 地址
  3. 您对于源码的疑问每条留言将得到认真回复。甚至不知道如何读源码也可以请教噢
  4. 新的源码解析文章实时收到通知。每周更新一篇左右
  5. 认真的源码交流微信群。

问大家一个问题:如果你访问了某个网站,又不想让人知道怎么办?

你可能会说,把浏览器浏览历史记录清除,或者直接用无痕模式。

如果你只能想到这一层,那只能说图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这条网络通路是随机变化的,所以很难追踪。

最后,需要特别强调的是,网络不是法外之地,我国法律规定,严禁使用非法信道访问国际网络,另外世界上也没有绝对的安全,不要想着有什么软件工具就能干坏事,国家相关部门如果真要溯源你,也是轻而易举,所以大家千万不要想着靠软件工具就能逍遥法外。

文章目录