数据存证方法、数据校验方法及装置与流程

文档序号:12597144阅读:387来源:国知局
数据存证方法、数据校验方法及装置与流程

本申请涉及计算机技术领域,尤其涉及一种数据存证方法及装置、数据校验方法及装置。



背景技术:

随着信息技术的发展,信息技术极大地方便了人们的工作和生活,在信息技术领域中,信息是以数据为载体进行存储和传播的。

数据作为信息的载体,往往会有一定的价值,尤其在大数据时代,各单位自身在运营、服务过程中往往会积累大量的数据,这些数据对某些业务的开展会有一定的利用价值。比如,对于智慧社区的运营方,其掌握了社区大量的社区数据,社区数据中除了会包含社区基本资料以及社区的物业信息外,还可能会包含居民的消费信息、生活偏好信息等信息,这些信息可以指导商家和政府为社区居民提供更好的商品和服务。

随着城镇化的深入,城市中人们的很多活动都是在社区中进行的,社区中的生活包括吃、穿、住、行、交友、教育、健康、活动等各个方面。社区生活中产生的社区大数据能够帮助人们更便利、更高效的生活,同时也能帮助商家和政府企事业单位等更好的了解人们的需求,更有针对性的提供高品质服务。

在社区大数据中,社区的主要服务者和管理者掌握着大量的各类结构化的、精准的基础数据,这其中包括社区基本资料、地理位置信息、房屋设备资料、居民基本信息、物业等各类费用往来信息、社区车辆信息、社区流动人口信息、社区大型活动、社区报修咨询投诉等信息,这些信息通过物业信息化的建设,都能进行有效的收集和管理,通过当今的大数据分析技术,可以带来较大的价值。除了物业数据外,基于移动互联网技术的社区线上到线下服务(Online To Offline,O2O)和基于物联网的智慧社区也能产生大量的社区数据,这其中包括人们的社区社交数据、社区资讯浏览习惯、社区消费信息、社区上门服务类信息、智能家居偏好信息、智能门禁使用信息、智能小区设备使用信息等信息。同时结合政府机构的公共数据,第三方合作方的相关数据等,可以充分进行社区综合数据分析,形成社区标签属性、社区人群标签属性、消费偏好、社交偏好、科技偏好、生活偏好等,从而指导商家和政府为人们提供更好的商品和服务。

尤其是在后房产时代,大家纷纷开始深挖住宅社区的市场价值。伴随着互联网思维和传统社区物业的融合,智慧社区的概念脱颖而出。用户可以通过手机应用(Application,APP)享受更便捷的物业服务、社区电商服务、垂直上门服务,这个过程中,每天都能产生各种各样的数据。在智慧社区这个小型的社会里,作为智慧社区的载体,社区O2O系统可以持续收集到商家和用户的相关数据。为了能够持续挖掘大数据的价值,甚至为未来与第三方可能的合作做好数据的储备,安全公正的保存好这些数据就变得尤为重要了。

如果无法验证保存的数据是否被篡改了,那么数据的公信力会大打折扣,这会给数据使用者造成很多麻烦,比如,如果保存的数据被篡改了,再被决策者利用,这可能会导致决策者做出错误的决策,不仅不会促进业务的发展,反而会带来反作用,白白浪费人力物力等资源。因此,确保数据的真实性变得尤为重要,如果不能证明数据未被随意篡改过,数据的公信力和价值就大打折扣。



技术实现要素:

本申请实施例提供一种数据存证方法,用以解决现有技术中无法确保数据的真实性的问题。

本申请实施例采用下述技术方案:

一种数据存证方法,包括:

确定目标文件的哈希值;

利用所述目标文件的哈希值构建哈希树,并提取所述哈希树的根哈希值;

将所述根哈希值存储到区块链中,以得到用于验证所述目标文件真实性的存证信息;其中,所述存证信息包括:存储目标文件根哈希值的区块的标识、目标文件的存证时间戳、目标文件的根哈希值。

本申请实施例还提供一种数据校验方法,用以解决现有技术中无法确保数据的真实性的问题。

本申请实施例采用下述技术方案:

一种数据校验方法,包括:

