一种基于区块链实现域名解析的方法、服务器和系统与流程

文档序号:15980680发布日期:2018-11-17 00:17阅读:277来源:国知局

本发明涉及计算机技术领域,具体涉及一种基于区块链实现域名解析的方法、区块链根域名网络中的根域名服务器、域名解析系统、根域名服务器和计算机可读存储介质。

背景技术

dns(domainnamesystem,域名系统),是作为域名和ip地址相互映射的一个分布式数据库,能够使用户更方便的访问互联网,而不用去记住能够被机器直接读取的ip数串。当用户访问一个ip地址时,就可以通过域名解析,得到该域名对应的ip地址。

现有技术中,dns服务器可以完成对域名的解析,dns服务器分为根域名dns服务器、顶级域名dns服务器、二级域名dns服务器等。当本地的dns服务器接收的一个域名解析请求时,在本地缓存没有该域名的情况下,会首先向根域名dns服务器发送请求,以得到对应的顶级域名dns服务器的ip地址,然后向对应的顶级域名dns服务器发送请求,得到对应二级域名dns服务器的ip地址,再向对应的二级域名dns服务器发送请求,直至得到与该完整域名对应的服务器ip地址。

由此可见,根域名dns服务器是互联网域名解析系统(dns)中最高级别的域名服务器,负责返回顶级域的权威域名服务器地址。它们是互联网基础设施中的重要部分,所有域名解析操作均离不开它们。一个域名必须首先经过根数据库的解析后,才能转到顶级域名dns服务器进行解析。

然而,如果根域名dns服务器遭到攻击,使得该根域名dns服务器不能访问,那么一切的域名解析都会失败,现有技术中的域名解析存在不安全的问题。再者,全球仅有13台根服务器,目前的分布情况为:主根服务器(a)美国1个;辅根服务器(b至m)美国9个,瑞典、荷兰、日本各1个。如果出现解析系统中根域名服务器屏蔽某个区域的域名,那么它们的ip地址将无法解析出来,这些域名所指向的网站就会从互联网中消失了,容易出现超级管理员的情况,不利于域名解析系统的自主性。



技术实现要素:

鉴于上述问题,提出了本发明以便提供一种克服上述问题或者至少部分地解决上述问题的基于区块链实现域名解析的方法、区块链根域名网络中的根域名服务器、域名解析系统、根域名服务器和计算机可读存储介质。

根据本发明的一个方面,提供了一种基于区块链实现域名解析的方法,其中,多个根域名服务器基于区块链技术组成区块链根域名网络,该方法包括根域名服务器执行的如下步骤:

每个根域名服务器上均存储完整的用于记录顶级域名操作信息的区块链;

当一个根域名服务器接收到广播的顶级域名操作请求时,对该顶级域名操作请求进行验证,并将验证结果广播出去;

一个根域名服务器在担任区块提交者的任期内,负责产生区块,将通过验证的顶级域名操作请求记录到区块中,将区块打包并附加到区块链上。

可选地,该方法进一步包括:

当一个根域名服务器收到域名解析请求时,通过查询顶级域名信息得到相应顶级域名对应的顶级域名服务器地址并返回给请求者;

其中,顶级域名信息是根据区块链中的顶级域名操作信息获得的。

可选地,该方法进一步包括:

当一个根域名服务器收到递归dns服务器的同步请求时,向该递归dns服务器返回最新的顶级域名信息;或者,一个根域名服务器在顶级域名信息发生变化时,向相应的递归dns服务器发送最新的顶级域名信息;

其中,顶级域名信息是根据区块链中的顶级域名操作信息获得的。

可选地,所述对该顶级域名操作请求进行验证包括:

如果该顶级域名操作请求是针对指定顶级域名的修改或删除操作,根据账户与顶级域名的对应关系表,判断发送该顶级域名操作请求的账户是否有对该指定顶级域名进行操作的权限,如果没有则验证不通过;

如果该顶级域名操作请求是新增顶级域名的操作,则判断新增顶级域名是否与已存在的顶级域名重复,如果重复则验证不通过,并在验证通过时将发送该顶级域名操作请求的账户与该新增的顶级域名对应保存到账户与顶级域名的对应关系表中。

可选地,所述对该顶级域名操作请求进行验证还包括如下中的一种或多种:

验证该顶级域名操作请求的数据格式是否符合预设的数据格式条件,如果不符合则验证不通过;

验证该顶级域名操作请求的数字签名是否符合预设的签名条件,如果不符合则验证不通过。

可选地,该方法还包括:

一个根域名服务器在担任区块提交者的任期内,统计各根域名服务器对于一个顶级域名操作请求的验证结果,当超过预定个数的根域名服务器的验证结果表示验证通过时,确定该顶级域名操作请求通过验证,将其记录到所产生的区块中。

可选地,

各根域名服务器之间通过预先约定的共识机制选出区块提交者。

根据本发明的另一方面,提供了一种区块链根域名网络中的根域名服务器,其中,该根域名服务器包括:

存储单元,适于存储完整的用于记录顶级域名操作信息的区块链;

验证单元,适于当本根域名服务器接收到广播的顶级域名操作请求时,对该顶级域名操作请求进行验证,并将验证结果广播出去;

区块处理单元,适于在本根域名服务器在担任区块提交者的任期内,产生区块,将通过验证的顶级域名操作请求记录到区块中,以及将区块打包并附加到区块链上。

可选地,该根域名服务器进一步包括:

域名解析单元,适于在本根域名服务器收到域名解析请求时,通过查询顶级域名信息得到相应顶级域名对应的顶级域名服务器地址并返回给请求者;其中,顶级域名信息是根据区块链中的顶级域名操作信息获得的。

可选地,该根域名服务器进一步包括:

同步单元,适于当本根域名服务器收到递归dns服务器的同步请求时,向该递归dns服务器返回最新的顶级域名信息;或者,适于在顶级域名信息发生变化时,向相应的递归dns服务器发送最新的顶级域名信息;

其中,顶级域名信息是根据区块链中的顶级域名操作信息获得的。

可选地,

所述验证单元,适于当该顶级域名操作请求是针对指定顶级域名的修改或删除操作时,根据账户与顶级域名的对应关系表,判断发送该顶级域名操作请求的账户是否有对该指定顶级域名进行操作的权限,如果没有则验证不通过;以及适于当该顶级域名操作请求是新增顶级域名的操作时,判断新增顶级域名是否与已存在的顶级域名重复,如果重复则验证不通过,并在验证通过时将发送该顶级域名操作请求的账户与该新增的顶级域名对应保存到账户与顶级域名的对应关系表中。

可选地,所述验证单元还适于通过以下的一种或多种方式对该顶级域名操作请求进行验证:

验证该顶级域名操作请求的数据格式是否符合预设的数据格式条件,如果不符合则验证不通过;

验证该顶级域名操作请求的数字签名是否符合预设的签名条件,如果不符合则验证不通过。

可选地,

所述区块处理单元,适于在本根域名服务器在担任区块提交者的任期内,统计各根域名服务器对于一个顶级域名操作请求的验证结果,当超过预定个数的根域名服务器的验证结果表示验证通过时,确定该顶级域名操作请求通过验证,将其记录到所产生的区块中。

可选地,该根域名服务器进一步包括:

共识模块,适于与其他根域名服务器之间通过预先约定的共识机制选出区块提交者。

根据本发明的在一个方面,提供了一种域名解析系统,其中,该系统包括:由多个如前述的根域名服务器组成的根域名网络,以及多个递归dns服务器;

递归dns服务器从根域名网络获取顶级域名信息保存到本地。

根据本发明的又一方面,提供了一种根域名服务器,其中,该根域名服务器包括:

处理器;以及,

被安排成存储计算机可执行指令的存储器,所述可执行指令在被执行时使所述处理器执行根据前述的方法。

根据本发明的再一方面,提供了一种计算机可读存储介质,其中,所述计算机可读存储介质存储一个或多个程序,所述一个或多个程序当被处理器执行时,实现前述的方法。

根据本发明的技术方案,多个根域名服务器基于区块链技术组成区块链根域名网络,根域名服务器执行如下步骤:每个根域名服务器上均存储完整的用于记录顶级域名操作信息的区块链;当一个根域名服务器接收到广播的顶级域名操作请求时,对该顶级域名操作请求进行验证,并将验证结果广播出去;一个根域名服务器在担任区块提交者的任期内,负责产生区块,将通过验证的顶级域名操作请求记录到区块中,将区块打包并附加到区块链上。可见,通过本技术方案,利用的区块链网络的共识机制,区块链根域名网络中的根域名服务器对域名操作请求进行验证,只有验证通过的域名操作请求才被记录并处理的,不容易被攻击或篡改,避免了现有技术中对一个根域名服务器的域名进行攻击而出现的域名解析失败的情况,提高域名解析的安全性;而且,区块链根域名网络中的根域名服务器是采用共识机制,根域名网络中的根域名服务器共同维护该根域名网络,避免了超级管理员出现。

上述说明仅是本发明技术方案的概述,为了能够更清楚了解本发明的技术手段,而可依照说明书的内容予以实施,并且为了让本发明的上述和其它目的、特征和优点能够更明显易懂,以下特举本发明的具体实施方式。

附图说明

通过阅读下文优选实施方式的详细描述,各种其他的优点和益处对于本领域普通技术人员将变得清楚明了。附图仅用于示出优选实施方式的目的,而并不认为是对本发明的限制。而且在整个附图中,用相同的参考符号表示相同的部件。在附图中:

图1示出了根据本发明一个实施例的基于区块链实现域名解析的方法的流程示意图;

图2示出了根据本发明一个实施例的区块链根域名网络中的根域名服务器的结构示意图;

图3示出了根据本发明一个实施例的域名解析系统的结构示意图;

图4示出了根据本发明一个实施例的根域名服务器的结构示意图;

图5示出了根据本发明一个实施例的计算机可读存储介质的结构示意图。

具体实施方式

下面将参照附图更详细地描述本公开的示例性实施例。虽然附图中显示了本公开的示例性实施例,然而应当理解,可以以各种形式实现本公开而不应被这里阐述的实施例所限制。相反,提供这些实施例是为了能够更透彻地理解本公开,并且能够将本公开的范围完整的传达给本领域的技术人员。

对于区块链技术,狭义来讲,它是一种按照时间顺序将数据区块以顺序相连的方式组合成的一种链式数据结构,并以密码学方式保证的不可篡改和不可伪造的分布式账本。广义来讲,它是利用块链式数据结构来验证与存储数据、利用分布式节点共识算法来生成和更新数据、利用密码学的方式保证数据传输和访问的安全、利用由自动化脚本代码组成的智能合约来编程和操作数据的一种全新的分布式基础架构与计算方式。基于区块链技术的区块链网络有如下的特征:

开放性和共识性。任何人都可以参与到区块链网络,每一台设备都能作为一个节点,每个节点都允许获得一份完整的区块链数据拷贝。节点间基于一套共识机制,通过竞争计算共同维护整个区块链。任一节点失效,其余节点仍能正常工作。

去中心化和去信任。区块链由众多节点共同组成一个端到端的网络,不存在中心化的设备和管理机构。节点之间数据交换通过数字签名技术进行验证,无需互相信任,只要按照系统既定的规则进行,节点之间不能也无法欺骗其它节点。

