Trump的禁止令,墙了TikTok和微信,墙不了全球化分布式加密通信网络

影响:如果执法者泛化国家安全概念,滥用国家权利,公民和网民正常使用互联网的人权将不复存在。如果最坏的结果真的出现,谁来捍卫互联网的自由和平等?等下一届美国总统上台吗?这当然不现实,从哪里来就回哪里去,技术的问题还需技术手段来解决,在“隐秘的角落”里,“暗网”教会人们,也许构建全球化的分布式加密通信网络才是保卫网民权利的最后防线,可以用来帮助人们捍卫自由,对抗政治强权。说到加密通信网络不能不提两个协议:Tor (The Onion Router)和I2P (Invisible Internet project)。

图:“暗网”通信机制

事件:近日,美国总统特朗普签署两项新的行政命令。禁止美国人与TikTok和微信以及两个App的「中国所有者」展开相关的任何交易,行政命令将在45天后生效,也就是9月20日。媒体评论称,这也意味着TikTok和微信很可能无法出现在苹果AppStore和谷歌GooglePlay上。

Tor (The Onion Router),强大到设计者都无法销毁:2013年斯诺登的“棱镜门”事件曝光时,Tor浮出水面。斯诺登除了揭露美国中情局监听全球的计划外,还泄露了美国国家安全局(NSA)对于Tor的无奈。后者在一份题为《Tor糟透了》的文件中提到,NSA在企图摧毁Tor的过程中遭遇重重困难,“Tor臭名昭著,但它还可以变得更糟糕。我们永远不能做到随时把所有Tor的用户去匿名化”。

Tor与三重代理类似,Tor客户端首先与目录服务器连接获得全球活动的中继节点信息,然后再随机选择三个中继节点组成电路(circuit)。用户数据经过三个中继节点后最终到达目标网站服务器。为了防止流量分析和蜜罐节点,每隔10分钟左右会更换中继节点。

创建电路(即客户端和中继节点协商密钥)时,Tor使用图中上半部分的结构。传数据时使用图中下半部分的结构。

Alice为客户端节点,OR1和OR2为中继节点,website为要访问的服务器。

图:Tor数据单元

图:I2P节点选择示意图

3)Alice收到另一半参数gy1,构造出K1。

2)CMD: 命令,包括:

Create:洋葱代理发出建立一条新的电路命令

I2P对其他节点的测量主要考虑两个指标:速度(speed)和容量(capacity)。其中,一个节点的速度是指1min内通过包含该I2P节点的隧道可以发送或接收的数据量大小,通常用过去1min内通过该节点的隧道中3条最快隧道的平均带宽来表示;而容量则是指一段时间内某一节点成功参与建立的隧道数目,对某一个I2P节点容量的估计使用如下方式:假设函数cap用来表示一个节点一段时间内的容量值,则一个I2P节点p的当前容量估计值计算如下。

Created:目标节点对 Create命令的应答信息,用来响应Create

Tor和I2P潜在安全风险分析

Destroy:用来拆除一条虚电路

3)DATA: 存放数据

下半部结构:

1)CircID: 即电路id (circuit id)

3)Stream ID:数据流的身份标识,OP 可以将多个传输流复用到同一传输通道中

5)Len:转发数据的长度

6)CMD转发命令:

Relay Begin:用来打开一个流;

Relay Data:用来转发数据;

Relay End:用来彻底关闭一个流;

Relay Extend:用于将虚电路延伸一跳;

Relay Teardown:用来关闭一个故障数据流;

Relay Connected:通知 OP 转发已经成功开始;

Relay Sendme:用来拥塞控制时不再向下一个节点发送数据包;

Relay Drop:用来丢弃垃圾信息

网民也将不再受到网络流量监控的威胁,以全球化分布式安全通信网络为基础,目前已出现一批以App、Web站点、SDK功能组件为形态的功能应用。包括I2P-Messanger(即时聊天)、Syndie(博客)、PayEgis(加密通讯)、Susimail(邮件)、门罗币(加密货币)等均已得到广泛的应用。后续也必将有越来越多的应用和服务将架设在这样一个分布式加密网络上。

