本申请涉及数据认证技术领域,具体涉及一种数据存在认证系统、认证方法及验证方法。
背景技术:
现实生活中,权利人为了证明自己拥有的正当权利,例如写过一篇文章、拥有某项证书、拥有某些作品的版权等,通常需要经过第三方认证机构进行认证。因此,现有认证机制强烈依赖于认证机构的信用,一旦认证机构出现信用问题,则权利人的权益无法得到保障。
同时,基于时间戳技术的发展,为数据的时间证明提供了解决途径,然而现有认证机构目前尚未普及时间戳的应用,导致在第三方认证机构进行认证往往无法满足时间证明的需求。
此外,部分认证机构的认证服务往往收费不菲,认证的成本较高。
技术实现要素:
鉴于现有技术中的上述缺陷或不足,期望提供一种不依赖于认证机构即可通过较低成本实现认证数据存在及其存在时间的数据存在认证系统、认证方法及验证方法。
第一方面,本发明提供一种数据存在认证系统,所述系统包括数据获取单元、数据锚定单元和收据生成单元。
所述数据获取单元用于获取各目标数据的哈希值,并存储各所述哈希值;
所述数据锚定单元用于根据各所述哈希值生成至少一个默克尔树,将各所述默克尔树的树根分别通过交易存储至预定区块链网络的区块链中;
所述收据生成单元用于生成分别对应于各目标数据的各收据。
其中,所述收据包括对应的目标数据的哈希值,对应的默克尔树的树根、路径,以及交易数据存储路径;所述默克尔树的路径包括依次与所述目标数据的哈希值进行配对以最终生成所述默克尔树的树根的各哈希值。
第二方面,本发明提供一种数据存在认证方法,所述方法包括:
获取各目标数据的哈希值,并存储各所述哈希值;
根据各所述哈希值生成至少一个默克尔树,将各所述默克尔树的树根分别通过交易存储至预定区块链网络的区块链中;
生成分别对应于各目标数据的各收据。
其中,所述收据包括对应的目标数据的哈希值,对应的默克尔树的树根、路径,以及交易数据存储路径;所述默克尔树的路径包括依次与所述目标数据的哈希值进行配对以最终生成所述默克尔树的树根的各哈希值。
第三方面,本发明提供一种数据存在验证方法,所述方法包括:
获取目标数据对应的收据;
根据所述收据中的目标数据的哈希值和默克尔树的路径生成树根哈希值;
将所述收据中的默克尔树的树根与所述树根哈希值进行比对:若不相同则验证失败;
判断所述收据中的交易数据存储路径所对应的区块链的交易信息中是否存有所述默克尔树的树根:若存有则验证成功;若未存有则验证失败。
其中,所述默克尔树的路径包括依次与所述目标数据的哈希值进行配对以最终生成所述默克尔树的树根的各哈希值。
本发明诸多实施例提供的数据存在认证系统、认证方法及验证方法根据各目标数据的哈希值生成默克尔树,并将其树根通过交易存储至预定区块链网络的区块链中,同时生成一一对应于各目标数据的若干收据,在收据中存储对应目标数据的哈希值、对应的默克尔树树根、对应的默克尔树路径以及交易数据存储路径,通过利用默克尔树的特性和区块链中数据无法改写的特性,实现了无需依赖于认证机构即可通过交易实现对目标数据在交易时间即存在的认证;并且上述交易只需在区块链上存储默克尔树树根、一次交易可完成对批量目标数据的认证,大幅降低了认证成本;
本发明一些实施例提供的数据存在认证系统、认证方法及验证方法进一步通过采用二叉树类型的默克尔树,降低了配对运算的复杂度,简化了默克尔树的路径。
附图说明
通过阅读参照以下附图所作的对非限制性实施例所作的详细描述,本申请的其它特征、目的和优点将会变得更明显:
图1为本发明一实施例中数据存在认证系统的结构示意图。
图2为本发明一实施例中数据存在认证方法的流程图。
图3为本发明一实施例中根据各目标数据的哈希值生成的默克尔树的示意图。
图4为本发明一实施例中收据中默克尔树路径的示意图。
图5为本发明一实施例中获取各目标数据的哈希值并进行存储的示意图。
图6为图2所示方法的一种优选实施方式中步骤S20的流程图。
图7为图2所示方法的一种优选实施方式中步骤S40和S60的流程图。
图8为本发明一实施例中数据存在验证方法的流程图。
图9为图8所示方法的一种优选实施方式的流程图。
图10为图8所示方法的一种优选实施方式的流程图。
具体实施方式
下面结合附图和实施例对本申请作进一步的详细说明。可以理解的是,此处所描述的具体实施例仅仅用于解释相关发明,而非对该发明的限定。另外还需要说明的是,为了便于描述,附图中仅示出了与发明相关的部分。
需要说明的是,在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互组合。下面将参考附图并结合实施例来详细说明本申请。
图1为本发明一实施例中数据存在认证系统的结构示意图。
如图1所示,在本实施例中,本发明提供的数据存在认证系统包括数据获取单元10、数据锚定单元30和收据生成单元50。
数据获取单元10用于获取各目标数据的哈希值,并存储各所述哈希值;
数据锚定单元30用于根据各所述哈希值生成至少一个默克尔树,将各所述默克尔树的树根分别通过交易存储至预定区块链网络的区块链中;
收据生成单元50用于生成分别对应于各目标数据的各收据。
其中,所述收据包括对应的目标数据的哈希值,对应的默克尔树的树根、路径,以及交易数据存储路径;所述默克尔树的路径包括依次与所述目标数据的哈希值进行配对以最终生成所述默克尔树的树根的各哈希值。
具体地,在本实施例中,上述数据获取单元10、数据锚定单元30和收据生成单元50为设置在计算机中的软件程序;在更多实施例中,也可根据实际需求设置为用于进行数据存在认证的硬件装置。
在本实施例中,上述数据获取单元10、数据锚定单元30和收据生成单元50设置在服务器端;在更多实施例中,也可根据实际需求设置在对等网络的节点中乃至用户安装的客户端中等不同位置。
图2为本发明一实施例中数据存在认证方法的流程图。图2所示的认证方法可对应应用于图1所示的系统中。
如图2所示,在本实施例中,本发明提供的数据存在认证方法包括:
S20:获取各目标数据的哈希值,并存储各所述哈希值;
S40:根据各所述哈希值生成至少一个默克尔树,将各所述默克尔树的树根分别通过交易存储至预定区块链网络的区块链中;
S60:生成分别对应于各目标数据的各收据。
其中,所述收据包括对应的目标数据的哈希值,对应的默克尔树的树根、路径,以及交易数据存储路径。
具体地,在一些实施例中,在上述步骤S40中,数据锚定单元30根据步骤S20获取的所有哈希值生成一个默克尔树;在另一些实施例中,在上述步骤S40中,数据锚定单元30定时或定量取出步骤S20中数据获取单元10所存储的部分哈希值,并生成一个默克尔树。所述默克尔树可以设置为二叉树,也可以设置为多叉树,以下以二叉树为例通过实例进行详细说明。具体地,采用多叉树与采用二叉树的区别在于,生成默克尔树时需要将多个哈希值进行配对,以及,对应目标数据的默克尔树路径需要存储每次配对的多个哈希值。
图3为本发明一实施例中根据各目标数据的哈希值生成的默克尔树的示意图。
如图3所示,在步骤S40中,数据锚定单元30取出8个目标数据的哈希值,依次两两配对以生成上一层的哈希值,最终生成一个最上层的哈希值作为默克尔树的树根(Merkle Root),完成默克尔树的生成过程。
当某一层的哈希值数量为奇数个时,例如数据锚定单元30取出9个目标数据的哈希值,则将前8个哈希值两两配对生成上一层的4个哈希值,将第9个哈希值直接作为上一层的第5个哈希值,依此类推,最终完成默克尔树的生成过程。
在本实施例中,所述两两配对以生成上一层的哈希值具体指,将配对的左侧哈希值的二进制值与右侧哈希值的二进制值直接连接,再对连接后的字符串作哈希运算以生成上一层的哈希值。在更多实施例中,还可根据实际需求,将生成上一层的哈希值的运算方法设置为对配对的两个哈希值作不同的运算后再进行哈希运算,具有相同的技术效果。
在另一些实施例中,当某一层的哈希值数量为奇数个时,将未配对的哈希值直接作为上一层的哈希值。在更多实施例中,还可根据实际需求设置为对未配对的哈希值进行哈希运算等各类运算之后再作为上一层的哈希值,可实现相同的技术效果。
数据锚定单元30生成默克尔树之后,将默克尔树的树根通过交易存储至预定区块链网络的区块链中。
所述预定区块链网络可以根据实际需求设置为比特币网络、瑞波币网络、以太坊网络等不同区块链网络中的一项或多项。
以预定区块链网络同时设置为比特币网络和瑞波币网络为例,则数据锚定单元30分别在比特币网络和瑞波币网络中进行一次交易。
在步骤S60中,收据生成单元50分别生成对应于上述8个目标数据哈希值的8个收据。各收据分别包括对应的目标数据的哈希值,对应的默克尔树的树根、路径,以及交易数据存储路径。
图4为本发明一实施例中收据中默克尔树路径的示意图。
如图4所示,在对应于第5个目标数据的第5个收据中,包括对应的(图中左起)第5个目标数据的哈希值、当前默克尔树的树根、与第5个目标数据的哈希值对应的默克尔树路径,以及交易数据存储路径。
所述默克尔树的路径包括依次与所述目标数据的哈希值进行配对以最终生成所述默克尔树的树根的各哈希值。具体地,在本实施例中,所述默克尔树的路径还包括目标数据的哈希值在两两配对进行连接时的位置(左或右);在更多实施例中,根据两两配对所进行的不同运算,所述默克尔树的路径还可能包括其它不同路径参数。
所述交易数据存储路径包括区块链网络名称和具体交易号(Transaction ID)。
在步骤S60中生成收据后,即完成了对目标数据的存在认证,根据收据包括的内容可以完成对交易发生时目标数据存在的认证,再结合通过所述交易数据存储路径获取的交易信息中包含的交易时间,即可完成对目标数据存在的认证。
上述实施例根据各目标数据的哈希值生成默克尔树,并将其树根通过交易存储至预定区块链网络的区块链中,同时生成一一对应于各目标数据的若干收据,在收据中存储对应目标数据的哈希值、对应的默克尔树树根、对应的默克尔树路径以及交易数据存储路径,通过利用默克尔树的特性和区块链中数据无法改写的特性,实现了无需依赖于认证机构即可通过交易实现对目标数据在交易时间即存在的认证;并且上述交易只需在区块链上存储默克尔树树根、一次交易可完成对批量目标数据的认证,大幅降低了认证成本。
图5为本发明一实施例中获取各目标数据的哈希值并进行存储的示意图。
如图5所示,在一优选实施例中,所述获取各目标数据的哈希值,并存储各所述哈希值包括:
根据预定的标准哈希函数(例如SHA256等)生成各目标数据的哈希值;将各所述哈希值存储在一个数组中。
图6为图2所示方法的一种优选实施方式中步骤S20的流程图。图6所示的方法可对应应用于上述优选实施例提供的系统中。
如图6所示,在一优选实施例中,步骤S20包括:
S21:根据预定的标准哈希函数生成各目标数据的哈希值;
S23:将各所述哈希值存储在一个数组中。
在一优选实施例中,所述根据各所述哈希值生成至少一个默克尔树,将各所述默克尔树的树根分别通过交易存储至预定区块链网络的区块链中包括:
在所存储的各哈希值中定时或定量按序取出若干哈希值,生成一个默克尔树;
将所生成的默克尔树的树根通过交易存储至预定区块链网络的区块链中;
在收据生成单元生成分别对应于各目标数据的各收据之后循环上述步骤。
图7为图2所示方法的一种优选实施方式中步骤S40和S60的流程图。图7所示方法可对应应用于上述优选实施例提供的系统中。
如图7所示,在一优选实施例中,步骤S40和S60包括:
S41:在所存储的各哈希值中定时或定量按序取出若干哈希值,生成一个默克尔树;
S43:将所生成的默克尔树的树根通过交易存储至预定区块链网络的区块链中;
S60:生成分别对应于各目标数据的各收据,返回步骤S41。
具体地,在上述步骤S41-S60的循环过程中,步骤S20可以同时持续执行。
在一优选实施例中,所述收据还包括以下至少一项:目标数据、目标数据的存储位置、目标数据的加密类型。
具体地,以图4所示的对应于第5个目标数据、同时通过交易存储于比特币网络和瑞波币网络的收据为例,该收据(recipt)具体如下:
其中,@contex为目标数据或目标数据的存储位置,type为加密类型,target hash为目标数据的哈希值,merkleRoot为默克尔树树根,proof为对应于目标数据的默克尔树路径,anchors为交易数据存储路径,type为区块链网络的类型,sourceId为在区块链上找到交易数据的唯一标识。
在一优选实施例中,所述默克尔树为二叉树。具体地,采用二叉树可以降低配对运算的复杂度,并减少对应于目标数据的默克尔树路径所需要存储的哈希值数量。
图8为本发明一实施例中数据存在验证方法的流程图。图8所示的验证方法可对应应用于图1、图2所示系统和方法所完成的认证。
如图8所示,在本实施例中,本发明还提供一种数据存在验证方法,所述方法包括:
S10:获取目标数据对应的收据;
S30:根据所述收据中的目标数据的哈希值和默克尔树的路径生成树根哈希值;
S50:将所述收据中的默克尔树的树根与所述树根哈希值进行比对:若不相同则验证失败;
S70:判断所述收据中的交易数据存储路径所对应的区块链的交易信息中是否存有所述默克尔树的树根:若存有则验证成功;若未存有则验证失败。
其中,所述默克尔树的路径包括依次与所述目标数据的哈希值进行配对以最终生成所述默克尔树的树根的各哈希值。
图9为图8所示方法的一种优选实施方式的流程图。
如图9所示,在一优选实施例中,所述验证成功之后还包括:
S90:获取交易时间以完成对数据存在时间的验证。
图10为图8所示方法的一种优选实施方式的流程图。
如图10所示,在一优选实施例中,步骤S70之前还包括:
S60:根据所述收据中的交易数据存储路径判断对应的区块链中是否发生了对应的交易。
具体地,所述交易数据存储路径包括区块链网络名称和交易号(Transaction ID)。根据交易号(Transaction ID)查找对应的区块链网络中是否发生了对应的交易:若发生了,则获取该交易的交易信息;若未发生,则验证失败。
在一优选实施例中,所述默克尔树为二叉树。
在一优选实施例中,所述收据还包括以下至少一项:目标数据、目标数据的存储位置、目标数据的加密类型。
附图中的流程图和框图,图示了按照本发明各种实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段、或代码的一部分,所述模块、程序段、或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个接连地表示的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这根据所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以通过执行规定的功能或操作的专用的基于硬件的系统来实现,或者可以通过专用硬件与计算机指令的组合来实现。
描述于本申请实施例中所涉及到的单元或模块可以通过软件的方式实现,也可以通过硬件的方式来实现。所描述的单元或模块也可以设置在处理器中,例如,数据获取单元10、数据锚定单元30和收据生成单元50可以是设置在计算机或移动智能设备中的软件程序;也可以是单独进行数据存在认证的硬件装置。其中,这些单元或模块的名称在某种情况下并不构成对该单元或模块本身的限定,例如,数据锚定单元30还可以被描述为“用于通过交易存储认证信息的交易认证单元”。
作为另一方面,本申请还提供了一种计算机可读存储介质,该计算机可读存储介质可以是上述实施例中所述装置中所包含的计算机可读存储介质;也可以是单独存在,未装配入设备中的计算机可读存储介质。计算机可读存储介质存储有一个或者一个以上程序,所述程序被一个或者一个以上的处理器用来执行描述于本申请的公式输入方法。
以上描述仅为本申请的较佳实施例以及对所运用技术原理的说明。本领域技术人员应当理解,本申请中所涉及的发明范围,并不限于上述技术特征的特定组合而成的技术方案,同时也应涵盖在不脱离所述发明构思的情况下,由上述技术特征或其等同特征进行任意组合而形成的其它技术方案。例如上述特征与本申请中公开的(但不限于)具有类似功能的技术特征进行互相替换而形成的技术方案。