确定待验证的目标文件,提取所述目标文件的存证信息,其中,所述存证信息是通过上述数据存证方法得到的;

从所述存证信息中,提取所述目标文件对应的历史哈希树的根哈希值;

利用所述目标文件的哈希值构建校验树,并将所述校验树的根哈希值作为校验哈希值;

当确定所述校验哈希值与所述历史哈希树的根哈希值相同时,确定所述目标文件为未被篡改过的文件。

本申请实施例提供一种数据存证装置,用以解决现有技术中无法确保数据的真实性的问题。

本申请实施例采用下述技术方案:

一种数据存证装置,包括:

第一确定单元,确定目标文件的哈希值;

第一构建单元,利用所述目标文件的哈希值构建哈希树,并提取所述哈希树的根哈希值;

存储单元,将所述根哈希值存储到区块链中,以得到用于验证所述目标文件真实性的存证信息;其中,所述存证信息包括:存储目标文件根哈希值的区块的标识、目标文件的存证时间戳、目标文件的根哈希值。

本申请实施例还提供一种数据校验装置,用以解决现有技术中无法确保数据的真实性的问题。

本申请实施例采用下述技术方案:

一种数据校验装置,包括:

第二确定单元,确定待验证的目标文件,提取所述目标文件的存证信息

提取单元,从所述存证信息中,提取所述目标文件对应的历史哈希树的根哈希值;

第二构建单元,利用所述目标文件的哈希值构建校验树,并将所述校验树的根哈希值作为校验哈希值;

第三确定单元,当确定所述校验哈希值与所述历史哈希树的根哈希值相同时,确定所述目标文件为未被篡改过的文件。

本申请实施例采用的上述至少一个技术方案能够达到以下有益效果:

通过确定目标文件的哈希值,然后利用目标文件的哈希值构建哈希树,并提取所述哈希树的根哈希值,将所述根哈希值存储到区块链中,以得到用于验证所述目标文件真实性的存证信息。这里的存证信息包括:存储目标文件根哈希值的区块的标识、目标文件的存证时间戳、目标文件的根哈希值。这样,后续在对目标文件中的至少一个目标文件的完整性进行校验时,便可以根据区块链中的存储的根哈希值和存证时间戳,来校验目标文件的真实性。

附图说明

此处所说明的附图用来提供对本申请的进一步理解,构成本申请的一部分,本申请的示意性实施例及其说明用于解释本申请,并不构成对本申请的不当限定。在附图中:

图1为本申请实施例提供的一种数据存证方法的实现流程示意图;

图2为本申请实施例提供的一种哈希树的结构示意图;

图3为本申请实施例提供的确定时序哈希值的哈希树的结构示意图;

图4为本申请实施例提供的一种数据校验方法的实现流程示意图;

图5为本申请实施例提供的一种数据存证装置的结构示意图;

图6为本申请实施例提供的一种数据校验装置的结构示意图。

具体实施方式

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

为了解决现有技术中无法确保数据的真实性的问题,本申请提供一种数据存证方法,通过定期把目标文件的特征值存储在区块链上,为这些目标文件做存证,以便后续校验目标文件的真实性。

以下结合附图,详细说明本申请提供的数据存证方法。本申请实施例提供的数据存证方法的执行主体可以是服务器,为便于描述,下文以该方法的执行主体为服务器为例,对该方法的实施方式进行介绍。可以理解,该方法的执行主体为服务器只是一种示例性的说明,并不应理解为对该方法的限定。

该方法的实现流程示意图如图1所示,包括下述步骤:

步骤11:确定目标文件的哈希值;

这里的目标文件即为待进行存证的文件,目标文件具体可以是通过对数据库指定时间内的数据进行备份得到的备份文件,也可以是实时获取的包含指定时间内的数据的文件。目标文件中可以包含生成时间、存储地址等信息。

以目标文件为数据库的备份文件为例,可以通过定期对数据库指定时间内的数据进行备份得到备份文件,具体备份的数据可以是指定时间内数据库表中新增加的数据,也可以是在某个时间节点对整个数据表进行备份。

