Tor Hidden Service原理初探

Tor 可以为系统用户提供Hidden Service服务。(就是我们熟知用于暗网,现在官网已经称之为Onion Service)

Tor 利用Hidden Service协议中提供的”约会节点”来为除服务提供者之外的其他 Tor 用户访问被隐藏的服务,而被服务的 Tor 用户对服务提供者的除提供服务以外的信息一无所知。

(1) Hidden Service 随机选取 Tor 网络中的几个中继结点,请求这些结点作为其介绍结点(Introduction Point),并告知这些结点该 HS 的公钥。如下图,提供匿名服务的 Bob 选择建立了 IP1、IP2、IP3 三条链路(均为完整的 Tor 链路),并请求他们成为 HS 的介绍结点。介绍结点判断 HS 身份的方式只有公钥,完全不知道 HS 的具体 IP 信息。

Hidden Services: 1

(2) Bob 为其特定的匿名服务生成一个匿名服务描述符(A signed descriptor),该描述符之中包括 HS 的公钥,介绍结点列表,以及利用服务私钥对该描述符前述部分的签名。匿名服务描述符被上传到分布式哈希表(DHT)以供其他 Tor 用户查找,如下图,Bob 发布的匿名服务描述符的查找索引为”XYZ.onion”,其中 XYZ 为由匿名服务公钥生成而来的服务名,包括16 个英文字母。(实际上为 HS 公钥的截断 Hash 值)

Hidden Services: 2

(3) 当一个 Tor 用户想要请求匿名服务时,需要先利用某些途径得到该匿名服务对应的洋葱地址,即前述的”XYZ.onion”。得到洋葱地址之后,该用户通过询问 DHT 得到匿名服务描述符,若该描述符存在,则通过描述符得知 HS 的介绍结点列表和所使用的公钥信息。在此期间,Tor 用户建立一条链路到一个随机挑选的中继结点,并通过告知该结点一个一次性秘密信息(后面称为One-time secret)来请求其作为该用户的约会结点(rendezvoud point,简称 RP)。此处的One-time secret我理解为是和 RP 通信的一次性密钥。

Hidden Services: 3

(4) 当匿名服务描述符下载完毕、约会结点也成功设置后,请求匿名服务的 Tor 用户(上图中的 Alice)构造一个由HS 公钥加密的消息(introduce message)该消息的内容为:RP Information+One-time Secret,该消息通过链路发送至匿名服务的某一个介绍结点(这里同样走 Tor circuit),而收到消息的介绍结点则会转发消息给匿名服务提供者(Bob)。

Hidden Services: 4

(5) Bob 用自己的私钥解密 Alice 的 introduce message,并获得其中的RP 地址及 One-time secret。而后 Bob 建立一条链路到 RP,并将 One-time secret 包装在 rendezvous message 中发送给 RP。

Hidden Services: 5

(6) RP 将连接成功的消息告知 Alice,在 Alice 接收到消息之后,其便可以通过 RP 中继的链路进行类似常规 Tor 网络通信的正常通信。在整个Hidden Service协议的运行过程中,协议中选用的 IP1、IP2、IP3 以及 RP 均无法确切得知通信双方的身份及地理位置。但是结点 RP 作为通信双方的中间结点,如果身份泄露很可能受到流量分析等攻击手段。

为什么介绍结点不能充当 RP 使用?
我也很模糊…我觉得 HS 和 IP 之间是完整的 tor 链路,client 与 RP 之间也是完整的 tor 链路,每个 relay 都不知道双方的身份,不拿 IP 当 RP 我只能理解为带宽问题。

Hidden Services: 6


文章作者: 玄霄
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 玄霄 !
评论