一种数据验证方法、电子设备及数据验证系统与流程

文档序号:14991180发布日期:2018-07-20 22:15阅读:138来源:国知局

本发明属于数字信息的存储及可信性验证领域,尤其涉及一种数据验证方法、电子设备及数据验证系统。



背景技术:

在多设备的分布式数据共享存储环境中,如多用户终端或多服务器的分布式数据共享存储环境中,各个设备间彼此数据共享,当其中一个设备的数据发生更新时,会相应同步至其他设备,以使得各设备的数据彼此一致。

实际应用中,分布式环境中各设备的数据在共享或传输中存在被篡改的可能,如人为篡改或其他方式的篡改等,鉴于此,本领域需提供一种验证机制,来解决分布式环境中数据共享和传输中的数据可信性验证问题,进而支持数据的防篡改。



技术实现要素:

有鉴于此,本发明的目的在于提供一种数据验证方法、电子设备及数据验证系统,旨在针对多设备的分布式数据共享存储等应用环境,解决数据共享和传输中的数据可信性验证问题。

为此,本发明公开如下技术方案:

一种数据验证方法,应用于电子设备,所述方法包括:

获得待验证的目标数据;所述目标数据属于电子设备的第一数据,所述第一数据在电子设备中以二叉树型结构存储,且各个第一数据对应存储于二叉树的叶子节点上,二叉树的每个非叶子节点存储的第二数据为利用预设算法对所述非叶子节点的各个子节点数据进行计算后所得的数据;仅当第一数据发生被允许的更新时,电子设备相应更新所述二叉树的相应第二数据;

确定出所述二叉树中所述目标数据所在的叶子节点至根节点的路径上所包括的至少一个非叶子节点,作为验证节点;

基于所述验证节点对应的第二数据,验证所述目标数据的可信性。

上述方法,优选的,所述二叉树的非叶子节点存储的第二数据为:利用预设的摘要算法对所述非叶子节点的各个子节点数据进行计算后所得的摘要值。

上述方法,优选的,所述获得待验证的目标数据,包括:

从所述电子设备中二叉树的相应叶子节点处读取待验证的目标数据。

上述方法,优选的,所述基于所述验证节点对应的第二数据,验证所述目标数据的可信性,包括:

根据所述验证节点在二叉树中的位置,确定出在利用所述目标数据所在的叶子节点计算所述验证节点的数据时需基于的二叉子树;

利用所述预设算法及所述目标数据,并结合所述二叉子树的结构,计算出所述验证节点对应的第三数据;

判断基于所述目标数据计算出的所述验证节点的第三数据,与所述验证节点当前的第二数据是否一致;

若判断结果表示两者一致,则所述目标数据可信;

若判断结果表示两者不一致,则所述目标数据不可信。

一种电子设备,包括:

获取单元,用于获得待验证的目标数据;所述目标数据属于电子设备的第一数据,所述第一数据在电子设备中以二叉树型结构存储,且各个第一数据对应存储于二叉树的叶子节点上,二叉树的每个非叶子节点存储的第二数据为利用预设算法对所述非叶子节点的各个子节点数据进行计算后所得的数据;仅当第一数据发生被允许的更新时,电子设备相应更新所述二叉树的相应第二数据;

确定单元,用于确定出所述二叉树中所述目标数据所在的叶子节点至根节点的路径上所包括的至少一个非叶子节点,作为验证节点;

验证单元,用于基于所述验证节点对应的第二数据,验证所述目标数据的可信性。

上述电子设备,优选的,所述获取单元,具体用于:从所述电子设备中二叉树的相应叶子节点处读取待验证的目标数据。

上述电子设备,优选的,所述验证单元,具体用于:

根据所述验证节点在二叉树中的位置,确定出在利用所述目标数据所在的叶子节点计算所述验证节点的数据时需基于的二叉子树;利用所述预设算法及所述目标数据,并结合所述二叉子树的结构,计算出所述验证节点对应的第三数据;判断基于所述目标数据计算出的所述验证节点的第三数据,与所述验证节点当前的第二数据是否一致;若判断结果表示两者一致,则所述目标数据可信;若判断结果表示两者不一致,则所述目标数据不可信。

一种数据验证系统,包括:多于一个的如权利要求5-7任一项所述的电子设备,其中,第一数据在所述数据验证系统的各电子设备中分布式共享存储,当其中一个电子设备的第一数据发生被允许的更新时,相应同步更新至其他设备。

上述系统,优选的,所述系统中各电子设备的二叉树型结构的数据,存储在电子设备的内存或者永久性存储设备中。

上述系统,优选的,所述系统中的各电子设备以文件或数据库方式存储二叉树型结构的数据,且各电子设备中存储的二叉树型结构的数据为正本数据。

