基于区块链的域名分布式认证方法、装置及区块链网络与流程

文档序号:17928172发布日期:2019-06-15 00:34阅读:301来源:国知局
基于区块链的域名分布式认证方法、装置及区块链网络与流程

本发明涉及网络安全领域,尤其涉及一种基于区块链的域名分布式认证方法、装置及区块链网络。



背景技术:

域名解析服务(domainnameservice,dns)是一种将域名解析成ip地址的网络服务。dns本身不考虑安全问题,因此用户无法辨别域名解析数据是否受到了官方授权。为解决上述问题,人们开发dnssec作为dns的替代。相比dns,dnssec有3个关键区别:1)每个域名服务器维护一对公私钥,用以对域名数据进行签名,并将公钥存于dns系统中对应的上层域名服务器;2)每个域名服务器用自己的私钥对域名签名,并将签名存储在本地;3)用户本机存储根服务器公钥(以下简称信任锚)。

基于上述特点,dnssec对域名的认证流程如下:1)用户访问根服务器,请求顶级域名数据(包括解析数据和顶级域名公钥)和顶级域名数据签名,并用本机存储的公钥验证签名是否有效;2)如果顶级域名数据通过验证(表示数据有效),根据解析数据内容访问顶级域名服务器,请求二级域名服务器数据(解析数据和公钥)和数据签名(用顶级域名私钥实现的签名),并根据从根获得的顶级域名公钥验证二级域名数据签名有效性;3)如果有效,重复第2步直至完成域名解析迭代过程,获得可以认证的目标域名解析数据。

本质上,dnssec构建了一条从本机信任锚到目标域名解析数据的信任链,即天然相信信任锚,从而顶级域名解析数据及公钥可信,从而二级域名解析数据及公钥可信…从而目标域名解析数据可信。对于每一个发起dnssec请求的域名解析递归服务器来讲,其信任的来源是存储于本机的信任锚,也就是说,信任来源是中心化的。

然而无论dns还是dnssec,其管理和解析系统架构都是中心化的,这导致域名解析服务存在严重的权利滥用风险。即,当上层服务器删除其管理的下层域名时,下层域名将从internet上彻底消失,尤其对于根服务器,当icann决定删除某个国家的顶级域名,以该国所有顶级域名为后缀的域名将无法被解析。目前这个问题的解决方案为用互连根替代现有根,每个互连根参与的实体维护若干互连根节点,且通过协商共同决定存储的根区文件,并实时在互连根节点间同步根区文件。从而,原有根的中心化管理转化为分布式的管理方案。

虽然互连根解决了现有根的中心化管理带来的权利滥用问题,但是互连根并没有给出一个可靠的域名认证方案。对比dnssec之于dns,互连根需要一个类似于dnssec的认证方案。也就是说,在分布式域名管理的前提下,域名解析如何构建一条到目标域名的信任链?显然,信任锚的管理是中心化的,它不能作为分布式域名认证的解决方案。



技术实现要素:

有鉴于此,本发明的目的在于提供一种基于区块链的域名分布式认证方法、装置及区块链网络,能实现去中心化的分布式的域名认证。

本发明实施例提供了一种基于区块链的域名分布式认证方法,包括:

接收域名写入请求;其中,所述域名写入请求包括域名以及由该域名的有效私钥对更新的域名记录进行运算后得到的签名;

从区块链账本上查询与所述域名对应的有效公钥;

利用所述有效公钥对所述签名进行验证,以判断所述域名写入请求是否有效;

当判断所述域名写入请求有效时,则将该域名写入的记录写入到到区块链账本中,其中,每条记录包括写入域名的名字、写入时间戳、认证数据以及所述签名。

优选地,所述认证数据包括域名资源记录、公钥和域名ksk、域名注册人信息、写入区块链账户信息。

优选地,还包括:

当判断待写入的域名为首次被写入时,直接将域名写入的记录写入到区块链账本中。

优选地,还包括:

当接收到域名查询请求时,读取区块链账本中与被请求的域名相关的记录,并按照记录的生成时间处理每一条记录;其中,对于每一条当前记录,提取签名以及认证数据中的公钥,并用上一条有效记录的公钥,验证当前记录的签名的合法性,如果签名验证不通过,则当前记录视为无效记录;如果验证通过,则用当前记录的公钥替换从上一条有效记录中获得的有效公钥,作为当前的域名的有效公钥;

