您的当前位置:首页正文

一种DNS资源记录的去中心化存储系统及其实现、信息检索方法[发明专利]

来源:爱站旅游
导读一种DNS资源记录的去中心化存储系统及其实现、信息检索方法[发明专利]
(19)中华人民共和国国家知识产权局

(12)发明专利申请

(10)申请公布号 CN 110061838 A(43)申请公布日 2019.07.26

(21)申请号 201910350269.5(22)申请日 2019.04.28

(71)申请人 广州大学

地址 510006 广东省广州市番禺广州大学

城外环西路230号(72)发明人 胡宁 王文通 刘亚萍 吴纯青 

张硕 (74)专利代理机构 广州三环专利商标代理有限

公司 44202

代理人 颜希文 宋静娜(51)Int.Cl.

H04L 9/08(2006.01)H04L 29/08(2006.01)H04L 29/12(2006.01)G06F 16/13(2019.01)

权利要求书2页 说明书11页 附图9页

(54)发明名称

一种DNS资源记录的去中心化存储系统及其实现、信息检索方法(57)摘要

本发明公开了一种DNS资源记录的去中心化存储系统及其实现、信息检索方法,该系统包括:链上存储层,利用智能合约存储DNS资源记录、索引外部存储中关键DNS资源记录以及溯源DNS资源记录;链下存储层,采用IPFS存储DNS资源记录,每个IPFS节点对应一标识身份的哈希地址,将标识身份的哈希地址和记录信息的哈希值存储在区块链中,确保资源记录的真实性和完整性;用户层包括DNS管理员和DNS用户,前者负责DNS数据库信息注册和更新,同步DNS关键数据到外部存储中,并利用智能合约将相关信息写入区块中,后者通过DNS客户端查询域名对应的资源记录,并查询区块链和外部存储中的记录,验证记录的真实性和完整性。

CN 110061838 ACN 110061838 A

权 利 要 求 书

1/2页

1.一种DNS资源记录的去中心化存储系统,包括:链上存储层,利用智能合约存储DNS资源记录、索引外部存储中DNS资源记录以及溯源DNS资源记录;

链下存储层,采用IPFS存储DNS资源记录,每个IPFS节点对应一个标识身份的哈希地址,将标识身份的哈希地址和记录信息的哈希值存储在区块链中,确保资源记录的真实性和完整性;

用户层,包括DNS管理员和DNS用户,DNS管理员负责DNS数据库信息注册和更新,同步DNS关键数据到外部存储中,并利用智能合约将DNS注册信息、更新信息、记录的哈希值、签名信息、外部存储链接地址写入区块中;DNS用户通过DNS客户端查询域名对应的资源记录,并且进一步根据域名对应的地址,查询区块链和外部存储中的记录,验证记录的真实性和完整性。。

2.如权利要求1所述的一种DNS资源记录的去中心化存储系统,其特征在于:所述链上存储层利用智能合约将域名资源记录的哈希值、资源记录签名、更新信息、外部存储链接、公钥信息写入区块中,并利用共识算法确保区块链网络中的每个节点中存储的记录相同,为资源记录提供真实性和完整性保证,所述区块链层还用于索引外部存储中DNS资源记录,利用智能合约将资源记录在外部存储中的链接地址和记录的哈希值存储在区块中,以将区块链和外部存储进行关联,所述区块链中区块按照时间顺序进行存储,每个区块中存储资源记录在外部存储中的地址、资源记录的更新记录信息,以通过所述区块链溯源某个域名的历史信息。

3.如权利要求2所述的一种DNS资源记录的去中心化存储系统,其特征在于:所述智能合约包括但不限于共识合约、关系合约、所有权合约、历史记录合约以及服务合约,通过该五种合约将DNS层级关系、资源记录、历史更新信息写入区块链中。

4.如权利要求3所述的一种DNS资源记录的去中心化存储系统,其特征在于:所述共识合约负责用户注册信息写入,所述关系合约负责存储DNS层级关系,所述所有权合约负责记录域名服务器所管理域名的具体信息,所述历史记录合约负责将DNS zone文件更新信息写入区块链中,所述服务合约负责记录域名服务器的服务记录。

5.如权利要求4所述的一种DNS资源记录的去中心化存储系统,其特征在于:所述区块链中的每个节点经共识算法协商一致后,授权加入区块链网络,所述共识合约将用户注册信息写入区块链。

6.一种DNS资源记录的去中心化存储系统的实现方法,包括如下步骤:步骤S1,采用联盟链的方式构建区块链网络,利用智能合约对注册节点的注册申请进行处理,并通过共识算法经授权后将其加入所述区块链网络,通过智能合约将包含DNS资源记录的DNS zone文件写入所述区块链网络中,采取链上/链下相结合的方式进行管理,在链下将完整数据存储在外部存储中,在链上将域名资源记录的文件哈希值、外部链接地址、验证外部数据的公钥信息存储在区块链中,通过区块链保证DNS数据的真实性和完整性,同时利用外部存储系统扩展区块链的存储空间;

步骤S2,于数据更新时,通过服务器节点将要更新的资源记录同步链下存储,并将域名配置文件的链接地址、记录的哈希值、状态信息发送给服务合约,利用服务合约存储更新的域名信息,并生成历史合约,记录更新的状态和更新的内容。