由以上方案可知,本发明提供的数据验证方法,提出以二叉树型结构存储电子设备的数据,其中设备第一数据存储于二叉树叶子节点上,而非叶子节点存储的第二数据则为利用预设算法对该非叶子节点的各子节点数据进行计算后所得的数据,且仅当第一数据发生被允许的更新时才更新二叉树的相应第二数据,也就是说,当第一数据发生篡改等不被允许的更新时二叉树的第二数据不会发生更新,从而会导致二叉树上的相应叶子节点与非叶子节点的数据不能维持基于预设算法的一致性,在此基础上,本发明提出利用二叉树的第二数据作为验证数据来对第一数据进行可信性验证,可有效解决多设备的分布式数据存储环境中,数据共享和传输中的可信性验证问题。

附图说明

为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据提供的附图获得其他的附图。

图1是本发明实施例提供的数据验证方法的流程图;

图2是本发明实施例提供的二叉树型结构的数据存储示例图;

图3是本发明实施例提供的在二叉树中当对叶子节点进行被允许的数据更新时,联动更新相应非叶子节点的示例图;

图4是本发明实施例提供的电子设备的结构示意图。

具体实施方式

为了引用和清楚起见,下文中使用的技术名词、简写或缩写总结解释如下:

共识机制:是指多用户/多设备情况下,彼此数据用于保证一致性的机制,该机制可以是一种算法。

分布式存储:是指所有用户/设备组成一个网络,在这个网络中的用户/设备都可以合法拥有一份数据正版,互为验证。

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

本发明实施例提供一种数据验证方法,该方法可应用于电子设备,所述电子设备可以是但不限于多设备的分布式数据共享存储等环境中的终端设备或服务器设备,旨在解决该应用环境中设备的数据共享和传输中的数据可信性验证问题。

参考图1示出的数据验证方法流程图,所述方法可以包括以下步骤:

步骤101、获得待验证的目标数据;所述目标数据属于电子设备的第一数据,所述第一数据在电子设备中以二叉树型结构存储,且各个第一数据对应存储于二叉树的叶子节点上,二叉树的每个非叶子节点存储的第二数据为利用预设算法对所述非叶子节点的各个子节点数据进行计算后所得的数据;仅当第一数据发生被允许的更新时,电子设备相应更新所述二叉树的相应第二数据。

本实施例以多设备的分布式数据共享存储这一应用环境为例,对本发明的方法进行阐述。

其中,所述第一数据为不同设备之间,如不同的用户终端之间或者不同的服务器之间,用于进行分布式存储并共享的数据,各个设备都维护有一份完整的第一数据,且各个设备的第一数据均为正本。

为实现在多设备的数据共享和传输中,能够对设备数据即所述第一数据进行可信性验证,进而实现第一数据的防篡改,本发明提出以二叉树型的结构来存储设备数据,其中,在二叉树的叶子节点上存储设备的第一数据,而在二叉树的其他节点,即非叶子节点上存储用于对第一数据进行可信性验证的第二数据,也就是说,在二叉树的非叶子节点上存储的具体是验证数据。

其中,所述二叉树的非叶子节点上存储的第二数据,为利用预设算法对所述非叶子节点的各个子节点(一个或两个子节点)数据进行计算后所得的数据,可选的,本实施例中,非叶子结点存储的第二数据具体为利用预设的摘要算法对所述非叶子节点的各个子节点数据进行计算后所得的摘要值。

以图2所示的二叉树存储结构为例,二叉树的三个叶子节点依次存储有3个第一数据:数据1、数据2、数据3,而二叉树的非叶子节点,即图2中的节点1、节点2及节点3则分别存储有节点1摘要、节点2摘要及节点3摘要,其中,假设各叶子节点的数据:数据1、数据2、数据3,为通过约定的接口(如业务流水)所产生的可信数据,则节点1摘要为利用预定摘要算法对所述数据1及数据2进行计算后所得的摘要值,同理,节点2摘要为利用所述预定摘要算法对数据3进行计算后所得的摘要值,节点3摘要为利用所述预定摘要算法对节点1摘要及节点2摘要进行计算后所得的摘要值。

需要说明的是,在所述二叉树型的存储结构中,仅当所述第一数据发生被允许的更新时,例如通过约定的业务流水接口进行第一数据的增删改时,才会相应更新二叉树中与产生更新的第一数据相关联的各个摘要值。而对于其他更新,如基于恶意篡改来更新叶子节点的数据时,则不会对非叶子节点中的摘要值进行联动更新。

