南斗玄,王 伟,延志伟,耿光刚
1. 中国科学院计算机网络信息中心, 北京 100190
2. 中国科学院大学, 北京 100049
3. 中国互联网络信息中心, 北京 100190
自 20 世纪 80年代诞生以来,互联网域名系统 (Domain Name System,DNS)始终被认为是互联网领域的关键基础设施,其初衷是高效、可靠地为互联网用户提供域名注册和解析服务。与此同时,当前互联网根域名系统面临诸多安全风险,主要归咎于其树状管理体系结构过于中心化,具体体现在根区数据管理权力集中、根服务器及镜像服务器分布失衡且可扩展性不足、安全事件监控和保障措施欠缺等。这些弊端的逐步显现对贯彻互联网开放、平等、自由的思想和我国国家网络主权理念造成了严重制约。
2016年,美国政府宣布放弃对互联网数字分配机构 (The Internet Assigned Numbers Authority,IANA)的直接控制[1],给包括我国在内的互联网后发国家平等参与互联网治理和捍卫网络空间主权带来契机,也给全球互联网带来了众多在发展方向和治理模式上的新思路。其中,谷歌公司提出通过在运行有根区副本的解析器上配置环回地址的方式来提供根区解析服务[2],以提升 DNS 根查询响应效率;开放根服务器网络[3](Open Root Server Network,ORSN)提出通过设立与 IANA 根系统平行的域名体系,以减少欧洲互联网社群对根系统的完全依赖;YETI[4]提出 IPv6 场景下的域名根服务器扩展方案,理论上可将根服务器数量由 13 个扩展至 25 个;CNNIC 参与提出全局逻辑根服务器方案[5](Universal Anycast Root Server,UARS),任何组织可在自治域内搭建属于自己的根服务器,使用任播技术提供对特定区域的根区解析服务;国家域名联盟方案[6],即国家各自运行根服务器维护国家地区顶级域名数据,国家之间可组成联盟根,进而形成自主开放的、与现有根系统平行的多根体系。
然而,上述几种方案都是在现有根域名体系在根服务器数量和性能上的改进方案,并没有从根本上摆脱对中心化根管理体系的依赖,网络空间主权安全风险依旧存在。为了实现去中心化、各方参与、平等开放、安全可靠的新型根域名管理体系,已有多种去中心化技术运用到根域名治理中。其中,区块链技术在近几年来掀起了又一轮创新热潮,给互联网治理模式扁平化带来新思路。
区块链技术是 P2P 网络、分布式系统、加密技术和数据库技术的融合产物。简单来讲,区块链是记录所有历史交易的列表,这些交易记录以区块为单位被打包上链,按序首尾连接,形成块链结构。系统中各节点根据角色权限的不同参与区块生成、验证、存储过程,根据场景特定的共识机制 (PoW、PoS、PBFT 等)对新区块的产生和上链过程达成一致[7]。在典型的区块链系统中,不存在传统系统架构中的中心节点,这也使得其能够在不可信的虚拟环境中,低成本地建立信任关系和协作模式,交易记录一旦被写入区块链,就很难被任何人篡改,并且能够被公开可溯源。另外,可编程的合约语言和可执行的基础设施扩展了区块链的复杂功能,能够自动化执行复杂的业务逻辑,进而满足更多实际场景的需要。
总之,区块链去中心化、信息难以篡改、可追溯、智能化等特点,吸引了众多技术开发人员和投资者的极大兴趣,开源社区持续活跃,创新项目迭代出新,并迅速成功应用于金融、供应链、溯源、版权保护等实际应用场景,其中也包括域名标识方面的创新性应用。
Namecoin[8]是第一个实现去中心化的域名系统,其设计初衷是做一种可以替代 DNS 的、能够提供域名管理和解析服务的公有链,其基本思想就是秉持区块链的去中心化思想,以分布式的方式维护域名数据,同时能够将域名作为资产自由交易。
Blockstack[9]注意到 Namecoin 节点活跃度低带来的安全性问题,直接建立在比特币区块链系统之上以避免51%攻击。Blockstack 将域名数据嵌入到比特币交易记录的特殊字段中,借助比特币区块链的网络环境作为安全性的保障,节点收到新区块中对其中的域名信息进行识别解析,实现了在宿主区块链上建立一条虚拟的域名数据链。
Handshake[10]是一种基于 UTXO 模型的公有链方案,其关键点不在于完全颠覆现有 DNS 体系,而是替代体系中完全可信的注册机构,使用去中心化的信任锚来证明域所有权。信任锚由去中心化的区块链和激励机制组成,优化权利下放,协调域名和证书之间的关联共识,不再依赖于单个可信赖的机构,网络中每一个全节点都是存放有根区文件的根服务器。Handshake 为与现有 DNS 兼容,将现有根区文件中的所有条目都已在创世块中注册,相同的根区域将分布在形成的创世块节点上。总之,Handshake 在目前高度中心化的域名管理体系中找到了一个突破点,将中心化的根区数据管理模式融入区块链技术,降低信任成本,提升系统效率。
上述三种方案均是域名场景下的区块链应用的创新性尝试,为互联网共同治理开辟了新思路和新视野。本文将融合上述三类区块链域名服务的思路,在兼容当前 DNS 业务逻辑的前提下,提出一种无中心化、各参与方共同治理的新型根域名管理架构模型。
本文提出基于区块链技术的根域名管理架构模型——超根链,其不再存在一个中心化的域名管理角色,而是由现有 DNS 体系中的顶级域注册局共同组成一个对等网络,能够共同维护根区域名数据;发挥节点权威性和联盟链优势,采用“DPoS+BFT”混合共识机制实现根区域名数据的高度一致性。超根链总体架构图如图1 所示。
该模型为三层架构,从上至下依次是智能接口层、区块链层、存储层。智能接口层描述通过调用智能合约实现域名数据自动化管理操作,并对外提供API/ABI 接口;区块链层描述链上节点、区块结构、混合共识机制、区块同步方式等细节,共同为域名数据一致性提供保障;基础设施层描述系统底层网络和底层存储细节。
智能接口层通过调用预先设置好的智能合约来实现对域名信息的自动化管理,为上层应用提供规范的接口,同时也增强了系统隔离性。智能合约的概念首次由 Nick Szabo 于 1994年提出[11],他创造性地提出了智能合约就是执行合约条款的可计算交易协议。区块链因为引入了智能合约概念才使得区块链技术不仅仅是数字货币,通过部署和运行智能合约能实现在区块链上实现复杂的业务逻辑和自动化管理。作为互联网核心基础设施,域名服务主要分为域名管理和域名解析。接口层主要实现其中的域名管理功能,包括注册、注销、续费、转让等。将一系列的域名操作封装成不同智能合约代码部署到区块链中,链上权威节点只需通过调用合约代码执行域名服务功能,实现系统数据管理的自动化和安全性。
图1 总体结构图Fig.1 Overall framework
区块链层是超根链的关键核心部分。目前,DNS中的顶级域名分为两类,即通用顶级域名 (Generic Top-Level Domains,gTLDs,包括 New gTLDs)和国家地区顶级域名 (Country Code Top-Level Domains,ccTLDs)。其中 gTLDs 大多由国际商业性的注册局从ICANN获得授权后负责分配和管理域名数据,并以此作为一种盈利手段。相比之下,ccTLDs 数据则由相应的国家地区相关机构负责分配和管理,是一种数字资产以及国家主权的象征,可根据地方法律法规制定具有差异的标准和规则,因此 ccTLDs 的管理模式与gTLDs 有本质上的区别,全球统一管理的难度较大。因此,本文中的超根链主要针对管理模式较为统一的 gTLDs,借鉴目前公链项目中的主流共识算法,采用动态自适应的区块同步方式,实现 gTLDs 的高效数据同步和管理。
2.3.1 节点角色
超根链中的节点角色主要有域名管理机构、管理委员会节点、链上递归节点三种,考虑到网络规模以及灵活性,各节点在底层 P2P 网络通过基于 DHT 的Kademlia 协议[12]实现节点发现和消息路由。
域名管理机构,由当前域名系统中 gTLD 注册局 (如VeriSign)担任,负责将一段时间内本域中发生的每一次域名管理操作记录以一笔交易的形式提交至缓冲池。此外,注册局作为链上节点,能够实时同步系统中已经被确认的区块,顺序执行新区块中的每一条域名操作记录,更新本地全局域名信息状态,维护最新的全局区文件,为本域内的用户提供有效可靠的域名解析服务。此外,gTLD 注册局能够参与超根链系统的共识过程,包括选举矿工节点、验证确认新区块等。
管理委员会节点,由各域名管理机构共同选举担任,负责节点管理事件和安全应急事件的发起者,但并不具有决策权利。超根链虽然能够实现域名数据管理的自治,但是类似新顶级域加入时的审查等事宜超出区块链技术本身的能力范围,需要带外机制决议后才能上链,随后由管理委员会作为线下与线上的接口发起相对应的合约执行共同的决议。管理委员会节点需要具有强可靠性,而且不需要参与到数据共识过程,可采用离线模式定时地提供管理协调服务。
链上递归节点,由具有提供递归服务能力的商业机构担任,与域名管理机构具有相似的解析服务功能,实时同步链上数据,直接为用户提供解析服务,但不参与共识过程。
2.3.2 区块结构
截至 2018年第四季度,全球顶级域名注册量达到 3.487 亿,其中 .com和.net 域名注册量共约 1.53 亿,并以 4% 的速度持续增长[13]。如此庞大的域名规模以及区块链本身的异步延迟特性,使得直接在链上实现域名解析很难满足服务需求。因此,超根链将基于账户模型,以每一条域名操作记录作为基本单位填入区块。各节点通过按序执行链上区块中的每一条操作记录,在本地维护全局域名信息状态和系统状态。
另外,每个区块头部中都包含当前全局状态摘要,即由 MPT (Merkle Patricia Tree)[14]生成的四个状态树根,分别维护着在此区块高度时的节点状态信息、域名状态信息、每一轮共识状态信息和触发事件状态信息。
2.3.3 “DPoS+BFT”共识机制
共识机制是区块链系统的核心环节,各类区块链系统需根据节点权限和业务逻辑选择最合适的共识机制。目前成熟的区块链系统的共识机制主要分为两类,以工作量证明 (Proof of Work,PoW)为代表的中本聪协议系列[15]和以实用拜占庭容错 (Practical Byzantine Fault Tolerance,PBFT)为代表的拜占庭容错 (Byzantine Fault Tolerance,BFT)系列[16]。前者通常用于公有链,具有节点权限较低、存在分叉问题的特点,而后者通常用于联盟链场景,具有节点权威、对区块一致性要求较高、无分叉的特点。超根链中节点主要由全球域名管理机构担任,地理分布范围较广,但是具有较高的权威性,进而使超根链融合有公有链和联盟链的特点。此外,通用顶级域名注册局具有商业性质,通过竞争获得打包权以获取相应比例的收益。因此,超根链的共识机制考虑采用授权权益证明 (Delegated Proof of Stake,DPoS)确定每一个出块周期的矿工节点,融合BFT对矿工产生的新区块立即确认以防止分叉,以此保障域名数据的高度一致性。
超根链的共识过程分为矿工选择和区块确认。如图2 所示。
(1)矿工选择
超根链采用 DPoS 共识选择矿工节点,每一轮各共识节点使用权益投票,选出得票最多的K个候选矿工,则本轮中由此 K 个候选矿工按序打包区块,具体算法如下。
图2 共识过程Fig.2 Consensus process
各注册局持有权益设定的合理性将影响整个区块链的系统安全性和收益公平性。因此,超根链仍从gTLD 的盈利性质出发,将持有资金和域名数量按照一定比例融合成相应的指数,以此作为各注册局在选举矿工节点时的投票权益。
(2)区块确认
超根链在区块确认的过程中通过 BFT 共识提升一致性和安全性,也加速了区块确认效率。主节点将打包后的新区块广播到其他 N-1 个候选节点,候选节点对新区块进行验证和确认后向主节点反馈确认消息;若主节点收到至少 2/3×N 个确认消息,则该区块完成验证并立即进入不可逆状态,再次向所有节点广播验证后新区块。
矿工节点在被选择后必须在规定时间内对记录池中的记录进行打包,其他等待验证的节点如果在规定时间内没有收到区块,则该矿工将被跳过。
DPoS 共识机制的节点出块顺序在每一轮的开始已被提前确定,节点间按序出块而非竞争出块。此外,新区块需被立即确认的方式,同样使其难以出现分叉的问题。如图3 所示,超根链“DPoS+BFT”共识状态机。
之间高效可靠的区块同步显得尤为重要,超根链将采用自适应的 Simple 同步方式和 Bulk 同步方式,其中 Bulk 同步是以 32 个区块为一组进行快速同步。
图3 DPoS +BFT 共识状态机Fig.3 DPoS+BFT consensus state mechine
当本地节点从邻居节点接收到的区块高度大于本地尾端区块的高度时,若区块高度差大于 32,则先进行 Bulk 同步,否则依次进行 Simple 同步。Bulk 同步首先由本地节点向其他 N 个邻居节点发出带有本地区块高度的 Bulk 请求,N 个邻居节点请求信息响应本地节点需要的 32 个区块头信息(Bulk头),本地节点接收到 N/2 个相同 Bulk 头后向响应节点请求 32 个区块数据,接收后验证并放入缓冲池,等待继续同步。
两种方式详细流程图如图4、图5 所示。
区块链系统中一笔交易从发出到被最终确认的过程中,性能瓶颈主要在于节点发现与连接的网络延迟与执行交易时的本地数据库 I/O。超根链借鉴以太坊 (Ethereum)底层点到点网络特性,采用 Kademlia 协议作为节点发现机制,能够通过异或 (XOR)算法作为距离度量,以树形结构重构网络拓扑,最终将搜索复杂度降低至 O (logN)数量级,极大提高路由效率。随后,本地节点根据计算得到的距离列表,基于 TCP 连接与对等节点进行密钥和协议握手,最终将对等节点加入本地连接列表中后进行数据交换。
区块链系统的存储需求主要体现在快速的查询功能以及区块同步过程中的写多读少场景,因此主流区块链项目大多采用基于 LSM 结构的本地型数据库 LevelDB[17],具有键值型、写友好、轻量嵌入式、持久化存储等特点。超根链采用基于 LevelDB 的RocksDB[18],继承 LevelDB 的特性之外还加入多线程和列族特性,支持写操作与结构调整操作的并发效率,支持类似分表的扩展功能,带来存储性能提升的空间。
图6 是现有根区域名管理解析体系与超根链管理解析模型对比图。
图4 Simple 同步方式流程Fig.4 Simple synchronization process
图5 Bulk 同步方式流程Fig.5 Bulk synchronization process
现有根区域名管理体系中,顶级域的解析服务器或顶级域信息变更均需先提交中心化组织,变更后的根区文件授权给商业机构部署到全球十余台根服务器,单点风险和权力滥用隐患明显。相比之下,超根链的设计原则是尽可能保证与现有 DNS 体系兼容,集中当前根区管理权力集中的痛点,利用区块链的去中心化特性实现顶级域管理机构平等共治的治理模式。因此仍然保留现有体系中注册局的权威角色,区块链网络中的节点均保存有全量的根区域名数据,用户可选择任一节点作为域名解析起点,即超根链成为域名解析的“根”,而解析逻辑没有做出较大改变。另外,作为过渡措施,可融合现有体系中的根区数据作为补充数据来为用户提供高可用的解析服务。
图6 现有根区域名体系与超根链体系对比Fig.6 Comparison with existing root zone name system
与前文介绍的 Namecoin、Blockstack、Handshake 三个公有链项目不同,超根链采用联盟链的方式实现部分去中心化的域名管理架构。一方面,数十年的中心化域名管理体系需要缓慢过渡,包括当前体系中的角色与业务逻辑,因此超根链保留现有 DNS 体系中 gTLD 注册局的商业性,组成具有节点准入机制的区块链网络;另一方面,区块链技术仍不成熟,不能够完全依靠链上管理解决复杂的域名管理逻辑,例如新顶级域的申请加入等,因此链上管理为主、带外机制为辅的模式应是目前国际环境下较为恰当的方案。
域名系统对域名解析有严格的时间要求,需要高并发并达到毫秒级响应时间,对域名注册、更新等操作时延要求相对较低。目前,DNS 解析响应时间为 0.2 毫秒到 3 毫秒,而 Namecoin 域名查询需向链上多个节点发送请求,根据各节点返回信息决策解析结果,响应时间为 400 毫秒到 500 毫秒,远超中心化解析服务。在域名数据更新方面,现有 DNS 体系大约需要几十秒到数小时,而 Namecoin 域名注册需要等待 12 个区块确认 (约 2 小时),Blockstack 的性能更是完全依赖于比特币性能,需要等待 6 个区块确认 (约 1 小时)。因此,区块链域名系统基本能满足更新需要,但并发度不够。
而超根链的解析流程与当前体系相似,用户仅需将解析服务器配置为本域内的链上注册局节点或链上递归节点的地址标识,因此理论上查询响应时间能够满足要求。域名数据更新方面,超根链采用 DPoS 共识缩小共识节点范围以提升共识效率,采用 BFT 共识保证新区块立即确认以加快最终确认速度且几乎不会分叉[19],因此理论上数据更新响应时间约为一个区块周期时间。
目前公有链域名系统大多基于 PoW 共识机制,如果系统本身的兼容性和可用性欠缺导致用户活跃度降低,51% 攻击风险将给系统稳定性带来巨大挑战。首先,超根链具有强准入机制,由线下实体机构负责运行维护;其次,所选用的共识机制平衡了各节点的出块权利,也加大了集体作恶的难度;另外,设置委员会节点角色提供线上与线下的安全应急事件通道,当线上安全事件发生或接收到恶意节点举报后,能够迅速将线下安全解决方案以智能合约的方式上链,组织超根链系统故障排查与修复。
超链根基于具有节点准入机制的联盟链思想,部分去中心化的特点使其仍需权威第三方提供身份认证功能,因此仍存在一定的单点故障风险和私钥泄露风险。区块链记录的数据虽然难以篡改,但不能保证数据在上链前的真实性,这也是区块链技术在实际应用场景中落地的痛点之一。此外,由于区块链将成为域名系统信任锚点,系统安全将建立在区块链内生安全的基础上,包括生态应用安全、智能合约安全、共识机制安全以及底层基础组件安全等,因此对区块链生态体系、安全审计、隐私保护等技术领域仍需进一步探索[20]。
本文设计了一种基于区块链的根域名管理架构模型,该模型的创新点主要体现在:聚焦当 DNS 根域名管理体系过于中心化的痛点,利用区块链作为去中心化工具,使域名管理结构扁平化;分析 gTLDs 与 ccTLDs 的本质差异,保留 gTLDs 的商业性质,采用 DPoS 共识缩小共识范围,采用 BFT 提升区块确认效率;加入管理委员会节点角色,构成链上共治与带外审查相结合的完整体系;链上区块仅存储域名操作记录,仍采用在本地维护区文件的方式为用户提供解析服务,与现有 DNS 解析体系兼容,具有一定的技术过渡性。今后的工作将聚焦于超根链核心模块的实现,并从多个角度对其性能进行测试。