暗网服务技术:Tor、I2P、Freenet、Zeronet

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

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

暗网服务技术

1、Tor隐藏服务

Tor隐藏服务通过*隐藏服务域名(即洋葱域名)*进行唯一标识和查找。服务器首次运行后将生成一个隐藏服务域名< z >.onion。其中< z >是长度为16B的字符串,由RSA公钥哈希值的前80b进行base32编码获得。

Tor隐藏服务器在启动过程中将其信息上传至隐藏服务目录服务器,Tor客户端能够通过隐藏服务目录服务器获得足够的信息与隐藏服务器建立双向链路。
tor隐藏服务

具体过程:
  1. 隐藏服务器选择3个洋葱路由器作为其引入节点,并与引入节点建立3跳链路;
  2. 隐藏服务器将其*隐藏服务描述符(Hidden Service Descriptor)*上传至隐藏服务目录服务器

目录服务器:保存了所有洋葱路由器的IP地址和带宽等信息。客户端首次启用后,向目录服务器请求洋葱路由器信息,以完成节点选择和链路建立。

  1. 客户端通过*隐藏服务域名(< z >.onion)*进行访问时,从隐藏服务目录服务器获取引入节点的相关信息;
  2. 客户端选择一个洋葱路由器作为汇聚节点并于该节点建立3跳链路;
  3. 客户端建立到达引入节点的3跳链路,并通过引入节点将汇聚节点的信息发送到隐藏服务器;
  4. 隐藏服务器建立到达汇聚节点的3跳链路,并对该链路进行认证;
  5. 经过汇聚节点,客户端与隐藏服务器通过6跳链路进行交互。

Tor隐藏服务器运行时,将自身的RSA公钥以及引入节点信息上传至通过③选定的6个隐藏服务目录服务器上。

其中“H(x)”是结果长度为160b的Hash函数,“||” 为拼接函数。
Public-key-id为RSA公钥的SHA1摘要的前80b。
Secret-id-part通过公式(4)计算获得。
Description-cookie为可选字段,该字段可用来防止未授权客户端访问隐藏服务;Replica-index有2种取值,其作用为选择不同的隐藏服务目录服务器。
Time-period字段表示下次上传隐藏服务信息时间,t为当前UNIX时间,该字段将1天划分为256个时段,并在其中某个时刻重新选择隐藏目录服务器上传信息。
在这里插入图片描述
隐藏服务目录服务器利用DHT进行组织,每个隐藏服务目录服务器都是DHT的一个节点,DHT结构如图
在这里插入图片描述

2、I2P隐藏服务

I2P提供的隐藏服务类型包括:Web、邮件、聊天室、文件共享等,其中Web是主流隐藏服务,称为eppSite,支持公开和非公开两种访问方式。公开的e’p’pSite访问的链接是Hostname,非公开的eppSite可以通过Address访问:

Destination=256bPublicKey+128bSigningKey+3bCertificate
LSHash=SHA256(Destination)
Address=SHA256(LSHash)+’.b32.i2p’

I2P的隐藏服务通过Destination标识,Destination由256B公钥,128B签名公钥和3B证书类型组成。

对于非公开的隐藏服务,I2P根据Destination计算LeaseSet的Hash值,即LSHash,再根据编码获得隐藏服务Address信息。
对于公开的隐藏服务,服务拥有者需要将Destination站点别名Hostname提交到I2P隐藏服务管理站点,经过其审核后公布给I2P用户,用户可通过Hostname访问隐藏服务站点。

隐藏服务访问者通过LSHash查询Floodfill节点得到对应隐藏服务的LeaseSet信息,LeaseSet提供访问隐藏服务的Gateway节点信息,以此构建隧道访问隐藏服务。

扫描二维码关注公众号,回复: 5574000 查看本文章
通信过程(在考虑默认3跳隧道的情况下):
  1. 隐藏服务根据节点选择机制,选择合适的节点建立隐藏服务输入和输出隧道,并根据输入隧道入口节点信息生成隐藏服务的LeaseSet信息(即LSHash);
  2. 隐藏服务建立探测隧道,并通过探测隧道将①中生成的LeaseSet信息公布到netDB中
  3. 客户端根据路由选择机制,选择合适的节点建立客户端输入和输出隧道,并根据输入隧道入口节点信息生成客户端的LeaseSet信息
  4. 客户端建立探测隧道,并通过探测隧道向netDB查询获得隐藏服务的LeaseSet信息
  5. 请求Web隐藏服务的消息包含3个Clove,其中Clove1为HTTP请求由I2P转发给本地Web服务处理;Clove2为数存储消息(database store message),即客户端的LeaseSet信息,用于指示隐藏服务到客户端输出隧道和输入隧道的转发;Clove3为传输状态消息(deliver status message),将立即被转发给客户端,用于响应并确认客户端消息。
  6. 客户端数据经过输出隧道3次解密后得到端到端的加密数据,同时输出隧道末端点得到步骤③中隐藏服务LeaseSet所指示的入口节点信息,完成通信双方输出隧道到输入隧道的数据转发;
  7. 隐藏服务端对数据进行4次解密得到明文数据,以及客户端的LeaseSet信息
    在这里插入图片描述
    经过以上7个步骤,完成了客户端和隐藏Web服务端的通信,双方可得知隧道入口节点的信息。由于隧道中的节点只知道前驱和后继节点信息,从而保障了通信的匿名性。

3、Freenet暗网服务