将域名记录的最后一条有效记录作为查询结果返回给用户。

优选地,由私钥对更新的域名记录进行运算得到签名的过程中,使用的摘要算法包括但不限于md2,md4,md5,sha-1,sha-224,sha-256,sha-384,sha-512,hmacmd2,hmacmd4,hmacmd5,hmacmd2,hmacmd4,hmacmd5算法;使用的加密算法包括但不限于rsa、elgamal、rabin、d-h、ecc算法。

本发明实施例还提供了一种基于区块链的域名分布式认证装置,包括:

写入请求单元,用于接收域名写入请求;其中,所述域名写入请求包括域名以及由该域名的有效私钥对更新的域名记录进行运算后得到的签名;

有效公钥查询单元,用于从区块链账本上查询与所述域名对应的有效公钥;

验证单元,用于利用所述有效公钥对所述签名进行验证,以判断所述域名写入请求是否有效;

写入单元,用于当判断所述域名写入请求有效时,则将该域名写入的记录写入到到区块链账本中,其中,每条记录包括写入域名的名字、写入时间戳、认证数据以及所述签名。

优选地,所述认证数据包括域名资源记录、公钥和域名ksk、域名注册人信息、写入区块链账户信息。

优选地,还包括:

直接写入单元,用于当判断待写入的域名为首次被写入时,直接将域名写入的记录写入到区块链账本中。

优选地,还包括:

域名查询单元,用于当接收到域名查询请求时,读取区块链账本中与被请求的域名相关的记录,并按照记录的生成时间处理每一条记录;其中,对于每一条当前记录,提取签名以及认证数据中的公钥,并用上一条有效记录的公钥,验证当前记录的签名的合法性,如果签名验证不通过,则当前记录视为无效记录;如果验证通过,则用当前记录的公钥替换从上一条有效记录中获得的有效公钥,作为当前的域名的有效公钥;

查询结果返回单元,用于将域名记录的最后一条有效记录作为查询结果返回给用户。

本发明实施例还提供了一种区块链网络,包括通过点对点网络连接的多个节点,其中,每个节点包括如存储器以及处理器,所述存储器内存储有计算机程序,所述计算机程序能够被所述处理器执行,以实现如上述的基于区块链的域名分布式认证方法。

实施本发明具有如下有益效果:

1、当将本发明实施例提出的基于区块链的域名分布式认证应用于根区文件。可以使用户不必维护本地的信任锚,也不必默认对任何中心化管理信息的信任,进而解决了中心式管理带来的权利滥用风险。在本发明中,用户对根区域名认证数据的信任来源于对区块链账本的信任,而因为区块链本身设计的原因,对一个足够长,且副本存储足够多的区块链账本来讲,伪造、篡改行为代价非常大,是几乎不可能做到的;

2、本发明提供了从域名认证数据存储结构,到存储更新,到账本查询的认证数据管理使用方案,在存在恶意域名写入的情况下,只要一个域名的认证数据是最先写入的,就能保证域名不会被冒充。

附图说明

图1是本发明第一实施例提供的基于区块链的域名分布式认证方法的一种流程示意图;

图2是本发明第一实施例提供的基于区块链的域名分布式认证方法的另一种流程示意图;

图3是本发明第一实施例提供的区块链账本的数据结构示意图;

图4是本发明第二实施例提供的域名认证数据查询的流程示意图;

图5是本发明第三实施例提供的基于区块链的域名分布式认证装置的结构示意图。

具体实施方式

下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。

在对本发明进行进一步详细说明之前,以下先对本发明实施例中涉及的名词和术语进行说明。

区块(block)是一个存储单元,各个区块之间通过随机散列(也称哈希算法)实现链接(chain),后一个区块的区块头(区块的头部)包含前一个区块的哈希值,从而实现区块与区块相继接续,形成区块链。其中,一个区块也可以称为一条记录。

区块链(blockchain),多个节点通过一串使用密码学方法相关联产生区块,区块采用“区块头+区块体”的结构,区块头中用于验证记录数据的有效性的数据、以及前一个区块的索引数据,区块体中包含了一定时间内的记录数据。

从功能结构上讲,区块链是一群分散的节点运行的分布式数据库,用以存储各种记录数据如虚拟货币交易的记录数据。从数据结构层面上讲,区块链中包括一系列的区块,新区块一旦加入到区块链中就不会再被移走,区块中包含了记录数据,用于验证记录数据的有效性(防伪)和生成下一个区块。