交易透明和双方匿名。区块链的运行规则是公开透明的,所有的数据信息也是公开的,因此每一笔交易都对所有节点可见。由于节点与节点之间是去信任的,因此节点之间无需公开身份,每个参与的节点都是匿名的。

不可篡改和可追溯性。单个甚至多个节点对数据库的修改无法影响其他节点的数据库,除非能控制整个网络中超过51%的节点同时修改,这几乎不可能发生。区块链中的每一笔交易都通过密码学方法与相邻两个区块串联,因此可以追溯到任何一笔交易的前世今生。

本发明充分利用的区块链网络的上述特性,将其应用到dns域名解析系统的根域名服务器中,提供了一种区块链根域名网络,以解决现有技术的根域名服务器在域名解析中出现的技术问题。

图1示出了根据本发明一个实施例的基于区块链实现域名解析的方法的流程示意图。多个根域名服务器基于区块链技术组成区块链根域名网络,如图1所示,根域名服务器执行如下步骤:

步骤s110,每个根域名服务器上均存储完整的用于记录顶级域名操作信息的区块链。

步骤s120,当一个根域名服务器接收到广播的顶级域名操作请求时,对该顶级域名操作请求进行验证,并将验证结果广播出去。

这里的域名操作请求可以是域名的新增、修改、删除。

步骤s130,一个根域名服务器在担任区块提交者的任期内,负责产生区块,将通过验证的顶级域名操作请求记录到区块中,将区块打包并附加到区块链上。

本实施例中,将区块打包可以是在该根域名服务器将担任区块提交者的任期内的所以域名操作请求记录后在打包,也可以是根据预设频率(每隔2秒)或者达到预设个数(100个)条的域名操作请求记录后进行打包。

本发明的实施例中,由于区块链网络具有共识机制,是去中心化的,因此在对域名进行操作时,需要经过根域名服务器的验证,只有验证通过的操作才会被记录到区块链中,并将相应记录附加到区块链上,而且,因为共识机制的存在,这里的担任区块提交者的根域名服务器并非是固定不变的,通过控制固定的个别根域名服务器进行域名操作也是无法实现的,除非能控制整个网络中超过51%的根域名服务器同时修改,这几乎不可能发生,因此可以抵御如ddos攻击,防止被劫持。又因为每个根域名服务器可以获得完整的数据库拷贝,即使其中一个根域名服务器被攻击或篡改,都不会影响其他根域名服务器的正常工作。这就不同于现有技术中的一旦根域名服务器被攻击或篡改,则无法进行域名解析的情况。可见,通过本实施例,域名信息不容易被攻击或篡改,避免了现有技术中对一个根域名服务器的域名进行攻击而出现的域名解析失败的情况,提高域名解析的安全性。

由于现有技术中,根域名服务器掌握在少数国家中,少数的国家可以轻易通过其掌握的根域名服务器切断网络,这就造成了超级管理员的出现。在本发明的实施例中,利用区块链根域名网络,根域名网络中的根域名服务器共同维护该根域名网络,避免了超级管理员出现。同时,在根域名服务器中存储完整的用于记录历史域名操作信息的区块链,对域名的操作均可追溯到。

另外,每个根域名服务器存储中完整的顶级域名信息,一个根域名服务器异常,则不影响其他根域名服务器的正常工作,域名解析不依赖于网络中任何根域名服务器的健康状况,保证了区块链根域名网络的高容错性。

在本发明的一个实施例中,图1所示的方法进一步包括:当一个根域名服务器收到域名解析请求时,通过查询顶级域名信息得到相应顶级域名对应的顶级域名服务器地址并返回给请求者;其中,顶级域名信息是根据区块链中的顶级域名操作信息获得的。

在本发明的实施例中,根域名服务器在接收到域名解析请求时,是直接通过查询顶级域名信息进行域名解析,得到相应的顶级域名对应的顶级域名服务器地址,将获取的顶级域名服务器地址返回给请求者,以便请求者向顶级域名服务器发送请求,进行相应的域名解析。

因为可以通过根域名服务器对域名信息进行修改等操作,当域名操作请求通过验证后,相应的域名操作会被写入区块链,并且会根据该相应的域名操作请求修改顶级域名信息,即顶级域名信息是根据区块链中的顶级域名操作信息获得的。例如,一个域名操作请求是对指定域名的删除操作,在该域名操作请求通过验证后,会将该对指定域名的删除操写入区块链中,并且会将顶级域名信息中相应的指定域名删除。根据被写入区块链的域名操作请求处理顶级域名信息,使得顶级域名信息与实际有效的域名操作之间形成映射关系,保证域名解析的正确性。

在本发明的一个实施例中,图1所示的方法进一步包括:

当一个根域名服务器收到递归dns服务器的同步请求时,向该递归dns服务器返回最新的顶级域名信息;或者,一个根域名服务器在顶级域名信息发生变化时,向相应的递归dns服务器发送最新的顶级域名信息;其中,顶级域名信息是根据区块链中的顶级域名操作信息获得的。

在本发明的实施例中,顶级域名信息如上述实施例类似,也是根据区块链中的顶级域名操作信息获得的,保证顶级域名信息的正确性。

在进行域名解析时,通常是通过递归dns服务器依次向各级dns服务器发送域名解析请求。在本发明的实施例中,递归dns服务器可以获取最新的顶级域名信息,节省其向根域名服务器发送域名解析请求的步骤,直接通过本地顶级域名信息获取顶级域名服务器地址,提高域名解析的效率。

具体的是,递归dns服务器可以主动向根域名服务器发送同步请求,根域名服务器根据该同步请求向递归dns服务器发送最新的顶级域名信息。或者,根域名服务器在顶级域名信息发生变化时(例如,区块链总的顶级域名操作信息增加时,顶级域名信息会发生变化),主动向递归dns服务器发送最新的顶级域名信息。