仍以图2的二叉树为例,若基于约定的业务流水产生新的第一数据:数据4,并将数据4存储在节点2的另一子节点上,如图3所示,则需要利用所述预定摘要算法对数据3及数据4进行计算,获得新的摘要值,并利用该新的摘要值对节点2的现有摘要值进行更新,在此基础上,需进一步利用所述预定摘要算法,对节点1摘要及更新后的节点2摘要进行计算,并将计算所得的摘要值替换节点1中存储的现有摘要值,实现对节点1摘要的更新,图3中,节点2及节点3采用虚线,表示节点2及节点3的摘要值发生了更新。而如果新添加的数据4不是约定的业务流水所产生的数据,则不对所述节点2及节点1的摘要值进行联动更新。

从而,在二叉树的叶子节点数据可信的情况下,二叉树的叶子节点与相应的非叶子节点能够维持基于预定算法(如摘要算法)的数据一致性,而一旦叶子节点的数据发生篡改,则这种基于预定算法的数据一致性会被破坏,这为叶子节点数据的可信性验证提供了支持,后续,可基于二叉树中的叶子节点与相应非叶子节点是否具有基于预定算法的数据一致性,来验证叶子节点的数据是否可信。

基于本发明提供的上述二叉树型的存储结构,可知,在二叉树的叶子节点中存储的是设备的用于共享的数据(即第一数据),其他的非叶子节点存储的是用于对共享数据进行验证的验证数据(即第二数据),鉴于此,当存在对所述共享数据进行可信性验证的需求时,可从设备维护的二叉树的叶子节点中读取当前待验证的目标数据。

步骤102、确定出所述二叉树中所述目标数据所在的叶子节点至根节点的路径上所包括的至少一个非叶子节点,作为验证节点。

在获得待验证的目标数据后,为实现对所述目标数据进行可信性验证,需首先从设备维护的二叉树型结构中确定出用于对所述目标数据进行可信性验证的验证节点,其中,具体可确定出所述二叉树中所述目标数据所在的叶子节点至根节点的路径上所包括的至少一个非叶子节点,作为验证节点。

以待验证的目标数据为图2中的数据1为例,则可以确定出数据1至根节点(即节点3)的路径上所包括的至少一个节点,如节点1,或者节点3,或者节点1以及节点3,作为数据1的验证节点。

步骤103、基于所述验证节点对应的第二数据,验证所述目标数据的可信性。

在确定出用于对待验证的目标数据进行可信性验证的验证节点后,可基于以下处理过程实现对目标数据进行可信性验证:

根据所述验证节点在二叉树中的位置,确定出在利用所述目标数据所在的叶子节点计算所述验证节点的数据时需基于的二叉子树;利用所述预设算法及所述目标数据,并结合所述二叉子树的结构,计算出所述验证节点对应的第三数据;判断基于所述目标数据计算出的所述验证节点的第三数据,与所述验证节点当前的第二数据是否一致;若判断结果表示两者一致,则所述目标数据可信;若判断结果表示两者不一致,则所述目标数据不可信。

仍以对图2中的数据1进行可信性验证为例,若采用节点1存储的摘要值即节点1摘要对数据1进行验证,则具体可利用所述摘要算法对数据1及数据2进行计算,获得一摘要值,并将计算出的摘要值与节点1摘要进行比对,若两者一致,则表示数据1未发生篡改,否则,若两者不一致,则表示数据1发生了篡改。若采用节点3摘要对数据1进行可信性验证,则在利用所述摘要算法对数据1及数据2进行计算获得一摘要值后,需继续利用所述摘要算法对该摘要值以及节点2摘要进行计算,得到新的节点3摘要值,并将该新的节点3摘要值与节点3原有摘要值进行比对,若两者一致,则表示数据1未篡改。而采用节点1摘要、节点3摘要对数据1进行可信性验证的过程,则需要执行两次的摘要值比对操作,此处不再详述。

这里,需要说明的是,理论上而言,可采用待验证的叶子节点至根节点路径上的不少于一个的非叶子节点数据(如摘要值),对该待验证的叶子节点数据进行验证,而在实际应用中,基于可信性验证的便捷性考虑,优选地,可直接采用叶子节点的父节点存储的摘要值来验证叶子节点数据的可信性。

由以上方案可知,本发明实施例提供的数据验证方法,提出以二叉树型结构存储电子设备的数据,其中设备第一数据存储于二叉树叶子节点上,而非叶子节点存储的第二数据则为利用预设算法对该非叶子节点的各子节点数据进行计算后所得的数据,且仅当第一数据发生被允许的更新时才更新二叉树的相应第二数据,也就是说,当第一数据发生篡改等不被允许的更新时二叉树的第二数据不会发生更新,从而会导致二叉树上的相应叶子节点与非叶子节点的数据不能维持基于预设算法的一致性,在此基础上,本发明提出利用二叉树的第二数据作为验证数据来对第一数据进行可信性验证,可有效解决多设备的分布式数据存储环境中,数据共享和传输中的可信性验证问题。

