匿名网络Tor与I2P的比较研究1

2019-02-20 07:49:20杨云李凌燕魏庆征
网络与信息安全学报 2019年1期
关键词:路由器路由消息

杨云,李凌燕,魏庆征

(扬州大学信息工程学院,江苏 扬州 225127)

1 引言

Tor是一个基于电路的低延迟覆盖网络,提供匿名和隐藏服务,它是当今时代部署最多、应用广泛的匿名通信系统[1-2]。它的用户数十万,如军事、情报机构、记者等以及超过75个国家的6 011个继电器提供在线匿名和隐私保护。

I2P是一个基于分组的高延迟匿名重叠网络。它在通信方之间构建虚拟网络,保护通信不被其他人(如互联网服务提供商)进行调查和检查[3-4]。I2P的用户通常是记者、活动家、举报人以及普通用户。没有网络可以“完全匿名”,I2P旨在使攻击越来越难以登录。随着网络规模扩大,其匿名性将变得更强,I2P用户可以控制匿名和延迟之间的权衡。

I2P是在借鉴了Tor的许多开发理念、网络技术的基础上开发的,网络Tor和I2P之间的理念区别关键在于:I2P试图将现有的互联网服务转移到I2P网络,并在框架内提供服务实现,而Tor则允许匿名访问分别实施和操作外部互联网服务。网络Tor和I2P之间的关键技术差异在于:消息流置换了细胞、单向隧道置换了双向电路、分组交换变换为电路交换、基于性能的对等体选择代替了基于带宽的对等体选择、分布式架构代替了集中式框架等。

2 Tor与I2P的使用术语

在技术方面,I2P在许多方面类似于Tor,但它的开发人员经常使用稍微不同的术语表示几乎相同的功能。表1提供了Tor和I2P之间使用的不同术语之间的映射[5]。

表1 Tor与I2P比较:使用术语

3 Tor与I2P的项目开发

表2~表4是基于Tor和I2P的特征构建的,分别从认知度、性能、开发技术3个方面,比较了匿名网络Tor和I2P。

表2 Tor和I2P比较:认知度

1) SOCKS/I2P API:Tor使用 Socket Secure(SOCKS)接口,因此SOCKS能够感知应用程序,可以很容易地指向 Tor软件[6],这表明采用 SOCKS的应用程序无须任何更改,可以直接使用。另外,I2P是一个中间件,提供应用程序可用于通过网络进行通信的API,这意味着应用程序需要进行复杂的调整。SOCKS与I2P API极大地改变了构建使用 I2P或 Tor网络、通过 Internet进行匿名通信的应用程序的工作量和能力。SOCKS接口只能通过TCP传输消息,而I2P可以在UDP和TCP之间进行选择,这可使I2P在使用某些应用程序时提供更好的性能。

2) 可用的应用程序:I2P和Tor都具有广泛的应用程序,而大多数I2P应用程序专门用于访问I2P网络内的服务(例外的是Susimail/2IpMail能够从公共Internet发送和接收邮件)。另外,由于Tor使用SOCKS接口,Tor能够与使用SOCKS代理配置的任何应用程序一起使用(如常用的Web浏览器)[7-8]。

表3 Tor和I2P比较:性能

表4 Tor和I2P比较:开发技术

3) 消息安全性和匿名性:两个网络都具有各种加密层,从由OR(onion routers)或I2P对等体维护的 TLS连接提供的传输层加密开始,I2P还具有额外的隧道加密功能。通过网络发送的消息是洋葱或加密的大蒜,这意味着从用户到隧道或电路的连接始终是加密的。只要在网络内部进行交互,I2P中的消息也是端到端加密的。但在 Tor的情况下,无法保证端到端加密,这取决于所使用的传输层协议[9]。

4) 性能:使用I2P或Tor访问公共互联网时的延迟和带宽作为评价指标,测量发现:I2P能够在发出简单的HTTP-GET请求时获得更好的结果,但Tor在访问整个网页和下载文件方面提供了明显更好的结果。在 50%的情况下,Tor能够在不到16.99 s时间内检索整个网页,而50%的I2P请求需要花费103.19 s。在下载速度方面,Tor能够提供51.62 kB/s的平均速度,而I2P的平均速度为12.91 kB/s[10]。

5) 可扩展性:增加参与匿名网络的客户端数量直接影响Tor和I2P,匿名设置量变得更大,网络流量增加并可能导致拥塞等问题。对于Tor可能需要增加用于构建电路的路由器数量,从而增加延迟并减少可用带宽。增加OR的数量会产生另一个问题,即不断增长的目录。在I2P的情况下,假设加入网络的新对等体能够提供足够的容量和带宽,它们也可以是用于构建隧道的对等体。因此,不太可能出现拥塞,但如果足够数量的客户端寻求访问I2P网络之外的服务,则需要提供更多的外部代理。

