1.一种数据持有性验证方法,其特征在于,包括:
发送数据验证通知至存储待检验的数据分块的存储节点;所述数据验证通知包括所述待检验的数据分块的数据标识;
接收所述存储节点根据所述数据标识发送的证明数据;所述证明数据包括所述存储节点中与所述数据标识对应的存储数据,以及根据所述存储数据计算根默克尔哈希的计算路径;
根据所述存储数据和所述计算路径,计算根默克尔哈希,并将计算结果与预设的默克尔树中的根默克尔哈希进行比较;
若根据所述存储数据和所述计算路径计算得到的根默克尔哈希,与所述预设的默克尔树中的根默克尔哈希一致,则判定所述存储节点中的所述存储数据为所述数据分块;
所述发送数据验证通知至存储待检验的数据分块的存储节点之前,还包括:对数据所有者终端的原始数据进行分块,得到至少两个数据分块,并将每个所述数据分块发送至网络中对应的存储节点进行存储;其中,发送数据分块的时间是在数据分块生成完毕之后发送,或者是在生成数据分块的同时进行发送;
对每个所述数据分块进行哈希运算,得到根默克尔哈希;
根据每个所述数据分块及其根默克尔哈希构建默克尔树,并存储所述默克尔树;
所述根据每个所述数据分块及其根默克尔哈希构建默克尔树,并存储所述默克尔树,包括:接收所述存储节点发送的存储数据变化请求;所述存储数据变化请求中包括待改动的存储数据和改动之后的存储数据;
根据所述存储数据变化请求,对所述待改动的存储数据和改动之后的存储数据进行验证;其中,在验证改动数据的过程中,先获取发送存储数据变化请求的存储节点的权限,所述权限包括所述存储节点可处理的数据类型、数据标识以及对应的处理方式,根据所述存储节点的权限、待改动的存储数据和改动之后的存储数据,将其进行对比,确定待改动的存储数据和改动之后的存储数据是否符合所述存储节点的权限;
若验证通过,则根据所述改动之后的存储数据重新计算根默克尔哈希;
根据所述改动之后的存储数据以及重新计算得到根默克尔哈希更新所述默克尔树。
2.如权利要求1所述的数据持有性验证方法,其特征在于,所述根据所述存储数据和所述计算路径,计算根默克尔哈希,并将计算结果与预设的默克尔树中的根默克尔哈希进行比较之后,还包括:若根据所述存储数据和所述计算路径计算得到的根默克尔哈希,与预设的默克尔树中的根默克尔哈希不同,则判定所述存储节点中的所述存储数据与所述数据分块不一致,并生成验证失败记录;
发送所述验证失败记录和所述存储数据对应的数据分块至所述存储节点,并用所述数据分块替换所述存储节点中验证失败的存储数据。
3.如权利要求1或2所述的数据持有性验证方法,其特征在于,所述发送数据验证通知至存储待检验的数据分块的存储节点之前,还包括:确定至少一个数据验证终端;所述数据验证终端用于代替数据所有者终端对存储节点中的存储数据进行验证;
发送待验证的存储数据的数据标识至所述数据验证终端,并委托所述数据验证终端对所述数据标识对应的存储数据进行验证。
4.一种终端设备,其特征在于,包括存储器以及处理器,所述存储器中存储有可在所述处理器上运行的计算机程序,其特征在于,所述处理器执行所述计算机程序时,实现如下步骤:发送数据验证通知至存储待检验的数据分块的存储节点;所述数据验证通知包括所述待检验的数据分块的数据标识;
接收所述存储节点根据所述数据标识发送的证明数据;所述证明数据包括所述存储节点中与所述数据标识对应的存储数据,以及根据所述存储数据计算根默克尔哈希的计算路径;
根据所述存储数据和所述计算路径,计算根默克尔哈希,并将计算结果与预设的默克尔树中的根默克尔哈希进行比较;
若根据所述存储数据和所述计算路径计算得到的根默克尔哈希,与所述默克尔树中的根默克尔哈希一致,则判定所述存储节点中的所述存储数据为所述数据分块;
所述发送数据验证通知至存储待检验的数据分块的存储节点之前,还包括:对数据所有者终端的原始数据进行分块,得到至少两个数据分块,并将每个所述数据分块发送至网络中对应的存储节点进行存储;其中,发送数据分块的时间是在数据分块生成完毕之后发送,或者是在生成数据分块的同时进行发送;
对每个所述数据分块进行哈希运算,得到根默克尔哈希;
根据每个所述数据分块及其根默克尔哈希构建默克尔树,并存储所述默克尔树;
所述根据每个所述数据分块及其根默克尔哈希构建默克尔树,并存储所述默克尔树,包括:接收所述存储节点发送的存储数据变化请求;所述存储数据变化请求中包括待改动的存储数据和改动之后的存储数据;
根据所述存储数据变化请求,对所述待改动的存储数据和改动之后的存储数据进行验证;其中,在验证改动数据的过程中,先获取发送存储数据变化请求的存储节点的权限,所述权限包括所述存储节点可处理的数据类型、数据标识以及对应的处理方式,根据所述存储节点的权限、待改动的存储数据和改动之后的存储数据,将其进行对比,确定待改动的存储数据和改动之后的存储数据是否符合所述存储节点的权限;
若验证通过,则根据所述改动之后的存储数据重新计算根默克尔哈希;
根据所述改动之后的存储数据以及重新计算得到根默克尔哈希更新所述默克尔树。
5.如权利要求4所述的终端设备,其特征在于,所述根据所述存储数据和所述计算路径,计算根默克尔哈希,并将计算结果与预设的默克尔树中的根默克尔哈希进行比较之后,还包括:若根据所述存储数据和所述计算路径计算得到的根默克尔哈希,与预设的默克尔树中的根默克尔哈希不同,则判定所述存储节点中的所述存储数据与所述数据分块不一致,并生成验证失败记录;
发送所述验证失败记录和所述存储数据对应的数据分块至所述存储节点,并用所述数据分块替换所述存储节点中验证失败的存储数据。
6.一种终端设备,其特征在于,包括:
发送单元,用于发送数据验证通知至存储待检验的数据分块的存储节点;所述数据验证通知包括所述待检验的数据分块的数据标识;
接收单元,用于接收所述存储节点根据所述数据标识发送的证明数据;所述证明数据包括所述存储节点中与所述数据标识对应的存储数据,以及根据所述存储数据计算根默克尔哈希的计算路径;
计算单元,用于根据所述存储数据和所述计算路径,计算根默克尔哈希,并将计算结果与预设的默克尔树中的根默克尔哈希进行比较;
判定单元,用于若根据所述存储数据和所述计算路径计算得到的根默克尔哈希,与所述默克尔树中的根默克尔哈希一致,则判定所述存储节点中的所述存储数据为所述数据分块;
所述终端设备还包括:
分块单元,用于对数据所有者终端的原始数据进行分块,得到至少两个数据分块,并将每个所述数据分块发送至网络中对应的存储节点进行存储;其中,发送数据分块的时间是在数据分块生成完毕之后发送,或者是在生成数据分块的同时进行发送;
哈希计算单元,用于对每个所述数据分块进行哈希运算,得到根默克尔哈希;
建树单元,用于根据每个所述数据分块及其根默克尔哈希构建默克尔树,并存储所述默克尔树;
所述建树单元包括:
请求接收单元,用于接收所述存储节点发送的存储数据变化请求;所述存储数据变化请求中包括待改动的存储数据和改动之后的存储数据;
数据验证单元,用于根据所述存储数据变化请求,对所述待改动的存储数据和改动之后的存储数据进行验证;其中,在验证改动数据的过程中,先获取发送存储数据变化请求的存储节点的权限,所述权限包括所述存储节点可处理的数据类型、数据标识以及对应的处理方式,根据所述存储节点的权限、待改动的存储数据和改动之后的存储数据,将其进行对比,确定待改动的存储数据和改动之后的存储数据是否符合所述存储节点的权限;
验证通过单元,用于若验证通过,则根据所述改动之后的存储数据重新计算根默克尔哈希;
数据修改单元,用于根据所述改动之后的存储数据以及重新计算得到根默克尔哈希更新所述默克尔树。
7.一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现如权利要求1至3任一项所述方法的步骤。