上半部结构:

泛洪攻击

6)OR2收到create单元,解密出gy2,返回gy2和H(gy2)给OR1。OR1加密后发给Alice。

建立电路和传输数据

图:Tor数据传输示意图

与Tor采用集中式目录服务器管理不同,I2P采用给予Kad的P2P架构,然而并不是每一个I2P节点都会成为Kad网络节点,I2P会从所有的网络节点中选出带宽较高的节点作为种子节点,称为FloodFill节点。FloodFill节点的数目约占I2P节点总数的6%,这些FloodFill节点彼此之间构成I2P的Kad网络,称为网络数据库(NetDB),其被实现为DHT。NetDB是使I2P分散化的特征之一。

4)Digest:端到端的完整性校验

Alice发送一个create单元给OR1,电路ID为C1。这个create单元包含“Alice和OR1密钥协商的参数gx1”。gx1被OR1的公钥加密。

7)DATA:数据

大蒜路由是一种构建路径或隧道的方式,I2P网络中的消息将通过该路径或隧道传播。当消息离开应用程序或客户端时,它将被加密为收件人的公共密钥。然后使用指定下一跳的指令对加密的消息进行加密。邮件以这种方式遍历每一跳,直到到达收件人为止。在邮件传输过程中,它与其他邮件捆绑在一起。这意味着在网络中传播的任何消息都可能包含许多捆绑在一起的其他消息。

4)Alice发送relay extend单元(利用K1加密)给OR1。Relay extend包含OR2的ip和“Alice和OR2的密钥协商参数gx2”。gx2被OR2的公钥加密。

7)Alice构造出协商密钥K2。

8)Alice发送relay begin单元(分别被K2和K1加密)给OR1,OR1解密后发给OR2,OR2解密后发给website。

在I2P网络中建立隧道,并不是随机地从所有路由节点中进行选择,每一个I2P节点都有一个自己对部分I2P网络的局部视图,并会维持其中对其他节点的性能测量值表,并根据该表对已知的I2P节点进行分类,然后在选择其中性能较高的节点建立隧道。

9)OR2和website完成TCP握手,返回relay connected单元(使用K2加密)。OR1继续加密后转发给Alice。

Tor的安全性

1)前向安全:Tor使用密钥协商机制来一跳一跳地扩展通信链路。由于发送者建立的通信链路可以随时改变,并定期更换会话密钥,所以 Tor 能够抵御重放攻击,数据安全性较高。

路由基础结构和匿名性

1)CircID: 即电路id (circuit id)。

2)低延时:传统的基于Mix的匿名通信系统使用随机时延、重排及流量填充技术。这些技术增加了计算量、占用大量带宽, Tor系统没有使用这些技术,因此具有较低的时延。

3)Tor允许多个应用共享一个虚电路

4)Tor网络提出了拥塞控制机制,分为数据流级拥塞控制和通道级拥塞控制。数据流级拥塞控制机制用于传输通道中某一个数据流的流量控制,通道级拥塞控制机制用于整个传输通道的流量控制

5)Tor系统采用了端到端的完整性检测机制(SHA1)

Tor的弱点

2)对于消息进行捆绑,通过分组交换,确定端到端消息传递的成功或失败;3)用于发布一些网络数据库NetDB条目,进行数据库维护。

如果攻击者控制了出口节点,那么他就可以很轻易地监听到用户的流量。

2)时间攻击的基本思想是寻找入口节点和出口节点之间数据包的时间相关性。作为低时延匿名系统,Tor 不使用数据包填充和随机延迟技术,因此消息间有很强的时间相关性。系统默认的路径长度是 3,如果第一个和最后一个节点合谋攻击,通告自己的下一跳和上一跳。通过判断是否相同就是判断是不是一条转发路径。

