区块链技术往往被人们视为中心化系统痼疾的解决之道。在全球范围内,价值3500亿美元的区块链生态系统包含超过 1600 个项目,这些项目积极开发去中心化计算、存储和一系列应用,以实现去中心化的未来。但是,这些项目仍然建立在与以往相同的底层网络基础设施之上,即由以太网连接在一起的交换机和路由器构成的基础设施,而由于存在三大根本性的问题,这样的基础颇为薄弱。
第一个问题在于,当今的网络基础设施并不安全。原因就在于它依托于以太网,在过去 30 年间,以太网仅在带宽方面有所改进,其他方面只是原地踏步。以太网诞生于一个不关心隐私和安全的时代,当时人们的主要关注点在于连接能力,因此在设计中并未内置加密机制。这导致原始网络数据包暴露在外,允许互联网服务提供商和政府机构轻松窥伺和监视用户活动。遗憾的是,常见的网络安全协议在协议栈较高的几层中发挥作用(参见图 1,注意 TLS 和 SSL 均在 OSI 第 4 层及以上工作),在协议栈的第 2 层,以太网仍然不安全。因此这些安全协议无法保护整个网络数据包,致使网络流量易受流量模式分析和数据包注入等攻击的影响。
第二个问题在于,核心网络基础设施不够灵活且难以管理。构成网络的交换机、路由器和网桥均属于硬件式,购买、配置和维护成本高昂。如果要扩增网络容量,或者添加入侵检测与防范系统或负载平衡等新功能,往往就需要安装新的网络设备。即使升级现有设备也要花费相当大的开销,因为更新可能需要更改固件,在某些情况下,这种固件更改必须在现场完成。
最后一个问题在于,当前的网络基础设施是集中控制的。在任意给定区域,仅有少数实体(通常仅有一两家互联网服务提供商)作为所有互联网流量的网关。如果互联网服务提供商发生光纤断裂、设备故障,或者出于维护的目的而故意中断服务,所有用户都将无法正常访问互联网。由于互联网中断可能导致运营停顿或生产力停滞,因此企业受到的打击尤其严重。除此之外,对于缺乏网络中立性的国家/地区来说,由于区块链网络已经发展到相当的规模,这种垄断性控制将成为问题。截至 2018 年 2 月 1 日,以太坊的区块链数据目录大小为 669 GB,年增长率高达 416%。随着人们继续采用区块链,区块链流量很可能会成为互联网服务提供商的众矢之的。遗憾的是,尽管区块链生态系统中不断涌现出以实现日常所用服务去中心化为目标的新项目,但我们所描述的这种集中控制的基础设施却是区块链生态系统所依赖的平台(见图 2)。
为了应对这些挑战,我们拟定了 Marconi 协议,该协议可增强乃至取代现有的网络基础设施,允许任何网络充分享受去中心化的优势。Marconi 是一种网络和区块链协议,其设计向下延伸覆盖至 OSI 第 2 层,支持网络数据包的智能合约。Marconi 通过以下方式解决了现有挑战:
• 采用数据包级加密保护以太网。
• 通过智能数据包合约和可编程分支区块链增强现有网络基础设施,实现动态网络调整,以及新颖的安全和网络应用。
• 通过鼓励组建网状网络,让用户设备提供交换、路由和数据包处理功能,进而实现网络基础设施的去中心化。
为了说明 Marconi 协议的功能,我们在此提供了两个可基于该协议构建的示例应用。本文稍后部分将更详尽地描述该协议的组件和体系结构,还会介绍更多用例。
第一个示例应用针对旨快捷创建与启动新区块链网络的区块链项目。这可能是一个全新的项目,也可能是一个希望迁移到自有链的通证 (Token) 项目。更具体的例子是去中心化的加密货币兑换平台。与其他区块链平台类似,这种兑换平台可以使用智能合约,基于 Marconi 协议而构建,但它还有一个额外的优势,就是由其自有的通证支持的专用区块链。这是通过调用 Marconi 分支合约来创建可编程区块链实现的,该区块链提供更高的通证效用,并将性能与其他项目分离开来,从而提高交易吞吐量。另一个强大的优势是,去中心化的兑换平台可以利用智能数据包合约,提高网络的恢复能力和安全性。例如,世界上最大的加密货币兑换平台的许多用户的账户凭证近期失窃,而攻击方式就是涉及到含有 Unicode 字符的 URL 的网络钓鱼攻击。若能利用智能数据包合约来分析网络数据包,以捕获这些可疑的 URL,就有可能阻止此次攻击。智能数据包合约还能促进去中心化的网络管理,例如在网络节点之间重新路由数据包,以实现更好的负载平衡。最后,通过利用 Marconi 协议的去中心化网络基础设施,去中心化的加密货币兑换平台即可更好地保护自身,避免被迫关闭。
第二个示例应用针对安全现场网络。通过使用 Marconi 协议及其所依托的技术,这些网络可以在战场或救灾环境中快速部署,并将其通信流量历史存储在账本中,以便在网络退役后进行审计。在部署时,可以利用在每条数据链路上使用 Marconi 协议来实现 MAC 层安全性的有线或无线硬件,动态扩展网络。网络也可以视需要根据不同授权进行分段,确保仅有特定的通信流量类型才能在特定网段中发送。通过智能数据包合约,即可实施下一代防火墙和入侵防御系统,以防止恶意通信流量。由于具有去中心化的本质,这种网络具有容错能力,可自动重新配置,以应对意外停机的链路或节点。最后,可以使用机器学习技术对历史数据(包括来自相关人员所用物联网设备的传感器数据)进行事后分析,以了解网络是否遭遇入侵,并相应地予以优化,从而在未来实现更好的部署。
概述
利用 Marconi 协议定义的规则和提供的基元,对等节点可安全地连接和通信,从而构成和加入 Marconi 网络(这是一种全局构造,相当于网络的网络)。本章仅对于这些概念及其最新动态进行简单概述,这些不同的部件最终组合在一起,让与安全、网络和去中心化相关的强大应用能够捕获网络钓鱼尝试、混淆网络流量、轻松启动新区块链以及使任何网络去中心化。
1.Marconi 协议
如上文所述,Marconi 协议有助于实现安全的网络通信、灵活的网络基础设施和网状网络的构成。支持该协议的技术可分解为三个主要组件,在此仅作概述,后文将深入讨论。
• Marconi 管道。Marconi 管道可用作在对等节点之间传输网络流量的安全信道。该管道一直向下建立延伸覆盖至 OSI 模型的第 2 层,提供加密、路由和处理功能。它采用有线标准,使 Marconi 协议能覆盖现有互联网 基础设施。我们还有一个称为 Marconi 链路的扩展,专为采用蓝牙、Wi-Fi 和 U-NII无线电频段等无线标准支持可扩展的公用和专用网状网络而设计。
• 智能数据包合约。可以使用智能合约路由和处理网络数据包。此技术为智能去中心化网络应用提供许多用例,例如反网络钓鱼和反恶意软件防护、入侵检测与防御系统以及分布式虚拟专用网络。
• 分支链。从全局链分支,即可通过编程方式快速启动新区块链,其中每一个分支链都可以拥有自己的自定义规则,这些规则由一种称为分支合约的特殊智能合约指定。例如,如果一个区块链项目需要新建一个通证或将现有通证迁移到某个专用链,可以通过调用分支链实现。我们还使用分支链整理网状网络中的节点,使它们不再强烈依赖全局链。这种类型的分支链称为网状链。这些组件就是支撑 Marconi 网络的构建基块。
2.Marconi 网络
Marconi 网络能够在对等节点之间构成自主式网络,并在全球范围内将它们组织为网络的网络(见图 3)。对等节点可以是基础设施服务节点、基于互联网的计算设备或网络最终用户。Marconi 网络合约是这些对等节点之间的协议,定义交换的数据量、交换时长、将启用的智能数据包合约类型以及燃料价格。
个人、网络运营商和互联网服务提供商可通过为网络提供带宽或计算资源加入。节点定期接收称为 marco的网络通证,作为他们提供资源和处理网络流量的回报。Marco 是分布式网络和计算、使用网络而产生的燃料消耗量、管理以及智能合约处理的基本计量单位。
Marconi 网络可以与现有互联网基础设施互操作;它也自我维持,能通过形成直接对等连接促进构成无需硬件交换机、路由器和网桥的网状网络,避免使用现有的网络基础设施。在本质上,Marconi 网络支持且鼓励用户组装并安全地交换网络基础设施资源,用户的这些活动不受阻碍大规模建立、连接、运营和维护网络基础设施的传统方法在物理、资金和监管方面的限制。最终用户可以通过以下两种方式利用该网络访问互联网或获得附近的计算能力:购买 marco,或者操作某个贡献算力的节点,通过挖矿获取 marco。开发人员可以利用该网络创建和部署去中心化的智能网络应用,这些应用可由节点或最终用户运行。区块链项目、私立机构和企业可利用该网络及其所依托的平台管理基础设施并开发分布式智能网络和网络安全服务。
设计
1.网络协议
Marconi 网络协议由旨在保证网络对等节点安全无缝连接和协作的三个主要组件组成。它们分别是 Marconi管道、智能数据包合约以及 Marconi 链路。
1.1. Marconi 管道
Marconi 管道(又称 mPipe)是我们对虚拟化数据链路层的实现,为对等节点间传输网络流量提供信道或管道。这些管道是 Marconi 网络的基本构建基块,由于一直向下建立延伸覆盖至 OSI 模型的第 2 层(见图 4),能够实现自定义数据包的路由及处理、通过数据包级加密来提升安全性,以及轻松发现在同一本机媒介上传输流量的相邻对等节点等重要功能。
创建管道时,使用 Diffie-Hellman 交换创建三个共享机密(一个用于数据加密、一个用于实现数据完整性的校验和、一个用作种子)即可在两个对等节点间形成一个安全连接。每个对等节点都将该种子与截断为某个预定义粒度(比如一分钟)的当前时间相结合,用于获得随时间而变化的新种子。与基于时间的一次性密码 (TOTP) 非常相似,新种子又被用于根据当前时间间隔(见图 5)改变数据加密机密,帮助增强数据流抵御流量模式分析等攻击的能力。
我们使用对称密钥系统是出于性能方面的考虑。数据包将不断遍历许多管道,并且正如高级加密标准 (AES)中定义的那样,常见硬件的指令组中直接支持有用的加密操作。
由于 mPipe 在网络驱动器层运行,在上述加密和解密以及数据包级处理方面,它的性能非常高。这支持几个有趣的网络功能:
• 数据包中继。在该网络内,可在退到互联网或专用网之前,通过多个跃点中继数据包。与洋葱路由相似,这可增强隐私性且有助于防窥探,因为感知最终用户的只有网络边缘节点。
• 数据包的负载平衡。由于是在 OSI 第 2 层进行的连接,网络能够访问最多信息,所以可以轻松进行负载平衡,甚至可以根据需要使用各种不同的策略限制网络数据包以符合网络需求。
• 数据包检查。同样,由于该网络可以访问第 2 层以上的所有 OSI 层中的数据,所以它能够根据有效负载内容作决策。即使是在较高层加密的数据,域名和标头信息等相关元数据仍然可用。
1.2. 智能数据包合约
借助智能数据包合约,开发人员能够对网络数据包运行智能合约,以执行智能路由和数据包处理(见图 6)。Marconi 网络提供一个平台,在此平台上,开发人员可以使用智能数据包合约创建去中心化网络应用。
示例应用包括软件定义的网络 (SDN)、入侵检测与防御系统 (IDS/IPS)、反恶意软件和反病毒防护、内容分发网络 (CDN)、虚拟专业网络 (VPN) 以及新的区块链协议。
应用采用 Marconi 脚本编写,这是一种“图灵完备”的语言,能够访问网络数据包,向下编译为字节代码。在 Marconi 网络库中,我们还提供三层 API:用于影响路由和通信流的操作的控制 API、用于检查有效负载等操作的内容 API 以及用于模式分析和机器学习的智能 API。编写完成后,开发人员将应用部署到全局区块链,我们将在后文探讨这种区块链的结构。查看表 1,了解关于控制 API 的详细信息;查看图 7,了解如何使用该 API。
由于应用可能会通过虚拟机层对大量网络流量执行低级数据包处理,读者可能比较关心性能。幸运的是,可以通过对流量进行克隆和批处理,在关键路径以外的位置执行模式分析等重量级处理。对于高吞吐量的实时处理,我们将通过自定义硬件加速这一构想视作长期解决方案。
影响智能数据包合约设计的另一个重要目的是与这一领域中现有开源项目(例如,热门的网络入侵检测和入侵防御系统 Snort)的兼容性。我们希望能支持这些系统并确保开发人员能够在这些开源社区中轻松访问智能数据包合约开发模型。
1.3. Marconi 链路
Marconi 链路(又称 mLink)是我们的无线通信解决方案。通过这些链路可以实现网络节点之间安全的直接无线传输,其设计同样向下延伸覆盖至 OSI 模型第 2 层(见图 8),该层通过提供对网络数据包的访问启用智能数据包合约。
Marconi 链路也是网状网络的核心构建基块,网状网络可解决无线网络扩散等问题。读者可能曾遇到过这样的情况,例如,在尝试通过 Wi-Fi 连接到互联网时发现二十个不同的网络名称。通过 mLink,多个节点能够轻松加入同一网络,并且系统鼓励节点这样做,通过这样的方式,节点可以协作,更高效地传输数据,进而使网络范围扩大。
一个节点通过发现过程加入网状网络,在这个过程中,节点首先观察分贝水平以选择最合适的对等节点。然后再在负载最小的可用信道上,与那些对等节点一起构成 mLink。与 mPipe 类似,这需要 Diffie-Hellman交换才能确保节点间安全通信。
Marconi 链路利用 Marconi 无线驱动器(它兼容低成本硬件中继器以及蓝牙和 Wi-Fi 等现有无线标准),无需自定义设备即可实现每个设备 10 至 100 米的范围。希望使用自定义设备路径的用户可以利用相对较新的U-NII-3 无线电频段以每跃点数千米的范围发送信息,与无线互联网服务提供商相似。Marconi 无线驱动器还能通过为获得节点间最优连接进行信道协商,妥善处理无线网络拥塞问题。
1.4. 设计向下延伸覆盖至 OSI 第 2 层
生成网络应用时,开发人员有时习以为常地采用现在的互联网基础设施和拓扑结构。例如,常见的方法常常作出几个假设,例如持续连接互联网以及通过动态主机配置协议 (DHCP) 获取的 IP 地址。但在公用互联网范围外或略超出其边缘时,这些假设并不能始终适用,例如在无线对等网络中或者桥接专用网时。在这样的情况下必须考虑使用 OSI 第 2 层,例如,在对等节点发现这一过程中以及地址解析协议 (ARP) 等机制中。此外,为了完全实现真正去中心化的网络基础设施(其中各节点均可充当交换机、路由器或网桥)这一愿景,第 2 层设计成为一项必要条件。
Marconi 管道和 Marconi 链路等组件有权访问 OSI 第 2 层数据,所以它们可以观察 MAC 地址,以便更好地理解物理网络拓扑结构。从而,自定义路由技术在相同情况下的流量路由性能更佳。例如在图 9 中,如果节点 A 想向节点 G 发送数据,它可以通过节点 B、C、D 利用多个外向链路,从而尽量提高数据吞吐量和冗余度。这在无线网状网络中尤其有用,无线网状网络由连接能力不同的异构设备(如智能手机、无线接入点和无线中继器)组成,其中的物理链路随用户位置的变化而频繁更改。企业专用网等大型有线网络可能更青睐其他路径优化策略(例如开放最短路径优先 (OSPF) 协议中所用的路径优化策略),在这样的网络中,执行低级自定义路由的能力也非常有用。
1.5. 与互联网和 IP 路由的互操作性
为了确保 Marconi 协议得到广泛采用并充分实现去中心化的网络基础设施,需要能够兼容如今主要由基于IP 的路由提供支持的互联网。要获得这种兼容性,当 Marconi 协议与互联网连接时,通过使用标准 IP 和UDP 标头将 Marconi 管道虚拟化为基于 IP 的连接之上的一层覆盖,如图 10 所示。
这与 VPN 解决方案中常用的第 2 层隧道协议 (L2TP) 的概念非常相似。我们额外添加了一个承载自定义元数据的内部 Marconi 标头并控制数据包到达目标 Marconi 节点时使用的字段。这些虚拟化的 Marconi 管道仍然提供安全权益和智能数据包合约处理功能,并轻松与 OSI 第 2 层设计集成,以实现无线对等网络和桥接专用网络。这一层覆盖为现有互联网提高额外的隐私性、安全性和灵活性。
例如,为了增加隐私性和安全性,Marconi 网络中的节点可以使用增强的多层加密。这种多层加密使用之前与预期目标协商的密钥加密网络数据包,然后通过前面的节点间的跃点与各中间节点协商的密钥添加连续加密层。这种加密方式有两个好处。首先,只有预期目标才能加密和读取最终有效负载。其次,可通过利用多个中间节点实现流量混淆。在这一方案下,数据包是由原始发送端特别准备的,各中间节点只知道前一个数据包的源和下一个目标,因在各跃点处迭代地剥离嵌套加密层而不知道关于完整路由路径的任何其他信息。这也称为洋葱路由。
2.区块链协议
Marconi 网络将几个区块链用于网络的构成、管理和计量。网络的构成和管理需要在节点加入或离开网络时跟踪节点,而计量则是测量和记录各节点的带宽容量和贡献。我们使用由一个全局区块链和多个分支链的系统实现这一目的(见图 11)。分支链始终来自全局链,它们先分支,再于二次分支前同步回全局链。网状链是一种特殊的分支链,专用于构成网状网络。
2.1. 全局链
全局链使用耗内存的工作量证明 (memory-hard proof of work) 添加区块,Marconi 网络中的所有节点都可以向全局链贡献资源。使用耗内存的工作量证明是为了获得 ASIC 阻力,从而使现有加密货币挖掘社区能够在无需更改任何硬件设置的情况下开始挖掘。哈希算法的特殊选择与其余系统设计无关,而是独立作为一个实现细节,这样便可根据需要(例如,当可行的 ASIC 被开发时)相对轻松地更改特定算法。全局链的内容包括含节点公钥标识符的注册事务、marco 事务、智能数据包合约事务以及使分支链能够定期将聚合状态同步到全局链的检验指示事务。
2.2. 分支链
分支链是一种泛型构造,可通过它以编程方式创建连接到全局链并与之并行运行的新区块链。每一个分支链都有通过分支合约指定的自己的自定义规则。从而使分支链成为可通过多种有趣的方式使用的灵活基元。网状链就是这样的一个示例,网状链是一种分支链,它与已确定要绑定到一起形成一个网状网络的一组节点对应。这些节点通常(但不总是)位置临近。因此,可能存在许多不同的网状链,分为两类:公用(任何节点都可以贡献资源)和私用(例如,企业网络)。网状链的目的在于使网状网络脱离全局链,从而提高网络的可靠性和扩展性。
网状链从全局链卸载数据和通信开销,使网状网络中的节点常常能够避免与全局链交互。网状链的内容包括来自连接网状网络的节点的注册事务以及许多“网络元素证明”事务。网络元素证明是可通过密码进行验证的一些练习,网状网络中的节点不断地重复这些练习;这些练习涉及与相邻节点相互收发随机数以证明可用性和带宽。我们将在后文中详细介绍网络元素证明,现在只需要知道节点受到鼓励不断执行这样的练习。最后,网状链使用权益证明(而不是工作量证明)来添加区块,参与更多网络元素证明事务的网络节点权益更大。为网状链选择权益证明是为了提高事务吞吐量、降低对贡献资源的服务节点的计算能力要求。
为了连接网状链,节点必须先在全局链上注册其公钥和公钥哈希。这样,节点才能参与智能合约和 marco传输。接下来,节点需要确定要连接的网状网络。确定方式有两种:传播到相邻节点获取其 IP 地址,以及查询由所有网络节点维护的分布式哈希表 (DHT),这种分布式哈希表将网状网络 ID 映射到各网状网络内的IP 地址列表。已知这一信息,节点即可将自己注册到本地网状链上,这一注册事务需要周边节点签名,表明它们可以连接到新节点。
2.3. 网络元素证明
在此,我们的目的是设计一个去中心化的计量协议,它捕获网络节点随着时间推移的可用性和带宽并鼓励网络引导和网络的持续加入。我们运用的主要构造是被称为网络元素证明的一种练习,同一网状网络中的任何三个节点都同意加入,为此成功加入后,他们都将收到 marco。
节点 A 首先通过传播给相邻节点并测量它们的响应延迟来启动网络元素证明。延迟低通常会积累更多marco,因此,该节点选择 B 和 C 这两个距离最近的节点用于网络元素证明,在网状链上创建一个事务,建立列出所需对等节点的公钥哈希的智能合约。每一个对等节点都创建自己的事务以将签名添加到同一智能合约,通过这样的方式表明同意加入网络元素证明。一旦同意,这些节点相互之间便构成 mPipe。
然后,节点 A 生成随机数 n 并创建一个将 n 的哈希添加到新智能合约的事务。如图 12 中所示,节点 A 接下来使用其私钥加密 n 并将结果 EncryptA(n) 发送给节点 B。这个对等接收节点可通过使用 A 的公钥进行解密来验证该信息。然后 B 重复此过程,得出信息EncryptB(EncryptA(n)),将该信息发送给 C。节点 C 也重复此过程,将有效负载 EncryptC (EncryptB(EncryptA(n))) 发送回 A。最后,在更新现有智能合约的事务中,A 将此有效负载提交到网状链。Marconi 网络中的任何节点都可以使用 A、B、C 的公钥验证此有效负载。
请注意,启动一个单独的智能合约,将加密随机数发送给 C,C 将它发送给 B,B 再发送回 A,通过这样的方式,节点 A 可以同时参与反方向的网络元素证明。实际带宽或延迟可能因数据流方向而存在差异,这样做便可以对链路进行双向测量。
为了提供更高带宽,如果对等节点同意,节点则可使用更大的随机数。节点可以不断重复网络元素证明以不断获得 marco,并且这些完成的练习都是在网状链中进行的编码,因此经过一段时间后,它们会为各节点呈现一个相对准确的带宽和可用性视图。此外,可根据需要将网络元素证明练习的结果延迟上传到网状网络,因为是否立即上传并不太重要。无论是立即上传还是经过几个区块后再上传,都能轻松验证数据。由于这一异步属性,参与节点在等待网状链事务时不受阻止,从而可以通过向对等节点发送更多随机数继续独立取得进展。这一异步属性使对等节点间以及网状链中的数据总吞吐量非常大。
网状链有助于从全局链卸载数据,但它们自己却有可能因网络元素证明而变大。为了减缓这种情况,我们采用了几种技术,例如,截断陈旧度超过几个月的网状链数据(请回想一下,网状链的聚合状态是定期同步到全局链的)以及节点参与网络元素证明的时间仅为总时间的一小部分的采样方法。
3.网络管理
3.1. 网络参与者
加入 Marconi 网络的参与者通常有三类。第一类为节点操作员,他们运行向公用网状网络提供资源的一个或多个服务节点。这些节点执行由该操作员选择的功能,可能包括允许最终用户连接、处理网络流量、确认全局链或网状链上的区块、计量流量或桥接不同的网状子网。操作员可以选择向现有网状网络提供资源,或选择通过调用适当的分支合约来创建新网状链,生成作为全局区块链分支的新网状网络。
第二类为网络运营商,他们需要以特定方式协调一组节点。他们在生成新分支链的全局链上调用一个分支合约,例如,为了构成一个新的专用网状网络(见图 13)。此分支合约中还指定了特定于此分支链的规则,例如,为了通过软件定义网络提高网络效率或通过反网络钓鱼工具保护最终用户而规定启用哪些智能数据包合约的规则。示例网络运营商包括公司、本地 ISP 或创造自己的通证经济的新区块链协议。请注意,启动一个单独的智能合约,将加密随机数发送给 C,C 将它发送给 B,B 再发送回 A,通过这样的方式,节点 A 可以同时参与反方向的网络元素证明。实际带宽或延迟可能因数据流方向而存在差异,这样做便可以对链路进行双向测量。
为了提供更高带宽,如果对等节点同意,节点则可使用更大的随机数。节点可以不断重复网络元素证明以不断获得 marco,并且这些完成的练习都是在网状链中进行的编码,因此经过一段时间后,它们会为各节点呈现一个相对准确的带宽和可用性视图。此外,可根据需要将网络元素证明练习的结果延迟上传到网状网络,因为是否立即上传并不太重要。无论是立即上传还是经过几个区块后再上传,都能轻松验证数据。由于这一异步属性,参与节点在等待网状链事务时不受阻止,从而可以通过向对等节点发送更多随机数继续独立取得进展。这一异步属性使对等节点间以及网状链中的数据总吞吐量非常大。
网状链有助于从全局链卸载数据,但它们自己却有可能因网络元素证明而变大。为了减缓这种情况,我们采用了几种技术,例如,截断陈旧度超过几个月的网状链数据(请回想一下,网状链的聚合状态是定期同步到全局链的)以及节点参与网络元素证明的时间仅为总时间的一小部分的采样方法。
3.网络管理
3.1. 网络参与者
加入 Marconi 网络的参与者通常有三类。第一类为节点操作员,他们运行向公用网状网络提供资源的一个或多个服务节点。这些节点执行由该操作员选择的功能,可能包括允许最终用户连接、处理网络流量、确认全局链或网状链上的区块、计量流量或桥接不同的网状子网。操作员可以选择向现有网状网络提供资源,或选择通过调用适当的分支合约来创建新网状链,生成作为全局区块链分支的新网状网络。
第二类为网络运营商,他们需要以特定方式协调一组节点。他们在生成新分支链的全局链上调用一个分支合约,例如,为了构成一个新的专用网状网络(见图 13)。此分支合约中还指定了特定于此分支链的规则,例如,为了通过软件定义网络提高网络效率或通过反网络钓鱼工具保护最终用户而规定启用哪些智能数据包合约的规则。示例网络运营商包括公司、本地 ISP 或创造自己的通证经济的新区块链协议。
第三类为最终用户,如果获得授权,他们可能在任何时间连接公用或专用网状网络。连接公用网状网络时,用户选择加入他们选择的智能数据包合约;而在专用网状网络中,他们必须遵守该网络的规则。
3.2. 网络形成
我们来研究一个节点操作员想在现有网状链上建立新服务节点的案例,并以此为例来了解网络形成过程。新服务节点按顺序通过以下步骤加入 Marconi 网络:
1. 引导。新服务节点与少量引导节点建立联系。这些引导节点会跟踪 Marconi 网络中存储全局链数据副本的活动节点的子集,并利用与这些节点相关的元数据响应新服务节点。然后,新服务节点在此子集中查询随机节点样本并观察节点样本的响应延迟情况。新服务节点向少数响应最快的节点逐个请求对等节点列表。然后,新服务节点重复执行在这些列表中查询节点样本的过程,衡量节点样本延迟情况并获取对等节点列表,直到发现一些相邻节点,并将这些节点用作同步全局链数据的全局链对等节点。
2. 同步。新服务节点从对等节点下载数据,通过全局链来同步历史区块,同时开始在前向同步模式下监听新区块。
3. 注册。新服务节点向在全局链上注册公钥标识符的对等节点广播事务。
4. 发现。新服务节点向全局链对等节点查询与潜在网状链对等节点相关的元数据。与在引导步骤中查找对等节点的重复过程类似,新服务节点会观察向这些对等节点发送请求或从对等节点收到响应的延迟情况和带宽,并据此缩小潜在网状链对等节点的范围。找到最佳对等节点后,新节点会通过各自网状链中的对等节点同步网状链区块。
5. 协商。新服务节点在其所需的网状链上创建事务,建立智能合约,列出其所需的直接对等节点的公钥哈希。每一个对等节点都创建自己的事务以将签名添加到同一智能合约,通过这样的方式表明同意。
6. 设置。新服务节点使用 Diffie-Hellman 密钥交换算法构建共享密钥,从而与其每个直接对等节点形成mPipe。
7. 维护。新服务节点不断地与其直接对等节点执行网络元素证明。所有敏感通信会通过在上一步建立的 mPipe 发生。
如果节点仅挖掘全局链,而不对网状链做出贡献,步骤将更加简单。在这种情况下,只需要执行引导和同步步骤即可
3.3. PeerRank
Marconi 网络利用信誉系统来衡量节点和子网质量。它可以通过观察网络元素证明练习生成的结果,跟踪各节点在经过一段时间后的容量和可用性,从而根据与附近的对等节点相关的指标得出一个规范化分数。表现良好且与分数高的对等节点协作的节点本身的分数往往较高。这一称为 PeerRank 的加权系统得出网络节点和子网的堆栈级别,可用于各种情况,这一称为 PeerRank 的加权系统得出网络节点和子网的堆栈级别,可用于各种情况,例如在确定可以接受来自网络对等节点的新连接时仍能维持当前连接的节点。对于决定要连接哪些节点的用户而言,分数也是一个非常方便的信号。
根据各节点在相应网状链中记录的行为,将其 PeerRank 分数定期同步到全局链。这就将分数与公钥标识符关联起来,从而任何其他节点都可以观察并利用分数。
3.4. 降低网状网络的复杂度
Marconi 网络协议支持无线网络和对等网状网络。在这样的网络中管理节点间连接和确保高性能的流量路由可能比较困难,因为可能的连接数随 O(n2) 而增加,其中n为节点数。
例如,仅 A、B、C、D 四个节点的网状网络(见图 14)。假如节点 A 要向节点 D 发送数据,有多种可能的路径可供选择:AD、ABD、ACD、ABCD 和 ACBD。
为降低复杂性,我们将已知网络节点中的多个 OSI 第 2 层连接组合并绑定为一个含 OSI 第 3 层配置数据的虚拟网络接口,这与操作系统桥接多个物理网络接口控制器增加网络连接的容量和冗余度。这种绑定为节点、网络运营商以及编写智能数据包应用的开发人员降低了复杂性。还在丢失网络链路的情况下提供连接冗余和容错能力,并且由于它能将传出流量分布到多个路径而提高了吞吐量。
4.通证 (Token)
Marco 就是为 Marconi 网络提供支持的通证。这些效用通证可用于网络带宽,也可作为处理网络流量和运行智能合约的燃料使用。服务节点在确认区块或成功完成网络元素证明时接收 marco。在某些类型的网络操作中(例如,在网状链中权益累积,或创建一个启动新的专用网状链的事务),也需要 marco。
在 Marconi 网络中执行工作所需的 marco 数量由几个参数决定。可将其建模,构成函数 f (a, B, y, &),其中 a 是使用的带宽,B 表示提供的带宽的服务质量,Y表示执行的任何智能合约在计算和存储方面的复杂度,而&为客户设置的燃料价格。提供商接受该燃料价格时,执行工作;拒绝该燃料价格时,忽略工作。
与基于可采燃料的其他区块链类似,marco 的供应量最初将以较大速度增加,激励矿工引导网络,在共计十年后,增长速度减缓至最低水平(见图 15)。
应用
Marconi 网络及其智能数据包合约提供一个可靠的去中心化网络基础设施和平台,使开发人员能够生成强大的应用。本章将提供几个示例进行说明。我们也相信,开发者社区最终将设想并创建许多极具吸引力的应用。
1.区块链协议
1.1. 去中心化的网络基础设施
凭借分支合约和分支链,可在 Marconi 平台上开发和启动新的区块链协议,从而免费获得该平台的安全性和网络中立性等内置权益。并且,由于无代码更改,现有的区块链协议可利用 Marconi 网络增强并最终完全去中心化的网络基础设施,开始将该网络用于节点间通信。
1.2. 区块链迁移通证
与区块链协议相关的另一个有趣的应用能够将通证的实现迁移到自己的区块链。例如,如果按照 ERC20 等通用标准实现通证,则可轻松将其规则指定为分支合约(该合约创建源自全局链的新分支链)的基础,从而允许将通证迁移到自己在 Marconi 网络中运行的独立链。可以将账户余额状态聚合到此新分支链的一个创世区块中,从而打破对以太坊庞大的数据目录等任何之前的链数据的依赖。由于事务可以调用全局链上起源分支合约中的函数,所以将事务提交到这一新链即可在账户间传输通证。新链仍然定期检查聚合状态并将其传回全局链,例如,账户余额的快照被写入起源分支合约,以体现分支链中发生的情况。
2.安全性应用
2.1. 反网络钓鱼、反恶意软件和反病毒防护
无需安装任何特殊的软硬件,使用智能数据包合约,即可立即为最终用户甚至企业网络提供这种防护。这是可行的:如果未加密,分析数据包有效负载;否则,分析数据包标头、大小和数量以及域名。
常见的网络钓鱼策略涉及到构造一个具有误导性的 URL,它看上去很像用户信任的 URL,例如,将 ASCII字符替换为几乎一模一样的 Unicode 字符,然后注册得出的域名,并伪装新站点,使其与可信站点相似。检测此类具有误导性的 URL 非常简单,只需要几行智能数据包合约代码(请回顾图 7)。尽管一些最常用的浏览器和邮件客户端已实现反网络钓鱼防护,许多不那么常用或更基础的用户应用(例如短信)仍然仅将它作为一种事后补救措施,甚至是完全缺少这种防护。在 Marconi 平台的低级网络层解决此问题,只需一次,就不需要在每一个可能的用户程序的较高层重新实现同一解决方案多次。可以使用其他常见的反网络钓鱼技术(例如,已知不良站点和内容的数据库,或者对此类站点和内容进行了训练的机器学习模型)扩展 Marconi 实现。最后,凭借 Marconi 平台,开发人员能够获得 marco,将其用于去中心化应用(如果他们选择这样做);从而使 marco 可用于激励最终用户报告可疑的站点或内容。
2.2. 入侵检测和防御系统 (IDS/IPS)
在专用网络中,可利用监控来检测网络上的流量异常现象和恶意活动,通过通知管理员或主动阻止可疑数据包的方式防止来自内外部攻击者的攻击。
2.3. 虚拟专用网络(VPN 或 dVPN)
可将专用网络扩展到公用或共享网络上,通过身份验证防止未授权的访问,并通过流量加密和一个间接层来保护隐私。Marconi 链路对于那些需要强烈的混淆网络路径的用户尤其有用,因为跟踪无线跃点的难度远远大于跟踪有线跃点。无论是有线还是无线,用户都能通过在 OSI 第 2 层的低级加密获得额外的安全性。用户甚至可以轮流使用多个入口节点再退出节点,进一步混淆流量。
3.网络应用
3.1. 安全的现场网络
通过使用支持 Marconi 协议的同一技术,可以在战场或救灾环境中快速部署多个安全的现场网络,并将其通信流量历史存储在账本中,以便在网络退役后进行审计。
3.2. 物联网 (IoT) 设备管理
随着 IoT 设备数量和功能的增加,它们可支持的应用的数量也将增加,对设备之间安全通信的需求也将增长。通过 Marconi 及其智能数据包合约,这些设备可以安全正常地互操作,并根据需要配合以协作解决复杂问题,在分布式网格计算的现代变体中充分利用本地可用的硬件。Marconi 网络和 API 共同提供一个平台,将多个智能手机、工作站、甚至自动驾驶汽车中 GPU 的功能相结合,开发人员可直接利用这些功能使远近用户获益,这样,我们就可以获得从未见过的一类新应用。
3.3. 内容分发网络(CDN 或 dCDN)
可通过 Marconi 网络中的节点缓存大型或常用的互联网内容,将这些内容以更便捷的本地方式提供给消费者,从而更有效地利用带宽并改善延迟现象。此类内容的示例包括视频文件或者必须通过新挖掘节点同步的各常用区块链中的历史区块。这可以大大减少从头开始设置挖掘节点所需的时间。去中心化的点对点 CDN 对内容提供商也极具吸引力,因为初次启动分发网络无开销费用,维护网络硬件也不会产生任何后续费用。仅自己部署和提供内容会产生费用,流量计量功能已内置到 Marconi 网络中。
3.4. 软件定义网络 (SDN)
可通过分布式网络虚拟化来管理和控制计算机,通过这种方式可以从一个控制台对网络硬件进行动态的重新配置和重新编程,例如,启动新的节点用于负载平衡或流量整形。
安全
由于 Marconi 在底层解决了这些攻击,所以建立在 Marconi 上的新区块链协议也能获得相同的保护。
1.事务泛洪攻击
事务泛洪攻击可能会向全局链或某个分支链添加许多空操作事务或无用事务,试图凭借这些事务给网络造成巨大的负载,从而阻止正常事务的添加或处理。为了削弱这种攻击,Marconi 协议中大多数事务类型都需要少量保证金,仅在经过一段时间后或操作成功完成后才予以退还。例如,任何没有必备保证金的事务都将被立即拒绝,所以如果攻击者试图在较短的时间内生成许多个分支链,分支链数量将受到其可用资金的限制。在这些新创建的分支链中,如果没有任何节点注册并向它们贡献资源(此操作本身也需要保证金),用于创建分支链的保证金将被扣除(而非退还)。
2.数据包注入
将伪造的网络数据包注入 Marconi 网络比以往更难,因为节点间的每个跃点都凭借特定的对称密钥组合通过 mPipe 或 mLink 受到 OSI 第 2 层加密的单独保护。如果没有这些密钥,攻击者将无法解密数据,从而难以通过分析流量找出潜在的数据包注入点。也无法对他们构造的任何恶意数据包进行加密,因此,目标节点能够轻松将它们与可信数据包区分开来。
3.女巫攻击
Marconi 网络中防范女巫节点的第一道防线为费用。因为公钥注册和多数其他事务都需要保证金,所以攻击者可以构造的身份数量受到可用资金的限制。防范女巫节点的第二道防线为 PeerRank。诚实节点倾向于与其可信任的节点协作,这样可以获得更多marco,避免保证金被扣除以及自己的 PeerRank 分数被下调。例如,如果节点因网络元素证明练习而未能发送或接收可观的随机数,则不仅该节点及其对等节点收到的 marco 会减少,它们的 PeerRank 分数也将受到不良影响。
我们理应保护网络不受到非理性行为干扰。例如,一名操作员可以延长节点正常运行的时间以赢得信任,然后再突然开始做出一些不当行为。这样的行为可能会导致失去 marco,而如果他们继续使节点正常、良好地运行,将继续获得 marco。因此,理性参与者并不会对网络构成威胁,但防范非理性参与者依然任重道远。
4.量子攻击
通过量子计算机使用足够多的量子位,可入侵许多广泛使用的密码算法。虽然如今不太可能有这样的计算机,但在不久的将来可能会有。随着后量子密码技术的不断发展,Marconi 协议的开发人员对利用这样的技术强化系统非常感兴趣。
总结
我们提出了这样一个系统:通过它,可以使用网络数据包智能合约,还可以通过编程方式快速启动分支链和安全网络。我们首先介绍网络基础设施的现状,并提到其不安全、难以管理和控制集中的特点。我们还意识到许多现有的区块链项目、专用及本地网络、甚至更广泛的互联网本身都正在依赖这样问题重重的基础设施。我们通过改变看待、部署和使用网络基础设施的方式,对这一情况做出弥补:提供了一个设计向下延伸到 OSI 第 2 层的网络协议,这一协议具有可靠的安全性、性能和对等建网功能;提供了一个区块链,通过它进行不可靠的互操作以及网络资源交换并激励参与对这一个新网络的引导。最后,我们使开发人员能够在这一平台上生成新的分布式去中心化应用。
关于更多Marconi信息:https://marconi.org/