Onion Router(简称为“Onion”)是一个分层的加密服务,全称为“可扩展入口式潜网路由器”,它可以让用户在匿名性和私密性方面保护自己的网络数据。Tor用户在本机运行一个洋葱代理服务器(onion proxy),这个代理周期性地与其他Tor交流,从而在Tor网络中构成虚电路(virtual circuit)。
Tor最初用于军事,设计的目的是为了保证网络通信中的匿名性和隐私,Tor凭借其低延迟、目录服务、配置简单等特点,在匿名通信领域得到许多用户和研究人员的青睐。它是一个用于匿名化网络通信的工具和网络协议,通过将当前节点加入到Tor网络中、在传输过程中建立多层加密及隧道路由的方式将用户的真实身份和位置信息隐藏,用户通信流量会经过多个中继,并在其中进行随机路由,使得追踪用户的来源和目的地变得更加困难,由此来实现匿名。在军事、政府、金融等对匿名性要求高的行业中,Tor无疑是个安全方便的解决方案。
Tor网络上的数据传输过程
(1)用户启动Tor客户端,它首先向Tor网络中的目录服务器发送请求,目录服务器将当前Tor网络上可用的所有中继节点及相应的公钥列表发送给客户端,这个过程是加密的。
(2)客户端根据中继列表信息进行路由选择,列表中提供标识了Guard和Exit的节点标志信息,Tor的随机路由选择算法就按照节点标志信息,在Guard标识的节点中选择入口节点,在Exit标识的节点中选择出口节点,其随机选择的概率是根据节点上报的带宽在总带宽中的权重来决定的。
(3)客户端在选择三跳中继节点后,分别获取这三跳节点的会话密钥信息,同时根据中继节点的IP地址等身份信息建立包含这些中继节点的匿名通信链路,进行加密传输。
(4)客户端向目标服务器发起请求,同时将要发送的请求内容像洋葱包裹一样进行层层加密,即由远至近使用与三跳节点的会话密钥将内容依次加密。入口节点使用密钥将最外层解密,获取下一跳的节点信息,接着转发给中间节点下一层加密的信息数据,中间节点将其解密后转发给出口节点,最终由出口节点解密最内层后获取到明文请求内容给目标服务器,只有出口节点和目标服务器之间的传输连接是未加密的。
(5)目标服务器接收到原始的请求信息数据,回复内容给用户,该内容在返回的过程中每经过节点会进行一层加密最终将加密信息返回给客户端,完成一次完整的通信。