Freenet基于其匿名文件存储与检索功能提供了暗网的Freesite服务,即提供对Freesite的静态网页文件的资源定位符(URL)和路由机制进行部署和访问。Freesite利用Freenet的文件键值作为其统一资源定位符。只有获取对应的键值才能访问Freesite站点。

键值是Freenet中文件的统一资源定位符,不同种类的键值对应不同的文件分析需求。包括:CHK(content Hash keys)和SSK(signed subspace keys)两大类,而USK(updatable subspace keys)和KSK(keyword signed keys)是2种特殊的SSK。

CHK是最基础的一种键值,适合静态文件资源使用,这种键值包含文件的哈希值、解密密钥和加密设置等信息,其格式为“CHK@哈希值,解密密钥,加密设置”。CHK通过对二进制文件内容进行SHA256哈希运算生成一个由文件内容决定的哈希值,该哈希值也作为对应文件在Freenet中的索引,生成该索引的同时会生成一个随机密钥对文件内容进行对称加密,文件被加密储存在Freenet中,键值中的加密设置主要包括使用的加密算法等信息。

SSK适用于Freesite站点等需要文件频繁更新操作的资源,可以保证只有文件所有者才能更新。这种键值由5部分组成:公钥哈希、文件解密密钥、加密设置、文件描述符和版本号。格式为**“SSK@公钥哈希,文件解密密钥,加密设置,文件描述符,加密设置/文件描述符-版本号”。文件所有者在上传SSK类型的文件时,首先需要生成一对公私钥,其中公钥的哈希值将作为该文件在Freenet中的索引**,而私钥将用来对文件密文进行签名,从而提供完整性校验。另外,文件所有者需要提供一个对称加密密钥,并将原始文件加密后的密文、私钥对密文的签名和公钥数据共同存储在节点中,以便用户对其进行校验,Freesite拥有着还可以为该文件指定一个简短的文本字符串作为文件描述符,同时用版本号指明当前文件的版本以便区分。

USK于KSK是2种特殊的SSK。USK主要用于链接到最新版本的SSK,这种键值本质上就是对SSK进行了一层封装,向用户隐藏了对最新版本SSK的搜索过程。格式为**“USK@公钥哈希,文件解密密钥,加密设置/文件描述符/版本号/”KSK是简化的SSK,仅仅由一个描述性的文本字符串构成,其格式为“KSK@文本字符串”。当选择向Freenet中上传这种键值类型文件时,用户只需要提供一个描述性的文本字符串。节点首先根据用户提供的字符串生成一对公私钥**,然后同样对公钥进行哈希产生该文件的索引,私钥则用来对文件进行签名以提供一定的完整性校验。文件最终利用该文本字符串作为对称密钥后与签名一同储存在Freenet中。KSK存在的主要问题时容易发生冲突,当2个用户选择了同一个文本描述符,两者储存的对应文件则具有相同的索引。

下图是一种典型的用户利用键值检索对应文件资源的过程时的节点选择过程。其中A为请求者。节点B在受到请求后向与文件索引值最近的C发起文件请求,C无法在本地检索到该文件返回了请求失败消息。B收到消息后继续向次近的节点E发送请求。后续F向最近的B发送请求后,节点B检测到出现请求的循环,返回失败消息。F没有邻居节点,于是返回失败消息给D。
在这里插入图片描述

4、ZeroNet暗网服务

ZeroNet基于BitTorrent技术部署用户站点,并通过Bitcoin加密技术保证站点文件的完整性。

当用户访问一个ZeroNet的网站资源时,首先查找本地资源,若不存在则通过BitTorrent网络查找网站资源拥有者,将拥有资源的部分访问者IP地址及端口号返回该用户。因为站点的每个访问者都储存了站点文件,用户可通过TCP连接下载。

具体步骤:

  1. 用户查找网络资源的拥有者:该操作时在BitTorrent Tracker和用户之间进行的。用户向BitTorrent Tracker请求网站资源时,Tracker将用户注册成为访问者,并将拥有该资源的部分可访问网站的IP及端口号返回给用户。

  2. 首先从其他资源用户处下载该网站的签名信息集文件,该文件包含所有文件名、哈希值和网站所有者的加密签名。之后用户使用文件中的网站地址网站所有者的签名验证下载的签名信息集文件。验证完毕后用户可以使用签名信息集文件中的SHA512哈希值下载并检验网站中的其他文件,包括HTML,CSS,JS等
    在这里插入图片描述
    用户在访问网站后即可为其他访问者提供该网站的下载服务,提升整个站点文件的下载速度。用户可使用Tor网络与BitTorrent Tracker服务器通信,以隐藏其真实IP地址。

ZeroNet网站由其所有者更新,更新后将签署一个新的签名信息集文件,该文件会自动映射到内置的本地数据库,同时以增量更新的方式将其推送给访问者。访问者使用签名验证文件的完整性,将修改后的内容保存在本地,以供其他访问者访问下载。

ZeroNet站点可以同时由多个用户进行维护,此类网站需要其他维护站点的用户向网站所有者发送维护申请许可:用户需要发送其地址(即公钥)给网站所有者,网站所有者在签名信息集中加入该地址,并生成基于BIP32的Bitcoin地址给每个用户,表明该用户为有效签名者,并向所有的访问者发送新的签名集信息,以更新网站的发布权。

综上所述,ZeroNet是一个由访问者提供服务的P2P暗网。虽然该系统没有采用任何匿名技术保护站点和用户之间的通信隐私,但它利用BitTorrent网络架构并结合Bitcoin加密技术将站点文件组织在一个封闭的P2P环境中,使得搜索引擎无法检索到站点内容,形成了ZeroNet暗网。

猜你喜欢

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