在本发明接下来的另一实施例中,提供一种电子设备,所述电子设备可以是多设备的分布式数据共享存储等环境中的终端设备或服务器设备,参考图4提供的电子设备的结构示意图,所述电子设备包括:

获取单元401,用于获得待验证的目标数据;所述目标数据属于电子设备的第一数据,所述第一数据在电子设备中以二叉树型结构存储,且各个第一数据对应存储于二叉树的叶子节点上,二叉树的每个非叶子节点存储的第二数据为利用预设算法对所述非叶子节点的各个子节点数据进行计算后所得的数据;仅当第一数据发生被允许的更新时,电子设备相应更新所述二叉树的相应第二数据;确定单元402,用于确定出所述二叉树中所述目标数据所在的叶子节点至根节点的路径上所包括的至少一个非叶子节点,作为验证节点;验证单元403,用于基于所述验证节点对应的第二数据,验证所述目标数据的可信性。

在本发明实施例的一实施方式中,所述获取单元,具体用于:从所述电子设备中二叉树的相应叶子节点处读取待验证的目标数据。

在本发明实施例的一实施方式中,所述验证单元,具体用于:

根据所述验证节点在二叉树中的位置,确定出在利用所述目标数据所在的叶子节点计算所述验证节点的数据时需基于的二叉子树;利用所述预设算法及所述目标数据,并结合所述二叉子树的结构,计算出所述验证节点对应的第三数据;判断基于所述目标数据计算出的所述验证节点的第三数据,与所述验证节点当前的第二数据是否一致;若判断结果表示两者一致,则所述目标数据可信;若判断结果表示两者不一致,则所述目标数据不可信。

对于本发明实施例公开的电子设备而言,由于其与以上实施例公开的数据验证方法相对应,所以描述的比较简单,相关相似之处请参见以上实施例中数据验证方法部分的说明即可,此处不再详述。

在本发明接下来的又一实施例中,提供一种数据验证系统,该系统包括多于一个的如以上实施例所述的电子设备,其中,第一数据在所述数据验证系统的各电子设备中分布式共享存储,当一个电子设备的第一数据发生被允许的更新时,相应同步更新至其他设备。

实际应用中,该数据验证系统,通常来说,可以是多设备的分布式数据共享存储环境中,由多个用户终端或多个服务器构成的系统,系统中各个电子设备都维护有一份完整的第一数据,且均是正本,所述第一数据为系统中用于在各设备间共享、传输的数据。且各个设备均采用二叉树型结构来存储并维护其拥有的第一数据。

所述系统中各个电子设备维护的二叉树型结构的数据,可以在具有cpu(centralprocessingunit,中央处理器)、网络支持的内存或永久性存储设备上存储;其中,所述永久性存储设备可使用硬盘、磁带或非易失性设备作为载体,且在内部可使用文件或数据库方式进行数据记录。对于电子设备为用户终端的情况而言,电子设备的数据可以在用户的pc(personalcomputer,个人计算机)、手持设备等具有运算能力且具有通信能力的设备上进行存储。

基于以上实施例的阐述可知,在二叉树型的存储结构中,二叉树的叶子节点存储用于在各设备间进行共享的所述第一数据,非叶子节点存储所述第一数据的验证数据,如具体可存储用于对第一数据进行可信性验证的摘要值等,任何一个叶子节点的数据发生篡改,都会影响该叶子节点与其相关联的非叶子节点(指该叶子节点与根节点路径上的至少一个非叶子节点)数据的算法一致性。

鉴于此,该系统中的各电子设备可以采用共识机制,并基于以上实施例提供的可信性验证过程,通过叶子节点与相应非叶子节点是否具有基于预定算法的数据一致性,来完成对叶子节点中第一数据的可信性验证,从而解决了数据共享和传输中的可信性验证问题。

需要说明的是,本说明书中的各个实施例均采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似的部分互相参见即可。

为了描述的方便,描述以上系统或装置时以功能分为各种模块或单元分别描述。当然,在实施本申请时可以把各单元的功能在同一个或多个软件和/或硬件中实现。

通过以上的实施方式的描述可知,本领域的技术人员可以清楚地了解到本申请可借助软件加必需的通用硬件平台的方式来实现。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在存储介质中,如rom/ram、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本申请各个实施例或者实施例的某些部分所述的方法。

最后,还需要说明的是,在本文中,诸如第一、第二、第三和第四等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。

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

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