2

CN 110061838 A

权 利 要 求 书

2/2页

7.如权利要求6所述的一种DNS资源记录的去中心化存储系统的实现方法,其特征在于,步骤S1进一步包括:

注册节点向区块链网络提出注册申请;共识合约将消息推送给投票池节点,进行确认;投票池节点检查域名信息是否合法且未注册,若域名合法且未注册,则返回注册成功,否则返回注册失败;

所述共识合约处理投票结果,若投票结果合法,则创建关系合约,否则丢弃注册信息;共识合约将注册消息转发给关系合约;

关系合约将注册消息转给发对应的服务器节点;上级服务器节点同意授权该节点,并将申请信息和自身签名发送给关系合约;关系合约对注册信息和授权服务器签名进行编译,并创建服务合约;关系合约将注册好的信息写入服务合约;服务合约的地址返回给注册节点,注册节点利用服务合约进行域名信息操作。8.如权利要求7所述的一种DNS资源记录的去中心化存储系统的实现方法,其特征在于,所述方法还包括:

在系统的开始阶段,所述共识合约为空,临时管理员节点根据需要添加初始节点,一旦有足够多的完整节点加入后,允许移除临时管理员,协商一致的过程按照共识算法执行。

9.一种DNS资源记录的去中心化信息检索方法,包括如下步骤:步骤S1,端用户在检索域名信息时,向可信服务器发起查询请求;步骤S2,所述可信服务器查找缓存,若缓存没有命中,则向区块链中的服务合约发起查询请求,服务合约记录每个域名对应的服务器和外部链接地址;

步骤S3,所述服务合约将检索到的域名对应的zone文件的外部地址和记录哈希值返回给可信服务器;

步骤S4,所述可信服务器收到外部链接地址后,查询外部zone文件记录,并计算外部记录哈希和服务合约返回记录哈希作比较,以防止外部记录被篡改,若两个哈希值结果相同,可信服务器将检索到的信息返回给端用户。

10.如权利要求9所述的一种DNS资源记录的去中心化信息检索方法,其特征在于,所述方法还包括:

对检索结果进行验证,将DNS中心化的验证方式,转为分布式验证方式,通过区块链技术,将DNS资源记录的验证变为查找集体维护的账本,利用签名机制和哈希算法保证查找链上记录的方式保证记录的真实性和完整性。

3

CN 110061838 A

说 明 书

1/11页

一种DNS资源记录的去中心化存储系统及其实现、信息检索

方法

技术领域

[0001]本发明涉及区块链技术领域,特别是涉及一种基于联盟链的DNS资源记录的去中心化存储系统及其实现、信息检索方法。背景技术

[0002]当前DNS(Domain Name System,域名系统)系统的体系结构是一种中心化的层级结构,DNS根服务器作为整个DNS系统的控制中心,负责DNS全局管理和解析,所有域名的解析和验证都需要DNS根服务器参与,这种体系结构一方面增加了根服务器的处理负担,另一方面存在单点故障隐患。当根服务器不可访问或者发生故障时,,将导致整个互联网域名系统瘫痪。

[0003]现有中心化层级结构的DNS系统还存在单边控制隐患。目前13台根服务有10台位于美国,2台位于欧洲,1台位于日本,DNS服务器的分布和数目严重不均衡,导致网络空间主权存在严重的单边控制现象,主要包括两个方面:一是域名消失性风险。只需在根服务器中删除特定国家的顶级域名记录,并拒绝提供到该国家的域名注册就可以实现。二是拒绝访问风险。在根服务器及其镜像服务器中,拒绝来自某一国家顶级域名的解析请求。在根服务器中也可以设置对特定域名及其子集的访问策略,从而破坏该域名对应组织的网络主权。[0004]基于PKI(Public Key Infrastructure,公开密钥基础设施)的DNS安全解决方案难以广泛部署。目前提出的DNS安全增强或替代方案大多基于数字签名和PKI基础设施,而这类方案需要修改DNS协议,无法和传统DNS系统保持兼容,因此难以大规模部署,例如:目前89%的顶级域名服务器部署了DNSSEC(Domain Name System Security Extensions,DNS安全扩展),但是二级域名部署率仅为3%,这使得DNSSEC在实际应用中难以发挥作用。此外,PKI基础设施本身就存在单边控制问题,难以在全球范围部署。[0005]综上所述,由于DNS系统过于明显的中心化特征是造成DNS系统安全隐患难以根治的重要原因,为此,DNS去中心化成为了一个重要的发展方向。因此,本发明拟在不改变DNS协议的情况下,提出一种去中心化的DNS资源记录存储、检索和验证方法。发明内容

[0006]为克服上述现有技术存在的不足,本发明之目的在于提供一种DNS资源记录的去中心化存储系统及其实现、信息检索方法,利用联盟链去中心化、数据分布式存储、不可篡改、集体维护的特点,实现基于联盟链的DNS资源记录去中心化存储和检索的目的,在不改变DNS协议的前提下,防止DNS资源记录被恶意篡改和伪造,提高DNS系统解析和验证效率。[0007]为达上述目的,本发明提出一种DNS资源记录的去中心化存储系统,包括:[0008]链上存储层,利用智能合约存储DNS资源记录、索引外部存储中DNS资源记录以及溯源DNS资源记录;[0009]链下存储层,采用IPFS存储DNS资源记录,每个IPFS节点对应一个标识身份的哈希