在本发明的一个实施例中,图1所示的方法中的步骤s120中的对该顶级域名操作请求进行验证包括:如果该顶级域名操作请求是针对指定顶级域名的修改或删除操作,根据账户与顶级域名的对应关系表,判断发送该顶级域名操作请求的账户是否有对该指定顶级域名进行操作的权限,如果没有则验证不通过;如果该顶级域名操作请求是新增顶级域名的操作,则判断新增顶级域名是否与已存在的顶级域名重复,如果重复则验证不通过,并在验证通过时将发送该顶级域名操作请求的账户与该新增的顶级域名对应保存到账户与顶级域名的对应关系表中。

在本发明的实施例中,一个账户只能对自身账户下的顶级域名信息进行相应的操作,而不能对其他账户的顶级域名信息进行操作,实现组织或个人只管理自己的顶级域名,其他人无法操作的效果,保证了顶级域名信息的安全性和自主性。考虑到对顶级域名的操作可以是修改、删除或增加的操作,在对顶级域名进行修改或删除时,需要判断发送该顶级域名操作请求的账户是否有对该指定顶级域名进行操作的权限,判断为是,则验证通过,判断为否,则验证不通过;例如,账户1发送了对顶级域名1的修改的请求,通过查询对应关系表发现,账户1对应的是顶级域名2、顶级域名3,不存在顶级域名1,则验证不通过。在对顶级域名进行增加时,则需要判断增加的顶级域名与已有的顶级域名是否重复,防止错乱的情况出现,如果判断为是,则验证不通过,如果判断为否,则验证通过,并将该顶级域名与发送请求的账户建立对应关系并记录在对应关系表中。

进一步地,图1所示的方法的步骤s120中的对该顶级域名操作请求进行验证还包括如下中的一种或多种:验证该顶级域名操作请求的数据格式是否符合预设的数据格式条件,如果不符合则验证不通过;验证该顶级域名操作请求的数字签名是否符合预设的签名条件,如果不符合则验证不通过。

本实施例中,还需要对顶级域名操作请求的数据格式和/或数字签名进行验证。数字签名涉及到一个哈希函数、发送者的公钥、发送者的私钥。数字签名有两个作用,一是能确定消息确实是由发送方签名并发出来的。二是数字签名能确定消息的完整性。因此,在验证时,还需要验证数字签名是否符合预设的签名条件,以防止非该账户本人已该账户的名义发送请求。

在本发明的一个实施例中,图1所示的方法还包括:

一个根域名服务器在担任区块提交者的任期内,统计各根域名服务器对于一个顶级域名操作请求的验证结果,当超过预定个数的根域名服务器的验证结果表示验证通过时,确定该顶级域名操作请求通过验证,将其记录到所产生的区块中。

在本发明的实施例中,一个顶级域名操作请求的验证是否通过是由各根域名服务器的验证结果决定的,并非是单个根域名服务器所决定的,这也符合了该区块链dns网络的不可篡改性,这里的预订个数可以根据根域名服务器的总个数设定,例如是根域名服务器总个数的三分之二。例如,区块链根域名网络包括300个根域名服务器,其中有大于或等于三分之二,即大于或等于200个(例如250个)根域名服务器的验证结果是验证通过,其他的根域名服务器的验证结果是验证不通过,则表示该顶级域名操作请求通过验证;如果只有小于200个根域名服务器(例如150个)的验证结果是验证通过,则表示该顶级域名操作请求没有通过验证。进一步体现了,区块链根域名网络中的顶级域名信息操作并非是一个根域名服务器决定的,保证顶级域名信息的安全性。

在本发明的一个实施例中,图1所示的方法中的各根域名服务器之间通过预先约定的共识机制选出区块提交者。

共识机制是通过特殊节点的投票,在很短的时间内完成对交易的验证和确认。本实施例是通过共识机制从各根域名服务器中选出区块提交者。例如,pbft共识机制。该区块提交者的任期是有限的,例如,每个区块提交者的任期是1天。当任期结束后,在选举出新的区块提交者。

优选地,区块链根域名网络中的根域名服务器包括传统dns网络中的根域名服务器。

考虑到区块链根域名网络的开放性,基于组织与组织、组织与个人之见的开放性和协作性,这里的根域名服务器可以是传统dns网络中的根域名dns服务器,为了可以利用根域名dns服务器中的顶级域名信息资源,可以在根域名dns服务器中配置实现区块链技术的相应的功能模块,提供加入区块链根域名网络的接口。

图2示出了根据本发明一个实施例的区块链根域名网络中的根域名服务器的结构示意图。如图2所示,该根域名服务器200包括:

存储单元210,适于存储完整的用于记录顶级域名操作信息的区块链。

验证单元220,适于当本根域名服务器接收到广播的顶级域名操作请求时,对该顶级域名操作请求进行验证,并将验证结果广播出去。这里的域名操作请求可以是域名的新增、修改、删除。

区块处理单元230,适于在本根域名服务器在担任区块提交者的任期内,产生区块,将通过验证的顶级域名操作请求记录到区块中,以及将区块打包并附加到区块链上。

本实施例中,将区块打包可以是在该根域名服务器将担任区块提交者的任期内的所以域名操作请求记录后在打包,也可以是根据预设频率(每隔2秒)或者达到预设个数(100个)条的域名操作请求记录后进行打包。