为了后续校验目标文件的真实性,可以确定目标文件的哈希值,具体确定哈希值的方法为相对成熟的现有技术,此处不再赘述。

例如,以MySQL数据库为例,对一个有多张表的数据库,可以利用mysqldump命令每天为每张表各生成一个备份文件,然后再把各个备份文件作为哈希函数的输入,获取到各备份文件的哈希值。

步骤12:利用所述目标文件的哈希值构建哈希树,并提取所述哈希树的根哈希值;

由于区块链中保存的数据难以篡改的特性,本申请实施例中,可以将目标文件的哈希值存储到区块链中,以便后期校验。然而,区块链在成功存储一条数据时,不仅耗时较长,而且需要多个区块链节点的共同参与,会耗费较多的资源,那么,当目标文件的数量较多时,每次都将每个目标文件的哈希值存储到区块链中会耗费大量的资源。

那么,可以利用各目标文件的哈希值构建哈希树,将各目标文件的哈希值组织在哈希树的叶子节点上,然后得到根哈希值,后续只需将根哈希值存储到区块链即可,在校验时便可以根据待查询的文件重构哈希树,校验重构的哈希树的根哈希值和区块链中的根哈希值是否一致即可。至于哈希树中各子节点的哈希值可以不必存储在区块链中,而采用较为节省资源的方式存储,待需要校验的时候由数据收集方提供,这样较为节省存储资源。

该哈希树的数据结构为树形结构,其叶子节点是可独立验证的数据的哈希值,非叶子节点的节点的哈希值是根据其子节点的哈希值得到的,比如可以是对其子节点的数据进行拼接后再取哈希得到的哈希值,或者也可以是对其子节点的数据通过其它运算得到的,本申请对此不做限定。在构建哈希树时,可以以各目标文件的哈希值为哈希树的叶子节点构建哈希树。

下面以哈希树为二叉树为例介绍本申请实施例利用哈希值构建的哈希树,通过哈希值构建的二叉树可以是默克尔树,如图2所示,为本申请构建的默克尔树的一种示例性结构示意图,在该例中,对4份目标数据进行了备份,得到了4个备份文件,并取这4个备份文件的哈希值,然后以这4个哈希值作为叶子节点,构建默克尔树。在默克尔树中,叶子节点的哈希值可以通过哈希算法对各备份文件求哈希值获得,非叶子节点的节点的哈希值可以通过对其子节点的哈希值进行拼接然后再取哈希值得到,所谓的拼接可以是将两个哈希值前后相连,比如原来子节点的哈希值为00000000000000000000000000000000和11111111111111111111111111111111,这样将两个子节点的哈希值拼接后的哈希值为0000000000000000000000000000000011111111111111111111111111111111,然后再对拼接后的哈希值取哈希值即为这两个子节点的父节点的哈希值。

步骤13:将所述根哈希值存储到区块链中,以得到用于验证所述目标文件真实性的存证信息。

其中,所述存证信息包括:存储目标文件根哈希值的区块的标识、目标文件的存证时间戳、目标文件的根哈希值。这样,后续在接收到针对所述目标文件中的至少一个目标文件的完整性校验指令后,便可以根据这些存在信息来校验目标文件的完整性。

在将哈希值存储到区块链中时,可以是将哈希值存储到区块链中的某一个区块中,区块链中的各个区块都对应有一个标识,该标识用来标识区块链中的各个区块,那么可以记录该标识,以便后续根据该标识确定存储哈希值的区块链。同时,在将哈希值存储到区块链中时,区块链会生成存储该哈希值的时间戳,那么后续可以利用该时间戳来对目标文件进行校验。

仍然以目标文件为数据库数据的备份文件为例,可以在对数据库指定时间内的数据进行备份得到备份文件后,确定备份文件对应的根哈希值,然后确定该备份文件对应的根哈希值,最后便可将该根哈希值记录到区块链中。

