匿名路由:洋葱路由、大蒜路由、基于DHT的路由

版权声明:本文为博主原创,转载请注明出处。 https://blog.csdn.net/u011848397/article/details/88371647

本文仅为作者学习笔记,内容源自论文“匿名通信与暗网研究综述——罗军舟等”本身以及相关网络搜索

匿名路由

1、洋葱路由

洋葱路由核心思想是通过多跳代理层层加密的方法为用户的通信隐私提供保护。Tor是最典型的使用洋葱的匿名通信系统,因此以Tor为例对洋葱路由进行介绍。

在Tor暗网中,客户端与隐藏服务器之间需要各自选择3个节点建立多跳链路才能进行通信。目前,Tor主要选择基于加权随机的路由选择算法选择洋葱路由器构建链路。在选择节点时,该算法依据服务器描述符(server description)与共识文档(consensus document)中的带宽信息与缩放因子计算各节点的加权值,并按照出口节点、入口节点、之间节点的顺序选择链路节点。

节点选择完成后,OP从入口节点开始逐跳建立匿名链路,节点间均采用TLS/SSLv3对链路进行认证。以OR1,OR2,OR3分别表示入口节点、中间节点、出口节点。

首先,OP与OR1建立TLS链接,即OP发生CELL_CREATE信元,OR1进行响应以完成Diffie-Hellman握手并协商绘画密钥k1,从而建立第1跳链路。其中CELL_CREATE信元时Tor中一种数据传输的基本单元,长度为512B。

然后,OP向OR1发出与OR2建立链路的Tor信元,OR1收到后与OR2建立TLS链路,并通过Diffie-Hellman协议(obfs3混淆代理)协商OP与OR2之间的会话密钥k2,OR1将会话密钥通过加密报文通知OP,完成第2跳链路的建立。以此类推。

匿名链路建立后,用户可通过OP访问公共网络或Tor暗网中的隐藏服务,进行数据传输。当OP获得目标服务的IP地址和端口后,使用k1,k2,k3对数据信元进行层层加密封装即{{{IP: port}k1}k2}k3,这种加密方式称为“洋葱加密”。

该信元通过每个OR节点时,都会被使用对应的密钥对最外层进行解密并转发。当达到OR3后进行最后一次解密,即可辨识出目标服务器的IP地址和端口,从而建立TCP链接。

在此过程中,用户的上行数据通过OP层层加密,由各OR逐渐解密并转发至目标服务器;相对,目标服务器的下行数据经过各OR加密,由OP逐层解密并最终返回给应用程序。

对于目标服务器来说,Tor用户是透明的,它认为自己始终在和OR3通信;而各OR无法同时获得用户IP、目的服务器IP和应用数据,从而保证匿名性。

研究概况:
负载均衡

  1. 针对仅根据洋葱路由器提供的带宽进行路由选择容易受到恶意节点的谎报虚假带宽攻击。Snader等人提出“基于洋葱路由器采样带宽中值的机会路由选择算法
  2. 在此基础上,Panchenko等人提出了“一种基于节点当前负载和带宽的路由选择算法”,进一步提高性能和安全性
  3. Rochet等人提出“Waterfilling算法”:通过在用户路径节点上均衡网络负载,降低被端到端流量关联的风险。

拥塞控制

  1. Wang等人认为Tor进行路由选择将带宽作为中心特征,忽略当前负载,导致部分节点未被充分利用。提出“拥塞感知的路由选择算法”:客户端通过主动测量评估节点的拥塞状态,避免使用出现拥塞的节点。
  2. 针对Tor网络中存在大量僵尸网络流量问题,Liu等人提出“隐私保护访问控制框架TorPolice”:允许服务提供商和Tor网络实施预防的访问策略,在向合法Tor用户提供服务的同时拒绝僵尸网络流量,缓解网络拥塞。

调度策略

  1. Tang等人认为Tor用户体验差的主要原因之一在于链路调度算法中,允许具有连续流量的繁忙链路(如批量传输)抢占突发链路(如网页浏览)。提出通过赋予突发链路更高优先级,使得Tor网络中大多数突发链路性能得到改善,同时产生的开销较小。
  2. AlSabah等人利用机器学习算法对Tor加密链路进行分类,识别出每个应用服务所属的服务类型,并分配不同优先级。显著改善用户体验。
  3. AlSabah等人在后续工作中提出“Conflux动态分流方法”:根据测量延迟将流量分配到不同的路径中以增强负载均衡特性。提升了连接到低带宽bridge节点的用户体验。