4

CN 110061838 A

说 明 书

2/11页

地址,将标识身份的哈希地址和记录信息的哈希值存储在区块链中,确保资源记录的真实性和完整性;[0010]用户层,包括DNS管理员和DNS用户,DNS管理员负责DNS数据库信息注册和更新,同步DNS关键数据到外部存储中,并利用智能合约将DNS注册信息、更新信息、记录的哈希值、签名信息、外部存储链接地址写入区块中;DNS用户通过DNS客户端查询域名对应的资源记录,并且进一步根据域名对应的地址,查询区块链和外部存储中的记录,验证记录的真实性和完整性。

[0011]优选地,所述链上存储层利用智能合约将域名信息的哈希值、资源记录签名、更新信息、外部存储链接、公钥信息写入区块中,并利用共识算法确保区块链网络中的每个节点中存储的记录相同,为资源记录提供真实性和完整性保证,所述区块链层还用于索引外部存储中关键DNS资源记录,利用智能合约将关键资源记录在外部存储中的链接地址和记录的哈希值存储在区块中,以将区块链和外部存储进行关联,所述区块链中区块按照时间顺序进行存储,每个区块中存储资源记录在外部存储中的地址、资源记录的更新记录信息,以通过所述区块链溯源某个域名的历史信息。[0012]优选地,所述智能合约包括共识合约、关系合约、所有权合约、历史记录合约以及服务合约,通过该五种合约将DNS层级关系、资源记录、历史更新信息写入区块链中。[0013]优选地,所述共识合约负责用户注册信息写入,所述关系合约负责存储DNS层级关系,所述所有权合约负责记录域名服务器所管理域名的具体信息,所述历史记录合约负责将包含DNS资源记录的DNS zone文件更新信息写入区块链中,所述服务合约负责记录域名服务器的服务记录。[0014]优选地,所述区块链中的每个节点经共识算法协商一致后,授权加入区块链网络,所述共识合约将用户注册信息写入区块链。[0015]为达到上述目的,本发明还提供一种DNS资源记录去中心化存储系统的实现方法,包括如下步骤:[0016]步骤S1,采用联盟链的方式构建区块链网络,利用智能合约对注册节点的注册申请进行处理,并通过共识算法经授权后将其加入所述区块链网络,通过智能合约将包含DNS资源记录的DNS zone文件写入所述区块链网络中,采取链上/链下相结合的方式进行管理,在链下将完整数据存储在外部存储中,在链上将域名资源记录的文件哈希值、外部链接地址、验证外部数据的公钥信息存储在区块链中,通过区块链保证DNS数据的真实性和完整性,同时利用外部存储系统扩展区块链的存储空间;[0017]步骤S2,于数据更新时,通过服务器节点将要更新的资源记录同步链下存储,并将域名配置文件的链接地址、记录的哈希值、状态信息发送给服务合约,利用服务合约存储更新的域名信息,并生成历史合约,记录更新的状态和更新的内容。[0018]优选地,步骤S1进一步包括:

[0019]注册节点向区块链网络提出注册申请;[0020]共识合约将消息推送给投票池节点,进行确认;[0021]投票池节点检查域名信息是否合法且未注册,若域名合法且未注册,则返回注册成功,否则返回注册失败;

[0022]所述共识合约处理投票结果,若投票结果合法,则创建关系合约,否则丢弃注册信

5

CN 110061838 A

说 明 书

3/11页

息;

共识合约将注册消息转发给关系合约;

[0024]关系合约将注册消息转给发对应的服务器节点;[0025]上级服务器节点同意授权该节点,并将申请信息和自身签名发送给关系合约;[0026]关系合约对注册信息和授权服务器签名进行编译,并创建服务合约;[0027]关系合约将注册好的信息写入服务合约;[0028]服务合约的地址返回给注册节点,注册节点利用服务合约进行域名信息操作。[0029]优选地,所述方法还包括:[0030]在系统的开始阶段,所述共识合约为空,临时管理员节点根据需要添加初始节点,一旦有足够多的完整节点加入后,允许移除临时管理员,协商一致的过程按照共识算法执行。

[0031]为达到上述目的,本发明还提供一种DNS资源记录的去中心化检索方法,包括如下步骤:

[0032]步骤S1,端用户在检索域名信息时,向可信服务器发起查询请求;[0033]步骤S2,所述可信服务器查找缓存,若缓存没有命中,则向区块链中的服务合约发起查询请求,服务合约记录每个域名对应的服务器和外部链接地址;[0034]步骤S3,所述服务合约将检索到的域名对应的zone文件的外部地址和记录哈希值返回给可信服务器;[0035]步骤S4,所述可信服务器收到外部链接地址后,查询外部zone文件记录,并计算外部记录哈希和服务合约返回记录哈希作比较,以防止外部记录被篡改,若两个哈希值结果相同,可信服务器将检索到的信息返回给端用户。[0036]优选地,所述方法还包括:[0037]对检索结果进行验证,将DNS中心化的验证方式,转为分布式验证方式,通过区块链技术,将DNS资源记录的验证变为查找集体维护的账本,利用签名机制和哈希算法保证查找链上记录的方式保证记录的真实性和完整性。[0038]与现有技术相比,本发明提出了一种DNS资源记录的去中心化存储系统及其实现、信息检索方法,通过智能合约将DNS zone文件写入以太坊区块链中,采取链上/链下相结合的方式进行管理,在链下将完整数据存储在外部存储中,在链上将域名资源记录(RR)的文件哈希值、外部链接地址、验证外部数据的公钥信息存储在区块链中,通过区块链保证DNS资源记录的真实性和完整性,同时利用外部存储系统扩展区块链的存储空间,提高了系统可扩展性,本发明实现了在检索域名的同时验证域名,相比DNSSEC在得到检索结果后再进行域名验证的方式,缩短了验证路径和过程,提升验证效率。附图说明

