Tech Blog

SmartX的加密通讯对比洋葱网络Tor以及隐形网I2P有哪些优势?

By 2019年12月6日 No Comments

互联网让信息传播的范围更大,速度更快后。用户隐私问题,成为了信息通讯公司们新的竞争点,也成为未来互联网的新趋势。 在加密通讯领域洋葱网Tor的核心技术是不得不被提到的系统,被广泛应用。但如今,似乎已经有了新的系统对洋葱网的市场构成了威胁。

洋葱网Tor

Tor使用的核心技术是美国海军研究室开发的第三代洋葱路由器系统,其初衷用于保护政府机关的数据通信隐私,现在它被广泛应用在任何民间企业,组织,机构,以及家庭,个人的安全数据传输等场合。

  • Tor客户端接入网络前首先需要连接到硬编码在程序里面的目录服务器,目录服务会返回给Tor用户多个中继服务器的地址和公钥。Tor客户端选择延迟最低的一个服务器作为第一个中中继服务器/OR1,并向OR1建立链接并协商共享会话密钥(share session key)ss1。
  • 随后客户端选择第二中继服务器OR1,并通过ss1加密数据并通过OR1发送数据到OR2,并根OR2协商会话密钥ss2
  • 同样的,重复上述过程通过ss2加密数据,再通过ss1加密数据,透过OR1和OR2跟OR3获取到ss3。
  • Tor客户端通过以上过程获取到了3个中继服务器OR1,OR2,OR3以及分别对应的密钥ss1,ss2,ss3,Tor客户端发送数据时依次使用ss3,ss2,ss1加密数据data_raw得到最终发送出去的加密数据data_encrypted。

data_encrypted=ss1(ss2(ss3(data_raw)))

data_encrypted会通过路径OR1,OR2,OR3传输,并且依次用ss1,ss2,ss3解密得到最终数据并发送给最终的目标。

由上述过程我们可以发现Tor存在着一些不足之处:

  • Tor 并不是一个去中心化的网络,而是一个分层网络。Tor 依赖一系列目录权威。该种权威是由靠近 Tor基金会的一群志愿者操作的中心化服务器。这种高度中心化导致 Tor 非常脆弱。若美国、德国或荷兰的目录权威被关闭,那就足以关闭十个目录权威服务器中的五个。这将导致 Tor 网络高度不稳定,新加入的中继与网络交互能力大幅降低
  • Tor 仅允许通过TCP进行通讯,基于Tor之上可以扩展的协议种类受到了很大限制,例如:VOIP业务,RTSP流媒体服务,都无法运行在Tor上面,因为VOIP业务很多情况下基于SIP协议,并需要通信双方协商协商收发媒体数据的UDP端口
  • Tor还是不够足够安全,对于女巫攻击者来说,只要伪造出足够多的中继节点,用户就有大概率连续选择到的3个中继节点都是女巫攻击伪造出来的节点,这会导致用户的所有的数据都会被解密

弥补Tor缺点,创新通信,隐形网I2P

I2P使用了单向隧道来进行通信,在I2P中客户端和服务器之间有两条通道,通道的数据方向分别是从客户端到服务器和从服务器到客户端。针对Tor目录服务器地址容易被攻击并且中心化的特点,I2P将网络当中的节点分为Floodfill和Nonfloodfill两种类型的节点。节点的初始身份为Nonfloodfill,,其中满足性能要求的节点会自适应称为Floodfill的节点,I2P系统根据Kademlia算法将所有的Floodfill节点给组织起来,形成I2P的网络数据库,以形成类似Tor网络当中的目录服务器的功能。

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

I2P拓扑结构如下图所示,每个节点根据256位路由值(router key)分布在逻辑环中,其中路由值通过SHA256算法对节点ID和当前日期计算获得。I2P通过异或2个节点的路由值来度量节点间的距离。每个节点会选择异或距离最近的节点上传RouterInfo和LeaseSet信息。因此节点每天都会由于日期改变而呈现不同的逻辑分布,并将信息上传至不同的Floodfill节点,以此抵御女巫攻击。