本发明的实施例中,由于区块链网络具有共识机制,是去中心化的,因此在对域名进行操作时,需要经过根域名服务器的验证,只有验证通过的操作才会被记录到区块链中,并将相应记录附加到区块链上,而且,因为共识机制的存在,这里的担任区块提交者的根域名服务器并非是固定不变的,通过控制固定的个别根域名服务器进行域名操作也是无法实现的,除非能控制整个网络中超过51%的根域名服务器同时修改,这几乎不可能发生,因此可以抵御如ddos攻击,防止被劫持。又因为每个根域名服务器可以获得完整的数据库拷贝,即使其中一个根域名服务器被攻击或篡改,都不会影响其他根域名服务器的正常工作。这就不同于现有技术中的一旦根域名服务器被攻击或篡改,则无法进行域名解析的情况。可见,通过本实施例,域名信息不容易被攻击或篡改,避免了现有技术中对一个根域名服务器的域名进行攻击而出现的域名解析失败的情况,提高域名解析的安全性。

由于现有技术中,根域名服务器掌握在少数国家中,少数的国家可以轻易通过其掌握的根域名服务器切断网络,这就造成了超级管理员的出现。在本发明的实施例中,利用区块链根域名网络,根域名网络中的根域名服务器共同维护该根域名网络,避免了超级管理员出现。同时,在根域名服务器中存储完整的用于记录历史域名操作信息的区块链,对域名的操作均可追溯到。

另外,每个根域名服务器存储中完整的顶级域名信息,一个根域名服务器异常,则不影响其他根域名服务器的正常工作,域名解析不依赖于网络中任何根域名服务器的健康状况,保证了区块链根域名网络的高容错性。

在本发明的一个实施例中,图2所示的根域名服务器进一步包括:

域名解析单元,适于在本根域名服务器收到域名解析请求时,通过查询顶级域名信息得到相应顶级域名对应的顶级域名服务器地址并返回给请求者;其中,顶级域名信息是根据区块链中的顶级域名操作信息获得的。

在本发明的实施例中,根域名服务器在接收到域名解析请求时,是直接通过查询顶级域名信息进行域名解析,得到相应的顶级域名对应的顶级域名服务器地址,将获取的顶级域名服务器地址返回给请求者,以便请求者向顶级域名服务器发送请求,进行相应的域名解析。

因为可以通过根域名服务器对域名信息进行修改等操作,当域名操作请求通过验证后,相应的域名操作会被写入区块链,并且会根据该相应的域名操作请求修改顶级域名信息,即顶级域名信息是根据区块链中的顶级域名操作信息获得的。例如,一个域名操作请求是对指定域名的删除操作,在该域名操作请求通过验证后,会将该对指定域名的删除操写入区块链中,并且会将顶级域名信息中相应的指定域名删除。根据被写入区块链的域名操作请求处理顶级域名信息,使得顶级域名信息与实际有效的域名操作之间形成映射关系,保证域名解析的正确性。

在本发明的一个实施例中,图2所示的根域名服务器进一步包括:

同步单元,适于当本根域名服务器收到递归dns服务器的同步请求时,向该递归dns服务器返回最新的顶级域名信息;或者,适于在顶级域名信息发生变化时,向相应的递归dns服务器发送最新的顶级域名信息;其中,顶级域名信息是根据区块链中的顶级域名操作信息获得的。

在本发明的实施例中,顶级域名信息如上述实施例类似,也是根据区块链中的顶级域名操作信息获得的,保证顶级域名信息的正确性。

在进行域名解析时,通常是通过递归dns服务器依次向各级dns服务器发送域名解析请求。在本发明的实施例中,递归dns服务器可以获取最新的顶级域名信息,节省其向根域名服务器发送域名解析请求的步骤,直接通过本地顶级域名信息获取顶级域名服务器地址,提高域名解析的效率。

具体的是,递归dns服务器可以主动向根域名服务器发送同步请求,根域名服务器根据该同步请求向递归dns服务器发送最新的顶级域名信息。或者,根域名服务器在顶级域名信息发生变化时(例如,区块链总的顶级域名操作信息增加时,顶级域名信息会发生变化),主动向递归dns服务器发送最新的顶级域名信息。

在本发明的一个实施例中,图2所示的根域名服务器的验证单元220,适于当该顶级域名操作请求是针对指定顶级域名的修改或删除操作时,根据账户与顶级域名的对应关系表,判断发送该顶级域名操作请求的账户是否有对该指定顶级域名进行操作的权限,如果没有则验证不通过;以及适于当该顶级域名操作请求是新增顶级域名的操作时,判断新增顶级域名是否与已存在的顶级域名重复,如果重复则验证不通过,并在验证通过时将发送该顶级域名操作请求的账户与该新增的顶级域名对应保存到账户与顶级域名的对应关系表中。

在本发明的实施例中,一个账户只能对自身账户下的顶级域名信息进行相应的操作,而不能对其他账户的顶级域名信息进行操作,实现组织或个人只管理自己的顶级域名,其他人无法操作的效果,保证了顶级域名信息的安全性和自主性。考虑到对顶级域名的操作可以是修改、删除或增加的操作,在对顶级域名进行修改或删除时,需要判断发送该顶级域名操作请求的账户是否有对该指定顶级域名进行操作的权限,判断为是,则验证通过,判断为否,则验证不通过;例如,账户1发送了对顶级域名1的修改的请求,通过查询对应关系表发现,账户1对应的是顶级域名2、顶级域名3,不存在顶级域名1,则验证不通过。在对顶级域名进行增加时,则需要判断增加的顶级域名与已有的顶级域名是否重复,防止错乱的情况出现,如果判断为是,则验证不通过,如果判断为否,则验证通过,并将该顶级域名与发送请求的账户建立对应关系并记录在对应关系表中。