需要说明的是,从对数据进行备份,到提取备份文件的哈希值,再到最后将根哈希值保存到区块链中,往往需要一段时间才能完成。得到备份文件后,备份文件会有其生成时间,同样存储根哈希值到区块链中时,会得到存证时间戳。如果备份时间和存证时间之间的时间间隔小于某一阈值,那么可以认为数据是有效的,后续可以继续通过哈希值来验证数据的真实性。因此,为了便于后续通过存证时间戳来校验备份文件,这段时间往往不能太长,比如,在2014年11月11日对数据库文件进行了备份,然后在2015年11月11日再对数据进行存证,那么数据的可信度便会大打折扣。

那么,由于可以对目标数据定期备份,那对于定期备份的备份文件,便可以在备份完成后尽快将备份文件的根哈希值存储到区块链中,对备份文件进行存证,以便后期对备份文件进行完整性校验。那么,本步骤11以及后续步骤12和步骤13可以是在每次得到备份文件后便执行的。

数据的完整性校验,是指校验当前的数据和原来的数据是否保持完全一致的证明手段。在确定备份文件的哈希值时,可以将备份文件作为哈希算法的输入,即可得到备份文件的哈希值,具体通过哈希算法计算哈希值的过程此处不再赘述。

区块链技术是一种去中心化的分布式数据库技术,区块链是由多个存储区块相互链接而成的,存储在区块链上的数据具有不可篡改性。通过定期把目标文件的特征值存储在区块链上,就可以为这些目标文件打上时间戳,即数据的存证服务,一旦将哈希树的根节点的哈希值写入区块链,就为目标文件形成一个难以篡改的数据存证,这样后续在接收到针对目标文件中的至少一个目标文件的完整性校验指令后,便可以根据区块链中存储的根哈希值,校验目标文件的完整性,防止数据被篡改后仍被使用而导致的资源浪费的问题,提高了数据的公信力。

需要说明的是,在利用目标文件与第三方合作时,为了保证社区数据的公信力,可以将哈希树的根哈希值储存到公共的区块链中,公共的区块链比如可以是比特币的区块链,这样,当与第三方合作的时候,可以大大提高积累下来的社区数据的公信力。由于根哈希值是保存在公共的区块链中的,任何人都可以查到,且数据是不可更改的,这样,第三方便可以根据公共区块链中存储的哈希值,验证当前的目标文件是否完整,防止数据持有方私自更改哈希树的根哈希值。

为便于描述,后续将当前待校验完整性的目标文件称为目标文件,由于在后期使用数据的时候,目标文件可能只是目标文件中的一部分文件,这样后期校验目标文件完整性的时候,便可以只利用目标文件的哈希值,然后将剩余缺少的哈希值补全,就可以得到哈希树的根哈希值。那么,在构建哈希树的时候,可以将最有可能会被同时查询到的数据都组织在一个子树下。这样在查询时便会减少涉及的节点的数目,进一步节省了计算资源。

具体确定最有可能被同时查询到的数据的过程可以包括下述步骤:

步骤21:确定所述目标文件中的至少两个目标文件被同时查询的概率的权重值;

不同的目标文件被同时查询往往是由于不同的目标文件之间有一定的共性,比如,目标文件中数据的业务类型相同的情况下,同时被查询的概率将会较高。除了根据目标文件的业务类型外,还可以参考目标文件之前被同时查询的情况,然后对多种情况综合进行考虑,即可得到不同目标文件被同时查询的权重值。

具体在计算权重值时,可以给不同情况乘以不同的权重,比如计算目标文件1和目标文件2被同时查询的概率时,如果目标文件1和目标文件2为相同业务类型的文件,那么其被同时查询的概率的权重值加10,如果这两个文件在以往的100次查询中,有15次被同时查询过,那么其被同时查询的概率的权重值可再加15,如果两个文件还同为目标数据需求方关心的数据,那么其被同时查询的概率的权重值可再加10,目标数据需求方为可能使用目标文件中的数据的单位或个人,这样目标文件1和目标文件2被同时查询的概率的权重值即为35。

具体对于两个以上的目标文件被同时使用的权重值的计算方法与此类似,此处不再赘述。

步骤22:将所述权重值中满足预设概率条件的权重值作为目标权重值;