I2P的客户端和服务器均利用多跳单项加密隧道进行通信。节点初次加入网络时,通过官方补种网站(Reseed Website)进行补种,获取部分RouteInfo信息,并根据路由选择机制建立单向隧道。根据用途可以将探测隧道分为:

  • 探测隧道(exploratory tunnel):用于辅助构建、测试客户隧道、查询netDB中信息等
  • 客户隧道(client tunnel):用于应用服务,如Web浏览、聊天室、文件共享、邮件等
  • 根据传输方向可分为
    • 输入隧道(inbound tunnel)
    • 输出隧道(outbound tunnel

客户端和服务器在通信过程中分别建立各自的输入隧道和输出隧道。默认隧道长度为3跳。一次完整的通信过程需要4条隧道参与。客户端和服务器的数据先采用端到端加密,然后在客户端进行3次类似洋葱路由一样的加密后发送到其输出客户隧道网关(Gateway)节点,然后依次在各个节点上加密并转发到服务器,最终由服务器通过4次解密获得明文数据。多条隧道中的节点只知道前驱和后继节点的信息,从而隐藏通信双方关系,同时单向隧道通过增加通信节点的数量,提升了通信的匿名性。

I2P 还支持TCP和UDP的协议端口,这使得更多的协议可以基于I2P做传输。

I2P虽然解决了目录服务器中心化的问题,并且让监听的成本变得十分的高昂,但是同时I2P的路由跳转次数过多,大大增加的网络的延迟。I2P网络也没有完全解决女巫攻击的隐患,对手可以伪造出大量的中继节点,进而可以破坏用户隐私时间分析。Tor 和 I2P 的节点完全由志愿者提供支持,这些志愿者将自己的时间和资金用于节点操作,缺少必要的激励,志愿者的积极性将难以被调动起来。

SmartX的加密通讯方式

SmartX采用自定义的低延迟匿名协议SLLAP(SmartX Low Latency Anonymous Protocol),SLLAP融合了Tor和I2P的优缺点,将服务节点的公钥,以及其他在线客户端的公钥以及入口集合分别保存在DHT网络上,无论是服务节点,还是客户端都会有多个入口地址,但是这些入口地址都不是它们真正的IP地址,而是他们启动时通过跟网络当中的其他节点的通过类似Tor的方式建立的路由的某个终点。

SLLAP使用Kademlia的算法将网络当中的各个DHT节点维护起来,并且通过节点的公钥作为重要的参数,用该参数来进行节点之间距离的计算。与此同时,SLLAP尽量让整个DHT网络看上去时动态的,以避免出现类似Tor那样,由于目录服务器过于中心化而让攻击者可以集中攻击的风险发生。

同时,SmartX还提供了周期性的节点测试功能,让其自定义的SLLAP网络更具有安全性和健壮性。周期性的节点测试功能要测试以下几个测试项:

  • 带宽测试

带宽测试是最基本的测试项,每个新加入SmartX网络的节点都首先要经过带宽测试,若该节点经过了带宽测试,则意味着SmartX网络当中的其他节点认为该节点的带宽在封包路由的最小阀值之上。经过一段时间的运行,节点将会路由大量的消息,这些消息的交互过程构成每个节点带宽测试表的基础,基于该表,节点可以回复带宽测试测试当中其他服务节点的测试。

  • 消息存储测试

消息会存在于SmartX的服务节点,并保存一定的时间。缓存消息的机制对于SmartX来说十分重要,因为这意味着离线用户是否能如实收到消息。消息存储测试的目的是为了防止部分唯利是图的节点使用很低的配置来运行服务节点程序,并且不缓存消息内容。

  • 区块存储测试

SmartX的服务节点需要存储完整的区块,以便完成验证交易,锁定交易等重要的操作,诚信的服务节点应该永久保留区块链副本