基于CNWW3区块链网络的域名体系

2019-10-18 09:15李东云吴先锋
网络安全与数据管理 2019年10期
关键词:域名合约服务器

李东云,白 杰,吴先锋

(傲为信息技术(江苏)有限公司,江苏 南京 210000)

0 引言

域名系统[1](Domain Name System,DNS)是现有Web2.0时代互联网最基础的服务之一,其提供了将域名解析为真实IP地址的功能,如将www.baidu.com的域名解析为机器可识别的IP地址:180.101.49.12。同时,DNS也是其他重要的互联网服务的域名和信息核心内容目录,提供维护、查询、校验等功能,如邮件服务中的邮件交换器记录(Mail Exchanger Record,MX records),发送验证标准中的域名密钥识别邮件标准(Domain Keys Identified Mail,DKIM),发信者策略架构(Sender Policy Framework,SPF),基于域名的消息验证报告和一致性标准(Domain-based Message Authentication,Reporting & Conformance,DMARC),域名所有权验证的TXT记录(Text record,TXT),甚至是安全外壳公钥指纹记录(Secure Shell Fingerprints,SSHFP[2])。目前一些智能DNS服务,如阿里云、AWS等,可以灵活地根据客户端的情况返回对应的解析IP地址,从而提高客户端应用的性能和可靠性。

DNS作为互联网服务的基础目录数据服务,提供了域名解析、安全验证、服务查询等一系列功能,目前的各种网络服务,如网站、邮件、导航、支付等,都依赖于DNS系统提供的相应服务。

1 DNS的工作机制

当用户使用浏览器/应用访问一个域名,如www.baidu.com,系统会遵循一系列的步骤进行相应域名解析工作,将该域名转化为机器可识别的IP地址。图1为域名服务的一个基本流程图。

图1 DNS域名服务基本流程图

相应的步骤如下:

(1)请求信息

当用户尝试访问特定域名时,系统会首先从本地的DNS缓存(Cache)中查询该域名对应的地址是否已经有缓存(且未过期),如果有的话,则直接使用缓存进行后续的网络通信,否则将发起域名解析请求。

(2)请求网络服务供应商(Resolver——域名解析服务器)进行域名解析

如用户本地无DNS缓存,系统将向其网络服务供应商(ISP)提供的域名解析服务器(Resolver)进行递归解析。同样地,这些解析服务器也会有相应的DNS缓存,大部分的解析请求都会通过已有的缓存结果直接返回给用户系统。在实际网络中,多个ISP往往会共用相同的域名解析服务器。但是也有一些公司和机构,会维护自有的解析服务器,同时也对外提供服务,如谷歌公共DNS(Google Public DNS)、OpenDNS等。

(3)查询根域名服务器

如果遍历ISP对应的域名解析服务也无法获取到对应的域名信息,则该解析请求会被域名解析服务器向根域名服务器请求对应的域名信息。目前全球有13个根域名服务器,997个服务实例接受该类型的服务[3]。根域名服务器并不会直接向域名解析服务器返回对应的域名信息,而是将根据请求的域名信息,将请求转向对应的顶级域名服务器(Top-Level Domain name servers,TLD)[4],如.com、.cn等TLD域名服务器。

(4)查询TLD服务器

根域名服务器根据请求的域名信息,将该请求转向对应的顶级域名服务器——TLD,每一个TLD,比如.com、.cn等,均拥有一系列的服务器提供对应的查询服务。但是和根域名服务器类似,其并没有真正对应域名的详细信息,而是作为代理服务器,将用户的请求转向该域名对应的权威域名服务器。

(5)查询权威域名服务器

TLD服务器根据请求内容(如二级域名信息),将请求查询转向负责此特定域的权威域名服务器。这些权威名称服务器知晓请求域名的所有信息,这些信息存储在自身的DNS记录中。有许多类型的记录,每个记录包含不同类型的信息,如IP地址。因此权威名称服务器查询并返回对应的IP地址记录(A记录)。某些权威域名服务器会有一些智能化的处理,可以分析传入的DNS查询并返回对发起查询的请求更高效的响应,从而提高客户端的可靠性和效率。