这里的预设概率条件可以是:权重值大于某一设定阈值,且如果某一个目标文件与多个目标文件组合的权重值都大于设定阈值,那么则取权重值最大的组合,同时该组合中的这两个目标文件与其它目标文件的组合将被舍弃。按照该条件,便可得到目标权重值,如此便得到了最有可能被同时查询的目标文件的组合。

步骤23:将同一目标权重值对应的目标文件的哈希值记录到同一节点下。

同一目标权重值对应的目标文件,即为被同时查询的概率较大的目标文件,这样便可以将同一目标权重值对应的目标文件的哈希值记录到同一节点下,这样在查询时便会减少涉及的节点的数目,进一步节省了计算资源。

如图1所示,假设目标文件1和目标文件2很有可能被同时查询,那么便将其哈希值组织到同一节点h5下面,在构建哈希树时,只需计算目标文件1和目标文件2的哈希值,同时根据之前保存的h6的哈希值,即可得到根哈希值。而如果将目标文件2的哈希值组织到h3处,那便需要利用节点h1、h2、h3、h4,相对于将目标文件2的哈希值组织在h2处的方法,在计算各哈希值时增加了两个节点,如果在校验数据时涉及的数据较多时,通过本申请提供的节点组织方法,校验时的计算量将会大大减少,减少了对计算资源的开销。

在本申请实施例中,将某一次构建的哈希树的根哈希值存储到区块链中,可以用于后期对数据的完整性校验,但是,有可能数据持有方弄虚作假,分别计算了正确的数据对应的根哈希值和篡改后的数据对应的根哈希值,而在数据需求方需要时,将篡改后的数据和篡改后的数据对应的根哈希值提供给数据需求方。由于存在这种可能,因此可以进一步提升数据的公信力。

为了进一步提升数据的公信力,即增加第三方对数据的信任程度,可以根据当前时间节点构建的哈希树的根哈希值和历史根哈希值确定时序哈希值,然后将该时序哈希值存储到区块链中。这里所说的历史根哈希值,指在当前时间节点之前的任一时间节点,根据目标数据的历史目标文件的哈希值构建的哈希树的根哈希值,所述历史目标文件为在所述任一时间节点时的目标数据的目标文件。即历史哈希值为在当前时间节点之前的任一时间节点,通过执行上述步骤11-步骤13确定的根哈希值。

具体确定的时序哈希值,比如可以是根据当前时间节点构建的哈希树的根哈希值和上一时间节点确定的历史根哈希值确定的。所述时序哈希值中还可以包括当前时间节点构建的哈希树的根哈希值和上一时间节点确定的历史根哈希值,比如,当前时间节点构建的哈希树的根哈希值为00000000000000000000000000000000,而上一时间节点确定的历史根哈希值为11111111111111111111111111111111,那么当前时间节点构建的时序哈希值便可以是1111111111111111111111111111111100000000000000000000000000000000。或者所述时序哈希值还可以是对当前时间节点确定的根哈希值和上一时间节点确定的根哈希值进行拼接然后再取哈希值得到的,此处不再赘述。

此外,具体确定的时序哈希值,还可以是根据当前时间节点构建的哈希树的根哈希值和上上个时间节点确定的历史根哈希值确定时序哈希值,此处不再赘述。

时序哈希值将各时间节点确定的根哈希值串联了起来,形成链条结构,用户只要得知当前的哈希树的时序哈希值,就能往前追溯找到之前所有的哈希树的时序哈希值。如果数据持有方对某个时间节点的根哈希值作假,那么为了便于以后自己查询或者向某些第三方提供真实的数据,数据持有方往往还需要记录真实的根哈希值,这样数据持有方便需要同时维护两条链条,其中一条为真链条,一条假链条,这会消耗较多的存储资源,同时由于向数据需求方提供任一时间节点的时序哈希值,数据需求方便可以查看整条时序哈希值链条,这样不同的数据需求方便可以互相对比时序哈希值链条,如果数据持有方作假,则很容易被发现。而如果只存储根哈希值,则不同的数据需求方便无法互相对比得到的根哈希值,除非他们得到的是同一时间节点确定的根哈希值。

通过上述分析可知,通过在各时间节点确定时序哈希值,然后将时序哈希值进行存储,便可以进一步提升数据的公信力,降低了数据持有者数据作假的可能。