6) 用法:I2P提供多种应用程序,专为 I2P网络内的通信而设计,所以它的代理很少。而Tor则设计用于在网络外部的路由流量,与I2P相比具有更多的退出节点。

4 Tor与I2P的匿名服务

Tor与I2P都构建了匿名服务,如表5和表6所示,但I2P现有的应用包括绝大部分典型的因特网应用,如匿名Web浏览、匿名Web hosting、匿名博客、匿名聊天、匿名文件传输、匿名文件共享、匿名E-mail、匿名新闻组和其他一些正在开发的应用。但Tor提供的隐藏服务在外置服务器上,而I2P提供的隐藏服务在内置服务器上。虽然Tor有隐藏服务而I2P有退出节点,但Tor的规范用法是访问外部服务,而I2P规范用法是访问内部服务[11-12]。

表5 Tor匿名服务的构建

5 Tor与I2P的关键技术

由于Tor与I2P在开发理念上不完全相同,因此两个网络在一些网络关键技术上存在差异[13],表7列出了Tor与I2P在关键技术上的差异,这直接影响了网络的功能与性能。

表6 I2P匿名服务的构建

表7 Tor和I2P比较:关键技术

5.1 工作流程

1) Tor工作流程

Tor网络工作流程如图1所示。

2) I2P工作流程

I2P网络工作流程如图2所示。

由图1、图2的工作流程对比可以看出,Tor网络工作依赖于集中式控制的目录服务器,而I2P网络工作依赖于分布式控制的网络数据库NetDB,I2P网络的可靠性比Tor网络高。

5.2 隧道技术

Tor是通过“电路”双向传递消息的,即入站和出站消息是同一条电路,如图3所示;而I2P是通过“隧道”单向传递消息,即入站和出站消息是不同的两条隧道,并且这两条隧道每隔10 min重新建立,如图 4所示。Tor的出站端点是公开的、未隐藏,而I2P的出站端点被隐藏。

图1 Tor网络工作流程

图2 I2P网络工作流程

图3 Tor的电路

图4 I2P的隧道

I2P的隧道具有多样性特点[14]:入站隧道和出站隧道、探索隧道和客户端隧道。从客户端到服务器的路由分为两个隧道:由客户端控制的出站隧道和由服务器控制的入站隧道,这两条隧道之间是直接连接的,即出站隧道的出站端点直接连接到入站隧道的入站网关。隧道通过将目标的入站网关和出站端点与目标路由器分开来提供匿名性。

探测性隧道通常是低带宽的,并且由路由器本身使用,包括构建和测试其他隧道、发送网络数据库(NetDB)查询以及构建客户端隧道。客户端隧道通常是高带宽的,用于所有用户客户端和服务器流量,包括访问内部I2P网络目标或“隐藏服务”,如Eepsites,与外部网关的连接(Inproxies和 Outproxies)以及其他用途。

5.3 对等体选择

Tor是基于带宽的对等体(Peers)选择,I2P是基于性能的对等体选择[15-16]。对等体选择的目的是快速地构建电路或隧道。

1) Tor:基于带宽的对等体选择

Tor的目录服务器使用有源带宽探测来测量和记录每个OR(onion router)能够提供的带宽,如果没有针对此特定OR的探测数据,Tor还必须依赖各自发布的带宽值。带宽信息用于以加权概率方式选择中间路由器和出口路由器。

Tor客户端使用路径选择算法来选择用于构建电路的OR,只要测量值可用就优先采用。Tor中的所有其他OR都选择时的概率与其带宽成正比,这意味着仅考虑带宽,而忽略其他属性(如OR的实际位置)。

2) I2P:基于性能的对等体选择

I2P客户端依赖于先前监控的性能值和网络的当前状态,不使用有效带宽探测。 I2P节点选择算法还能够非常快速地对失败的对等体和网络拓扑中的其他变化做出反应,通过不断分析和排名性能来选择对等体,而不是信任所声称的容量。

表8 Tor目录

性能指标主要为速度、容量。

速度定义:通过该对等体在1 min内测量的最快3个隧道带宽的平均值。

容量定义:在一段时间内通过对等体成功隧道构建的数量,令r(t)是在一定时间段t内的成功构建数,则容量

如果在给定时间段内没有成功构建,则该值为零,即永远不会发送构建请求,仅用于构建评级。评级还包括每次增加少量的“增长因子”,以便定期尝试通过新对等体构建。

每个时间t的当前容量计算r(t)为

5.4 Tor目录与I2P NetDB