(6)解析域名记录

域名解析服务器从权威域名服务器处获取到了请求对应的信息,会根据信息的有效时间(Time-to-Live,TTL)将其缓存在本地,在TTL超时之前,如有其相同域名的解析请求,则会直接返回缓存的信息。同时,域名解析服务器在超时之前,也可以通过主动刷新的机制,重复步骤(3)~(5)更新本地的缓存信息。

(7)返回域名信息

域名解析服务器将解析信息返回给用户系统后,用户系统会将该信息缓存并使用其结果进行相应的应用和服务通信,在TTL超时之前,如用户系统再次请求相同的域名服务,则无需向域名解析服务器进行请求,直接使用本地缓存即可。需要注意的是,用户系统在用户没有请求的时候,即便缓存已经超时,也不会主动进行解析信息刷新。

2 DNS的问题

DNS作为一个有着几十年历史的互联网基础服务,有着非常多的优点,也随着技术和网络的进步,有着显著的升级和改进,但是一些深层次的问题并没有得到根本的改变,其自身存在着一些最基本的问题。

(1)中心化多层级系统问题

作为互联网基础性的支持架构,DNS的根域名服务器实质上是由ICANN[5]——一个非盈利性组织所控制的,同时,该组织本质上可由美国政府完全控制。因此,这一方式对于参与和提供网络服务的各方而言,都存在极大的风险——被ICANN进行限制和屏蔽。同时,DNS作为一个多层级依赖的系统,在中间某个层级出现故障或受到攻击时(如DDOS攻击),存在整个系统崩溃的风险,现实中这种情况也出现过多次[6],往往会带来严重影响,造成严重损失。

(2)安全性问题

DNS请求在通常情况下不会携带发起者的用户或其他特征信息,因此相关服务端接收到的请求中,往往只会包含一个请求IP地址信息,所以DNS服务经常被用于相关的网络攻击和黑客活动中。通过大量发送DNS请求,阻塞相关的服务端,导致服务端无法响应正常的解析请求,从而影响整个网络服务安全,这就是常见的DDoS攻击。同时,多种安全验证服务也依赖DNS服务,如SSHFP等,所以在攻击DNS服务时,也可以进一步获取用户秘钥等信息,从而造成更为严重的后果。

(3)DNS劫持等带来的安全风险

主从等级模式的DNS服务体系,在服务器被劫持的情况下,用户正常的解析请求有可能被转向非法的地址,从而达到劫持用户访问非法地址的内容。对于用户信息数据和个人财产,都有可能造成严重的损失。

对于各国尤其是大国而言,网络安全和独立性是非常重要的。在经济建设和人民生产生活中,对于国民性基础网络平台和应用,如果出现根域名服务器,或者顶级域名服务器被干扰、屏蔽、甚至极端情况下的中断,都会严重影响生产和生活,对社会和国家造成不可估量的严重损失。

3 基于区块链去中心化DNS解决方案

区块链(Blockchain)是一个分布式数字账本,按时间顺序排列和记录所有类型的数据、交易、合约等内容。它是一种分布式账本,通过密码学和计算机科学技术,使得账本数据易于追溯,可跟踪,透明且不可变。该技术的主要特征是去中心化,信息分布在系统中的不同节点上。节点对网络中发生的交易进行验证和记录,并全网同步相关的交易和记录。由于信息不存储于单一的中心服务器,因此很难将其删除或更改。区块链是一个中心化维护的数据库,其中每个交易事务以数据区块的形式记录,并且它包含链接到前一个块的时间戳。这意味着一旦数据区块进入系统,它就是不可改变的。从这些特性来说,区块链技术是一种安全、可靠和稳定的技术,可以用于解决和确保数据、信息和交易安全性、真实性和唯一性。