6)目录服务器:Tor使用一组高效,稳定的服务器来跟踪所有OR的状态变化信息,包括密钥,出口策略等,并且定期同步

3)Tor的节点都是由志愿者构成,虽然其中一般都是匿名的,然而这些节点也可以被轻易地替换。

4)MIT 的计算机科学家报告找到了新方法去匿名化Tor隐藏服务,通过对攻击者控制的 guard 节点的流量进行监视,观察数据包模式,新方法能以 88% 的正确率识别托管 Tor 隐藏服务的服务器。

I2P (Invisible Internet project)

隐形网,一种混和授权的匿名网络,可伸缩性强,具有自我组织与恢复能力。其上运行有多种不同的匿名安全程序,各程序可以自行决定匿名性、延迟、流量平衡而不用考虑混淆式路由网络的具体实现。它们的数据活动可以与现有的I2P用户的匿名数据相混合。目前可用的程序包括全部典型的Internet应用 – 匿名网页浏览(Eepproxy),匿名网站(Eepsite),匿名博客与内容聚合(Syndie),匿名聊天(通过IRC、Jabber、I2P-QTMessanger),匿名文件传输(I2PSnark,Robert),匿名文件分享(I2Phex, iMule),匿名电子邮件(I2PMail+susiMail),匿名新闻组,及其他开发中的程序(待补充:I2P部分原理和安全性介绍)。

I2P简介

数据包结构

I2P是一个封闭的网络,运行在互联网基础设施中(在这个范例中称为clearnet)。与vpn和Tor不同,它们本质上是“outproxy”网络,设计用于与Internet进行匿名和私有通信,I2P被设计为P2P网络。这意味着它与互联网几乎没有通信。它还意味着I2P中的每个节点都没有用Internet协议(IP)地址标识,而是用加密标识符标识。I2P网络中的节点可以是托管暗网服务的服务器(类似于Internet上的网站),也可以是访问由其他节点托管的服务器和服务的客户端。另一方面,Tor通过使用一组志愿者操作的中继服务器/节点来工作,这些服务器/节点允许人们私密安全地访问Internet。这意味着人们可以选择自愿作为网络中的中继节点,从而捐赠带宽。与Tor相比,I2P中的每个客户端/服务器自动成为一个中继节点。是否通过特定节点路由数据通常取决于带宽。由于I2P中没有Internet,因此网络由其自己的匿名站点和隐藏站点(称为eepsites)组成。这些仅存在于网络中,并且只有使用I2P的人员才能访问。使用标准Web服务器的服务(例如I2P Tunnel)可用于创建此类网站。

2)Relay: 表明单元类型为relay

I2P通过在客户端设备中安装I2P路由服务来工作。此路由器与其他设备上的I2P路由器创建临时、加密的单向连接。连接被称为单向连接,因为它们由出站隧道和入站隧道组成。在任何通信过程中,数据通过出站隧道离开客户端设备,并通过其入站隧道在其他设备上接收。这个数据库由一个自定义的Kademlia(简称Kad)风格的分布式哈希表(Distributed Hash Table,简称DHT)组成,其中包含路由器信息和目标信息。对于每个应用程序或客户机,I2P路由器都保留一个隧道对池。与网络数据库进行交互的探测隧道在路由器的所有用户之间共享。如果池中的隧道即将到期或该隧道不再可用,则路由器会创建一个新的隧道并将其添加到池中。重要的是,隧道每隔10分钟定期到期,因此需要经常刷新。这是I2P的安全措施之一,旨在防止长期存在的隧道成为匿名威胁。

I2P网络隧道机制

I2P通过隧道传输用户的网络流量。一条隧道是由一个或者多个I2P节点构成的单向加密连接,I2P网络中的每个节点都会维持一定数量的隧道,为将要进行的通信做准备。I2P网络中的隧道根据使用目的,可以分为探测隧道和客户隧道两类。探测隧道主要用于I2P网络中的节点信息维护;客户隧道则用于用户的匿名通信过程,如Web浏览、即时聊天等。下文中所指的隧道都是指客户隧道。根据传输方向,隧道又可以分为入站隧道和出站隧道。其中入站隧道用于接收消息,对传入的消息层层加密;而出站隧道用于发送消息,对传出的消息层层解密。

