匿名通信系统的分类和基本工作原理:Tor、I2P、Freenet、Zeronet

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

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

匿名通信系统

1、基本分类

通信延迟性能
通信延迟性能
网络结构
网络结构
网络模型
网络模型
匿名通信系统
低延迟通信系统
高延迟通信系统
P2P匿名网络
非P2P匿名网络
结构化
非结构化
1-1、高延迟匿名通信系统

即基于Mix算法的匿名通信系统,源于早期的Mixnet匿名通信网络,经典应用场景为高延迟邮件转发服务(Remailer),提供匿名电子邮件收发功能。该类通信系统的核心思想是利用单个Mix节点或瀑布型的多个Mix节点实现匿名通信。

Mix节点:是指网络中心向其他节点提供匿名通信服务的节点,它接受用其公钥加密的数据,并对数据进行解密、批处理、重序、增加冗余字段等处理,然后将数据传输给下一个Mix节点或最终接收者。——MBA智库百科

匿名通信网络的特点:

  1. 匿名通信系统网络中一部分节点为其他节点提供匿名通信服务;
  2. 发起者需要在发起匿名通信之前确定整个通信的传输路径,该路径在传输中不会改变;
  3. 发起者需要在发起匿名通信之前,得到整个传输路径中各个Mix节点的信息,包括地址、密钥信息等;
  4. Mix节点对来自多个发送者的通信信息进行解密、复用、批处理、重序、增加冗余字节等处理,系统匿名较高,但通信传输的时延较高,一般不适合实时的数据通信。

基于Mix算法的匿名通信系统包括Babel、Cyberpunk(TypeI)、Mixmaster(TypeII)、Mixminion(TypeIII)等。

发展过程:

  1. 最早由chaum于1981年提出,用于邮件防追踪。核心思路基于Mix节点对输入的信息进行加密和混淆,节点隐藏了各消息间的输入和输出关系,防止攻击者对输入和输出消息进行关联
  2. 1996年,Culcu等人提出Babel,引入mix路径,通过延迟一些批量消息,来抵御流量分析攻击
  3. 2001年,Dingledine等人提出基于信誉系统的的mix节点选择技术,以提高可靠性和效率
  4. 2002年,Dingledine等人提出具有分布式信任的mix级联协议,基于信誉度重新排列mix级联,提高可靠性
  5. 2003年,Danezis提出结合"mix级联模型"和"自由路由"的受限路由mix网络,以保证消息的匿名性
  6. 2003年,Cottrell等人提出Mixmaster协议,在每个数据包末尾添加随机数据,将消息转化加密为统一大小,保证所有发送者的路由信息相同。
  7. 2003年,Danezis等人提出Mixminion协议,部署了一组冗余和同步的目录服务器系统,为电子邮件消息提供发送人和接收人匿名。
1-2、低延迟匿名通信系统
  • 结构化P2P匿名网络,采用洋葱路由或类似洋葱路由的协议进行通信:Tor、I2P、Freedom
    // Freedom为网络中的每个用户分配一个唯一身份标识,以屏蔽IP地址信息,同时利用类似洋葱路由的加密方式为用户提供匿名网页浏览等服务。

  • 非结构化P2P匿名网络,主要采用基于DHT(distributed Hash table)的路由协议随机游走协议:Torsk、Freenet、Crowds
    // Crowds被设计用于匿名浏览网页,主要特征为节点随机选择。其所有节点都被分群,群中的每个节点都可以连接任何其他节点作为通信中继。

1-3、新型匿名通信系统

综合Mix技术和洋葱路由技术,可进一步提高匿名通信系统的匿名性、扩展性和性能:Taranet、Riffle、Loopix

2、暗网