[0039]图1为本发明提出的DNS资源记录去中心化存储、检索和验证方法的结构示意图;[0040]图2为本发明具体实施例中智能合约的示意图;

[0041]图3为本发明提出的DNS资源记录去中心化存储系统的实现方法的步骤流程图;[0042]图4为本发明具体实施例中联盟链的网络示意图;[0043]图5为本发明具体实施例中节点添加的过程示意图;

6

[0023]

CN 110061838 A[0044][0045][0046][0047][0048][0049][0050]

说 明 书

4/11页

图6为本发明具体实施例中共识算法的流程图;

图7为本发明具体实施例中数据更新过程的流程图;

图8为本发明提出的DNS资源记录去中心化信息检索方法的步骤流程图;图9为本发明具体实施例中数据检索过程示意图;

图10为本发明具体实施例中基于区块链的DNS资源记录检索和验证过程示意图;图11为本发明具体实施例中秘钥更新流程示意图;

图12为本发明具体实施例中资源记录检索和验证过程示意图。

具体实施方式

[0051]以下通过特定的具体实例并结合附图说明本发明的实施方式,本领域技术人员可由本说明书所揭示的内容了解本发明的其它优点与功效。本发明亦可通过其它不同的具体实例加以施行或应用,本说明书中的各项细节亦可基于不同观点与应用,在不背离本发明的精神下进行各种修饰与变更。

[0052]图1为本发明提出的DNS资源记录的去中心化存储系统的结构示意图。如图1所示,该DNS资源记录的去中心化存储系统,包括:[0053]链上存储层10,用于存储DNS资源记录、索引外部存储中关键DNS资源记录以及溯源DNS资源记录。具体地,链上存储层10利用智能合约将域名信息的哈希值、资源记录签名、更新信息、外部存储链接、公钥信息写入区块中,并利用共识算法确保区块链网络中的每个节点中存储的记录相同,为资源记录提供真实性和完整性保证,所述区块链层10还用于索引外部存储中DNS资源记录,即利用智能合约将关键资源记录在外部存储中的链接地址和记录的哈希值存储在区块中,以将区块链和外部存储进行关联,由于区块链中区块都是按照时间顺序进行存储,每个区块中存储资源记录在外部存储中的地址、资源记录的更新记录信息,因此通过区块链10可以溯源某个域名的历史信息。[0054]链下存储层20,用于负责存储DNS资源记录。在本发明具体实施例中,链下存储层20采用IPFS(Inter Planetary File System,星际文件系统)外部存储系统,IPFS会保存每次DNS管理员提交的记录信息,每个IPFS对应一个标识身份的哈希地址,将标识身份的哈希地址和记录信息的哈希值存储在区块链中,确保资源记录的真实性和完整性。[0055]用户层30,主要包含两种用户:DNS管理员和搜索用户,其中DNS管理员负责DNS数据库信息注册和更新,同步DNS关键数据到外部存储中,并利用智能合约将DNS注册信息、更新信息、记录的哈希值、签名信息、外部存储链接地址写入区块中;DNS用户则利用DNS客户端查询域名对应的资源记录,对检索到的IP地址,查询区块链和外部存储中的记录,验证记录的真实性和完整性。

[0056]为了方便DNS资源记录写入区块链中,本发明构造了5种智能合约,包括:共识合约(Consensus Contract,CC)、关系合约(Relationship Contract,RC)、所有权合约(Ownership Contract,OC)(图中未示出)、历史记录合约(History Contract,HC)、服务合约(Service Contract,SC)。通过这5种合约将DNS层级关系、资源记录、历史更新信息写入区块链中。为了使节点间的合约相互独立,合约只有通过已生成的合约才能创建。具体地,区块链层10所采用的智能合约如图2所示,所述智能合约如下所示:[0057](1)共识合约(CC):共识合约负责用户注册信息写入,共识合约各字段含义如下:

7

CN 110061838 A[0058]

说 明 书

5/11页

Ethereum Addr:授权用户加入的以太坊地址

[0059]Reponsible Domain:负责管理的域名空间[0060]User Type:用户类型,包括查询用户、域名申请者[0061]RC Addr:负责存储层级关系的合约地址

[0062]区块链中的每个节点经共识算法协商一致后,授权加入区块链网络,共识合约将上诉信息写入区块链。