一次Alice和Bob之间完整的通信通常需要4条隧道的参数,即通信双方个需要一条输入客户隧道和输出客户隧道。如下图所示,Alice发出的消息通过自己的出站隧道发送到Bob的入站隧道,Bob接收到消息后,返回的消息通过自己的出站隧道传递给Alice的入站隧道,完成二者的消息交换。

I2P网络中每一条隧道的建立都需要用户从已知的众多I2P网络节点中进行选择,选择出性能较高的节点,并把选择的节点进行随机排序形成隧道中节点的顺序,在依次向各节点发送隧道建立请求,最后建成隧道。

I2P网络节点选择算法

Tor (The Onion Router)

高容量节点:容量值超过所有节点容量平均值的节点。

5)OR1收到relay extend单元后用K1解密。OR1将E(gx2)加入create单元,构造电路C2,并将create单元发给OR2。

高度节点:高容量节点中速度超过所有节点速度平均值的节点。

I2P中的大蒜路由主要包含三个不同的阶段:

标准节点:高速和高容量节点之外的其余节点。

Padding:用来填充数据包的信息

Relay Truncate:用于切断部分电路;

分布式网络数据库

要开始参与网络,路由器将安装NetDB的一部分。获得部分NetDB称为引导,是通过“重新播种”路由器进行的。默认情况下,路由器将通过查询一些自举域名来重新设置种子。当路由器成功建立与这些域之一的连接时,将建立传输层安全性(TLS)连接,路由器通过该连接下载NetDB的已签名部分副本。一旦路由器可以到达网络中的至少一个其他参与者,则路由器将查询自己没有的NetDB的其他部分。NetDB用以存储I2P网络中所有节点的信息,并向I2P节点提供信息存储和查询的功能。NetDB中主要存储两种类型的数据:

LeaseSet.:包含I2P网络中各种匿名服务指定的入站隧道入口信息。

2)OR1收到后使用私钥解密,协商出密钥K1(k1= gx1y1),回复created单元,created单元包含另一半参数gy1和H(K1)。

Floodfill Routers(泛洪路由器)

2020年之后的全球化叫做“数字迁徙”,不再受限于物理边界,人类全面走向数字文明。数字文明没有国界、跨时空,是真正的全球化。

专用路由器(称为泛洪路由器)负责存储NetDB。可自动或手动参与溢流池。当泛洪路由器的数量下降到某个阈值以下时,即当前网络中所有节点的6%,就会发生自动参与。发生这种情况时,将根据正常运行时间和带宽等条件选择一个节点作为泛洪路由器。应该注意的是,大约95%的泛洪路由器是自动的。NetDB以DHT格式存储在泛洪路由器中。向泛洪路由器请求一个资源,该资源被认为与该密钥最接近。为了获得更高的查找成功率,客户端可以迭代查找密钥。这意味着,如果初始查找请求失败,则从下一个最近的对等方继续查找。

Tor简介

Garlic Routing(大蒜路由器)

RouterInfo.:即I2P网络中各个节点的联系信息,包括IP地址、端口号和公钥等信息。

Tor和I2P的网络结构设计给了人们很多启发,以类Tor和I2P的加密通信协议为基础,构建全球分布的网络节点已成为现实。美国境内的业务和数据将不再只运行在美国本土或北美区域的服务器中,而是全球范围流转,任何一地的服务可访问,美国境内的服务都不会中断,用户损失的最多是几毫秒的网络中转时间,根本不会影响体验。

分类完成之后,根据不同的隧道需求,I2P节点会从不同类型的节点中进行选择,其中,客户隧道会优先从高速节点中进行选择,而探测隧道则会从高容量节点中进行选择。