匿名通信技术的提出源于对网络用户隐私保护的需求。然而不法用户通过Tor、I2P、Freenet等匿名通信系统提供的隐藏服务机制,架设必须通过特殊软件或进行特殊配置才能访问的服务,形成了无法被直接检索的暗网

  1. Dark Web:Web站点,需要特殊软件或配置才能访问,搜索引擎无法直接进行搜索。强调不可检索,不可直接访问,不强调匿名。包括:匿名Web站点(如Tor提供的隐藏服务站点),和非匿名站点(如ZeroNet提供的Web站点)。
  2. Darknet:匿名网络,包含Web,IRC和文件共享等其他各类资源,需要特殊软件或配置才能访问,搜索引擎无法直接进行搜索。强调匿名性,所有资源都需要基于相应的匿名通信系统才能访问,资源不限于Web服务。如Tor、I2P、Freenet。

3、经典匿名通信系统的工作原理

3-1、Tor(The Second-Generation Onion Routing)匿名通信系统

背景
1995年, 美国海军研究实验室提出开发洋葱路由,避免情报人员的网上活动不被敌对国进行监控。1997年,交由美国国防高级研究计划局(DARPA)进一步开发。2003年Tor正式版发布。2004年公开源码。

开始,该项目研究进展缓慢,直到2002年,两个MIT的毕业生Roger Dingledine和Nick Mathewson加入项目。与海军研究机构的Paul Syverson一起,2003年,3人开发了一个新版的洋葱路由,也就是Tor。

为了更好的隐藏情报人员的身份,Tor需要被很多不同的人使用,把政府情报人员的流量与普通用户的流量混在一起。 2004年底, Tor正式对普通用户发布。

洋葱路由 Onion Router

  1. 原理
    洋葱路由的实现根据是Chaum的“混合瀑布”理论:消息在从发送端发送,通过一系列的代理(“洋葱路由器”),到接收端的过程中,在一条不可预测的路径上不断的重新路由转向。同时为了防止中间人窃得消息内容,消息在路由器之间传送的过程中是经过加密的。
    信息封包经洋葱路由层层加密后,传送至目的端,目的端再层层解密,而其目的端回传的信息也需要经此传递链。
    任一节点都无法得知在链中自己的前一个节点是传送端,还是链上的另一节点。同理,任一节点也无法知道在链中的下一节点是目的端,还是链上另一节点。只有链上的最后一个节点,知道本身是链上最终节点,即出口节点。
  2. 建立步骤
    洋葱路由的组成及运作
  3. 优势
    洋葱网络的优点是它没有必要去信任每一个合作的中间节点,如果一个或更多的中间节点被恶意操控,通信的匿名性仍然可以得到保证。
    一个能够监视洋葱网络中所有洋葱路由器的攻击者,或许有能力跟踪消息的传递路径,但如果攻击者只能监视有限数量的洋葱路由器,那么跟踪消息的具体传送路径将变得非常困难。

第二代洋葱路由Tor(The Second-Generation Onion Routing)
Tor的核心技术是“洋葱路由 Onion Routing”。使用多跳代理机制对用户的隐私进行保护:首先,基于加权随机的路由选择算法分别选择3个中继节点,并逐跳与这些中继节点建立链路。在数据传输过程中,客户端对数据进行3层加密,由各中继节点依次进行解密。由于中继节点和目标服务器无法同时获得客户端IP地址、目的服务器IP地址和数据内容,从而保障了客户隐私。

Tor暗网的基本组件包括客户端目录服务器隐藏服务目录服务器洋葱路由器(onion router,OR)和隐藏服务器

  • 客户端:是运行在用户操作系统上的本地程序,称为洋葱代理(onion proxy,OP)。OP将用户数据封装成Tor信元并层层加密,位各类TCP应用程序提供匿名代理服务。
  • 洋葱路由器(OR):Tor暗网中的数据中继节点,Tor默认匿名链路由3个OR组成,分别是入口节点(entry),中间节点(middle),出口节点(exit),其中入口节点一般选择可行度较高的守护节点(guard)。
  • 隐藏服务器:提供Web、IRC等TCP应用服务。受到Tor匿名性的保护,必须通过Tor客户端才能访问其TCP应用服务。
  • 目录服务器:保存了所有洋葱路由器的IP地址和带宽等信息。客户端首次启用后,向目录服务器请求洋葱路由器信息,以完成节点选择和链路建立。
  • 隐藏服务目录服务器:储存并为客户端提供隐藏服务器的引入节点(introduction point,IPO),公钥等节点信息。