1) Tor目录

在Tor源代码或/ config.c中有许多默认目录。

这些目录权限由Tor项目的成员和受信任的外部个人/组运行。

2) I2P NetDB

Tor通过连接目录服务器得知所有中继、进入/退出节点的存在,I2P通过本地网络数据库NetDB得知其他节点的存在,NetDB通过Kad算法在连接其他节点时获悉更多节点的存在。

I2P NetDB是一个分布式网络数据库,主要提供路由器联系信息和目标联系信息, 每一条数据都由适当的一方签名,并由使用或存储它的任何人进行验证。

NetDB由RouterInfos、LeaseSet这两个数据结构组成,RouterInfo存储有关特定I2P路由器的信息以及如何联系它,包括路由器标识符(route ID)、连接方式(UDP+port)、发布时间(release time)、密钥(非对称加密)等。LeaseSet存储特定目的地的信息,包括入站网关ID、服务、密钥(对称加密)。

图5和图6分别表示NetDB中的RouterInfo路由器联系信息用于构建隧道、LeaseSet租约集用于连接出站和入站隧道。

图7说明了FloodFill NetDB的工作原理,用户节点在客户端下的NetDB目录下的RouterInfo文件中进行查找,找到一个FloodFill NetDB下的Peer1。然后FloodFill可以使用深度优先或广度优先进行遍历,Peer1告知在FloodFill NetDB内所有它已知的Peer。

图5 RouterInfo用于构建隧道

图6 LeaseSet用于连接出站和入站隧道

图7 FloodFill NetDB工作原理

表9说明了NetDB的物理视图,它是由行键(256 bit的摘要)、时间戳、节点ID(160 bit)、连接方式(IP地址+UDP端口号)、传输密钥(256 bit的对称密码)、入站网关ID、I2P匿名服务和大蒜密钥等构成。

5.5 路由方法

由图8和图9对比可知,Tor和I2P网络有相似之处和不同之处。这两个匿名服务的共同目标是通过使用多层加密,将流量中继到多个站点来提供匿名性,多层加密用于强化和拒绝用户与其消息之间的链接。Tor主要致力于为用户提供匿名访问网络以外的网站,而I2P提供匿名访问在I2P网络本身内私下托管的网站。与此同时,Tor还在Tor网络中托管了网站(隐藏服务),而 I2P支持访问Internet上托管的网站,但不支持使用外部代理访问I2P网络。就用于中继流量的路径而言,Tor网络和I2P网络上的路径发生变化并且不固定,用户保持连接到一个路径(电路隧道级联)的持续时间根据匿名系统的不同而不同,两种匿名服务的路由技术和路径选择也不同。

5.6 消息机制和交换方法

如图10所示,Tor协议中的协议数据交换使用固定长度的Cell,流量在网络中以固定大小的单元进行传输,每个单元是包含头和有效载荷的12 byte数据。头包括一个线路标识符(这个单元使用哪条线路)和一个指令(指明将要对这个单元的数据做什么)。中继单元在有效载荷数据之前有额外的头(中继头),包含一个stream ID、一个端到端的校验和、中继负载的长度和一个中继命令。

表9 NetDB物理视图

图8 洋葱路由

图9 大蒜路由

图10 Tor网络的Cell 结构

在图11中,I2P网络内的信息以I2NP(I2P网络协议)消息的形式交换,主要由传送指令和有效载荷组成,由于大小限制,它可以包含整个消息或仅包含部分消息。为了防止定时攻击,收集特定路由器的多个消息并将其组合成隧道消息。此消息包含该路由器的ID,用于加密有效负载的IV和有效负载本身,其中包含校验和、填充以及路由器收集的消息,格式为“交付说明”消息)和I2NP本身(称为“Clove”)。

图11 I2P网络的message结构

同一个连接中的指令与数据,在Tor中沿着通过TCP建立的电路(Ciruit)流动至目的节点,而在I2P中,连接被消息机制(Message)打散为数据分组,经由不同的TCP或UDP隧道(Tunnel)交叉传输后,在接收方重组为数据流,即I2P基于包(分组)切换而Tor基于电路切换。因此,Tor经常应对高拥塞导致高延迟,而在I2P中,分组交换导致一些隐式负载平衡,并有助于避免拥塞和服务中断。这对于大型文件传输尤为重要,因此I2P更适合此类用途[17]。

I2P网络中的所有对等体经常发送消息(端到端和网络维护消息),端到端消息沿其路径改变大小和数据,路由器间通信既加密又流式传输(使两个1 024 byte的消息与一个2 048 byte的消息无法区分),所以外部攻击者也无法访问消息。