匿名路由代替算法的性能与安全评估

  1. Wacek等人探讨了路由技术在性能和安全性之间的权衡,通过高精度拓扑模型对Tor网络的报文延迟、洋葱路由器的转发性能等特性进行采集,进而对整个Tor网络进行评估。
  2. Backes等人提出Tor网络安全性评估框架MATor:能够评估路由算法、Tor共识数据等对用户匿名性的实际影响。论文中还提出“路由算法DistribuTor”:提高更强的匿名保障。后续对MATor进行完善,增加了对“路由技术抵御各类Structural攻击能力”的评估功能。
  3. Matic等人对bridge节点的安全性进行了讨论。

2、大蒜路由

大蒜路由的主要技术特点:分层加密、多消息绑定、端到端加密,典型代表为I2P,因此以I2P为例。

在隧道建立前,每个I2P节点只知道局部的节点信息。节点选择过程如下:

  1. I2P节点会测量已知节点的网络性能,测量周期分为1min、1h,24h等,测量内容包括带宽、netDB查询时延、隧道建立成功率等信息,并将产生的详细描述文件保存于本地。
  2. I2P节点根据速度容量对测量到的目标节点进行分类,其中“速度”是一分钟通过该节点的数据量,通常取3条最快隧道的速度平均值;“容量”是一段时间内该节点建立隧道的数量:capacity=0.4×r(10min)+0.3×r(30min)+0.2×r(1hour)+0.1×r(24hour),其中r(t)代表最近时间t内成功建立隧道的数目。
    根据速度和容量可将目标节点分为:高速节点、高容量节点、标准节点,3类节点性能递减。高容量节点的容量超过所有节点容量的平均值,高速节点的速度超过所有节点速度的平均值,剩余节点均为标准节点。
  3. 不同隧道类型会选择不同的节点。如客户隧道优先选择高速节点,探测隧道优先选择高容量节点和标准节点(探测隧道选择高容量节点和标准节点比例 r a t i o = 1 ratio=1-\frac{探测隧道建立成功率}{客户隧道建立成功率}
  4. 隧道建立者随机生成目标值,被选择节点按照与目标值的异或距离进行排序,来确定节点在隧道中的位置。

I2P使用VTB(variable tunnel build)建立通信隧道。VTB主要由建立请求记录(build request record,BRR)组成,而BRR由toPeer字段和req字段组成,其中toPeer字段为节点标识,req字段包含分层密钥key,回复密钥replykey,下一跳节点字段ID等信息。

分层密钥key,客户端加密时使用,各节点接收n-VTB信息后解密时使用;隧道最终建立后,通信过程中使用。

回复密钥replykey各节点加密响应信息时使用,客户端最终解密4-VTB时使用。

在这里插入图片描述
通信隧道建立过程:

  1. 客户端通过由netDB获得的各节点公钥各节点的分层密钥key A B C _{A,B,C} 加密并封装包含3个BRR的1-VTB信息,转发至节点A;
  2. 节点A根据明文toPeer A _{A} 字段识别对应1-BBR,利用节点A私钥解密req A _{A}
    获得分层密钥key A _{A} (保留后用)、回复加密密钥replykey A _{A} (当前使用)、下一条节点B的ID等信息。通过replykey A _{A} 加密回复数据response A _{A} ,并替换1-BRR内容,利用key A _{A} 解密2-BRR和3-BRR后封装成2-VTB,转发至节点B;
  3. 节点B根据明文字段toPeer B _{B} 识别对应2-BRR,利用节点B私钥解密req B _{B} 获得明文数据,通过replykey B _{B} 加密response B _{B} 并替换2-BRR,加密并替换1-BRR,通过key B _{B} 解密替换3-BRR,然后封装成3-VTB,转发至节点C;
  4. 节点C重复②③中类似操作得到4-VTB,并将其转发至客户端输入隧道的Gateway节点D;
  5. 客户端分层解密获得4-VTB中各节点响应的明文数据,从而判断隧道是否成功建立

经过上述步骤后,客户端与节点A,B,C分别协商获得分层密钥key A B C _{A,B,C} 用于隧道机密通信

[req A _{A} ] A _{A} 是客户端通过A节点公钥加密的req字段,在A节点中,通过A节点的私钥解密。非对称加密

{toPeer B _{B} |[req B _{B} ] B _{B} } A _{A} 是客户端通过A节点的分层密钥key A _{A} 加密的B节点数据,在A节点中,通过分层密钥key A _{A} 解密后,明文发送给B节点。对称加密

{{{response A _{A} } A _{A-} } B _{B-} } C _{C-} 是A节点通过replykey A _{A} 加密的回复数据response A _{A} 。最终由客户端通过各节点的回复密钥replykey解密。对称加密

大蒜路由中多消息绑定端到端加密机制:
当客户端访问隐藏服务端时,使用隐藏服务LeaseSet中公钥信息实现端到端加密。客户端每个单独消息称为一个蒜瓣(clove),每个蒜瓣由对应的指示信息,用于指示该蒜瓣的类型和用途。客户端将多个蒜瓣封装成一个大蒜消息进行转发。隐藏服务端分层解密并按照知识处理每个蒜瓣
在这里插入图片描述

3、基于DHT(distributed hash table)的路由

DHT全称叫分布式哈希表(Distributed Hash Table),是一种分布式存储方法,一类可由键值来唯一标示的信息按照某种约定/协议被分散地存储在多个节点上,这样也可以有效地避免“中央集权式”的服务器(比如:tracker)的单一故障而带来的整个网络瘫痪。实现DHT的技术/算法有很多种,常用的有:Chord, Pastry, Kademlia等。——CSDN-DHT技术原理
新版BitComet允许同行连接DHT网络和Tracker,也就是说在完全不连上Tracker服务器的情况下,也可以很好的下载,因为它可以在DHT网络中寻找下载同一文件的其他用户。——百度百科

基于DHT的路由技术的核心思想是:利用DHT组织数据,进而使用对应的搜索策略提供高高效路由,并通过多跳代理保障通信的匿名性。

Freenet路由是一种面向请求消息的深度优先节点选择机制,主要应用于文件上传和文件检索。

请求消息由发送者节点产生后,会按照深度优先原则转发到下一跳,然后不断迭代路由。上传请求会在检测出键值冲突或HTL下降至0时停止转发。

请求消息中主要包含:

  1. 文件索引:文件索引值对应一个节点位置值,标识该文件最可能的储存位置,是请求信息路由的重要依据;
  2. UID(unique identifier):唯一的标识一个请求,能够有效避免消息路由过程中出现死循环;
  3. HTL(hops to live):用来限制消息所允许转发的跳数,避免消息无限地被路由下去。

目前HTL默认的最大值为18,通常情况下随着消息转发HTL会逐跳-1,减至0时被丢弃。此外,出于安全性考虑,Freenet中增加了一下针对HTL的混淆机制,对于HTL为18的请求,请求节点在转发时只有50%的概率会使HTL-1;对于HTL为1的请求,节点在转发时只有25%的概率使HTL-1。

Freenet路由选择机制还结合了贪心策略:每个节点维护自身的路由表,并根据该表对消息进行路由。Freenet将于节点直接通信的邻居节点称为直接邻居,距离2跳的节点称为间接邻居。Freenet中直接通信的节点之间会交换双方直接邻居的位置等信息,从而保障任意节点都拥有所有间接邻居的位置信息。
在这里插入图片描述
上图为A节点的直接邻居、间接邻居和路由表。节点A路由表中目的地节点包括所有直接、间接邻居,而路由选择结果始终是直接邻居。

每次路由时,节点根据消息中的文件索引值确定对应位置,并比较路由表中目的地节点的位置该位置的距离,迭代选择距离最近的目的地节点对应的直接邻居作为消息的下一跳节点。对于需要重复路由的消息,节点继续按照贪心策略选择不重复的下一跳节点。

猜你喜欢

转载自blog.csdn.net/u011848397/article/details/88371647