基于区块链域名解析服务(Blockchain Name Service,BNS),目前有多种,如Namecoin[7]、Ethereum Name Service(ENS)[8]、Handshake[9]等,各种方式解决了一些问题,但是方案本身在实际应用和落地时,均存在许多问题需要改善和解决。其中,有些解决方案尝试采用全新的域名解决方案来替换现有的DNS系统,对于现有系统完全不兼容,如Namecoin,这些解决方案注定是无法成熟和推广的。

3.1 ENS

ENS又名以太坊名称服务,是一种基于以太坊区块链网络,采用智能合约机制实现的去中心化、开放和可扩展的域名系统。ENS的工作是将可读的域名(如“alice.eth”)映射到机器可读的地址标识,例如以太坊账号地址、合约地址、文件地址元数据等。ENS的“反向解析”能力,可以将规范命名或接口等元数据与以太坊地址相关联。ENS与DNS具有相似的目标,但由于以太坊区块链网络的功能和限制,因此二者具有明显不同的架构。与DNS一样,ENS在称为域的点分隔层名称系统上运行,域的所有者可以完全控制相关子域。相对于DNS,ENS大幅减少了基础架构的复杂性,智能合约就可以取代Go Daddy[10]等注册机构角色。由于这一功能简单到只需要一个智能合约,任何人可以依据注册机构的规则来创建子域名。解析器扮演翻译角色,将名字转换成哈希地址和以太坊地址。ENS的基础架构如图2所示。

图2 ENS基础框架图

其解析过程也和DNS类似,通过多级转发的方式,最终获得对应的域名信息。

3.2 Handshake

Handshake采用了一种与DNS兼容的去中心化的、无权限的域名协议,其中每个参与节点都在验证并负责管理根区域,目的是创建现有证书颁发机构的替代方案。其实现是基于UTXO模型的一条公链,后者是采用比特币区块链网络,但与比特币核心不同的一种全节点软件。

Handshake公链网络内的共识协议会替代ICANN根服务器。传统上而言,域名解析服务器会指向根域名服务器来定位IP地址。用了Handshake,域名解析服务器会指向一个权威服务器,而后者会将需求提交给区块链网络,而不是ICANN的根域文件。

同时,Handshake域名拥有者可以创建相应的加密代码,然后用这个加密代码创建签名。这一过程自然会代替掉当前互联网世界中的证书授权机构,如Verisign等。

3.3 小结

总的来说,Handshake通过简化支付认证解决域名解析问题,具有区块链原生属性,ENS利用以太坊区块链智能管理两个中心化顶级域名(.eth和.luxe)。二者从不同的角度提供了基于区块链的域名解决方案,同时在方案中也考虑兼容现有的DNS体系,目的还是最终取代现有的DNS系统,但是二者还是存在不少问题。

4 当前BNS存在的问题

(1)技术不成熟

目前存在的多种BNS解决方案中,普遍存在技术不成熟、缺陷较多、故障较多的情况。同时,对于现有DNS系统的兼容性也不足,因此大规模的推广和应用还有较多的问题需要解决。

(2)开发成本高

区块链开发生态的不成熟,导致相关系统的开发、测试、运营、维护等工作都存在大量的手工操作,对于开发人员的水平和技能要求较高,从而提高了相应的开发成本。

(3)性能较低

无论是Handshake,还是ENS,或是其他的解决方案,限于现有区块链网络的性能瓶颈,对于支持每天访问次数超过数十亿的DNS服务来说,是无法满足真实需求的。同时,区块链网络的共识机制,决定了请求的响应往往会比较慢,这对于网络服务的体验也是非常不友好的。

5 CNWW3[11]公链的BNS解决方案——CNS

对于现有DNS和BNS解决方案存在的问题,Web2.0和Web3.0的融合需求,域名系统需要提供的服务等内容,需要有一个完整的综合解决方案。基于CNWW3公链网络体系,通过应用该公链体系的能力和特性,提供有效的解决方案CNS(CNWW3 Name System)。该方案兼容现有DNS解决方案,同时也有效地提供了去中心化的能力,维护网络的中立性原则,同时,也能有效地保障社会和国家的网络安全。