[0063]对于用户注册过程,共识合约CC用于验证注册节点是否被重复注册,防止攻击者进行恶意抢注。为了构建DNS服务器间的层级关系,上级服务器通过关系合约RC存储授权的下级服务器,关系合约的地址保存在注册节点的共识合约中,新注册节点通过共识算法经授权后加入,防止新加入节点对系统构成威胁。应该注意,在系统的开始阶段,共识合约CC将为空。因此,临时管理员节点将需要添加初始节点,例如将顶级域名服务器节点作为起始加入节点。一旦有足够多的完整节点加入后,允许移除临时管理员,协商一致的过程按照共识算法执行。

[0064]2)关系合约(RC):关系合约负责存储DNS层级关系,关系合约各字段含义如下:[0065]Ethereum Addr:授权的下一级服务器以太坊地址[0066]Reponsible Domain:授权的下一级服务器负责的名称空间[0067]IP:服务器的IP地址[0068]Level:服务器层级[0069]HC Addr:关系合约地址[0070]Server Signature:信息签名[0071]对于服务器授权出的名称空间,为了记录层级关系,上级服务器在共识合约CC关联的关系合约RC中存储授权的名称服务器管理的名称空间、IP和关联的以太坊地址信息。上级服务器授权的名称空间会有多个,关系合约负责记录每个授权记录。对于每个授权服务器信息,都会按照时间顺序记录在区块链中,以便后续的查找和溯源。[0072]3)所有权合约(OC):所有权合约负责记录域名服务器所管理域名的具体信息,所有权合约各字段含义如下:[0073]Ethereum Addr:资源记录管理者地址信息[0074]Domain Name:负责管理的域名[0075]IP Addr:域名对应的IP地址[0076]External Link:资源记录外部存储的链接[0077]Hash:资源记录的哈希[0078]HC Addr:历史记录合约的地址[0079]由于每个区块的存储空间有限,如果将完整的资源记录信息存储在区块链中,会使区块链的长度迅速增长,不易管理和维护。因此,为方便快速查找域名地址信息,在每个区块中直接存储域名和地址,其他资源记录存储在外部存储中。外部存储的链接地址保存在External Link字段中。为防止外部资源记录恶意篡改,资源记录的哈希值保存在Hash字段。DNS资源记录信息会实时更新,通过构建历史记录合约存储更新信息。历史记录合约的地址保存在所有权合约中。

[0080]完整DNS资源存储在IPFS中,每个域名配置(zone)文件对应IPFS中的一个节点ID,

8

CN 110061838 A

说 明 书

6/11页

这个节点ID不可变,且只有DNS服务器管理员拥有,负责更新DNS域名配置(zone)文件。更新后的域名配置(zone)文件将由历史记录合约写入区块链。[0081]4)历史记录合约(HC):历史记录合约负责将DNS zone文件更新信息写入区块链中,历史记录合约各字段具体含义如下:[0082]Ethereum Addr:zone文件管理者地址[0083]New_Hash:更新后zone文件哈希[0084]Condition:状态,添加、修改、删除[0085]IPFS ID:用户在IPFS中的标识[0086]对zone文件的更改信息,通过历史记录合约将更改后的信息写入区块链,对于每次更改的信息,在外部IPFS中保存每次提交的副本,同时在区块链中存储记录的哈希,确保每次提交的zone文件信息不被篡改,通过区块链和外部IPFS可以溯源zone文件信息。[0087]5)服务合约(SC)(图中未示出):负责记录域名服务器的服务记录,服务合约各字段具体含义如下:[0088]Ethereum Addr:zone文件管理者地址[0089]Service Record:服务记录[0090]Condition:状态,添加、修改、删除[0091]IPFS ID:用户在IPFS中的标识[0092]也就是说,本发明通过智能合约将DNS zone文件写入以太坊区块链中,采取链上/链下相结合的方式进行管理。在链下将完整数据存储在外部存储中,在链上将域名资源记录(RR)的文件哈希值、外部链接地址、验证外部数据的公钥信息存储在区块链中,通过区块链保证DNS数据的真实性和完整性,同时利用外部存储系统扩展区块链的存储空间,提高系统可扩展性,本发明实现了在检索域名的同时验证域名,相比DNSSEC在得到检索结果后再进行域名验证的方式,缩短了验证路径和过程,提升验证效率。

[0093]图3为本发明一种DNS资源记录的去中心化存储系统的实现方法的步骤流程图。如图3所示,本发明一种DNS资源记录的去中心化存储系统的实现方法,包括如下步骤:[0094]步骤S1,采用联盟链的方式构建区块链网络,利用智能合约对注册节点的注册申请进行处理,将其加入所述区块链网络,通过智能合约将DNS zone文件写入所述区块链网络中,采取链上/链下相结合的方式进行管理,在链下将完整数据存储在外部存储中,在链上将域名资源记录(RR)的文件哈希值、外部链接地址、验证外部数据的公钥信息存储在区块链中,通过区块链保证DNS数据的真实性和完整性,同时利用外部存储系统扩展区块链的存储空间。

[0095]在本发明具体实施例中,所述智能合约包括共识合约CC、关系合约RC、所有权合约OC、历史记录合约HC以及服务合约SC。所述区块链网络采用联盟链的方式构建,服务器节点授权加入联盟链网络,所述联盟链的网络示意图如图4所示。假定加入系统的服务器节点已经安装Ethereum客户端并创建Ethereum地址,节点添加过程如图5所示,具体地,步骤S1的节点添加过程如下:

[0096]1)注册节点向区块链网络中提出注册申请,其中包括Ethereum地址、域名信息、所属服务器层级、身份信息;

[0097]2)共识合约将消息推送给投票池节点,进行确认;

9

CN 110061838 A[0098]

说 明 书

7/11页

3)投票池节点检查域名信息是否合法且未注册,若域名合法且未注册,则返回注

册成功,否则返回注册失败;

[0099]4)共识合约处理投票结果,若投票结果合法,则创建关系合约,否则丢弃注册信息;

[0100]5)共识合约将注册消息转发给关系合约;

[0101]6)关系合约将注册消息转给发对应的服务器节点;[0102]7)上级服务器节点同意授权该节点,并将申请信息和自身签名发送给关系合约;[0103]8)关系合约对注册信息和授权服务器签名进行编译,并创建服务合约;[0104]9)关系合约将注册好的信息写入服务合约;[0105]10)服务合约的地址返回给注册节点,注册节点利用服务合约进行域名信息操作。[0106]可见,对于用户注册过程,共识合约CC验证注册节点是否被重复注册,防止攻击者进行恶意抢注,为了构建DNS服务器间的层级关系,上级服务器通过关系合约存储授权的下级服务器,关系合约的地址保存在注册节点的共识合约中。新注册节点通过共识算法经授权后加入,防止新加入节点对系统构成威胁。应该注意,在系统的开始阶段,共识合约CC将为空,因此,临时管理员节点将需要添加初始节点,例如将顶级域名服务器节点作为起始加入节点。一旦有足够多的完整节点加入后,允许移除临时管理员,协商一致的过程按照共识算法执行。

[0107]以下说明本发明具体实施例中所采用的共识算法(即数据更新的共识过程):[0108]1)算法思想

[0109]考虑到PBFT(共识算法)算法在网络带宽和节点通信方式方面的局限性,结合区块链的特点,PBFT算法不要求每个消息先排好顺序,每个节点只需完成消息的验证和确认,将PBFT的3次广播过程缩减为2次,降低网络的通信开销。[0110]2)符号表示

[0111]设系统中参与共识的节点数为N,能容忍的最大恶意节点数为f,则N必须满足公式N≥3f+1,系统中共识节点参与记账过程,普通节点可以看到共识过程,但并不参与。参与共识的节点分为两种类型:主节点m,从节点s。为保证消息的真实性和完整性,消息发送过程中,采用签名的方式,设函数σ为签名函数,msg为要发送的消息,hash为哈希函数,则签名值Sig表示为

[0112]Sigmsg=σ(hash(msg))

[0113]在每轮共识过程中所需要的数据集合记为视图v,集合从0开始编号,如果当前的集合没有达成共识,则需要进入下一个集合,直至达成共识。共识过程参与的节点也进行编号,每轮选择一个节点作为主节点,其他节点作为从节点。[0114]假设初始时参与共识的节点具有相同的初始状态,即初始区块高度h、上一区块哈希、版本号一致。初始视图编号和主节点编号关系如公式(1)所示

[0115]

若非共识节点收到交易信息,则将消息进行转发。共识节点由主节点发起共识请求,子共识节点收到交易消息,则验证消息的正确性,若消息经验证后正确则保存该信息,发送共识确认广播,否则广播视图更新信息。当共识过程结束后,删除交易信息,更新视图

10

[0116]

CN 110061838 A

说 明 书

8/11页

和区块高度,准备进入新的阶段,具体地,共识算法的流程如图6所示。所述共识算法主要包含两个方面:

[0117]A.主节点广播共识请求[0118]主节点的任期为时间t,主节点m向其他共识节点广播共识提案消息[0119]{ConsensusRequest,h,v,m,Block,SigBlock}

[0120]其中ConsensusRequest代表消息类型为共识请求,h是当前区块高度,v当前视图编号,m主节点编号,Block一段时间内交易构成的区块,SigBlock为区块信息签名。[0121]B.子节点共识确认阶段

[0122]每个共识过程子节点接收到主节点的广播消息后,依次验证消息的正确性,若消息正确,则广播共识确认信息:

[0123]

[0124]其中ConsensusConfirm代表消息类型为共识请求,h是当前区块高度,v当前视图编号,s子节点编号,SigBlock为区块签名。[0125]每个共识节点接收到广播消息后,执行如下过程,判断消息的正确性:[0126]a.判断消息的格式是否正确,包括消息类型、当前区块高度、主节点编号、签名是否正确,若不正确则进行视图更新流程;[0127]b.判断当前区块中交易的正确性,包括是否已经存在、交易的验证脚本是否正确、是否包含重复交易,若不正确则转到步骤d;[0128]c.在步骤a和b均验证通过的情况下,则该区块内每个交易均为合法的;[0129]d.广播视图更换消息;[0130]若接收到的消息不正确,则广播视图更换消息。若每个共识节点收到至少2f个共识节点的共识确认消息后,则证明该区块被网络中到大多数节点接受,即共识达成,将该区块添加到区块链中,并广播该区块。

[0131]当主节点发生故障没有在规定时间t内广播共识请求消息或子节点广播视图更新消息未得到2f个节点确认,则会执行视图更新操作,更新过程如下:[0132]a.首先将视图增加v=v+1[0133]b.子节点发送更换视图消息[0134]