进一步地,图2所示的根域名服务器的验证单元220还适于通过以下的一种或多种方式对该顶级域名操作请求进行验证:验证该顶级域名操作请求的数据格式是否符合预设的数据格式条件,如果不符合则验证不通过;验证该顶级域名操作请求的数字签名是否符合预设的签名条件,如果不符合则验证不通过。

本实施例中,还需要对顶级域名操作请求的数据格式和/或数字签名进行验证。数字签名涉及到一个哈希函数、发送者的公钥、发送者的私钥。数字签名有两个作用,一是能确定消息确实是由发送方签名并发出来的。二是数字签名能确定消息的完整性。因此,在验证时,还需要验证数字签名是否符合预设的签名条件,以防止非该账户本人已该账户的名义发送请求。

在本发明的一个实施例中,图2所示的根域名服务器的区块处理单元230,适于在本根域名服务器在担任区块提交者的任期内,统计各根域名服务器对于一个顶级域名操作请求的验证结果,当超过预定个数的根域名服务器的验证结果表示验证通过时,确定该顶级域名操作请求通过验证,将其记录到所产生的区块中。

在本发明的实施例中,一个顶级域名操作请求的验证是否通过是由各根域名服务器的验证结果决定的,并非是单个根域名服务器所决定的,这也符合了该区块链dns网络的不可篡改性,这里的预订个数可以根据根域名服务器的总个数设定,例如是根域名服务器总个数的三分之二。例如,区块链根域名网络包括300个根域名服务器,其中有大于或等于三分之二,即大于或等于200个(例如250个)根域名服务器的验证结果是验证通过,其他的根域名服务器的验证结果是验证不通过,则表示该顶级域名操作请求通过验证;如果只有小于200个根域名服务器(例如150个)的验证结果是验证通过,则表示该顶级域名操作请求没有通过验证。进一步体现了,区块链根域名网络中的顶级域名信息操作并非是一个根域名服务器决定的,保证顶级域名信息的安全性。

在本发明的一个实施例中,图2所示的根域名服务器进一步包括:共识模块,适于与其他根域名服务器之间通过预先约定的共识机制选出区块提交者。

共识机制是通过特殊节点的投票,在很短的时间内完成对交易的验证和确认。本实施例是通过共识机制从各根域名服务器中选出区块提交者。例如,pbft共识机制。该区块提交者的任期是有限的,例如,每个区块提交者的任期是1天。当任期结束后,在选举出新的区块提交者。

优选地,图2所示的根域名服务器包括传统dns网络中的根域名服务器。

考虑到区块链根域名网络的开放性,基于组织与组织、组织与个人之见的开放性和协作性,这里的根域名服务器可以是传统dns网络中的根域名dns服务器,为了可以利用根域名dns服务器中的顶级域名信息资源,可以在根域名dns服务器中配置实现区块链技术的相应的功能模块,提供加入区块链根域名网络的接口。

本发明还提供了一种区块链根域名网络,该区块链根域名网络包括:多个如图2所述的根域名服务器。

本发明还提供了一种域名解析系统,该系统包括:由多个如图2所示的根域名服务器组成的根域名网络,以及多个递归dns服务器;递归dns服务器从根域名网络获取顶级域名信息保存到本地。

图3示出了根据本发明一个实施例的域名解析系统的结构示意图。如图3所示,该系统包括:由2个如图2所示的根域名服务器200组成的根域名网络310,以及2个递归dns服务器320;递归dns服务器从根域名网络获取顶级域名信息保存到本地。

需要说明的是,图3所示的根域名服务器200的个数,以及递归dns服务器320的个数只是举例说明,根域名服务器个数以及递归dns服务器的个数在本发明中不应做具体的限定,在实际应用中可以根据实际需求设置。

为了与传统dns兼容,保证解析地址正确性,域名解析系统初始化需要同步icann的根域名服务器的记录,同时需要建立顶级账号信息,建立各个顶级域的归属映射关系,即每个顶级账号以及该顶级账号所管理的顶级域信息映射。各顶级账户只能操作自己所管理的域名,并可以进行修改,删除等操作;各顶级账户可以发起新增顶级域请求,节点验证后数据进去区块链进行打包。

基于区块链的域名解析系统,是一种没有中央机构或中间缓存,各个账号管理自己根域的对等网络。每个根节点都包含整个区块链,即完整的名称和其他事务的完整数据库。区块链技术自身以及共识机制可确保数据可靠性(即数据库对所有节点而言都是相同的)。共识机制可确保任何用户(系统管理员)都无法进入“上帝模式”。不论是谁,都无法取消或变更任何操作记录。只有特定的记录所有者能进行相关操作,其他人都不可以。其特点是:每条记录仅能由其所有者进行修改,其他人无法进行相关操作。通过共识机制禁用超级管理员模式,我们选择pbft算法,保证了系统的高性能。数据记录对所有用户而言是相同的。数据文件与快速搜索引擎协同工作。域名解析不依赖于互联网上任何根服务器的健康状况。

可见,域名解析系统具有高安全性、快速访问、自主性、高容错和开放性。

综上所述,根据本发明的技术方案,多个根域名服务器基于区块链技术组成区块链根域名网络,根域名服务器执行如下步骤:每个根域名服务器上均存储完整的用于记录顶级域名操作信息的区块链;当一个根域名服务器接收到广播的顶级域名操作请求时,对该顶级域名操作请求进行验证,并将验证结果广播出去;一个根域名服务器在担任区块提交者的任期内,负责产生区块,将通过验证的顶级域名操作请求记录到区块中,将区块打包并附加到区块链上。可见,通过本技术方案,利用的区块链网络的共识机制,区块链根域名网络中的根域名服务器对域名操作请求进行验证,只有验证通过的域名操作请求才被记录并处理的,不容易被攻击或篡改,避免了现有技术中对一个根域名服务器的域名进行攻击而出现的域名解析失败的情况,提高域名解析的安全性;而且,区块链根域名网络中的根域名服务器是采用共识机制,根域名网络中的根域名服务器共同维护该根域名网络,避免了超级管理员出现。