5.1 子链方式提供BNS服务,兼容DNS体系

通过CNWW3子链体系[12],基于CNWW3公链创建CNS子链,该子链继承公链相关特性,具有和公链完整的双向跨链能力。在CNS子链体系中,其完成如下工作:

(1)初始化并部署根域名智能合约;

(2)部署CNS相关注册登记、查询、更新等智能合约(TLD和二级域名智能合约);

(3)执行CNS相关注册登记、查询、更新等智能合约(TLD和二级域名智能合约);

(4)存储并路由相关域名记录;

(5)通过I节点(具有DNS权威域名服务器功能,域名解析服务器功能和CNS子链功能的节点),完成和传统DNS系统的双向兼容。

子链系统如图3所示。

图3 CNS子链架构图

在CNS子链中,通过交易触发智能合约的执行,完成去中心化的域名注册登记、查询、更新等操作。对于传统DNS系统,通过I节点,便捷地完成对于CNS域名的查询操作;反之,CNWW3公链中的应用,如果需要访问DNS体系中的网络的话,也可以便捷地通过CNS子链中的I节点完成传统的DNS解析工作。

阶段性而言,在CNS子链中,并不会开放当前ICANN中已有的TLD顶级域名注册登记,但是通过节点I,以及CNWW3公链的IPFS网络,在CNS子链中可以进行DNS系统的分布式镜像服务,将相关DNS数据进行备份和存储,从而避免因DNS网络的故障导致无法访问的问题。

未来CNS子链可以作为现有DNS网络的一个升级替换网络,无论是传统的DNS系统,还是基于区块链的BNS系统,均可以统一由CNS子链网络提供相应的服务。

5.2 智能合约提供管理功能

未来CNS子链中,通过多级分层的智能合约完整地提供BNS的能力,合约层级展示如图4所示。

图4 CNS多级智能合约体系图

其中,根域名智能合约为CNS子链的原生智能合约,该合约部署在CNS子链的第一个数据区块中,主要完成如下工作:

(1)管理和维护TLD顶级域名;

(2)孵化和部署TLD顶级域名智能合约;

(3)提供TLD顶级域名智能合约路由。

TLD顶级域名智能合约主要完成如下工作:

(1)管理和维护应用域名;

(2)孵化和部署应用智能合约;

(3)提供应用智能合约路由。

应用域名智能合约主要完成如下工作:

(1)管理和维护应用域名数据——BNS数据;

(2)提供BNS数据的查询功能;

(3)提供BNS数据的更新功能。

BNS数据的组成格式包含如下内容:

(1)三级域名相关信息(所有者信息,区块链地址,如公钥信息,智能合约地址或者其他地址,TTL信息,验证鉴权信息,或存储DNS根域文件在IPFS网络中的存储地址);

(2)四级及四级以上域名相关信息(所有者信息,区块链地址,如公钥信息,智能合约地址或者其他地址,TTL信息,验证鉴权信息,或存储DNS根域文件在IPFS网络中的存储地址);

(3)BNS数据在逻辑上是树形关系,但是出于存储、搜索和处理的便利性,采用了扁平化的存储方式。同时,多个BNS之间可以存在互相引用的关系。

通过多级分层的合约设计,上级合约管理下级合约,下级合约相关信息的变更需要通过上次合约的执行才能完成,同时通过去中心化的IPFS网络的支持,使得CNS真正具有中立、安全和可靠性的支持,最大限度地保障服务可用性和稳定性。

各级合约之间的关系如图5所示。

图5 CNS多级智能合约关系图

5.3 快速交易和验证保障性能