在将哈希值存储到区块链中时,如前文所述,可以将哈希值存储到共有的区块链中,比如将哈希值存储到比特币的区块链中,在0.9.2版本的比特币协议开始,可以发起一笔小额的转账,在转账的交易脚本中利用“OP_RETURN<根哈希值>”这个命令就可以把“根哈希值”嵌入到比特币的交易记录里。一旦这笔交易被比特币的区块链所接受,就标示它被写入某一个区块的数据主体,便完成了本次数据的存证。

遵照惯例,在待写入区块链的根哈希值的前端可以加入一个前缀来表明存储在区块链上的这个“OP_RETURN<根哈希值>”命令是用于本方法的存证服务的。比如CoinSpark网站会使用“SPK”前缀,例如“SPK”+根哈希值。在将根哈希值写入区块链后,可以记录当前时间节点写入根哈希值和/或时序哈希值的区块链的位置,以便后续根据该位置来确定根哈希值和/或时序哈希值。

需要说明的是,为了避免哈希值写入失败,可以留意对消息注入操作失败的处理。一般来说如果得到了6个区块的确认,就可以认为这笔交易记录成功写入了区块链,几乎不可能会被篡改。但在极端情况下,比特币的区块链有可能发生分叉的情况,尤其是在比特币协议更新引起新旧协议不兼容的时候。一旦出现写入失败的情况,需要采取应对措施补救,保证我们的根哈希值在比特币的主链上有数据存证。

按照上述对根哈希值和时序哈希值的存储方式,便可为目标文件形成一个难以篡改的存证,后续在接收到针对目标文件中的至少一个目标文件的完整性校验指令后,便可以根据区块链中记录的根哈希值和/或时序哈希值,校验目标文件的完整性。

下面将详细描述本申请提供的一种数据校验方法,即如何根据之前存储的哈希值,对目标文件进行校验的过程。

该方法的实现流程示意图如图4所示,包括下述步骤:

步骤31:确定待验证的目标文件,提取所述目标文件的存证信息;

这里的目标文件为通过前文所述的步骤进行存证的目标文件中的至少一个文件。由于在对目标文件进行存证时,记录了存证目标文件的存在信息的区块链的标识,那么可以根据该标识确定与该标识对应的区块,该区块中便保存有目标文件对应的根哈希值以及存证时间戳。

步骤32:从存证信息中,提取所述目标文件的哈希值;

步骤33:利用所述目标文件的哈希值构建校验树,并将所述校验树的根哈希值作为校验哈希值;

这里的校验树同样为哈希树,该校验树为数据结构与历史哈希树相同的哈希树,历史哈希树为在该目标时间节点时根据目标文件的哈希值构建的哈希树。所谓的数据结构相同,指目标文件对应于校验树中节点的位置,与历史哈希树中节点的位置相同,比如图2所示的历史哈希树中,备份文件1和备份文件2对应于该哈希树中的h1节点和h2节点,那么,在构建校验树时,同样也将备份文件1和备份文件2(目标文件)对应于该哈希树中的h1节点和h2节点。

在构建当前哈希树时,如果目标文件为历史哈希树对应的目标文件中的部分文件,那么可以根据预先存储的历史哈希树的各目标文件的哈希值,确定构建校验树的缺省哈希值,这里所说的缺省哈希值为除所述目标文件的哈希值外,确定所述校验树的根哈希值所必需的哈希值,比如,目标文件为备份文件1和备份文件2,其分别对应于该哈希树中的h1节点和h2节点,那么在得到根节点时,便还需要h6节点,而无需h3节点和h4节点,这里的h6节点便可称为缺省哈希值。

这样在确定缺省哈希值和目标文件的哈希值后,便可构建校验树,得到校验树的哈希值。

在构建当前哈希树时,如果目标文件为历史哈希树对应的目标文件中的全部文件,那么可以直接根据目标文件的哈希值,按照历史哈希树的数据结构构建哈希树,即可得到校验树的哈希值。