[0135]其中ViewChange代表消息类型为视图更新,h是当前区块高度,v当前视图编号,s子节点编号,v′新视图编号,Sigmsg为消息签名

[0136]c.若共识节点接受视图更新广播消息数超过2f,则将视图更新为v′,主节点更新为m=m+1,开始新的共识过程。

[0137]d.若接收的视图更新消息数未到2f,返回到步骤a继续执行。[0138]B.主节点任期时间t的设置

[0139]当主节点网络不稳定或共识节点间网络波动,可能会到导致频繁的视图更换,消耗网络资源。为了避免因网络波动而频繁触发视图跟换,主节点工作的时间t,应随视图更新的指数增加,当视图频发更新时,说明网络发生波动,应该增加时间t。设时间t满足如下函数,

[0140]T(k)=2k·t,k=0,1,2,...

11

CN 110061838 A[0141]

说 明 书

9/11页

函数T随视图更新次数指数增加,可以避免因网络波动而造成的频繁视图更换,造

成网络资源的浪费。[0142]步骤S2,于数据更新时,服务器节点将要更新的资源记录同步链下存储中,并将域名配置(zone)文件的链接地址、记录的哈希值、状态信息发送给服务合约,利用服务合约存储更新的域名信息,并生成历史合约,记录更新的状态和更新的内容。在本发明具体实施例中,假定要更新域名配置(zone)文件的服务器节点已经在系统中完成注册,服务器节点的数据库管理组件将要更新的资源记录同步到链下存储中,将zone文件在IPFS中的链接地址、记录的哈希值、状态信息发送给服务合约,需说明的是,链下存储采用数据库、云存储也可以同样完成同样的功能,采用IPFS即使在数据文件被删除的情况下,原有的数据也仍能够访问,且IPFS具有去中心化的特点,服务合约存储更新的域名信息,并生成历史合约,来记录更新的状态和更新的内容。[0143]具体地,如图7所示,数据更新过程如下:[0144](1)服务器节点数据库管理组件生成更新记录;[0145](2)数据库管理组件将更新记录同步到外部IPFS系统,并生成外部存储链接和记录哈希值;[0146](3)服务器节点将链接地址、记录的哈希值、状态信息发送给服务合约;[0147](4)服务合约记录更新后的域名信息,并生成历史合约;[0148](5)服务合约将更新记录、状态信息发送给历史合约;[0149](6)历史合约将更新记录、状态信息写入区块链。

[0150]图8为本发明一种DNS资源记录的去中心化信息检索方法的步骤流程图。在本发明中,区块链网络负责存储记录的索引,并对记录的真实性和完整性提供保证。区块链网络中由合约负责记录的写入和读取,并且合约由已经存在的合约创建,确保合约创建和数据传输过程中的安全性。可信域由本地网络或者可信任的服务器节点组成,端用户通过可信任的服务器检索域名信息。完整的域名配置(zone)文件存储在外部存储中,外部存储的链接地址和记录哈希保存在区块链中。如图8所示,本发明一种DNS资源记录的去中心化信息检索方法,包括如下步骤:[0151]步骤S601,端用户在检索域名信息时,向可信服务器发起查询请求;[0152]步骤S602,可信服务器查找缓存,若缓存没有命中,则向区块链中的服务合约发起查询请求,服务合约记录每个域名对应的服务器和外部链接地址;[0153]步骤S603,服务合约将检索到的域名对应的zone文件的外部地址和记录哈希值返回给可信服务器;[0154]步骤S604,可信服务器收到外部链接地址后,查询外部zone文件记录,并计算外部记录哈希和服务合约返回记录哈希作比较,以防止外部记录被篡改,若两个哈希值结果相同,可信服务器将检索到的信息返回给端用户。[0155]具体地,如图9所示,信息检索过程如下:[0156](1)端用户发起查询请求[0157](2)可信服务器查找本地缓存记录,若没有命中则向区块链中的服务合约发起查询请求[0158](3)服务合约查询存储记录,若存储在该域名的记录,查询内容为对应的IP地址,

12

CN 110061838 A

说 明 书

10/11页

则将IP地址返回,若查询内容为其他记录,则返回zone文件的外部存储地址;[0159](4)可信服务器收到服务合约返回结果,若用户查询内容为域名对应的IP地址,则将IP地址返回,若为其他记录,服务器查找外部存储[0160](5)可信服务器查找外部存储;[0161](6)计算外部zone文件的哈希和服务合约返回记录哈希作比较,若两者相同,则将外部文件未被篡改,检索相应资源记录;[0162](7)返回查询结果。[0163]优选地,所述信息检索方法还包括如下步骤:[0164]对检索结果进行验证。在本发明中,将DNS中心化的验证方式,转为分布式验证方式,即通过区块链技术,将DNS资源记录的验证变为查找集体维护的账本,利用签名机制和哈希算法保证查找链上记录的方式保证记录的真实性和完整性。

[0165]图10为本发明具体实施例中基于区块链的DNS资源记录检索和验证过程示意图。具体地,本发明对基于区块链的DNS系统进行验证,将DNS每个zone文件存储在外部数据库,zone文件签名、外部索引、公钥信息存储在区块链中,利用区块链去中心化、集体维护、不易篡改的特点,提供zone文件的真实性和完整性保护,以验证www.aa.com地址记录的真实性为例,其只需2次查询,即查询区块链获得外部链接地址,查询外部链接地址获得地址记录,并进行1次哈希运算,1次加密运算验证zone文件的真实性和完整性。[0166]1)身份绑定

