MetaChain技术架构
MetaChain元链的构架分为两层, 顶层 (top layer) 和底层 (bottom layer) 。顶层由数百个验证节点组成,功能和其他的区块链一样。底层也被称为MetaChain元链层,由数百万个MetaChain DVPN组成。这些设备通过提供服务来获得信用通证MC,例如共享带宽,提供 VPN 服务与标准的 Nakamoto 共识协议不同,我们的信用证明 (PoC) 不使用工作量证明 (PoW),因此具有较低的能耗。我们的共识机制与权益证明 (PoS) 类似,但验证节点的投票权取决于押金和信用分数两个因素。一方面,顶层的安全性由底层设备的信用分数来保护。加入底层的设备越多,网络就越安全。另一方面,底层的设备收到的奖励 (MC通证) 将激励更多人参与元链分布式混合网络。这种闭环的形成将扩展并保护整个网络。
三叉戟协议
MetaChain元链 的隧道技术的核心是实现自由无障碍访问互联网,这是由三叉戟协议来实现的。互联网访问监查是对用户的上网流量进行全方位的监视和过滤 [22],依靠在核心网络和关键出口部署大量网络防火墙和离线分析设备来实现的。所以,为了介绍三叉戟协议的穿透性,我们先来回顾一下网络防火墙的工作原理。目前,网络防火墙从初级的基于端口的访问控制表模式已经进化到基于内容识别的智能模式。这个模式有以下诸多具体实现方法。前四个方法属于被动识别方法而第五个方法属于主动识别方法。部分防火墙可以同时利用其中几个方法对用户数据流进行应用类型识别,甚至结合贝叶斯 (Bayes’theorem) [45] 或判决树 [43] 等人工智能算法进行智能识别。
端口粗过滤
端口粗过滤是指根据目的端口判断其可能的应用类型的方法。互联网号码分配局 IANA[20] 是制定网络端口及其相应网络应用的机构。截止目前,端口 0 至端口 1024 已经基本分配完毕 [30]。通过网络端口,防火墙可以大概判断其可能运行的协议。比如 NFS 协议常用的目的端口是 2049,只要出现了该端口的流量,即使没有出现明显的内容特征,也可以大概判定其应用类型。
内容识别
内容识别是指根据用户数据流内容来识别其网络应用类型的方法。由于网络应用是依照提前制定的网络协议来完成的,用户数据流往往会具有某种的内容特征。比如 HTTP 常用数个命令(GET/POST 等) 都会出现在 TCP 协商完成的第一个数据包的最开始,并且第一个行总是以HTTP/X.X (使用的 HTTP 版本号) 结尾,防火墙就可以使用该特征判断出在任何目的端口上允许的 HTTP 协议。类似的,所有国际标准组织的制定标准协议都有明显的内容特征。对于一些非标准协议,其内容特征可能随版本的升级而发生改变,就需要防火墙也相应的定期更新自己的特征库才能跟上众多软件的特征变化。
数据包长度识别
据包长度识别是根据交互数据包的长度序列和分布来进行应用识别的方法。在用户数据流没有明显的内容特征时,这个方法非常实用。在网络协议的协商阶段,服务器和客户端之间发送的网络包长度往往存在着一定规律。假如一个网络协议在协商阶段规定:客户端要发送一个负载长度为60 字节的 TCP 数据包发起请求,服务器收到后需回复一个长度为 40 字节的数据包作为回复内容和一个长度在 20–30 字节之间的数据包作为另一个回复内容。那么这个网络协议就具有了一定数据包长度特征,这完全可以被防火墙加以利用并作为应用识别。为了躲过防火墙的这类识别,应用程序需要通过进行扰码或者加密等手段来打乱长度特征。
主动检测识别
主动检测识别是指防火墙作为中间人改动客户端发给服务器的数据包内容并根据服务器返回的数据包内容来进行应用识别的方法。比如恶意软件常用的 IRC[42] 控制通道虽然符合标准的 IRC 协议 (IETF 制定的网络聊天协议),但是往往却并不支持常用的 IRC 命令的简单变形。防火墙利用这一特征通过主动发送一些命令来测试服务器回复,从而识别该网络应用是正常的聊天应用还是恶意软件的控制通道。可以看出,主动检测识别和上面所述的被动方法完全不同。它使得防火墙不仅仅通过监听数据流内容来识别应用,更通过主动修改或主动发送数据包来主动检测。为了针对以上所有检测,三叉戟协议结合了两种隧道模式来阻止防火墙的检测:协议混淆模式和协议伪装模式。由于协议混淆模式无法被防火墙检测出任何特征,从而实现了突破网络干扰功能。但是在某些白名单系统下,凡是不能被识别的数据流同样遭到丢弃或屏蔽。此时,三叉戟协议将自动切换到协议伪装模式继续实现突破网络干扰功能。
协议混淆模式
协议混淆模式针对防火墙的各种检测手段作出相应的应对,使得防火墙无法识别出任何特征。此模式的工作方法如下:
a) 随机端口:随机协商端口作为数据流端口。
b) 加密内容:所有数据包内容全加密;保证无法用正则表达式 (regex) 抽取内容特征。
c) 混淆数据包长度:所有数据包长度都进行随机化处理。
d) 无定期保活数据包:数据包将自行携带保活数据;无明显的保活数据包独立存。
e) 防止主动检测:服务器丢弃任何非协议规范的数据包并拒绝响应。
协议伪装模式
协议伪装模式是指将流量特征伪装成其它常见协议的流量特征。例如可以伪装成以下两种常见的协议:
a) HTTP 协议:隧道协议被完全封装在一个“HTTP GET”和一个“HTTP POST”的消息体中。“GET Response”命令用于接收下行数据,而 POST 消息体用于发送上行数据。由于端口是客户端和服务器双方提前随机协商的,所有 HTTP 部分不会出现专有的字段名称等特征。
b) TLS 协议:此时利用的是 TLS 1.2 的 session ticket 功能,隧道流量就像是在使用已经协商好的 session ticket 的一个标准的 HTTPS 连接,由于没有经过协商阶段,防火墙也不能作为中间人进行解密/加密。AtomOS 在此后负载中也会全部使用和上述协议混淆模式类似的加密和防识别机制。