由于之前已经预先在区块链中存储了各时间节点确定的哈希树的根哈希值,那么此时在对目标文件进行校验时,便可以从区块链中确定目标文件对应的历史哈希树的根哈希值。具体确定根哈希值时,可以根据目标时间节点来确定目标时间节点时写入根哈希值的区块链的位置,进而确定区块链中保存的根哈希值。

步骤34:判断所述校验树的根哈希值与所述历史哈希树的根哈希值是否相同;

在确定校验树的根哈希值和历史哈希树的根哈希值后,便可以对二者进行比对,来判断二者是否相同。

步骤35:通过存证时间戳校验目标文件是否有效;

如果目标文件的生成时间和存证时间戳之间的时间间隔小于某一阈值,那么可以认为数据是有效的,后续可以继续通过哈希值来验证数据的真实性。这里的目标文件的生成时间,比如可以是备份文件的生成时间,也可以是目标文件中数据的生成时间。比如,备份文件的备份时间是2014年11月11日23点30分,而存证时间戳为2014年11月12日0点10分,两个时间的间隔为40分钟,如果预设的阈值为1天,那么,可以确定该备份数据是有效的。

步骤36:当确定校验树的根哈希值与该历史哈希树的根哈希值相同时,确定目标文件为未被篡改过的文件;

步骤37:当确定校验树的根哈希值与该历史哈希树的根哈希值不同时,确定目标文件为被篡改的文件。

当确定目标文件为被篡改的目标文件后,便不必再去挖掘其价值,避免了人力物力等资源的浪费。

需要说明的是,由于在存证阶段可以将时序哈希值也存储到区块链中,那么,还可以从区块链中确定目标文件对应的时序哈希值,时序哈希值中包括在目标时间节点时构建的哈希树的根哈希值,以及在目标时间节点前一时间节点构建的哈希树的根哈希值,这样便可以根据确定的时序哈希值确定各个时间节点构建的历史哈希树的根哈希值。

本申请实施例提供的数据校验方法,通过确定目标文件的哈希值,然后利用目标文件的哈希值构建哈希树,并提取所述哈希树的根哈希值,将所述根哈希值存储到区块链中,以得到用于验证所述目标文件真实性的存证信息。这里的存证信息包括:存储目标文件根哈希值的区块的标识、目标文件的存证时间戳、目标文件的根哈希值。这样,后续在对目标文件中的至少一个目标文件的完整性进行校验时,便可以根据区块链中的存储的根哈希值和存证时间戳,来校验目标文件的真实性

需要说明的是,本申请实施例所提供方法的各步骤的执行主体均可以是同一设备,或者,该方法也由不同设备作为执行主体。比如,步骤11和步骤12的执行主体可以为设备1,步骤13的执行主体可以为设备2;又比如,步骤11的执行主体可以为设备1,步骤12和步骤13的执行主体可以为设备2;等等。

以上为本申请实施例提供的数据存证方法和数据校验方法,基于同样的思路,本申请实施例还提供相应的数据存证装置,如图5所示;本申请实施例还提供相应的数据校验装置,如图6所示。

图5为本申请实施例提供的数据存证装置的结构示意图,具体包括:

第一确定单元41,确定目标文件的哈希值;

第一构建单元42,利用所述目标文件的哈希值构建哈希树,并提取所述哈希树的根哈希值;

存储单元43,将所述根哈希值存储到区块链中,以得到用于验证所述目标文件真实性的存证信息;其中,所述存证信息包括:存储目标文件根哈希值的区块的标识、目标文件的存证时间戳、目标文件的根哈希值。

本申请实施例中,数据存证的实施方法有很多种,在一种实施方式中,为了便于数据校验时节省资源,第一构建单元42,具体用于确定所述目标文件中的至少两个目标文件被同时查询的概率的权重值;将所述权重值中满足预设概率条件的权重值作为目标权重值;将同一目标权重值对应的目标文件的哈希值记录到同一节点下。

在一种实施方式中,为了提高数据的公信力,所述装置还包括:

时序哈希值确定单元44,根据所述哈希树的根哈希值和历史根哈希值确定时序哈希值,所述历史根哈希值为在当前时间节点之前的任一时间节点,根据历史目标文件的哈希值构建的哈希树的根哈希值;

