Tor Hidden Service原理

  • 2019 年 12 月 05 日
  • 180次
  • 1014 字
  • 暂无评论

在2004年Tor开始支持隐藏服务(Hidden Service,现在官网称为Onion Service),这为Tor暗网的出现提供了技术支撑。Tor暗网是目前规模最大的暗网,其中包含了大量的敏感信息和非法内容。

Tor隐藏服务为只能使用Tor访问的拥有特定形式洋葱域(域名后缀为.onion)的一类网络服务,其基本组件包括OP,Tor目录服务器(Directory Server)、隐藏服务目录服务器(Hidden Service Directory Server)、OR和隐藏服务提供者。

建立隐藏服务并与之通信的具体步骤如下:

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

Hidden Services: 1

(2) Bob 为其特定的匿名服务生成一个隐藏服务描述符(Hidden Service Descriptor,简称HSDir),该描述符之中包括 HS 的公钥,介绍结点列表,以及利用HS的私钥对该描述符前述部分的签名。Bob将匿名服务描述符上传到具有分布式哈希表(DHT)结构的隐藏服务目录服务器(某些具有flag为HSDir的洋葱路由节点),以供其他 Tor 用户查找,具体保存于哪些节点请参考DHT存储信息的过程。

如下图,Bob 所生成的匿名服务描述符的查找索引为"XYZ.onion",即为我们常见的洋葱域名。其中 XYZ 为由匿名服务公钥生成而来的服务名,包括16 个英文字母(实际上为 HS 公钥的截断 Hash 值)。

Hidden Services: 2

(3) 当一个 Tor 用户(如上图的Alice)想要请求隐藏服务时,需要先利用某些途径得到该匿名服务对应的洋葱域名,即前述的"XYZ.onion"。得到洋葱域名后,Alice通过向相应的隐藏服务目录服务器发送查询请求,若查询成功则返回该隐藏服务的匿名服务描述符。通过描述符可以得知 HS 的介绍结点列表和所使用的公钥信息。

在此期间,Alice建立一条链路到一个随机挑选的洋葱路由节点,并通过告知该节点一个一次性秘密信息(Cookie)来请求其作为该用户的约会结点(Rendezvoud Point,简称 RP)

Hidden Services: 3

(4) 当匿名服务描述符下载完毕及约会结点成功设置后,Alice构造一个由HS 公钥加密的消息(Introduce Message)该消息的内容为:RP Information + Cookie,该消息通过链路发送至HS的某一个介绍结点(这里同样走 Tor circuit),而收到消息的介绍结点将此消息转发给Bob。

Hidden Services: 4

(5) Bob 用自己的私钥解密 Alice 的 Introduce Message,并获得其中的RP地址及Cookie。而后 Bob申请建立一条链路至RP,并将收到的Cookie包装在 Rendezvous Message 中发送给 RP。

Hidden Services: 5

(6) RP 将比对Alice和Bob分别递交的Cookie值,若相同则连接成功,并将连接成功的消息告知 Alice,在 Alice 接收到消息之后,其便可以通过 RP 中继的6跳链路进行正常通信。在整个Hidden Service的运行过程中,IP1、IP2、IP3 以及 RP 均无法确切得知通信双方的身份及地理位置。但是结点 RP 作为通信双方的中间结点,如果其成为恶意节点则整个通信链路很可能会受到流量分析或拒绝服务攻击等针对Tor暗网的攻击手段。

为什么介绍结点(IP)不能充当约会节点(RP)使用?

我的理解是为了保障安全。通过选择额外节点充当约会节点的方式,使得Alice仅仅知道HS的介绍节点信息,Bob也仅仅知道约会节点的信息,都无法得知对方的具体身份。

而且介绍节点是需要长期使用的,如果将IP充当RP则会增加流量关联攻击的风险,每次连接随机选取RP则可以规避这类安全问题。

Hidden Services: 6


版权属于:云樾

本文链接:https://jarviswwong.com/try-tor-hidden-service.html



—— 暂无评论 ——

OωO