非对称加密,一种密钥的保密方法。非对称加密算法需要两个密钥:公钥(publickey)和私钥(privatekey)。公钥与私钥是一对,如果用私钥对数据进行加密,那么只有用对应的公钥才能解密。因为加密和解密使用的是两个不同的密钥,所以这种算法叫作非对称加密算法。

请参阅图1及图2,本发明第一实施例提供了一种基于区块链的域名分布式认证方法,包括:

s101,接收域名写入请求;其中,所述域名写入请求包括域名以及由该域名的有效私钥对更新的域名记录进行运算后得到的签名。

如图3所示,在本实施例中,当判断待写入的域名为首次被写入时,直接将域名写入的记录写入到区块链账本中。其中,第一条生成的记录包括域名的名字、写入时间戳、认证数据。所述认证数据包括但不限于域名资源记录、公钥(包括域名zsk(zonesigningkey)和域名ksk(keysigningkey)),域名注册人信息,写入区块链账户信息等。

在本实施例中,如果待写入的域名不是首次写入,则在写入时需使用域名当前的有效私钥对更新的域名记录进行签名,以证明域名记录的合法性。

其中,签名包括对更新的域名记录进行摘要以及加密两个步骤。摘要时采用的摘要算法包括但不限于md2,md4,md5,sha-1,sha-224,sha-256,sha-384,sha-512,hmacmd2,hmacmd4,hmacmd5,hmacmd2,hmacmd4,hmacmd5算法。加密时采用的加密算法包括但不限于rsa、elgamal、rabin、d-h、ecc算法,本发明不做具体限定。

s102,从区块链账本上查询与所述域名对应的有效公钥。

s103,利用所述有效公钥对所述签名进行验证,以判断所述域名写入请求是否有效。

s104,当判断所述域名写入请求有效时,则将该域名写入的记录写入到到区块链账本中,其中,每条记录包括写入域名的名字、写入时间戳、认证数据以及所述签名。

在本实施例中,私钥由域名的拥有者或者维护者所管理,而公钥则存储在区块链账本上。在接收域名写入请求后,首先从区块链账本上查询与所述域名对应的有效公钥,根据非对称加密原理,通过有效公钥对签名进行解密,如果能够成功解密,则说明对更新的域名记录进行签名的私钥与所述有效公钥是一对的,该域名写入请求是由域名的拥有者或者维护者发起的,因此该域名写入请求有效。此时将该域名写入的记录写入到到区块链账本中,其中,每条记录包括写入域名的名字、写入时间戳、认证数据以及所述签名。

如图4所示,在第一实施例的基础上,在本发明的第二实施例中,还提供对应的域名认证数据查询的流程,流程包括:

当接收到域名查询请求时,读取区块链账本中与被请求的域名相关的记录,并按照记录的生成时间处理每一条记录;其中,对于每一条当前记录,提取签名以及认证数据中的公钥,并用上一条有效记录的公钥,验证当前记录的签名的合法性,如果签名验证不通过,则当前记录视为无效记录;如果验证通过,则用当前记录的公钥替换从上一条有效记录中获得的有效公钥,作为当前的域名的有效公钥;

将域名记录的最后一条有效记录作为查询结果返回给用户。

上述实施例具有如下有益效果:

1、当将本发明实施例提出的基于区块链的域名分布式认证应用于根区文件。可以使用户不必维护本地的信任锚,也不必默认对任何中心化管理信息的信任,进而解决了中心式管理带来的权利滥用风险。在本发明中,用户对根区域名认证数据的信任来源于对区块链账本的信任,而因为区块链本身设计的原因,对一个足够长,且副本存储足够多的区块链账本来讲,伪造、篡改行为代价非常大,是几乎不可能做到的。

2、本发明提供了从域名认证数据存储结构,到存储更新,到账本查询的认证数据管理使用方案,在存在恶意域名写入的情况下,只要一个域名的认证数据是最先写入的,就能保证域名不会被冒充。

请参阅图5,本发明第三实施例还提供了一种基于区块链的域名分布式认证装置,包括:

写入请求单元310,用于接收域名写入请求;其中,所述域名写入请求包括域名以及由该域名的有效私钥对更新的域名记录进行运算后得到的签名;

有效公钥查询单元320,用于从区块链账本上查询与所述域名对应的有效公钥;