以上组件的功能都集成在Tor软件包中,用户可通过配置文件对具体功能进行配置
tor隐藏服务
工作方式

  • Tor隐藏服务器启动时,①选择3个引入节点(IPO)作为其前置代理,②并将引入节点及其公钥信息上传至隐藏服务目录服务器
  • 客户端访问隐藏服务时,③先建立3跳链路访问隐藏服务目录服务器,获取引入节点(IPO)和公钥信息。
  • ④客户端选择一个汇聚节点(rendezvous point,RPO)作为客户端隐藏服务目录服务器通信链路的汇聚点,⑤并将汇聚节点的信息通过引入节点(IPO)告知隐藏服务器
  • ⑥隐藏服务器和⑦客户端各自建立3跳链路到达汇聚节点,完成6跳链路的搭建后即可开始通信

Tor通过6跳链路访问隐藏服务器,在此过程中任意节点无法同时获知Tor客户端IP地址、隐藏服务器IP地址以及数据内容,保证了Tor客户端和隐藏服务器的匿名性。

3-2、I2P(invisible Internet project)匿名网络

是一种使用单向加密隧道的P2P匿名通信系统,采用大蒜路由,使隧道中每一跳节点只掌握相邻节点信息,无法获知通信双方的通信关系,保证通讯的匿名性。

大蒜路由是洋葱路由的一个变体,将传输的原始数据拆散为加密数据包通过多条隧道交叉疏散传递。在洋葱路由中,一条或多条数据的上传或下载公用一条隧道,而大蒜路由的上传与下载隧道相互独立,且两个方向上的隧道数量都可能大于1。——百度百科

与洋葱路由的电路交换(Circuit Switching)相比,大蒜路由也称为封包交换(Packet Switching)方式。大蒜路由是I2P与Tor及其他隐私/加密网络的主要区别之一。——百度百科

原理
I2P节点类型分为Floodfill和Nonfloodfill两类。节点默认初始身份为Nonfloodfill,其中满足性能要求的节点会自适应的成为Floodfill,其数量约占I2P所有节点的6%。

Floodfill节点保存RouterInfo和LeaseSet两类数据类型,RouterInfo包括节点ID,公钥,签名、通信协议、端口等信息;LeaseSet包括服务Hash值,隧道入口节点,起止有效时间等信息。

I2P系统根据Kademlia算法来组织所有的Floodfill节点,形成I2P的网络数据库(network database,netDB),以提供对所有RouterInfo和LeaseSet信息的保存和查询功能。

I2P拓扑结构如下图所示,每个节点根据256位路由值(router key)分布在逻辑环中,其中路由值通过SHA256算法对节点ID和当前日期计算获得。

I2P通过异或2个节点的路由值来度量节点间的距离。每个节点会选择异或距离最近的节点上传RouterInfo和LeaseSet信息。因此节点每天都会由于日期改变而呈现不同的逻辑分布,并将信息上传至不同的Floodfill节点,以此抵御Sybil攻击

SHA256,信息摘要算法
异或运算,相同为0不同为1

在这里插入图片描述
工作方式
I2P的客户端和服务器均利用多跳单项加密隧道进行通信。

节点初次加入网络时,通过官方补种网站(Reseed Website)进行补种,获取部分RouteInfo信息,并根据路由选择机制建立单向隧道

根据用途可分为

  • 探测隧道(exploratory tunnel):用于辅助构建、测试客户隧道,查询netDB中信息等。
  • 客户隧道(client tunnel):用于应用服务,如Web浏览,聊天室,文件共享、邮件等。

根据传输方向可分为

  • 输入隧道(inbound tunnel)
  • 输出隧道(outbound tunnel)

客户端和服务器在通信过程中分别建立各自的输入隧道和输出隧道。默认隧道长度为3跳。一次完整的通信过程需要4条隧道参与。

客户端和服务器的数据先采用端到端加密,然后在客户端进行3次洋葱式加密后发送到其输出客户隧道网关(Gateway)节点,然后依次在各个节点上加密并转发到服务器,最终由服务器通过4次解密获得明文数据。