在图12和图13中,msg:message表示消息、Inf:Infos表示信息或数据、Enc:Encryption表示加密。

在洋葱路由中,Tor目录服务器随机分配给客户端C 3个节点:入口节点n1、中继节点n2和出口节点n3,客户端、n1、n2、n3互相经过密钥协商得到3个公钥:Enc n1、Enc n2、Enc n3,对消息msg进行三层加密,传递给n1,n1用自己的私钥解密后再传递给n2,n2用自己的私钥解密后再传递给n3,由n3将信息msg最终传递给Web网站或服务器W。

大蒜路由中的消息是“大蒜消息”,它是由多个消息或流数据捆绑而成。在大蒜路由中,I2P的NetDB根据 DHT算法随机分配给客户端 S两个或3个节点:输出网关n1、中继节点n2和输入网关 R(或 X),客户端、n1、n2、R(或X)互相经过密钥协商得到3个公钥:Enc n1、Enc n2、Enc R(或Enc X),对消息msg进行三层加密,传递给n1,n1用自己的私钥解密后再传递给n2,n2用自己的私钥解密后再传递给R或X,由R或X将信息 msg最终传递给Web网站或服务器W。

图12 洋葱路由中的消息加密

图13 大蒜路由中的消息加密

5.7 TCP/UDP传输

由于 Tor网络中的节点间(除出口节点与服务器)使用TLS进行加密连接构建电路,TLS用于防止可能的攻击者修改数据,冒充洋葱路由器,提高网络效率和安全。Tor使用 SOCKS接口与Internet进行交互,提高用户的匿名性。但 TLS、SOCKS都是基于 TCP的,所以 Tor的中继之间使用TCP连接,并且多个TCP流可以共享一个虚电路,每个OR都使用TLS连接到其他的OR。

而在I2P网络中,节点间全部使用TLS进行加密连接构建隧道,节点发现使用 Kademlia的XOR距离算法。TLS、Kademlia分别基于 TCP和UDP,所以I2P的路由之间既使用TCP连接又使用UDP进行数据传输。I2P的传输连接是两个对等传输协议NTCP和SSU,NTCP是基于NIO的TCP,SSU是安全半可靠的UDP(它的主要目的是通过隧道安全地传输 I2NP消息,仅加密 UDP功能)。I2P同时使用TCP和UDP传输,对于某些深度包检测(DPI)设备来说,UDP可能更难以跟踪。

6 Tor和I2P的威胁模型

威胁模型分析 (thread modeling)是寻找系统潜在威胁以建立对抗的策略,以建立安全的系统。Tor项目没有指定明确的威胁模型,仅仅讨论常见的攻击和针对它们的现有防御措施。I2P指定了明确的威胁模型,并且针对这些威胁建立了对抗策略[18-19]。综合Tor和I2P的攻击类型和威胁模型,表10对Tor和I2P的威胁类型进行了比较,比较表明,I2P的安全性设计高于Tor。

7 结束语

Tor是目前最受欢迎和最常用的系统,但I2P是一个快速增长的竞争对手。Tor致力于提供高速匿名互联网外包,而I2P本身则致力于提供分散的弹性网络。这两个系统都在不断更新,以提高性能并提供更好的匿名性,同时防止恶意攻击。

两个网络的关键区别在于它们在节点选择和客户端节点参与方面设置、使用其虚拟连接的方式。另一个重要的区别是,虽然Tor是为退出流量而设计的,但I2P寻求在网络内部提供服务,以便为服务提供商和用户提供更强的匿名性。

比较研究表明,确定Tor / I2P这两个系统在性能和匿名性方面哪个提供了更好的服务,与其应用领域密切相关:在浏览公共网络时,Tor能够提供更好的性能,而I2P几乎无法使用。另外,与 Tor在与网络内的服务或用户交互时相比,I2P提供了更强的匿名性和更好的性能。总之,无论使用哪种系统,只能在性能和匿名性之间进行权衡。

表10 Tor与I2P比较:威胁类型

猜你喜欢
路由器路由消息
买千兆路由器看接口参数
科教新报(2022年24期)2022-07-08 02:54:21
一张图看5G消息
探究路由与环路的问题
你所不知道的WIFI路由器使用方法?
消息
中国卫生(2014年12期)2014-11-12 13:12:26
消息
中国卫生(2014年8期)2014-11-12 13:00:50
消息
中国卫生(2014年7期)2014-11-10 02:32:52
PRIME和G3-PLC路由机制对比
WSN中基于等高度路由的源位置隐私保护
计算机工程(2014年6期)2014-02-28 01:25:54
eNSP在路由交换课程教学改革中的应用
河南科技(2014年5期)2014-02-27 14:08:56