验证单元330,用于利用所述有效公钥对所述签名进行验证,以判断所述域名写入请求是否有效;

写入单元340,用于当判断所述域名写入请求有效时,则将该域名写入的记录写入到到区块链账本中,其中,每条记录包括写入域名的名字、写入时间戳、认证数据以及所述签名。

优选地,所述认证数据包括域名资源记录、公钥和域名ksk、域名注册人信息、写入区块链账户信息。

优选地,还包括:

直接写入单元,用于当判断待写入的域名为首次被写入时,直接将域名写入的记录写入到区块链账本中。

优选地,还包括:

域名查询单元,用于当接收到域名查询请求时,读取区块链账本中与被请求的域名相关的记录,并按照记录的生成时间处理每一条记录;其中,对于每一条当前记录,提取签名以及认证数据中的公钥,并用上一条有效记录的公钥,验证当前记录的签名的合法性,如果签名验证不通过,则当前记录视为无效记录;如果验证通过,则用当前记录的公钥替换从上一条有效记录中获得的有效公钥,作为当前的域名的有效公钥;

查询结果返回单元,用于将域名记录的最后一条有效记录作为查询结果返回给用户。

本发明实施例还提供了一种区块链网络,包括通过点对点网络连接的多个节点,其中,每个节点包括如存储器以及处理器,所述存储器内存储有计算机程序,所述计算机程序能够被所述处理器执行,以实现如上述的基于区块链的域名分布式认证方法。

示例性的,所述计算机程序可以被分割成一个或多个模块/单元,所述一个或者多个模块/单元被存储在所述存储器中,并由所述处理器执行,以完成本发明。所述一个或多个模块/单元可以是能够完成特定功能的一系列计算机程序指令段,该指令段用于描述所述计算机程序在所述节点中的执行过程。

所述节点可包括,但不仅限于,处理器、存储器。本领域技术人员可以理解,上述部件仅仅是节点的示例,并不构成对节点的限定,可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件,例如所述节点还可以包括输入输出设备、网络接入设备、总线等。

所称处理器可以是中央处理单元(centralprocessingunit,cpu),还可以是其他通用处理器、数字信号处理器(digitalsignalprocessor,dsp)、专用集成电路(applicationspecificintegratedcircuit,asic)、现成可编程门阵列(field-programmablegatearray,fpga)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等,所述处理器是所述节点的控制中心,利用各种接口和线路连接整个节点的各个部分。

所述存储器可用于存储所述计算机程序和/或模块,所述处理器通过运行或执行存储在所述存储器内的计算机程序和/或模块,以及调用存储在存储器内的数据,实现所述节点的各种功能。所述存储器可主要包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需的应用程序(比如声音播放功能、图像播放功能等)等;存储数据区可存储根据手机的使用所创建的数据(比如音频数据、电话本等)等。此外,存储器可以包括高速随机存取存储器,还可以包括非易失性存储器,例如硬盘、内存、插接式硬盘,智能存储卡(smartmediacard,smc),安全数字(securedigital,sd)卡,闪存卡(flashcard)、至少一个磁盘存储器件、闪存器件、或其他易失性固态存储器件。

其中,所述节点集成的模块/单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明实现上述实施例方法中的全部或部分流程,也可以通过计算机程序来指令相关的硬件来完成,所述的计算机程序可存储于一计算机可读存储介质中,该计算机程序在被处理器执行时,可实现上述各个方法实施例的步骤。其中,所述计算机程序包括计算机程序代码,所述计算机程序代码可以为源代码形式、对象代码形式、可执行文件或某些中间形式等。所述计算机可读介质可以包括:能够携带所述计算机程序代码的任何实体或装置、记录介质、u盘、移动硬盘、磁碟、光盘、计算机存储器、只读存储器(rom,read-onlymemory)、随机存取存储器(ram,randomaccessmemory)、电载波信号、电信信号以及软件分发介质等。需要说明的是,所述计算机可读介质包含的内容可以根据司法管辖区内立法和专利实践的要求进行适当的增减,例如在某些司法管辖区,根据立法和专利实践,计算机可读介质不包括电载波信号和电信信号。

需说明的是,以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。另外,本发明提供的装置实施例附图中,模块之间的连接关系表示它们之间具有通信连接,具体可以实现为一条或多条通信总线或信号线。本领域普通技术人员在不付出创造性劳动的情况下,即可以理解并实施。

以上所述是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也视为本发明的保护范围。

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