Tor网络介绍
Tor网络介绍
1、Tor的全称是“The Onion Router”,“An anonymous Internet communicaton system;通过Tor访问一个地址时,所经过的节点在Tor节点群中随机挑选,动态变化,由于兼顾速度与安全性,节点数目通常为2-5个,由于追踪困难,因此有效保证了安全性。
2、Tor的原理:
什么是匿名性?
挂着代理,隐藏了自己的真实IP是否是匿名?不是!绝大部分FQ党都是挂着一重代理来这的,有一些甚至只是改了hosts文件,完全没有匿名性,一重代理只是一定程度上提升了匿名性而已。
TOR是一个三重代理;
代理的模型:PC、交换机、网关、N个路由器、防火墙、代理服务器、N个路由器、google服务器;如果是改hosts文件,就没有代理服务器这一步。
在代理服务器之前设备是知道你真实IP的。
代理服务器负责处理数据包,对于用户它是服务器,对于google服务器它是客户端;代理服务器之后的路由器以及最终的google服务器看到的都是代理服务器的IP,用户的IP被隐藏起来。但问题在于代理服务器知道你的真实IP和你干了些什么(HTTP)以及你去了哪里(HTTPS)。
流量分析只是随着云计算和大数据的发展,变得越来越有效的数据挖掘。
真正的匿名系统应该做到:1)各个环节除了必要的信息,其他什么都不知道。2)用户通信是跨越适当数量的跳板(hop),最好是不同国家的hop,这样流量分析和逆向分析的难度将大大增加;eg:三个hop p1、p2、p3; 用户首先连到h1,然后h1连接到h2, h2连接到h3,h3最终连接到目标网站服务器上。在这一过程中,h1知道用户的真实IP,h2知道它从h1接收用户数据以及要把数据送到h3,h3知道用户想干什么(HTTP)或者用户要去哪里(HTTPS ),除此之外这些hop 不应该知道其他任何有关用户的信息,这样的话即使三个hop 中有一个是攻击者的蜜罐,用户身份也不会暴露(不过如果三个hop 都是蜜罐,用户的身份还是会暴露的,但当三个hop分别位于三个不同的国家时,这种可能性很小)还有就是" 藏叶于林" 了,如果前面提到的三个hop 是某人专用的,那么一旦某个hop 被攻破(尤其是h1或h3),那么那人被逆向追踪的可能性非常大;但如果有很多人同时使用那三个hop ,那么老大哥想要找出其中某个具体用户就很困难了。同样道理,每次连接建立时都应该随机选择hop ,这样老大哥都不知道该如何进行有效的监视(TOR 的策略是每10分钟就重新随机选择三个hop 「9 」,每次启动TOR 时也是随机选择hop 的) 3)中间人攻击:为了防止老大哥进行中间人攻击破坏用户匿名,TOR 有着自己的一套基于数字证书的身份认证机制「10」,每个hop 都有一个自签发的数字证书,TOR 客户端在连接建立时会进行严格的身份认证。
TOR的用户越多,TOR的匿名程度就越高。
相对于TOR 之前的匿名系统,TOR 有三点最为特别:
1 ,一个TOR 环路可以被很多人同时使用,说的具体一点,hop 与hop 之间的每个TLS 连接都包括了很多不同用户的TCP 数据流;
2 ,TOR 客户端随机选择了入口节点,入口节点随机选择了中间节点,中间节点又随机选择了出口节点。对,是由精心设计过的算法保证随机选择的,没有规律可循(不过后来发现这算法造成了很搞笑的情景:某一条环路上的三个hop 有很多用户,都塞车了,但另一条环路上的三个hop 用户数少得可怜,所以后来又基于hop 的用户数对算法进行了改进「12」)
3 ,TOR 拥有独立于操作系统和浏览器的严格的基于数字证书的身份认证机制。这一点很重要,如果TOR
的身份认证机制和特定的操作系统或浏览器有了关联,那就意味着用户将不得不为了使用TOR 而更换浏览器或操作系统。
TOR 官网「2 」上简单介绍了TOR 的原理:TOR 是一个三重代理,TOR 客户端先与目录服务器通信获得全球活动中继节点信息,然后再随机选择三个节点组成circuit (电路),用户流量跳跃这三个节点(hop)之后最终到达目标网站服务器,每隔10 分钟左右就会再重新选择三个节点以规避流量分析和蜜罐节点。
「哪个节点都不可信,像洋葱一样」这就是Tor 环路的核心思想所在:和普通的TCP 流不同(Tor 工作在TCP 流之上),Tor 协议把通信数据打包为了一个个特殊的cell:一开始建立Tor 电路时,本机上的onion proxy 向入口节点发送create cell 进行TLS handshake ,这一过程的身份认证过程是基于数字证书的:Tor 有着自己的一套数字证书系统。
Tor是这么做的:客户端最先发过去的relay cell 1是入口节点与中间节点建立TLS 连接时所需要的参数,接着发过去的relaycell 2是中间节点与出口节点建立TLS 连接时所需要的参数,接下来是只有目标网站和对应端口信息的relay cell 3,在返回表明已成功建立环路的relay cell 4之后才会真正开始发送包含用户信息的relay cell 5.这一过程中relay cell 1被一重加密,到了入口节点之后就被解密,再用来与中间节点完成握手;relay cell 2被两重加密,到了入口节点时第一重加密解除,到了中间节点时第二重加密解除,中间节点可以看到明文,用来与出口节点完成握手; relay cell 3被三重加密,只有出口节点能看到明文,被用来与目标网站建立连接。同样relay cell 5也是三重加密的,只有出口节点能看到明文(HTTP)
「就像洋葱一样」,对,用户数据就像洋葱一样,被层层包裹着,只有到了终点包裹才会解开。在这一过程中,只有入口节点知道用户的真实IP地址,出口节点知道用户的目的地和传输内容(HTTP),Tor 电路的cell里没有其他任何关于用户真实身份的信息。
要知道NSA 和FBI 还有GCHQ们看Tor 不爽早就不是一天两天了,下次一起看看英勇的Tor 团队们是怎样对付各种攻击的吧!
Tor网络介绍的更多相关文章
- Tor网络突破IP封锁,爬虫好搭档【入门手册】
本文地址:http://www.cnblogs.com/likeli/p/5719230.html 前言 本文不提供任何搭梯子之类的内容,我在这里仅仅讨论网络爬虫遇到的IP封杀,然后使用Tor如何对抗 ...
- 五十二、linux 编程——网络介绍
52.1 网络介绍 使用远程资源 共享信息.程序和数据 分布处理 52.1.1 协议的概念 计算机网络中实现通信必须有一些约定,如对速率.传输代码.代码结构.传输控制步骤和出错控制等约定,这些约定即被 ...
- OpenStack网络介绍
OpenStack网络介绍 OpenStack里面的网络相对复杂.经常有人对几个网络概念搞混淆.因此,本文对OpenStack里面的Provider network 和 Tenant netw ...
- GAN网络从入门教程(一)之GAN网络介绍
GAN网络从入门教程(一)之GAN网络介绍 稍微的开一个新坑,同样也是入门教程(因此教程的内容不会是从入门到精通,而是从入门到入土).主要是为了完成数据挖掘的课程设计,然后就把挖掘榔头挖到了GAN网络 ...
- 三十一、kubernetes网络介绍
Kubernetes 网络介绍 Service是Kubernetes的核心概念,通过创建Service,可以为一组具有相同功能的容器应用提供一个统一的入口地址,并且将请求负载分发到后端的各个容器应用上 ...
- CNN网络介绍与实践:王者荣耀英雄图片识别
欢迎大家前往腾讯云社区,获取更多腾讯海量技术实践干货哦~ 作者介绍:高成才,腾讯Android开发工程师,2016.4月校招加入腾讯,主要负责企鹅电竞推流SDK.企鹅电竞APP的功能开发和技术优化工作 ...
- 使用tor网络
在www.torproject.org/projects/torbrowser.html.en上找到合适的版本下载 下载好tor浏览器之后,解压双击Tor Browser,出现这个错误 这是因为kal ...
- Kubernetes(k8s)集群部署(k8s企业级Docker容器集群管理)系列之flanneld网络介绍及部署(三)
0.前言 整体架构目录:ASP.NET Core分布式项目实战-目录 k8s架构目录:Kubernetes(k8s)集群部署(k8s企业级Docker容器集群管理)系列目录 一.flanneld介绍 ...
- VMware 网络介绍
3.1 网卡介绍 如图所示,你的机器有两块网卡,一个是有线,一个是无线. 装完VM之后,会出现两块虚拟网卡,如图 VM有四种连接方式,我们着重介绍前三种 3.2 桥接 选择桥接模式,说明V ...
随机推荐
- Partial关键字
Partial关键词定义的类可以在多个地方被定义,最后编译的时候会被当作一个类来处理. 首先看一段在C#中经常出现的代码,界面和后台分离,但是类名相同. public partial class Fo ...
- (一)用C或C ++扩展(翻译)
用C或C ++扩展 如果你知道如何用C语言编程,那么为Python添加新的内置模块是很容易的.这种扩展模块可以做两件不能直接在Python中完成的事情:它们可以实现新的内置对象类型,以及调用C库函数和 ...
- svn服务器发生变更,如何切换
参考链接: https://blog.csdn.net/jk110333/article/details/9301283 https://blog.csdn.net/emtit2008/article ...
- Scanner类的用法
Scanner类,一个可以使用正则表达式来解析基本类型和字符串的简单文本扫描器. 用于扫描输入文本的实用程序.位于java.util包中. 使用Scanner接收键盘输入的字符,步骤: 1.导入Sca ...
- 18、OpenCV Python 简单实现一个图片生成(类似抖音生成字母人像)
__author__ = "WSX" import cv2 as cv import numpy as np def local_threshold(img): #局部阈值 gra ...
- 自动判断PC端、手机端跳往不同的域名JS实现代码
输入相同域名,在pc端和移动端会出现不同的页面效果,一种是用栅格系统实现自适应, 更多的是设计两套不同的模板和两个二级域名或者一个主域名和一个二级域名(就是有区别就可以了); js代码判断浏览器的用户 ...
- 性能检测参考SQL语句
/****** Object: StoredProcedure [dbo].[SP_CPU] Script Date: 12/09/2018 19:01:24 ******/ SET ANSI_NUL ...
- VS2013过期激活
然后点击"更改我的产品许可证",输入密钥 : BWG7X-J98B3-W34RT-33B3R-JVYW9 即可注册成功...
- K3 Wise 常用表【转载】
在后台数据库ICClassType表中,字段FID<0的是老单,FID>0的是新单.--事务类型select * from ICClassType where FT ...
- uiautomator中文输入
步骤一: 下载UTF7 IME的整个项目 https://github.com/sumio/uiautomator-unicode-input-helper 选择“Download ZIP”打包下载 ...