需要说明的是:

在此提供的算法和显示不与任何特定计算机、虚拟装置或者其它设备固有相关。各种通用装置也可以与基于在此的示教一起使用。根据上面的描述,构造这类装置所要求的结构是显而易见的。此外,本发明也不针对任何特定编程语言。应当明白,可以利用各种编程语言实现在此描述的本发明的内容,并且上面对特定语言所做的描述是为了披露本发明的最佳实施方式。

在此处所提供的说明书中,说明了大量具体细节。然而,能够理解,本发明的实施例可以在没有这些具体细节的情况下实践。在一些实例中,并未详细示出公知的方法、结构和技术,以便不模糊对本说明书的理解。

类似地,应当理解,为了精简本公开并帮助理解各个发明方面中的一个或多个,在上面对本发明的示例性实施例的描述中,本发明的各个特征有时被一起分组到单个实施例、图、或者对其的描述中。然而,并不应将该公开的方法解释成反映如下意图:即所要求保护的本发明要求比在每个权利要求中所明确记载的特征更多的特征。更确切地说,如下面的权利要求书所反映的那样,发明方面在于少于前面公开的单个实施例的所有特征。因此,遵循具体实施方式的权利要求书由此明确地并入该具体实施方式,其中每个权利要求本身都作为本发明的单独实施例。

本领域那些技术人员可以理解,可以对实施例中的设备中的模块进行自适应性地改变并且把它们设置在与该实施例不同的一个或多个设备中。可以把实施例中的模块或单元或组件组合成一个模块或单元或组件,以及此外可以把它们分成多个子模块或子单元或子组件。除了这样的特征和/或过程或者单元中的至少一些是相互排斥之外,可以采用任何组合对本说明书(包括伴随的权利要求、摘要和附图)中公开的所有特征以及如此公开的任何方法或者设备的所有过程或单元进行组合。除非另外明确陈述,本说明书(包括伴随的权利要求、摘要和附图)中公开的每个特征可以由提供相同、等同或相似目的的替代特征来代替。

此外,本领域的技术人员能够理解,尽管在此所述的一些实施例包括其它实施例中所包括的某些特征而不是其它特征,但是不同实施例的特征的组合意味着处于本发明的范围之内并且形成不同的实施例。例如,在下面的权利要求书中,所要求保护的实施例的任意之一都可以以任意的组合方式来使用。

本发明的各个部件实施例可以以硬件实现,或者以在一个或者多个处理器上运行的软件模块实现,或者以它们的组合实现。本领域的技术人员应当理解,可以在实践中使用微处理器或者数字信号处理器(dsp)来实现根据本发明实施例的区块链根域名网络中的根域名服务器、域名解析系统、根域名服务器和计算机可读存储介质中的一些或者全部部件的一些或者全部功能。本发明还可以实现为用于执行这里所描述的方法的一部分或者全部的设备或者装置程序(例如,计算机程序和计算机程序产品)。这样的实现本发明的程序可以存储在计算机可读介质上,或者可以具有一个或者多个信号的形式。这样的信号可以从因特网网站上下载得到,或者在载体信号上提供,或者以任何其他形式提供。

例如,图4示出了根据本发明一个实施例的根域名服务器的结构示意图。该根域名服务器300传统上包括处理器410和被安排成存储计算机可执行指令(程序代码)的存储器420。存储器420可以是诸如闪存、eeprom(电可擦除可编程只读存储器)、eprom、硬盘或者rom之类的电子存储器。存储器420具有存储用于执行图1所示的以及各实施例中的任何方法步骤的程序代码440的存储空间430。例如,用于程序代码的存储空间430可以包括分别用于实现上面的方法中的各种步骤的各个程序代码440。这些程序代码可以从一个或者多个计算机程序产品中读出或者写入到这一个或者多个计算机程序产品中。这些计算机程序产品包括诸如硬盘,紧致盘(cd)、存储卡或者软盘之类的程序代码载体。这样的计算机程序产品通常为例如图5所述的计算机可读存储介质500。该计算机可读存储介质500可以具有与图4的电子设备中的存储器420类似布置的存储段、存储空间等。程序代码可以例如以适当形式进行压缩。通常,存储单元存储有用于执行根据本发明的方法步骤的程序代码510,即可以由诸如410之类的处理器读取的程序代码,当这些程序代码由电子设备运行时,导致该电子设备执行上面所描述的方法中的各个步骤。

应该注意的是上述实施例对本发明进行说明而不是对本发明进行限制,并且本领域技术人员在不脱离所附权利要求的范围的情况下可设计出替换实施例。在权利要求中,不应将位于括号之间的任何参考符号构造成对权利要求的限制。单词“包含”不排除存在未列在权利要求中的元件或步骤。位于元件之前的单词“一”或“一个”不排除存在多个这样的元件。本发明可以借助于包括有若干不同元件的硬件以及借助于适当编程的计算机来实现。在列举了若干装置的单元权利要求中,这些装置中的若干个可以是通过同一个硬件项来具体体现。单词第一、第二、以及第三等的使用不表示任何顺序。可将这些单词解释为名称。

本发明公开了a1、一种基于区块链实现域名解析的方法,其中,多个根域名服务器基于区块链技术组成区块链根域名网络,该方法包括根域名服务器执行的如下步骤:

每个根域名服务器上均存储完整的用于记录顶级域名操作信息的区块链;

当一个根域名服务器接收到广播的顶级域名操作请求时,对该顶级域名操作请求进行验证,并将验证结果广播出去;