近年来披露的文件显示,Tor已经成为美国国家安全局(以下简称“NSA”)等情报机构的重要目标,据相关资料显示如今已有十万Tor用户的身份泄漏。而I2P的匿名系统也严重依赖于Tor,同样受到安全威胁。I2P项目也没有特定的威胁模型,其面临的是常见的攻击并使用现有防御。总体而言,I2P的设计是由类似于Tor处理的威胁所致:攻击者可以在本地观察流量,但不能观察到通过网络的所有流量。并且假定所有密码原语的完整性。此外,仅允许攻击者控制网络中有限数量的对等方(假设参与NetDB的节点不超过20%,受恶意实体控制的节点总数不超过该百分比)。

通过单向隧道构建路由(分层加密);

女巫攻击(Sybil Attacks)女巫攻击是一种众所周知的匿名系统攻击,其中,恶意用户创建了多个身份,以增强对网络的控制。通过I2P网络进行这种攻击非常困难。这是因为网络中的参与者/客户在选择要与之交互的对等方时会评估对等方的性能,而不是使用随机样本。由于在同一主机上运行多个身份会影响这些实例中每个实例的性能,因此并行运行的其他身份的数量受到有效的限制,因为它们需要为每个实例提供足够的资源以被视为对等实体。这意味着恶意用户将需要大量资源来创建多个身份。

日蚀攻击(Eclipse Attacks)在日蚀攻击中,一组恶意节点和合谋节点安排一个好的节点只能与恶意节点通信。因此,恶意节点的联合欺骗好节点将其地址写入相邻的好节点列表。在女巫攻击中,单个恶意节点在网络中拥有大量的身份信息,以控制网络的某些部分。如果攻击者想将女巫攻击继续升级为日蚀攻击,则攻击者将尝试将恶意节点放置在战略路由路径中,以便所有流量都通过攻击者的节点。

暴力攻击通过主动观察网络在所有节点之间传递的消息并尝试关联消息及其路由,可以对I2P网络进行暴力攻击。由于网络中的所有对等节点都经常发送消息,因此这种攻击是微不足道的。攻击者可以发出大量数据(超过2GB),观察所有节点并缩小路由消息的节点的范围。因为路由器间的通信是经过加密和流式传输的,所以必须传输大量数据,即1,024字节数据与2,048字节数据是无法区分的。但是发动这种攻击非常困难,为了观察大量网络,必须是Internet服务提供商(ISP)或政府实体。

交叉攻击(Intersection Attacks)

交叉攻击涉及随时间观察网络和节点流失。为了缩小特定目标的范围,当通过网络传输消息时,将联机的对等点相交。从理论上讲,如果网络较小,则发动这种攻击是可能的,但对于较大的网络则不可行。

拒绝服务攻击

贪婪用户攻击:当用户消耗的资源远远超过他们愿意贡献的资源时,就会发生贪婪的用户攻击。I2P对这些攻击有很强的防御能力,因为默认情况下,网络中的用户是路由器,因此通过设计为网络做出贡献。

饥饿攻击

用户/节点可能会试图通过创建大量不向网络提供任何资源或服务的坏节点来发起饥饿攻击,从而导致现有对等点通过更大的网络数据库进行搜索,或请求超出所需数量的隧道。试图找到有用的节点可能很困难,因为它们与失败或加载的节点没有区别。然而I2P在设计上维护了所有对等点的配置文件,并试图识别和忽略性能不佳的节点,这使得这种攻击变得困难。

10)Alice收到后开始HTTP请求。请求数据双层加密后被层层解密,响应数据被层层加密。

在泛洪攻击中,恶意用户将大量消息发送到目标的入站隧道或整个网络。但是目标用户通过以下方法防御泛洪攻击:通过消息的内容检测到这一点,并且因此隧道的测试失败。识别无响应的隧道,忽略它们并建立新的隧道。选择限制通道可以接收的消息数量。

构建墙不住、封不了的全球化分布式安全通信网络