时序哈希值存储单元45,将所述时序哈希值存储到区块链中。

在一种实施方式中,时序哈希值确定单元44,具体用于根据当前时间节点构建的哈希树的根哈希值和上一时间节点确定的历史根哈希值,确定时序哈希值。

在一种实施方式中,所述时序哈希值中包括当前时间节点构建的哈希树的根哈希值和上一时间节点确定的历史根哈希值。

本申请实施例提供的数据存证装置,通过确定目标文件的哈希值,然后利用目标文件的哈希值构建哈希树,并提取所述哈希树的根哈希值,将所述根哈希值存储到区块链中,以得到用于验证所述目标文件真实性的存证信息。这里的存证信息包括:存储目标文件根哈希值的区块的标识、目标文件的存证时间戳、目标文件的根哈希值。这样,后续在对目标文件中的至少一个目标文件的完整性进行校验时,便可以根据区块链中的存储的根哈希值和存证时间戳,来校验目标文件的真实性。

图6为本申请实施例提供的数据校验装置的结构示意图,该装置具体包括:

第二确定单元51,确定待验证的目标文件,提取所述目标文件的存证信息

提取单元52,从所述存证信息中,提取所述目标文件对应的历史哈希树的根哈希值;

第二构建单元53,利用所述目标文件的哈希值构建校验树,并将所述校验树的根哈希值作为校验哈希值;

第三确定单元54,当确定所述校验哈希值与所述历史哈希树的根哈希值相同时,确定所述目标文件为未被篡改过的文件。

本申请实施例中,数据校验的实施方法有很多种,在一种实施方式中,所述第二构建单元53在所述目标文件为所述目标文件中的部分文件时,根据预先存储的历史哈希树的各目标文件的哈希值,确定构建所述校验树的缺省哈希值,所述缺省哈希值为除所述目标文件的哈希值外,用于确定所述校验树的根哈希值的哈希值;

根据确定的缺省哈希值和所述目标文件的哈希值,构建所述校验树;

所述第二构建单元52在所述目标文件为所述目标文件中的全部文件时,根据所述目标文件的哈希值,按照所述历史哈希树的数据结构构建哈希树。

在一种实施方式中,所述装置还包括时序哈希值确定单元55,用于从区块链中确定所述目标文件对应的时序哈希值,所述时序哈希值中包括在所述目标时间节点时构建的哈希树的根哈希值,以及在所述目标时间节点前一时间节点构建的哈希树的根哈希值;

根据所述时序哈希值确定各个时间节点构建的历史哈希树的根哈希值。

本申请实施例提供的数据校验装置,在对待校验的目标文件进行校验时,根据预先确定的目标文件的存证信息中的时间戳和哈希值,来对目标文件的真实性进行校验,当确定所述校验树的根哈希值与所述历史哈希树的根哈希值相同时,确定所述目标文件为未被篡改过的文件。

本领域内的技术人员应明白,本发明的实施例可提供为方法、系统或计算机程序产品。因此,本发明可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。

本发明是参照根据本发明实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。

这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。

这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。

在一个典型的配置中,计算设备包括一个或多个处理器(CPU)、输入/输出接口、网络接口和内存。

内存可能包括计算机可读介质中的非永久性存储器,随机存取存储器(RAM)和/或非易失性内存等形式,如只读存储器(ROM)或闪存(flash RAM)。内存是计算机可读介质的示例。

计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(PRAM)、静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)、其他类型的随机存取存储器(RAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、快闪记忆体或其他内存技术、只读光盘只读存储器(CD-ROM)、数字多功能光盘(DVD)或其他光学存储、磁盒式磁带,磁带磁磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括暂存电脑可读媒体(transitory media),如调制的数据信号和载波。

还需要说明的是,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、商品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、商品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、商品或者设备中还存在另外的相同要素。

以上所述仅为本申请的实施例而已,并不用于限制本申请。对于本领域技术人员来说,本申请可以有各种更改和变化。凡在本申请的精神和原理之内所作的任何修改、等同替换、改进等,均应包含在本申请的权利要求范围之内。

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