一个根域名服务器在担任区块提交者的任期内,负责产生区块,将通过验证的顶级域名操作请求记录到区块中,将区块打包并附加到区块链上。

a2、如a1所述的方法,其中,该方法进一步包括:

当一个根域名服务器收到域名解析请求时,通过查询顶级域名信息得到相应顶级域名对应的顶级域名服务器地址并返回给请求者;

其中,顶级域名信息是根据区块链中的顶级域名操作信息获得的。

a3、如a1所述的方法,其中,该方法进一步包括:

当一个根域名服务器收到递归dns服务器的同步请求时,向该递归dns服务器返回最新的顶级域名信息;或者,一个根域名服务器在顶级域名信息发生变化时,向相应的递归dns服务器发送最新的顶级域名信息;

其中,顶级域名信息是根据区块链中的顶级域名操作信息获得的。

a4、如a1所述的方法,其中,所述对该顶级域名操作请求进行验证包括:

如果该顶级域名操作请求是针对指定顶级域名的修改或删除操作,根据账户与顶级域名的对应关系表,判断发送该顶级域名操作请求的账户是否有对该指定顶级域名进行操作的权限,如果没有则验证不通过;

如果该顶级域名操作请求是新增顶级域名的操作,则判断新增顶级域名是否与已存在的顶级域名重复,如果重复则验证不通过,并在验证通过时将发送该顶级域名操作请求的账户与该新增的顶级域名对应保存到账户与顶级域名的对应关系表中。

a5、如a4所述的方法,其中,所述对该顶级域名操作请求进行验证还包括如下中的一种或多种:

验证该顶级域名操作请求的数据格式是否符合预设的数据格式条件,如果不符合则验证不通过;

验证该顶级域名操作请求的数字签名是否符合预设的签名条件,如果不符合则验证不通过。

a6、如a1所述的方法,其中,该方法还包括:

一个根域名服务器在担任区块提交者的任期内,统计各根域名服务器对于一个顶级域名操作请求的验证结果,当超过预定个数的根域名服务器的验证结果表示验证通过时,确定该顶级域名操作请求通过验证,将其记录到所产生的区块中。

a7、如a1-a6中任一项所述的方法,其中,

各根域名服务器之间通过预先约定的共识机制选出区块提交者。

本发明还公开了b8、一种区块链根域名网络中的根域名服务器,其中,该根域名服务器包括:

存储单元,适于存储完整的用于记录顶级域名操作信息的区块链;

验证单元,适于当本根域名服务器接收到广播的顶级域名操作请求时,对该顶级域名操作请求进行验证,并将验证结果广播出去;

区块处理单元,适于在本根域名服务器在担任区块提交者的任期内,产生区块,将通过验证的顶级域名操作请求记录到区块中,以及将区块打包并附加到区块链上。

b9、如b8所述的根域名服务器,其中,该根域名服务器进一步包括:

域名解析单元,适于在本根域名服务器收到域名解析请求时,通过查询顶级域名信息得到相应顶级域名对应的顶级域名服务器地址并返回给请求者;其中,顶级域名信息是根据区块链中的顶级域名操作信息获得的。

b10、如b8所述的根域名服务器,其中,该根域名服务器进一步包括:

同步单元,适于当本根域名服务器收到递归dns服务器的同步请求时,向该递归dns服务器返回最新的顶级域名信息;或者,适于在顶级域名信息发生变化时,向相应的递归dns服务器发送最新的顶级域名信息;

其中,顶级域名信息是根据区块链中的顶级域名操作信息获得的。

b11、如b8所述的根域名服务器,其中,

所述验证单元,适于当该顶级域名操作请求是针对指定顶级域名的修改或删除操作时,根据账户与顶级域名的对应关系表,判断发送该顶级域名操作请求的账户是否有对该指定顶级域名进行操作的权限,如果没有则验证不通过;以及适于当该顶级域名操作请求是新增顶级域名的操作时,判断新增顶级域名是否与已存在的顶级域名重复,如果重复则验证不通过,并在验证通过时将发送该顶级域名操作请求的账户与该新增的顶级域名对应保存到账户与顶级域名的对应关系表中。

b12、如b11所述的根域名服务器,其中,所述验证单元还适于通过以下的一种或多种方式对该顶级域名操作请求进行验证:

验证该顶级域名操作请求的数据格式是否符合预设的数据格式条件,如果不符合则验证不通过;

验证该顶级域名操作请求的数字签名是否符合预设的签名条件,如果不符合则验证不通过。

b13、如b8所述的根域名服务器,其中,

所述区块处理单元,适于在本根域名服务器在担任区块提交者的任期内,统计各根域名服务器对于一个顶级域名操作请求的验证结果,当超过预定个数的根域名服务器的验证结果表示验证通过时,确定该顶级域名操作请求通过验证,将其记录到所产生的区块中。

b14、如b8-b13中任一项所述的根域名服务器,其中,该根域名服务器进一步包括:

共识模块,适于与其他根域名服务器之间通过预先约定的共识机制选出区块提交者。

本发明还公开了c15、一种域名解析系统,其中,该系统包括:由多个如b8-b14中任一项所述的根域名服务器组成的根域名网络,以及多个递归dns服务器;

递归dns服务器从根域名网络获取顶级域名信息保存到本地。

本发明还公开了d16、一种根域名服务器,其中,该根域名服务器包括:

处理器;以及,

被安排成存储计算机可执行指令的存储器,所述可执行指令在被执行时使所述处理器执行根据a1~a7中任一项所述的方法。

本发明还公开了e17、一种计算机可读存储介质,其中,所述计算机可读存储介质存储一个或多个程序,所述一个或多个程序当被处理器执行时,实现a1~a7中任一项所述的方法。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1