CNS子链架构基于CNWW3公链网络进行搭建,其完整继承了CNWW3公链网络的高并发快速交易及交易验证能力[13]。CNS子链网络中,相关的智能合约均通过交易及其交易验证的方式完成域名的注册登记、查询、更新等操作,通过标准的区块链网络共识算法,保障全网数据的一致性。因此,公链网络的高并发快速交易及其交易验证能力,保证了CNS子链网络也具备相应的能力,从而有效改善现有BNS网络性能不足的情况。

5.4 域名注册流程

以TLD域名为例,其注册流程描述如下:

(1)通过向根域名智能合约发起交易的方式,触发根域名智能合约的执行;

(2)根域名智能合约所有者,通过投票或者其他方式,决定是否接受新增该TLD域名;

(3)根域名智能合约所有者,通过向根域名智能合约发起交易的方式,选择接受或者拒绝新增该TLD域名;

(4)如果拒绝,则第一笔交易失败,发起方资金将返回;

(5)如果接受,则新增交易成功,根域名智能合约生成并部署一个新的TLD智能合约,同时在根域名智能合约中新增对应的记录,指向新的TLD智能合约,从而完成新增工作。

相应的流程时序图如图6所示。

图6 新增域名时序图

应用域名的注册,其流程与TLD域名注册类似,只是此时是向对应的TLD智能合约发起交易,而非根域名智能合约。

5.5 域名查询流程

以最为复杂的某个应用域名为例,查询的流程描述如下:

(1)如已知对应应用域名的智能合约地址,则直接向该合约地址发起交易进行查询;

(2)该应用域名智能合约查询完成后,返回对应的BNS数据,如无记录,则返回失败或错误信息;

(3)如未知对应应用域名的智能合约地址,则通过向对应TLD域名智能合约发起交易的方式,进行应用域名的查询;

(4)对应的TLD域名智能合约在其记录内查找对应的应用域名,如有记录,则查询记录并直接通过交易的方式发起对应应用域名智能合约的查询;

(5)对对应应用域名智能合约进行内部查询,取得对应的BNS数据并返回给TLD智能合约,TLD智能合约返回给查询者;

(6)如无法查找到对应TLD域名智能合约,则以向根域名智能合约发起交易的方式,进行TLD域名的查询;

(7)根域名智能合约查询其记录,确认是否有对应的TLD记录,如无记录,则直接告知查询失败;

(8)如有对应的TLD记录,重复步骤(4)、(5)完成查询。

相应的流程图如图7所示。

图7 查询域名流程图

对于四级及以上域名的查询,需要先查询应用域名;对于TLD域名查询,流程上和应用域名的查询也是一致的,只是少一级智能合约的执行而已(应用域名智能合约)。

5.6 域名更新流程

域名的更新过程相对简单,需要注意的是,无论是根域名,还是TLD域名,或是应用域名,更新操作均需要由域名对应的所有者进行。以更新某个TLD域名为例,相应的流程描述如下:

(1)该TLD域名所有者通过交易的方式调用根域名智能合约进行更新;

(2)根域名智能合约校验并通过更新,调用现有的TLD智能合约,进行相应的信息更新;

(3)TLD智能合约完成相应更新,并返回相应的结果;

(4)根域名智能合约记录相应更新结果,完成更新操作。

相应的流程时序图示如图8所示。

图8 更新域名时序图

6 结论

DNS作为现代网络服务中的基础性框架,有着特殊重要的地位。但是现有的DNS存在众多的缺陷和不足,现有的区块链解决方案BNS能有效地解决诸如安全、去中心化、网络中立等问题,但是又存在现有体系不兼容、技术不成熟、效率低下等问题。基于CNWW3公链网络,创造性地提出采用子链方式融合现有DNS体系,通过公链的快速交易和验证能力保障性能,同时依赖公链的安全性和完整的开发生态,降低开发门槛,加快技术普及。

猜你喜欢
域名合约服务器
《江苏教育研究》官方网站域名变更公告
《江苏教育研究》官方网站域名变更公告
PowerTCP Server Tool
BlackJumboDog
2018年全球服务器市场将保持温和增长
用独立服务器的站长注意了