多条隧道中的节点只知道前驱和后继节点的信息,从而隐藏通信双方关系,同时单向隧道通过增加通信节点的数量,提升了通信的匿名性。
在这里插入图片描述

3-3、Freenet匿名网络

简介
Freenet是一个分布式的匿名信息储存和检索系统,为用户提供文件上传、下载和检索,并保证上传者和下载者的匿名性。

设计目标
保护文件下载者和发布者的匿名性——Freenet的多跳文件传输和检索机制
本地存储的可否认性——分块机密存储
能够抵抗第三方对信息可访问性的破坏——文件的冗余存储机制——保证在部分节点离开网络的情况下,文件依然具有较高的可访问性
高效的分布式存储与路由——利用DHT
完全的去中心化——非结构化的P2P架构

原理
所有节点分布在周长为1个单位的逻辑环上,按照功能可分为种子节点和非种子节点,默认的新加入节点为非种子节点。种子节点具有辅助发现节点的功能。

新节点随机产生一个[0,1)的实数,用于标记其在环上的位置,每个节点都会贡献一顶大小的本地硬盘空间,共同构成Freenet的存储空间。

Freenet节点有2种工作方式:

  • opennet模式:
    可以和任何其他节点建立连接,与自身节点一跳的为邻居节点,邻居节点的数量与该节点带宽成正相关,最多支持85个邻居节点(版本号0.7.5)。节点间的距离是由节点间不大于0.5的弧长定义。
    定义距离不超过0.01的邻居节点为近邻居,且每个节点原远邻居节点的数量不超过近邻居数量的30%,其余节点为近邻居节点。
    新节点加入网络时,通过种子节点获取其他节点信息,然后选择邻居节点建立连接,从而加入Freenet
    在这里插入图片描述

  • darknet模式:
    节点只能和用户添加的信任节点建立连接,以保证安全性

Freenet节点通过FCP(Freenet client protocol)协议向上层应用提供匿名文件存储与检索服务,并集成基于FCP的Fproxy服务,从而提供HTTP代理,Freenet节点配置、文件上传与检索、Freesite浏览等功能。

工作方式
在文件上传前,Freenet将文件按照32KB大小切块,分别计算每块的唯一标识符,文件标识符主要分为内容哈希键值(content hash keys,CNK)和签名子空间键值(signed subspace keys,SSK)。文件的索引值可根据该键值通过SHA256哈希运算获得,索引值可转化为逻辑环上的对应位置。

在文件存储过程中,节点根据文件的位置查找距离最近的邻居节点,由其进一步迭代查找目标存储节点,最终通过该多跳查找路径将文件上传。

文件检索过程中,根据文件对应位置,利用深度优先的最近距离贪心算法查找目标存储节点。

2-1-4、ZeroNet网络

是一个基于BitTorrent的技术开源项目,采用早期的BitTorrent架构,强依赖于BitTorrent Tracker服务器。

BitTorrent(简称BT)是一个文件分发协议,每个下载者在下载的同时不断向其他下载者上传已下载的数据。用户之间相互转发,直到每个用户的下载都全部完成。——百度百科

用户数据采用MassagePack协议封装,并建立TCP长连接进行数据传输,每个用户只能和1000个其他用户进行连接。

ZeroNet采用椭圆曲线加密技术生产网站地址,并对站点内容进行签名和认证,并基于BIP32(bitcoin improvement proposals)方案为访问站点的用户生产标识。

每个新网站都会生成对应的公钥和私钥。私钥被网站拥有着掌握,用于对发布内容进行签名;公钥作为网站的地址,任何人可对网站内容的完整性进行验证。

工作方式
当用户请求访问ZeroNet上的网站时,客户端软件将基于BitTorrent技术从拥有该网站资源的站点(其他用户)上下载文件,并在本地浏览器进行解析。

网站所有者将访问站点的用户信息储存在ZeroNet客户端内置的SQL数据库中,在站点更新后会及时推送至用户端进行增量更新。

猜你喜欢

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