client 到server 实际建立的circuit的RTT: R e 2 e R_{e2e} Re2e,与client 经过监管区域后到达server 的最小RTT: R e s t R_{est} Rest 进行比较:
{ R e 2 e < R e s t , 建 立 的 c i r c u i t 没 经 过 监 管 区 域 R e 2 e ≥ R e s t , 建 立 的 c i r c u i t 可 能 经 过 监 管 区 域 \left\{ \begin{aligned} R_{e2e} & < R_{est}, \ 建立的circuit没经过监管区域 \\ R_{e2e} & \geq R_{est}, \ 建立的circuit可能经过监管区域 \\ \end{aligned} \right. {Re2eRe2e<Rest, 建立的circuit没经过监管区域≥Rest, 建立的circuit可能经过监管区域
如果建立的circuit可能经过监管区域的话,那么就不使用该circuit进行通信
背景:
因此,本文要解决的问题是:如何避开某个监管地区的流量分析给Tor网络匿名通信带来的威胁。该问题具有三个方面的挑战:
本文提出了一种基于经验的从地理上进行规避流量分析的方法,并且实现了一个原型TrilateraTor,在现实中部署。
Tor在建立circuit时,会从directory server获取中继节点的信息,包括IP,身份摘要等等。因此,为了判断中继节点有没有在监管区域内,可以通过中继节点的IP进行定位。
补充:Tor网络有9个 Directory Authorities,它们通过达成共识的consensus document维护活跃的中继节点和网桥(未公开的入口中继)。
Li等人在2017年提出DeTor,该方法结合客户端到服务端的距离,根据数据传输速度不超过 2 c 3 \frac{2c}{3} 32c的假设(c是光速),比较circuit的RTT 和经过监管区域circuit的RTT 下界,对circuit是否经过监管区域进行判断。经过监管区域的circuit包括以下四种情况:
因此,DeTor提出下面的公式,计算client经过监管区域到达server的最短时间:
R m i n = 3 2 c ⋅ min { 2 ⋅ D m i n ( c , F , e , m , x , s ) 2 ⋅ D m i n ( c , e , F , m , x , s ) 2 ⋅ D m i n ( c , e , m , F , x , s ) 2 ⋅ D m i n ( c , e , m , x , F , s ) R_{min}=\frac{3}{2c}\cdot \min \left\{ \begin{aligned} 2 & \cdot D_{min}(c,F,e,m,x,s) \\ 2 & \cdot D_{min}(c,e,F,m,x,s) \\ 2 & \cdot D_{min}(c,e,m,F,x,s) \\ 2 & \cdot D_{min}(c,e,m,x,F,s) \end{aligned} \right. Rmin=2c3⋅min⎩⎪⎪⎪⎪⎨⎪⎪⎪⎪⎧2222⋅Dmin(c,F,e,m,x,s)⋅Dmin(c,e,F,m,x,s)⋅Dmin(c,e,m,F,x,s)⋅Dmin(c,e,m,x,F,s)
其中, c , e , m , x , s c,e,m,x,s c,e,m,x,s分别表示client, entry relay, midlle relay, exit relay, server。 F F F表示Forbidden Area中距离当前circuit最近的点。 D m i n D_{min} Dmin代表最小距离
公式的含义就是: 最 短 距 离 链 路 传 播 的 最 大 速 度 2 c 3 \frac{最短距离}{链路传播的最大速度\frac{2c}{3}} 链路传播的最大速度32c最短距离。大括号是选出从 c l i e n t → s e r v e r client\rightarrow server client→server最短距离,根据图1,有四种情况。可以看到,DeTor假设往返是对称的,所以对每个距离乘了2。
当实际测量的RTT 小于阈值 R m i n R_{min} Rmin时,可以认为环路不经过监管区域;大于阈值时,可能经过监管区域,需要舍弃此环路。
显然,为了测量client经过监管区域到达server的RTT,我们需要中继(relay)的位置,判断中继是否在监管区域内。DeTor直接使用了GeoIP得到IP地址所在的区域。
DeTor的缺点:
本文在DeTor基础上,提出Asymmetric Approach
经过监管区域的RTT的下界 R m i n R_{min} Rmin:
R m i n = 3 2 c ⋅ min { D m i n ( c , F , e , m , x , s ) D m i n ( c , e , F , m , x , s ) D m i n ( c , e , m , F , x , s ) D m i n ( c , e , m , x , F , s ) + D ( c , e , m , x , s ) R_{min}=\frac{3}{2c}\cdot \min \left\{ \begin{aligned} & D_{min}(c,F,e,m,x,s) \\ & D_{min}(c,e,F,m,x,s) \\ & D_{min}(c,e,m,F,x,s) \\ & D_{min}(c,e,m,x,F,s) \end{aligned} \right. + D(c,e,m,x,s) Rmin=2c3⋅min⎩⎪⎪⎪⎪⎨⎪⎪⎪⎪⎧Dmin(c,F,e,m,x,s)Dmin(c,e,F,m,x,s)Dmin(c,e,m,F,x,s)Dmin(c,e,m,x,F,s)+D(c,e,m,x,s)
其中, c , e , m , x , s c,e,m,x,s c,e,m,x,s分别表示client, entry relay, midlle relay, exit relay, server。 F F F表示Forbidden Area中距离当前circuit最近的点。 D m i n D_{min} Dmin代表最小距离
并且,针对GeoIP数据库得到IP所在地理位置可能是错误的情况,本文根据ICMP和三角定位法进行修正
前两种都是静态的方法,为什么说是静态的呢?因为这两种方法都直接使用 2 c 3 \frac{2c}{3} 32c进行RTT的测量。
因此,进一步,本文提出基于经验的方法,其实就是先测量好每一跳之间的时间,需要的时候再拿出来计算RTT,然后定期更新传输时间的一种方法。这也是本文最终使用的方法。
基于经验的方法最关键的是事先测量不同的circuit中,中继(relay)之间每一跳的时间(而不是使用静态的速度 2 c 3 \frac{2c}{3} 32c进行测量)。当需要计算整条circuit的RTT时,把circuit上中继间每一跳的时间加起来即可。
思想:该circuit扩展到监管区域以后的RTT R e s t R_{est} Rest,与新建circuit的RTT R e 2 e R_{e2e} Re2e进行比较
具体步骤:
对新建的circuit,测量RTT: R e 2 e R_{e2e} Re2e,获取该circuit上的中继信息
测量扩展到监管区域后的最短增加延时 e x t F ext_F extF
e x t F = min { D ( A , F , B ) a v g [ S ( A , F ) , S ( B , F ) ] } ext_F = \min\{\frac{D(A,F,B)}{avg[S(A,F),S(B,F)]}\} extF=min{avg[S(A,F),S(B,F)]D(A,F,B)}
也就是说, e x t F ext_F extF表示在新建circuit的基础上,扩展到监管区域时,监管区域Forbidden Area中距离circuit最近的点F,与circuit中最近的两个点A,B之间增加的时间。
估计阈值 R e s t R_{est} Rest:
R e s t = e x t F + e s t ( c , s \ e x t F ) + e s t ( e , s ) R_{est} = ext_F + est(c,s \backslash ext_F) + est(e,s) Rest=extF+est(c,s\extF)+est(e,s)
其中,最短增加延时 e x t F ext_F extF,除与延时相关的跳外所有跳的估计 e s t ( c , s \ e x t F ) est(c,s \backslash ext_F) est(c,s\extF)以及从服务端返回到客户端的跳的估计 e s t ( e , s ) est(e,s) est(e,s)
判断依据:
Δ = R e s t R e 2 e \Delta = \frac{R_{est}}{R_{e2e}} Δ=Re2eRest
{ Δ ≥ 1 , 建 立 的 c i r c u i t 没 经 过 监 管 区 域 Δ < 1 , 建 立 的 c i r c u i t 可 能 经 过 监 管 区 域 \left\{ \begin{aligned} \Delta & \geq 1 , 建立的circuit没经过监管区域 \\ \Delta & < 1, 建立的circuit可能经过监管区域 \end{aligned} \right. {ΔΔ≥1,建立的circuit没经过监管区域<1,建立的circuit可能经过监管区域
如果经过的话,说明不安全,拒绝该circuit
每次选取八个国家(DE,US,FR,UA,RU,NL,GB,SE,CA)中的一个作为监管区域,也就是作者其实只考虑了只经过一个监管区域的情况。
而且,由于需要选取监管区域中离当前circuit最近的节点,因此整个circuit其实是人工(artificial)构造的。
1.
中得到的当前circuit中每一跳的RTT,并且计算扩展到监管区域的时间 e x t F ext_F extF,进一步,可以计算阈值 R e s t R_{est} Rest,以及阈值与的实际测试值的比值 Δ \Delta Δ2.1
(对应Symmetric Approach)和2.2
(对应Asymmetric Approach)中的公式来估计一个circuit的阈值。进一步的,可以得到阈值与的实际测试值比值 Δ \Delta Δreject rate
:由于实际的RTT超过阈值RTT而拒绝的circuit的数量,进行评估。
提出了基于经验的路径地理规避方法,在Tor circuit建立的过程进行RTT测量,不泄露多余信息,也不会留下其他指纹。
文章中除了理论,也就是第二章中介绍的那几种,还介绍了原型TrilateraTor的部署情况,这里为了简单就没有进行介绍。
最后,文章中有理解错误的请指出!