[0167]区块链中的记录可以被所有区块链中的节点检索到,如果将用户的公钥直接与域名信息绑定,该节点的身份信息和公钥信息会泄露。为此,本发明为了解决秘钥与身份信息绑定同时保护用户隐私的条件下,对用户的秘钥采用图11的流程进行设计。[0168]数据的更新通过发布在区块链中公钥进行真实性和完整性验证,离线存储的私钥负责更新区块链中公钥。用户在本地生成一对离线秘钥对,在线秘钥由离线私钥和上一步生成的在线公钥用函数F生成,如公式(2)所示。[0169](skn,pkn)=F(skf,pkn-1),(2)[0170]当用户更新信息时,用公钥负责签名,确保身份信息和真正的身份关联的秘钥信息相分离。

[0171]当服务器向区块链中发送密钥信息时,服务器发送秘钥注册广播信息:[0172]

[0173]其中key_register为消息类型为秘钥注册,id为身份标识,σ=sig(sk,id),σ为用私钥sk对身份标识id的签名,证明该节点拥有公钥pk对应私钥sk。[0174]2)秘钥更新

[0175]在线公钥的更新通过向区块链发送新、旧公钥,并附加签名的方式完成。通过数字签名,新的公钥由旧公钥相对应私钥的持有者生成,确保消息的发出者为旧公钥的拥有者。[0176]服务器发送秘钥更新广播信息:[0177]其中key_update为消息类型为秘钥更新,id为身份标识,σ1=sig(skold,(id,pknew)),σ1为用旧秘钥签名对身份和新的公钥的签名,这证明该节点拥有旧的公钥pkold对应的私钥skold,并且pknew为节点id对应的新公钥。σ2=sig(sknew,id),σ2为用新私钥sknew对身份标识id的签名,证明该节点拥有新公钥pknew对应新私钥sknew。

13

CN 110061838 A[0178]

说 明 书

11/11页

3)验证过程

[0179]A.秘钥更新验证

[0180]每个记账节点收到秘钥更新请求后,做如下验证:[0181]判断id标识是否与区块链中pkold对应id相匹配;[0182]签名σ1是否正确;[0183]签名σ2是否正确。

[0184]若其中有一项验证失败,则丢弃该交易,否则将该消息打包成区块,广播对该消息的确认。

[0185]B.资源记录检索与验证

[0186]资源记录的验证域检索过程如图12所示。若域名D在区块链汇总没有记录,返回没有记录,检索过程结束,若区块链中有检索记录,首先检索链接文件,并做如下验证:[0187]a判断区块链中保存文件的哈希值是否与外存中的文件值相同[0188]b判断区块链中的签名,与用区块链中公钥对外部文件的签名值是否相同[0189]c若二者有一项不同,则返回错误,否则返回正确的查询结果。[0190]综上所述,本发明一种DNS资源记录的去中心化存储系统及其实现、信息检索方法通过智能合约将DNS zone文件写入以太坊区块链中,采取链上/链下相结合的方式进行管理,在链下将完整数据存储在外部存储中,在链上将域名资源记录(RR)的文件哈希值、外部链接地址、验证外部数据的公钥信息存储在区块链中,通过区块链保证DNS数据的真实性和完整性,同时利用外部存储系统扩展区块链的存储空间,提高了系统可扩展性,本发明实现了在检索域名的同时验证域名,相比DNSSEC在得到检索结果后再进行域名验证的方式,缩短了验证路径和过程,提升验证效率。[0191]与现有技术相比,本发明具有如下优点:[0192]1)可渐进部署,无需改变DNS协议,可与DNS系统兼容;[0193]2)DNS zone文件去中心化存储和管理,利用联盟链思想和智能合约技术将DNS zone文件和联盟链结合,利用区块链去中心、分布式管理、集体维护的特点,保证DNS zone文件的安全可靠和去中心化存储;

[0194]3)域名信息的去中心化检索与验证,利用区块链去中心化共识机制和签名机制,保证检索结果的正确性,在域名检索的同时完成域名验证。[0195]上述实施例仅例示性说明本发明的原理及其功效,而非用于限制本发明。任何本领域技术人员均可在不违背本发明的精神及范畴下,对上述实施例进行修饰与改变。因此,本发明的权利保护范围,应如权利要求书所列。

14

CN 110061838 A

说 明 书 附 图

1/9页

图1

图2

15

CN 110061838 A

说 明 书 附 图

2/9页

图3

图4

16

CN 110061838 A

说 明 书 附 图

3/9页

图5

17

CN 110061838 A

说 明 书 附 图

4/9页

图6

18

CN 110061838 A

说 明 书 附 图

5/9页

图7

19

CN 110061838 A

说 明 书 附 图

6/9页

图8

20

CN 110061838 A

说 明 书 附 图

7/9页

图9

图10

21

CN 110061838 A

说 明 书 附 图

8/9页

22

图11

CN 110061838 A

说 明 书 附 图

9/9页

图12

23

因篇幅问题不能全部显示,请点此查看更多更全内容

Top