可左右滑动选省市

一种数据处理方法、装置和系统发明专利

更新时间:2024-07-01
一种数据处理方法、装置和系统发明专利 专利申请类型:发明专利;
源自:北京高价值专利检索信息库;

专利名称:一种数据处理方法、装置和系统

专利类型:发明专利

专利申请号:CN202010553962.5

专利申请(专利权)人:北京沃东天骏信息技术有限公司,北京京东尚科信息技术有限公司
权利人地址:北京市大兴区北京经济技术开发区科创十一街18号院2号楼4层A402室

专利发明(设计)人:栗鸿宇,申作军

专利摘要:本发明公开了一种数据处理方法、装置和系统,涉及计算机技术领域。该方法的一具体实施方式包括:响应于数据持有端发起的验证请求向数据存储端发起完整性验证挑战,并接收数据存储端返回的响应值;根据区块链中的数据标识和响应值对数据副本进行完整性验证;将完整性验证结果发送至数据持有端和区块链。该实施方式能够同时支持对动态数据的多数据副本的公开、无限制次数完整性验证,提高了验证结果的准确率,同时还能确定验证失败的数据副本的存储位置,降低存储成本。

主权利要求:
1.一种数据处理方法,应用于数据持有端,其特征在于,包括:
为待备份数据生成多个数据副本,根据密钥对所述多个数据副本进行加密处理;
将数据副本划分为多个副本数据块;
将多个经过加密处理的数据副本发送至数据存储端进行数据副本存储;
将所述多个数据副本对应的数据标识存储至区块链中,所述数据标识是分别为每个副本数据块设置的,所述数据标识还指示了副本数据块编号;以使,数据验证端响应于所述数据持有端发起的验证请求向所述数据存储端发起完整性验证挑战,根据所述区块链中的数据标识和所述数据存储端返回的响应值对所述数据存储端的数据副本进行完整性验证;在所述数据验证端对数据副本的完整性验证结果为验证失败的情况下,接收所述数据验证端根据搜索算法和各数据副本对应的数据标识确定的验证失败的数据副本对应的存储位置。
2.根据权利要求1所述的数据处理方法,其特征在于,所述数据标识指示了数据副本编号和数据副本版本号。
3.根据权利要求1所述的数据处理方法,其特征在于,所述数据处理方法还包括:向所述数据存储端发送数据副本动态操作请求,以使,所述数据存储端根据所述数据副本动态操作请求指示的操作方式对多个数据副本进行相应的操作处理,其中,所述操作方式包括下列方式中的一种或多种:修改、添加和删除。
4.根据权利要求3所述的数据处理方法,其特征在于,在所述向所述数据存储端发送数据副本动态操作请求的步骤之后,所述数据处理方法还包括:根据所述数据副本动态操作请求指示的操作方式,对所述数据标识进行对应调整,并将调整后的数据标识发送至所述区块链中进行存储。
5.一种数据处理方法,应用于数据存储端,其特征在于,包括:
接收数据持有端发送的多个数据副本,对所述多个数据副本进行存储;所述数据副本被划分为多个副本数据块;
响应于数据验证端发起的完整性验证挑战,向所述数据验证端发送响应值,以使,所述数据验证端根据区块链中的所述多个数据副本对应的数据标识和所述响应值对所述数据存储端的数据副本进行完整性验证,所述数据标识是分别为每个副本数据块设置的,所述数据标识还指示了副本数据块编号。
6.根据权利要求5所述的数据处理方法,其特征在于,所述数据处理方法还包括:接收所述数据持有端发送数据副本动态操作请求,根据所述数据副本动态操作请求指示的操作方式对多个数据副本进行相应的操作处理,其中,所述操作方式包括下列方式中的一种或多种:修改、添加和删除。
7.一种数据处理方法,应用于数据验证端,其特征在于,包括:
响应于所述数据持有端发起的验证请求向数据存储端发起完整性验证挑战,并接收所述数据存储端返回的响应值;
根据区块链中的多个数据副本对应的数据标识和所述响应值对所述数据存储端的数据副本进行完整性验证;所述数据副本被划分为多个副本数据块,所述数据标识是分别为每个副本数据块设置的,所述数据标识还指示了副本数据块编号;
将完整性验证结果发送至所述数据持有端和所述区块链;在对数据副本的完整性验证结果为验证失败的情况下,根据搜索算法和各数据副本对应的数据标识确定的验证失败的数据副本对应的存储位置,并将所述存储位置发送给所述数据持有端。
8.根据权利要求7所述的数据处理方法,其特征在于,所述数据标识指示了数据副本编号和数据副本版本号。
9.根据权利要求8所述的数据处理方法,其特征在于,在所述数据验证端对数据副本的完整性验证结果为验证失败的情况下,所述数据处理方法还包括:向所述数据存储端发起定位验证挑战,并接收所述数据存储端返回的定位值,根据搜索算法、各数据副本对应的数据标识和所述定位值确定验证失败的数据副本对应的存储位置。
10.一种数据处理装置,设置于数据持有端,其特征在于,包括:
数据副本生成模块,用于为待备份数据生成多个数据副本,根据密钥对所述多个数据副本进行加密处理,将数据副本划分为多个副本数据块;将多个经过加密处理的数据副本发送至数据存储端进行数据副本存储;
数据副本存储模块,用于将所述多个数据副本对应的数据标识存储至区块链中,所述数据标识是分别为每个副本数据块设置的,所述数据标识还指示了副本数据块编号;以使,数据验证端响应于所述数据持有端发起的验证请求向所述数据存储端发起完整性验证挑战,根据所述区块链中的数据标识和所述数据存储端返回的响应值对所述数据存储端的数据副本进行完整性验证;在所述数据验证端对数据副本的完整性验证结果为验证失败的情况下,接收所述数据验证端根据搜索算法和各数据副本对应的数据标识确定的验证失败的数据副本对应的存储位置。
11.一种数据处理装置,设置于数据存储端,其特征在于,包括:
数据副本接收模块,用于接收数据持有端发送的多个数据副本,对所述多个数据副本进行存储;所述数据副本被划分为多个副本数据块;
响应值发送模块,用于响应于数据验证端发起的完整性验证挑战,向所述数据验证端发送响应值,以使,所述数据验证端根据区块链中的所述多个数据副本对应的数据标识和所述响应值对所述数据存储端的数据副本进行完整性验证,所述数据标识是分别为每个副本数据块设置的,所述数据标识还指示了副本数据块编号。
12.一种数据处理装置,设置于数据验证端,其特征在于,包括:
验证挑战发起模块,用于响应于所述数据持有端发起的验证请求向数据存储端发起完整性验证挑战,并接收所述数据存储端返回的响应值;
数据副本验证模块,用于根据区块链中的多个数据副本对应的数据标识和所述响应值对所述数据存储端的数据副本进行完整性验证;所述数据副本被划分为多个副本数据块,所述数据标识是分别为每个副本数据块设置的,所述数据标识还指示了副本数据块编号;
验证结果发送模块,用于将完整性验证结果发送至所述数据持有端和所述区块链;在对数据副本的完整性验证结果为验证失败的情况下,根据搜索算法和各数据副本对应的数据标识确定的验证失败的数据副本对应的存储位置,并将所述存储位置发送给所述数据持有端。
13.一种数据处理系统,其特征在于,包括:数据持有端、数据存储端、数据验证端和区块链,其中,所述数据持有端,用于为待备份数据生成多个数据副本,根据密钥对所述多个数据副本进行加密处理,将数据副本划分为多个副本数据块;将多个经过加密处理的数据副本发送至数据存储端进行数据副本存储;将所述多个数据副本对应的数据标识存储至区块链中;所述数据标识是分别为每个副本数据块设置的,所述数据标识还指示了副本数据块编号;
所述数据存储端,用于接收数据持有端发送的多个数据副本,对所述多个数据副本进行存储;响应于数据验证端发起的完整性验证挑战,向所述数据验证端发送响应值;
所述数据验证端,用于响应于所述数据持有端发起的验证请求向所述数据存储端发起完整性验证挑战,并接收所述数据存储端返回的响应值;根据所述区块链中的数据标识和所述响应值对所述数据存储端的数据副本进行完整性验证;将完整性验证结果发送至所述数据持有端和所述区块链;在对数据副本的完整性验证结果为验证失败的情况下,根据搜索算法和各数据副本对应的数据标识确定的验证失败的数据副本对应的存储位置,并将所述存储位置发送给所述数据持有端;
所述区块链,用于接收所述数据持有端发送的数据标识,接收所述数据验证端发送的完整性验证结果。
14.一种电子设备,其特征在于,包括:
一个或多个处理器;
存储装置,用于存储一个或多个程序,
当所述一个或多个程序被所述一个或多个处理器执行,使得所述一个或多个处理器实现如权利要求1‑9中任一所述的方法。
15.一种计算机可读介质,其上存储有计算机程序,其特征在于,所述程序被处理器执行时实现如权利要求1‑9中任一所述的方法。 说明书 : 一种数据处理方法、装置和系统技术领域[0001] 本发明涉及计算机技术领域,尤其涉及一种数据处理方法、装置和系统。背景技术[0002] 随着数据存储端的发展,特别是云存储应用的出现,使得用户可以随时访问、处理和共享云端服务器中的数据,为人们的工作和生活带了极大的便利;但同时,用户存储在云中的数据可能遭到其他用户或云计算提供商的篡改或损坏,因此,云存储的安全性和隐私性愈发引起人们的关注。[0003] 数据完整性验证(ProvableDataIntegrity,PDI)方案被认为是解决上述问题的重要手段。该方案主要分为数据持有性证明(ProvableDataPossession,PDP)和数据可恢复证明(ProofofRetrievability,POR)。其中,PDP的关注点着重于快速判断远程存储节点上所存储的文件是否遭到损坏,因此更注重检测的效率和成本。[0004] 在实现本发明过程中,发明人发现现有技术中至少存在如下问题:[0005] 1.现有方法提供的验证过程中依赖数据持有端提供的原始数据或相关存储证明(数据标识),易导致数据泄露,且由于存储证明易被篡改,导致验证结果准确率较低;[0006] 2.对于云端存储中验证失败(数据副本被篡改、损坏或未按用户指示进行云端存储等)的数据副本无法提供对应的存储位置,提高了用户后续计算对应存储位置和进行数据传输产生的额外成本。发明内容[0007] 有鉴于此,本发明实施例提供一种数据处理方法、装置和系统,能够在验证过程中避免从数据持有端获取原始数据和相关数据标识,将数据标识存储至区块链中,避免其被篡改的风险,提高了验证结果的准确率;同时对于验证失败的数据副本,还进一步获取其对应的存储位置,降低存储成本。[0008] 为实现上述目的,根据本发明实施例的第一方面,提供了一种数据处理方法,应用于数据持有端,包括:[0009] 为待备份数据生成多个数据副本,根据密钥对多个数据副本进行加密处理,将多个经过加密处理的数据副本发送至数据存储端进行数据副本存储;[0010] 将多个数据副本对应的数据标识存储至区块链中,以使,数据验证端响应于数据持有端发起的验证请求向数据存储端发起完整性验证挑战,根据区块链中的数据标识和数据存储端返回的响应值对数据存储端的数据副本进行完整性验证。[0011] 进一步地,数据标识指示了数据副本编号和数据副本版本号。[0012] 进一步地,在将多个经过加密处理的数据副本发送至数据存储端进行数据副本存储的步骤之前,数据处理方法还包括:将数据副本划分为多个副本数据块,数据标识是分别为每个副本数据块设置的,数据标识还指示了副本数据块编号。[0013] 进一步地,数据处理方法还包括:向数据存储端发送数据副本动态操作请求,以使,数据存储端根据数据副本动态操作请求指示的操作方式对多个数据副本进行相应的操作处理,其中,操作方式包括下列方式中的一种或多种:修改、添加和删除。[0014] 进一步地,在向数据存储端发送数据副本动态操作请求的步骤之后,数据处理方法还包括:根据数据副本动态操作请求指示的操作方式,对数据标识进行对应调整,并将调整后的数据标识发送至区块链中进行存储。[0015] 进一步地,数据标识是为各数据副本中的每个副本数据块分别进行设置的,数据处理方法还包括:在数据验证端对数据副本的完整性验证结果为验证失败的情况下,接收数据验证端根据搜索算法和各数据副本对应的数据标识确定的验证失败的数据副本对应的存储位置。[0016] 根据本发明实施例的第二方面,提供了一种数据处理方法,应用于数据存储端,包括:[0017] 接收数据持有端发送的多个数据副本,对多个数据副本进行存储;[0018] 响应于数据验证端发起的完整性验证挑战,向数据验证端发送响应值,以使,数据验证端根据区块链中的数据标识和响应值对数据存储端的数据副本进行完整性验证。[0019] 进一步地,数据处理方法还包括:接收数据持有端发送数据副本动态操作请求,根据数据副本动态操作请求指示的操作方式对多个数据副本进行相应的操作处理,其中,操作方式包括下列方式中的一种或多种:修改、添加和删除。[0020] 根据本发明实施例的第三方面,提供了一种数据处理方法,应用于数据验证端,包括:[0021] 响应于数据持有端发起的验证请求向数据存储端发起完整性验证挑战,并接收数据存储端返回的响应值;[0022] 根据区块链中的数据标识和响应值对数据存储端的数据副本进行完整性验证;[0023] 将完整性验证结果发送至数据持有端和区块链。[0024] 进一步地,数据标识指示了数据副本编号和数据副本版本号。[0025] 进一步地,数据标识是为各数据副本中的每个副本数据块分别进行设置的;在数据验证端对数据副本的完整性验证结果为验证失败的情况下,数据处理方法还包括:向数据存储端发起定位验证挑战,并接收数据存储端返回的定位值,根据搜索算法、各数据副本对应的数据标识和定位值确定验证失败的数据副本对应的存储位置,并将存储位置发送至数据持有端。[0026] 根据本发明实施例的第四方面,提供了一种数据处理装置,设置于数据持有端,包括:[0027] 数据副本生成模块,用于为待备份数据生成多个数据副本,根据密钥对多个数据副本进行加密处理,将多个经过加密处理的数据副本发送至数据存储端进行数据副本存储;[0028] 数据副本存储模块,用于将多个数据副本对应的数据标识存储至区块链中,以使,数据验证端响应于数据持有端发起的验证请求向数据存储端发起完整性验证挑战,根据区块链中的数据标识和数据存储端返回的响应值对数据存储端的数据副本进行完整性验证。[0029] 根据本发明实施例的第五方面,提供了一种数据处理装置,设置于数据存储端,包括:[0030] 数据副本接收模块,用于接收数据持有端发送的多个数据副本,对多个数据副本进行存储;[0031] 响应值发送模块,用于响应于数据验证端发起的完整性验证挑战,向数据验证端发送响应值,以使,数据验证端根据区块链中的数据标识和响应值对数据存储端的数据副本进行完整性验证。[0032] 根据本发明实施例的第六方面,提供了一种数据处理装置,设置于数据验证端,包括:[0033] 验证挑战发起模块,用于响应于数据持有端发起的验证请求向数据存储端发起完整性验证挑战,并接收数据存储端返回的响应值;[0034] 数据副本验证模块,用于根据区块链中的数据标识和响应值对数据存储端的数据副本进行完整性验证;[0035] 验证结果发送模块,用于将完整性验证结果发送至数据持有端和区块链。[0036] 根据本发明实施例的第七方面,提供了一种数据处理系统,包括:数据持有端、数据存储端、数据验证端和区块链,其中,[0037] 数据持有端,用于为待备份数据生成多个数据副本,根据密钥对多个数据副本进行加密处理,将多个经过加密处理的数据副本发送至数据存储端进行数据副本存储;将多个数据副本对应的数据标识存储至区块链中;[0038] 数据存储端,用于接收数据持有端发送的多个数据副本,对多个数据副本进行存储;响应于数据验证端发起的完整性验证挑战,向数据验证端发送响应值;[0039] 数据验证端,用于响应于数据持有端发起的验证请求向数据存储端发起完整性验证挑战,并接收数据存储端返回的响应值;根据区块链中的数据标识和响应值对数据存储端的数据副本进行完整性验证;将完整性验证结果发送至数据持有端和区块链;[0040] 区块链,用于接收数据持有端发送的数据标识,接收数据验证端发送的完整性验证结果。[0041] 根据本发明实施例的第八方面,提供了一种电子设备,包括:[0042] 一个或多个处理器;[0043] 存储装置,用于存储一个或多个程序,[0044] 当一个或多个程序被一个或多个处理器执行,使得一个或多个处理器实现如上述任一种数据处理方法。[0045] 根据本发明实施例的第九方面,提供了一种计算机可读介质,其上存储有计算机程序,该程序被处理器执行时实现如上述任一种数据处理方法。[0046] 上述发明中的一个实施例具有如下优点或有益效果:因为采用为待备份数据生成多个数据副本,根据密钥对多个数据副本进行加密处理,将多个经过加密处理的数据副本发送至数据存储端进行数据副本存储;将多个数据副本对应的数据标识存储至区块链中,以使,数据验证端响应于数据持有端发起的验证请求向数据存储端发起完整性验证挑战,根据区块链中的数据标识和数据存储端返回的响应值对数据存储端的数据副本进行完整性验证的技术手段,所以克服了现有方法中由于依赖数据持有端提供的原始数据或相关存储证明(数据标识),易导致数据泄露,且由于存储证明易被篡改,导致验证结果准确率较低;同时对于验证失败的数据副本无法提供对应的存储位置,提高了用户后续计算对应存储位置和进行数据传输产生的额外成本的技术问题,进而实现在验证过程中避免从数据持有端获取原始数据和相关数据标识,避免数据标识被篡改的风险,提高了验证结果的准确率;同时对于验证失败的数据副本,还进一步获取其对应的存储位置,降低存储成本的技术效果。[0047] 上述的非惯用的可选方式所具有的进一步效果将在下文中结合具体实施方式加以说明。附图说明[0048] 附图用于更好地理解本发明,不构成对本发明的不当限定。其中:[0049] 图1是根据本发明第一实施例提供的数据处理方法的主要流程的示意图;[0050] 图2a是根据本发明第二实施例提供的数据处理方法的主要流程的示意图;[0051] 图2b是根据图2a所述方法中执行动态操作的变化示意图;[0052] 图3是根据本发明第三实施例提供的数据处理方法的主要流程的示意图;[0053] 图4是根据本发明第四实施例提供的数据处理装置的主要模块的示意图;[0054] 图5是根据本发明第五实施例提供的数据处理方法的主要流程的示意图;[0055] 图6是根据本发明第六实施例提供的数据处理方法的主要流程的示意图;[0056] 图7是根据本发明第七实施例提供的数据处理系统对应的流程示意图;[0057] 图8是本发明实施例可以应用于其中的示例性系统架构图;[0058] 图9是适于用来实现本发明实施例的终端设备或服务器的计算机系统的结构示意图。具体实施方式[0059] 以下结合附图对本发明的示范性实施例做出说明,其中包括本发明实施例的各种细节以助于理解,应当将它们认为仅仅是示范性的。因此,本领域普通技术人员应当认识到,可以对这里描述的实施例做出各种改变和修改,而不会背离本发明的范围和精神。同样,为了清楚和简明,以下的描述中省略了对公知功能和结构的描述。[0060] 图1是根据本发明第一实施例提供的数据处理方法的主要流程的示意图;如图1所示,本发明实施例提供的数据处理方法应用于数据持有端,主要包括:[0061] 步骤S101,为待备份数据生成多个数据副本,根据密钥对多个数据副本进行加密处理,将多个经过加密处理的数据副本发送至数据存储端进行数据副本存储。其中,数据副本是指待备份数据备份产生的副本。[0062] 根据本发明实施例,在为待备份数据生成多个数据副本的步骤之前,上述数据处理方法还包括:生成密钥。[0063] 具体地,可以采用KeyGen(一种注册机生成器,其元素是密钥对生成器)方法生成x私钥x∈Zp(p是一个大素数,Zp表示大素数集合),公钥y=g=G2。其中, G1×G2→GT表示一个双线性映射,g为G2的生成元素,G表示乘法循环群。在实际应用时,用户首先通过数据持x有端在大素数集合Zp中随机选择一个p作为私钥x,通过y=g计算得到公钥y,然后产生一个随机的密钥对,并产生加密密钥和伪随机函数密钥。[0064] 进一步地,根据本发明实施例,在将多个经过加密处理的数据副本发送至数据存储端进行数据副本存储的步骤之前,上述数据处理方法还包括:将数据副本划分为多个副本数据块,数据标识是分别为每个副本数据块设置的,数据标识还指示了副本数据块编号。副本数据块是指数据副本对应的多个子数据块,通过将全部子数据块组合可以得到完整的数据副本。[0065] 具体地,根据本发明实施例,上述为待备份数据生成多个数据副本的步骤为:通过运行CopyGen方法(指复制方法)生成n份可分层数据副本,即对于待备份数据文件F的一个数据副本表示为:[0066] (m为副本数据块的数量),多个数据副本表示为其中,i为数据副本索引,j为分块索引,同时使用加密算法Ek对所有副本数据块进行加密,即 因此每个数据副本可表示如下形式:[0067][0068] 根据本发明实施例的一具体实施方式,还可以继续对副本数据块 进行分割为s个分片,即[0069] 具体地,数据持有端还生成s个随机数{u1,u2,…,us}∈G1,用于后续进行数据标识的设置,当数据持有者需要从数据存储端获取数据副本时,只需要对数据副本对应的副本数据块进行解密,然后将副本数据块对应的副本索引删除后,根据副本数据块编号将多个副本数据块进行组合,即可得到原始数据。[0070] 步骤S102,将多个数据副本对应的数据标识存储至区块链中,以使,数据验证端响应于数据持有端发起的验证请求向数据存储端发起完整性验证挑战,根据区块链中的数据标识和数据存储端返回的响应值对数据存储端的数据副本进行完整性验证。[0071] 通过上述设置,数据持有端将数据副本对应的数据标识(相当于存储证明)发送至区块链中,避免了后续对存储数据端存储的数据副本进行完整性时,需要将原始数据(即上述待备份数据)发送至数据验证端,避免了原始数据被泄露的风险。同时由于区块链内存储数据的不可篡改性,避免了数据标识在数据持有端被篡改,提高了后续进行数据持有性的验证结果的准确率。[0072] 具体地,根据本发明实施例,数据标识指示了数据副本编号和数据副本版本号。[0073] 在数据标识中设置数据副本版本号,有利于对动态数据(指对数据存储端的数据副本进行动态操作的待备份数据)对应的数据副本的完整性验证。[0074] 根据本发明实施例的一具体实施方式,上述数据标识的设置步骤如下:[0075] 将上述生成的多个数据副本组成集合,表示为 其中(这里指的是副本数据块被进一步分割为s个分片,在实际应用时可以根据实际需要选择要不要对副本数据块进行进一步分割),用户通过数据持有端运行TagGen方法(标签方法)对每个副本数据块 计算标签(即上述数据标识):[0076] 其中,BNj表示在物理位置为j的副本数据块的逻辑编号;VNj表示副本数据块对应的数据副本版本号;IDF表示数据副本编号,是副本数据的唯一标识符,包括副本数据文件名称、划分的副本数据块数量n以及随机数uk,生成方法为IDF=Filename*u1*…*us*n;上述参数范围为1≤i≤n,1≤j≤m,1≤k≤s。上述将数据副本编号IDF作为数据标识的作用是防止数据存储端使用来自其他存储文件对应的副本数据块进行作弊。[0077] 然后数据持有端将数据副本集合中所有相同块号(如副本数据块j)的副本数据块进行聚合,生成一组聚合数据标识 并将聚合的数据标识表示为Φ={σj}1≤j≤m。数据持有端将多个数据副本及数据标识,形式可以为发送至数据存储端(远程存储端,通常为云存储系统),并将上述数据标识发送至区块链中进行存储,以便于后续进行数据副本完整性验证时使用。[0078] 优选地,根据本发明实施例的一具体实施方式,上述数据标识可以用版本映射表(Map‑VersionTable,MVT)表示为,其中,No.表示数据副本编号(一般均表示为由1到n),也可用IDF表示;BN表示副本数据块的逻辑编号(是一个计数器,用于对副本数据块进行逻辑顺序编号);VN表示数据副本版本号(表示了当前数据副本的版本,初始值为1,一旦数据副本对应的副本数据块发生动态操作则加1)。版本映射表采用哈希结构,利用键值对进行后续搜索索引。此版本映射表是一种小型的数据结构,可以存储在区块链中,用于公开验证存储节点存储的所有数据副本的完整性和一致性。需要注意的是,对于多个数据副本可以通过维护一个版本映射表来降低存储开销,但这并不作为对本发明的限定,下文会介绍每个数据副本分别对应一个版本映射表的情形。[0079] 进一步地,根据本发明实施例,上述数据处理方法还包括:向数据存储端发送数据副本动态操作请求,以使,数据存储端根据数据副本动态操作请求指示的操作方式对多个数据副本进行相应的操作处理,其中,操作方式包括下列方式中的一种或多种:修改、添加和删除。[0080] 根据本发明实施例的一具体实施方式,上述对于数据副本的动态操作是以副本数* *据块作为执行对象。数据副本动态操作请求的形式可以为,其中IDF表示数据副本编号;BlockOp是与副本数据块对应的操作指令,包括修改、添加和删*除;j为欲执行更新(动态操作)的副本数据块的索引;{bi}1≤i≤n为所有数据副本中指定副本*数据块执行动态操作之后的值;σj为更新后的聚合的数据标识。[0081] 根据本发明实施例,对于数据副本动态操作请求中指示的操作方式为删除的情形,具体执行步骤为:[0082] 对于一个待备份数据(即原始数据)的数据副本F={b1,b2,…,bm},数据持有端对应的用户希望将全部副本数据中的副本数据块bj修改为bj′,则运行以下PrepareUpdate(准备更新)方法:[0083] 在数据标识中更行版本号,使VNj′=VNj+1;生成n个不同的副本数据块其中, 根据本发明实施例的一具体实施方式,对于副本数据块划分为s个分片的,表示为 然后对于每个修改后的副本数据块 计算新的数据标签:[0084] 并生成聚合标签(是指将全部块号为j的副本数据块对应的数据标识进行聚合)[0085] 接着,向数据存储端发送数据副本动态操作请求,形式可以为以使得数据存储端接收到该动态操作请求后对其内存储的数据副本进行对应的修改。[0086] 根据本发明实施例,对于数据副本动态操作请求中指示的操作方式为添加的情形,具体地,添加包括插入(数据持有者希望在副本数据块j后插入新的副本数据块 最终构成 和追加(指数据持有者希望在数据副本对应的末尾添加一个新的副本数据块,该动态操作可以通过在最后一个副本数据块之后通过插入的方式来实现)。对于动态操作指示的为插入的情形,具体执行步骤为:[0087] 运行以下PrepareUpdate(准备更新)方法:[0088] 在数据标识(如版本映射表)中构造新的一行:[0089] =,并插入到副本数据块j之后;生成n个待插入的副本数据块 其中, 还可以继续分割为s个分片 然后对于每个插入的副本数据块 计算新的数据标签并生成聚合标签 接着,向数据存储端发送数据副本动态操作请求,形式可以为 以使得数据存储端接收到该动态操作请求后对其内存储的数据副本进行对应的插入操作。[0090] 根据本发明实施例,对于数据副本动态操作请求中指示的操作方式为删除的情形,具体执行步骤为:[0091] 对于一个待备份数据(即原始数据)的数据副本F={b1,b2,…,bm},数据持有端对应的用户希望将全部副本数据中的副本数据块bj进行删除,数据持有端向数据存储端发送,以使得数据存储端执行相应的删除操作。根据本发明实施例的一具体实施方式,针对多个数据副本共维护一个MTV(版本映射表)的情形,对于删除操作指示,不涉及MTV的变化。根据另一具体实施方式,若想要删除多个(如h个)数据副本,则通过数据持有端向数据存储端发送至数据存储端,以使得数据存储端执行相应的多个数据副本的删除操作。[0092] 根据本发明实施例,在向数据存储端发送数据副本动态操作请求的步骤之后,数据处理方法还包括:根据数据副本动态操作请求指示的操作方式,对数据标识进行对应调整,并将调整后的数据标识发送至区块链中进行存储。[0093] 通过上述设置,使得区块链中存储的数据标识能够进行同步更新,有利于提高验证结果的准确率。[0094] 进一步地,根据本发明实施例,数据标识是为各数据副本中的每个副本数据块分别进行设置的,数据处理方法还包括:在数据验证端对数据副本的完整性验证结果为验证失败的情况下,接收数据验证端根据搜索算法和各数据副本对应的数据标识确定的验证失败的数据副本对应的存储位置。[0095] 为了能够实现对验证失败的数据副本的定位,为每个数据副本分配设置一套数据标识(指一个数据副本对应的副本数据块的数据标识集合),而不是采用所有数据副本共用一套数据标识,通过上述设置,对于云端存储中验证失败(数据副本被篡改、损坏或未按用户指示进行云端存储等)的数据副本能够获取对应的存储位置,避免了用户后续计算对应存储位置和进行数据传输所产生的额外存储成本。[0096] 根据本发明实施例的技术方案,因为采用为待备份数据生成多个数据副本,根据密钥对多个数据副本进行加密处理,将多个经过加密处理的数据副本发送至数据存储端进行数据副本存储;将多个数据副本对应的数据标识存储至区块链中,以使,数据验证端响应于数据持有端发起的验证请求向数据存储端发起完整性验证挑战,根据区块链中的数据标识和数据存储端返回的响应值对数据副本进行完整性验证的技术手段,所以克服了现有方法中由于依赖数据持有端提供的原始数据或相关存储证明(数据标识),易导致数据泄露,且由于存储证明易被篡改,导致验证结果准确率较低;同时对于验证失败的数据副本无法提供对应的存储位置,提高了用户后续计算对应存储位置和进行数据传输产生的额外成本的技术问题,进而实现在验证过程中避免从数据持有端获取原始数据和相关数据标识,避免数据标识被篡改的风险,提高了验证结果的准确率;同时对于验证失败的数据副本,还进一步获取其对应的存储位置,降低存储成本的技术效果。[0097] 图2a是根据本发明第二实施例提供的数据处理方法的主要流程的示意图;如图2a所示,本发明实施例提供的数据处理方法应用于数据存储端,主要包括:[0098] 步骤S201,接收数据持有端发送的多个数据副本,对多个数据副本进行存储。[0099] 根据本发明实施例,在对多个数据副本进行存储的步骤之后,上述数据处理方法还包括:根据数据副本集合和数据标签集合生成存储证明,并将存储证明发送至数据持有端。该存储证明用于保证数据存储端实际存储了n个数据副本,且全部数据副本对应的存储数据是完整的。[0100] 进一步地,根据本发明实施例,上述数据处理方法还包括:接收数据持有端发送数据副本动态操作请求,根据数据副本动态操作请求指示的操作方式对多个数据副本进行相应的操作处理,其中,操作方式包括下列方式中的一种或多种:修改、添加和删除。[0101] 根据本发明实施例的一具体实施方式,接收到数据持有端发送的指示进行修改操作的数据副本动态操作请求之后,数据存储端通过ExecUpdate(执行更新)方法执行以下操作:[0102] 将所有的数据副本中的副本数据块 修改为 将数据副本集合更新为:接着,将数据标签σj修改为σj',并生成数据标签集合Φ'={σ1,…,σj',…,σm}。[0103] 根据本发明实施例的一具体实施方式,接收到数据持有端发送的指示进行添加操作(插入操作)的数据副本动态操作请求之后,数据存储端通过ExecUpdate(执行更新)方法执行以下操作:[0104] 将待插入的副本数据块 插入所有的数据副本 的第j个副本数据块之后,并构建新的数据副本集合 然后计算在副本数据块j后新插入的副本数据块对应的新数据标签 并聚成数据标签集合[0105] 进一步地,对于添加操作指示了在数据副本的末尾添加一个新的副本数据块的情形,也采用上述操作。[0106] 根据本发明实施例的一具体实施方式,接收到数据持有端发送的指示进行删除操作(此处列举的是删除h个数据副本)的数据副本动态操作请求之后,数据存储端通过ExecUpdate(执行更新)方法执行以下操作:[0107] 在所有的数据副本中,删除第n‑h+1号到第n号数据副本,并输出新的数据副本集合 其中,h<n‑1;接着重新对所有数据副本中块号相同的副本数据块对应的数据标识进行乘法聚合,生成聚合数据标识(也可称为标签) 并输出数据标识集合Φ'={σ1,…,σm}。[0108] 如图2b所示,假设数据持有端要对数据副本F进行动态操作,数据副本F被分为8个副本数据块,即F={bi}1≤i≤8。初始状态下,令No.j=BNj,VNj=1,1≤i≤8。图2b(a)中展示了数据标识(版本映射表,MTV)的初始状态;图2b(b)中展示了6号副本数据块修改时发生的变化;图2b(c)中展示了4号副本数据块后插入新的副本数据块后的状态变化,即在No.4后插入<5,9,1>,其中,5是新的副本数据块的物理位置序号,9是当前最大逻辑编号递增之后的结果,1是指新增的副本数据块的初始版本号;图2b(d)中展示了删除了3号副本数据块,即删除No.3,并将其后续副本数据块全部向上移动一个位置。[0109] 步骤S202,响应于数据验证端发起的完整性验证挑战,向数据验证端发送响应值,以使,数据验证端根据区块链中的数据标识和响应值对数据存储端的数据副本进行完整性验证。[0110] 具体地,根据本发明实施例,数据存储端接收到数据验证端发送的完整性验证挑战(一般地,该完整性挑战中指示了要挑战的副本数据块的数量c)后,生成随机数集合Q={(j,rj)},其中 表示数据验证端随机挑选的需要挑战的副本数据块;然后数据存储端运行Prove(证明)方法生成响应值,以用于证明n个数据副本已完成一致性更新并且具备数据完整性。[0111] 根据本发明实施例的一具体实施方式,上述数据存储端生成的响应值的证明形式为:P={σ,μ},其中, 相应地,采用现有的其他形式的应对挑战的响应方式也属于本发明的保护范围。[0112] 根据本发明实施例的技术方案,因为采用接收数据持有端发送的多个数据副本,对多个数据副本进行存储;响应于数据验证端发起的完整性验证挑战,向数据验证端发送响应值,以使,数据验证端根据区块链中的数据标识和响应值对数据副本进行完整性验证的技术手段,所以克服了现有方法中由于依赖数据持有端提供的原始数据或相关存储证明(数据标识),易导致数据泄露,且由于存储证明易被篡改,导致验证结果准确率较低;同时对于验证失败的数据副本无法提供对应的存储位置,提高了用户后续计算对应存储位置和进行数据传输产生的额外成本的技术问题,进而实现在验证过程中避免从数据持有端获取原始数据和相关数据标识,避免数据标识被篡改的风险,提高了验证结果的准确率;同时对于验证失败的数据副本,还进一步获取其对应的存储位置,降低存储成本的技术效果。[0113] 图3是根据本发明第三实施例提供的数据处理方法的主要流程的示意图;如图3所示,本发明实施例提供的数据处理方法应用于数据验证端,主要包括:[0114] 步骤S301,响应于数据持有端发起的验证请求向数据存储端发起完整性验证挑战,并接收数据存储端返回的响应值。[0115] 具体地,根据本发明实施例,为了验证远程存储的所有数据副本的数据完整性,数据验证端需要在每个完整性验证挑战中发送要挑战的副本数据块的数量c以及两个新生成的密钥:采用PRP函数(PseudoRandomPermutation,伪随机置换函数)对应的置换密钥k1以及PRF函数(Pseudo‑randomFunction,伪随机函数)对应的伪随机数生成密钥k2。数据验证端和数据存储端均需要采用k1和k2来生成一对随机指数和随机值,并组成一个集合Q={(j,rj)},其中, 表示数据验证端随机挑选的需要挑战的副本数据块。[0116] 步骤S302,根据区块链中的数据标识和响应值对数据存储端的数据副本进行完整性验证。[0117] 具体地,根据本发明实施例,上述数据标识指示了数据副本编号和数据副本版本号。[0118] 根据本发明实施例,数据验证端接收到数据存储端发送的响应值后,执行下述验证方程实现Verify(验证)方法:[0119][0120] 如果验证通过(验证成功,指全部数据副本都具备完整性和一致性),即Verify方法返回值为1;若验证失败(指至少有一个数据副本发生损坏或丢失),则返回值为0。[0121] 通过上述描述可以看出,μik的求和工作是在数据存储端进行的,即数据存储端提前计算出 并将 发送至数据验证端,证明方式如下:[0122] 这样设置能够大幅度减少通信开销(对于n个数据副本,减少了n倍开销),但是同样存在数据存储端欺骗数据验证端的风险。因为数据存储端可以提前计算出 并将其存储在本地,这样的话,远程存储节点(即数据存储端)即使没有完整地存储用户数据,其提前计算出仍然有效,并可通过数据完整性验证。[0123] 为了避免上述情形,进一步提高验证结果的准确率,根据本发明实施例,要求数据存储端发送的响应值必须包括μ={μik}1≤i≤n,1≤k≤s,然后通过数据验证端进行μik的求和工作,以提高完整性验证结果的准确率。[0124] 进一步地,根据本发明实施例,数据标识是为各数据副本中的每个副本数据块分别进行设置的;在数据验证端对数据副本的完整性验证结果为验证失败的情况下,数据处理方法还包括:向数据存储端发起定位验证挑战,并接收数据存储端返回的定位值,根据搜索算法、各数据副本对应的数据标识和定位值确定验证失败的数据副本对应的存储位置,并将存储位置发送至数据持有端。[0125] 通过上述设置,为每个数据副本分别设置一套数据标识(指一个数据副本对应的副本数据块的数据标识集合),而不是前文中采用的所有数据副本共用一套数据标识。具体处理方法为:数据持有端仍为每个副本数据块设置相应的数据标识,但不在将所以数据副本中相同副本数据块号对应的数据标识进行聚合,而是在集合中直接包含所有副本数据块的数据标识,即Φ={σij}1≤i≤n,1≤j≤m。[0126] 然后在数据存储端针对数据验证端发起的完整性验证挑战后,数据存储端仍采用原有的响应方案,随机数μ={μik}1≤i≤n,1≤k≤s,但是数据标签σ的生成方法调整为数据验证端接收到数据存储端发送的响应值(证明文件)P={σ,μ}之后,首先通过Verify方法中的公式对响应值P进行数据完整性验证;如果验证失败,则再向数据存储端发送定位验证挑战,接收数据存储端发送的定位值(σ={σi}1≤i≤n,其中,)。此时,经过完整性验证挑战和定位验证挑战后,数据验证端就会拥有两个列表:数据标识列表σList{σi}1≤i≤n和随机数列表μList={μik}1≤i≤n,1≤k≤s,其中,μList为一个二维列表。[0127] 接下来,根据本发明实施例,数据验证端根据搜索算法、各数据副本对应的数据标识和定位值确定验证失败的数据副本对应的存储位置。[0128] 具体地,根据本发明实施例,可采用二分搜索法,识别出被损坏或丢失的数据副本的索引,从而确定被损坏或丢失的数据副本对应的存储位置。具体操作步骤如下:[0129] 每次将σList和μList平均分为两部分:σList→(σLeft:σRight)和μList→μLeft:μRight,接着讲Verify方法中的公式分别递归地应用到σLeft、σRight、μLeft和μRight中,知道定位到无法通过验证的副本数据块。其中Verify方法中的公式使用的数据标识σ是将σLeft和σRight中的数据标识通过乘法运算聚合生成的。二分搜索算法需要有4输入参数:σList、μList、start(当前工作列表的起始搜索索引)、end(当前工作列表的结束搜索索引),递归的初始输入为(σList、μList、1、n),完整性验证失败(损坏或丢失)的数据副本的索引会被存储至全局变量invalidList中。待全部损坏或丢失的数据副本的索引全部确定后,根据相应的索引能够确定其对应存储位置。[0130] 步骤S303,将完整性验证结果发送至数据持有端和区块链。[0131] 根据本发明实施例的技术方案,因为采用响应于数据持有端发起的验证请求向数据存储端发起完整性验证挑战,并接收数据存储端返回的响应值;根据区块链中的数据标识和响应值对数据副本进行完整性验证;将完整性验证结果发送至数据持有端和区块链的技术手段,所以克服了现有方法中由于依赖数据持有端提供的原始数据或相关存储证明(数据标识),易导致数据泄露,且由于存储证明易被篡改,导致验证结果准确率较低;同时对于验证失败的数据副本无法提供对应的存储位置,提高了用户后续计算对应存储位置和进行数据传输产生的额外成本的技术问题,进而实现在验证过程中避免从数据持有端获取原始数据和相关数据标识,避免数据标识被篡改的风险,提高了验证结果的准确率;同时对于验证失败的数据副本,还进一步获取其对应的存储位置,降低存储成本的技术效果。[0132] 图4是根据本发明第四实施例提供的数据处理装置的主要模块的示意图;如图4所示,本发明实施例提供的数据处理装置400设置于数据持有端,主要包括:[0133] 数据副本生成模块401,用于为待备份数据生成多个数据副本,根据密钥对多个数据副本进行加密处理,将多个经过加密处理的数据副本发送至数据存储端进行数据副本存储。[0134] 根据本发明实施例,上述数据处理装置400还包括密钥生成模块,在为待备份数据生成多个数据副本的步骤之前,密钥生成模块用于生成密钥。[0135] 具体地,可以采用KeyGen(一种注册机生成器,其元素是密钥对生成器)方法生成x私钥x∈Zp(p是一个大素数,Zp表示大素数集合),公钥y=g =G2。其中, G1×G2→GT表示一个双线性映射,g为G2的生成元素,G表示乘法循环群。在实际应用时,用户首先通过数据持x有端在大素数集合Zp中随机选择一个p作为私钥x,通过y=g计算得到公钥y,然后产生一个随机的密钥对,并产生加密密钥和伪随机函数密钥。[0136] 进一步地,根据本发明实施例,上述数据处理装置400还包括副本数据块划分模块,在将多个经过加密处理的数据副本发送至数据存储端进行数据副本存储的步骤之前,副本数据块划分模块用于:将数据副本划分为多个副本数据块,数据标识是分别为每个副本数据块设置的,数据标识还指示了副本数据块编号。[0137] 具体地,根据本发明实施例,上述为待备份数据生成多个数据副本的步骤为:通过运行CopyGen方法(指复制方法)生成n份可分层数据副本,即对于待备份数据文件F的一个数据副本表示为:[0138] (m为副本数据块的数量),多个数据副本表示为为 其中,i为数据副本索引,j为分块索引,同时使用加密算法Ek对所有副本数据块进行加密,即因此每个数据副本可表示如下形式:[0139][0140] 根据本发明实施例的一具体实施方式,还可以继续对副本数据块 进行分割为s个分片,即[0141] 具体地,数据持有端还生成s个随机数{u1,u2,…,us}∈G1,用于后续进行数据标识的设置,当数据持有者需要从数据存储端获取数据副本时,只需要对数据副本对应的副本数据块进行解密,然后将副本数据块对应的副本索引删除后,根据副本数据块编号将多个副本数据块进行组合,即可得到原始数据。[0142] 数据副本存储模块402,用于将多个数据副本对应的数据标识存储至区块链中,以使,数据验证端响应于数据持有端发起的验证请求向数据存储端发起完整性验证挑战,根据区块链中的数据标识和数据存储端返回的响应值对数据副本进行完整性验证。[0143] 通过上述设置,数据持有端将数据副本对应的数据标识(相当于存储证明)发送至区块链中,避免了后续对存储数据端存储的数据副本进行完整性时,需要将原始数据(即上述待备份数据)发送至数据验证端,避免了原始数据被泄露的风险。同时由于区块链内存储数据的不可篡改性,避免了数据标识在数据持有端被篡改,提高了后续进行数据持有性的验证结果的准确率。[0144] 具体地,根据本发明实施例,数据标识指示了数据副本编号和数据副本版本号。[0145] 在数据标识中设置数据副本版本号,有利于对动态数据(指对数据存储端的数据副本进行动态操作的待备份数据)对应的数据副本的完整性验证。[0146] 根据本发明实施例的一具体实施方式,上述数据标识的设置步骤如下:[0147] (这里指的是副本数据块被进一步分割为s个分片,在实际应用时可以根据实际需要选择要不要对副本数据块进行进一步分割),用户通过数据持有端运行TagGen方法(标签方法)对每个副本数据块 计算标签(即上述数据标识)其中,BNj表示在物理位置为j的副本数据块的逻辑编号;VNj表示副本数据块对应的数据副本版本号;IDF表示数据副本编号,是副本数据的唯一标识符,包括副本数据文件名称、划分的副本数据块数量n以及随机数uk,生成方法为IDF=Filename*u1*…*us*n;上述参数范围为1≤i≤n,1≤j≤m,1≤k≤s。上述将数据副本编号IDF作为数据标识的作用是防止数据存储端使用来自其他存储文件对应的副本数据块进行作弊。[0148] 然后数据持有端将数据副本集合中所有相同块号(如副本数据块j)的副本数据块进行聚合,生成一组聚合数据标识 并将聚合的数据标识表示为Φ={σj}1≤j≤m。数据持有端将多个数据副本及数据标识,形式可以为〈F,Φ,IDF>发送至数据存储端(远程存储端,通常为云存储系统),并将上述数据标识发送至区块链中进行存储,以便于后续进行数据副本完整性验证时使用。[0149] 优选地,根据本发明实施例的一具体实施方式,上述数据标识可以用版本映射表(Map‑VersionTable,MVT)表示为,其中,No.表示数据副本编号(一般均表示为由1到n),也可用IDF表示;BN表示副本数据块的逻辑编号(是一个计数器,用于对副本数据块进行逻辑顺序编号);VN表示数据副本版本号(表示了当前数据副本的版本,初始值为1,一旦数据副本对应的副本数据块发生动态操作则加1)。版本映射表采用哈希结构,利用键值对进行后续搜索索引。此版本映射表是一种小型的数据结构,可以存储在区块链中,用于公开验证存储节点存储的所有数据副本的完整性和一致性。需要注意的是,对于多个数据副本可以通过维护一个版本映射表来降低存储开销,但这并不作为对本发明的限定,下文会介绍每个数据副本分别对应一个版本映射表的情形。[0150] 进一步地,根据本发明实施例,上述数据处理装置400还包括数据副本动态操作请求发送模块,用于向数据存储端发送数据副本动态操作请求,以使,数据存储端根据数据副本动态操作请求指示的操作方式对多个数据副本进行相应的操作处理,其中,操作方式包括下列方式中的一种或多种:修改、添加和删除。[0151] 根据本发明实施例的一具体实施方式,上述对于数据副本的动态操作是以副本数* *据块作为执行对象。数据副本动态操作请求的形式可以为,其中IDF表示数据副本编号;BlockOp是与副本数据块对应的操作指令,包括修改、添加和删*除;j为欲执行更新(动态操作)的副本数据块的索引;{bi}1≤i≤n为所有数据副本中指定副本*数据块执行动态操作之后的值;σj为更新后的聚合的数据标识。[0152] 根据本发明实施例,对于数据副本动态操作请求中指示的操作方式为删除的情形,具体执行步骤为:[0153] 对于一个待备份数据(即原始数据)的数据副本F={b1,b2,…,bm},数据持有端对应的用户希望将全部副本数据中的副本数据块bj修改为bj′,则运行以下PrepareUpdate(准备更新)方法:[0154] 在数据标识中更行版本号,使VNj′=VNj+1;生成n个不同的副本数据块其中, 根据本发明实施例的一具体实施方式,对于副本数据块划分为s个分片的,表示为 然后对于每个修改后的副本数据块 计算新的数据标签:[0155] 并生成聚合标签:[0156] 接着,向数据存储端发送数据副本动态操作请求,形式可以为以使得数据存储端接收到该动态操作请求后对其内存储的数据副本进行对应的修改。[0157] 根据本发明实施例,对于数据副本动态操作请求中指示的操作方式为添加的情形,具体地,添加包括插入(数据持有者希望在副本数据块j后插入新的副本数据块 最终构成 )和追加(指数据持有者希望在数据副本对应的末尾添加一个新的副本数据块,该动态操作可以通过在最后一个副本数据块之后通过插入的方式来实现)。对于动态操作指示的为插入的情形,具体执行步骤为:[0158] 运行以下PrepareUpdate(准备更新)方法:[0159] 在数据标识(如版本映射表)中构造新的一行:[0160] =,并插入到副本数据块j之后;生成n个待插入的副本数据块 其中, 还可以继续分割为s个分片 然后对于每个插入的副本数据块 计算新的数据标签并生成聚合标签 接着,向数据存储端发送数据副本动态操作请求,形式可以为 以使得数据存储端接收到该动态操作请求后对其内存储的数据副本进行对应的插入操作。[0161] 根据本发明实施例,对于数据副本动态操作请求中指示的操作方式为删除的情形,具体执行步骤为:[0162] 对于一个待备份数据(即原始数据)的数据副本F={b1,b2,…,bm},数据持有端对应的用户希望将全部副本数据中的副本数据块bj进行删除,数据持有端向数据存储端发送,以使得数据存储端执行相应的删除操作。根据本发明实施例的一具体实施方式,针对多个数据副本共维护一个MTV(版本映射表)的情形,对于删除操作指示,不涉及MTV的变化。根据另一具体实施方式,若想要删除多个(如h个)数据副本,则通过数据持有端向数据存储端发送至数据存储端,以使得数据存储端执行相应的多个数据副本的删除操作。[0163] 根据本发明实施例,上述数据处理装置400还包括调整模块,在向数据存储端发送数据副本动态操作请求的步骤之后,上述调整模块用于:根据数据副本动态操作请求指示的操作方式,对数据标识进行对应调整,并将调整后的数据标识发送至区块链中进行存储。[0164] 通过上述设置,使得区块链中存储的数据标识能够进行同步更新,有利于提高验证结果的准确率。[0165] 进一步地,根据本发明实施例,数据标识是为各数据副本中的每个副本数据块分别进行设置的,数据处理装置400还包括存储位置接收模块,用于在数据验证端对数据副本的完整性验证结果为验证失败的情况下,接收数据验证端根据搜索算法和各数据副本对应的数据标识确定的验证失败的数据副本对应的存储位置。[0166] 为了能够实现对验证失败的数据副本的定位,为每个数据副本分配设置一套数据标识(指一个数据副本对应的副本数据块的数据标识集合),而不是采用所有数据副本共用一套数据标识,通过上述设置,对于云端存储中验证失败(数据副本被篡改、损坏或未按用户指示进行云端存储等)的数据副本能够获取对应的存储位置,避免了用户后续计算对应存储位置和进行数据传输所产生的额外存储成本。[0167] 根据本发明实施例的技术方案,因为采用为待备份数据生成多个数据副本,根据密钥对多个数据副本进行加密处理,将多个经过加密处理的数据副本发送至数据存储端进行数据副本存储;将多个数据副本对应的数据标识存储至区块链中,以使,数据验证端响应于数据持有端发起的验证请求向数据存储端发起完整性验证挑战,根据区块链中的数据标识和数据存储端返回的响应值对数据副本进行完整性验证的技术手段,所以克服了现有方法中由于依赖数据持有端提供的原始数据或相关存储证明(数据标识),易导致数据泄露,且由于存储证明易被篡改,导致验证结果准确率较低;同时对于验证失败的数据副本无法提供对应的存储位置,提高了用户后续计算对应存储位置和进行数据传输产生的额外成本的技术问题,进而实现在验证过程中避免从数据持有端获取原始数据和相关数据标识,避免数据标识被篡改的风险,提高了验证结果的准确率;同时对于验证失败的数据副本,还进一步获取其对应的存储位置,降低存储成本的技术效果。[0168] 图5是根据本发明第五实施例提供的数据处理方法的主要流程的示意图;如图5所示,本发明实施例提供的数据处理装置500设置于数据存储端,主要包括:[0169] 数据副本接收模块501,用于接收数据持有端发送的多个数据副本,对多个数据副本进行存储。[0170] 根据本发明实施例,上述数据处理装置500还包括存储证明发送模块,在对多个数据副本进行存储的步骤之后,上述存储证明发送模块用于:根据数据副本集合和数据标签集合生成存储证明,并将存储证明发送至数据持有端。该存储证明用于保证数据存储端实际存储了n个数据副本,且全部数据副本对应的存储数据是完整的。[0171] 进一步地,根据本发明实施例,上述数据处理装置500还包括数据副本动态操作请求接收模块,用于接收数据持有端发送数据副本动态操作请求,根据数据副本动态操作请求指示的操作方式对多个数据副本进行相应的操作处理,其中,操作方式包括下列方式中的一种或多种:修改、添加和删除。[0172] 根据本发明实施例的一具体实施方式,接收到数据持有端发送的指示进行修改操作的数据副本动态操作请求之后,数据存储端通过ExecUpdate(执行更新)方法执行以下操作:[0173] 将所有的数据副本中的副本数据块 修改为 将数据副本集合更新为:接着,将数据标签σj修改为σj',并生成数据标签集合Φ'={σ1,…,σj',…,σm}。[0174] 根据本发明实施例的一具体实施方式,接收到数据持有端发送的指示进行添加操作(插入操作)的数据副本动态操作请求之后,数据存储端通过ExecUpdate(执行更新)方法执行以下操作:[0175] 将待插入的副本数据块 插入所有的数据副本 的第j个副本数据块之后,并构建新的数据副本集合 然后计算在副本数据块j后新插入的副本数据块对应的新数据标签 并聚成数据标签集合[0176] 进一步地,对于添加操作指示了在数据副本的末尾添加一个新的副本数据块的情形,也采用上述操作。[0177] 根据本发明实施例的一具体实施方式,接收到数据持有端发送的指示进行删除操作(此处列举的是删除h个数据副本)的数据副本动态操作请求之后,数据存储端通过ExecUpdate(执行更新)方法执行以下操作:[0178] 在所有的数据副本中,删除第n‑h+1号到第n号数据副本,并输出新的数据副本集合 其中,h<n‑1;接着重新对所有数据副本中块号相同的副本数据块对应的数据标识进行乘法聚合,生成聚合数据标识(也可称为标签) 并输出数据标识集合Φ'={σ1,…,σm}。[0179] 响应值发送模块502,用于响应于数据验证端发起的完整性验证挑战,向数据验证端发送响应值,以使,数据验证端根据区块链中的数据标识和响应值对数据副本进行完整性验证。[0180] 具体地,根据本发明实施例,数据存储端接收到数据验证端发送的完整性验证挑战(一般地,该完整性挑战中指示了要挑战的副本数据块的数量c)后,生成随机数集合Q={(j,rj)},其中{rj}=ψk2(l)1≤l≤c表示数据验证端随机挑选的需要挑战的副本数据块;然后数据存储端运行Prove(证明)方法生成响应值,以用于证明n个数据副本已完成一致性更新并且具备数据完整性。[0181] 根据本发明实施例的一具体实施方式,上述数据存储端生成的响应值的证明形式为:P={σ,μ},其中, 相应地,采用现有的其他形式的应对挑战的响应方式也属于本发明的保护范围。[0182] 根据本发明实施例的技术方案,因为采用接收数据持有端发送的多个数据副本,对多个数据副本进行存储;响应于数据验证端发起的完整性验证挑战,向数据验证端发送响应值,以使,数据验证端根据区块链中的数据标识和响应值对数据副本进行完整性验证的技术手段,所以克服了现有方法中由于依赖数据持有端提供的原始数据或相关存储证明(数据标识),易导致数据泄露,且由于存储证明易被篡改,导致验证结果准确率较低;同时对于验证失败的数据副本无法提供对应的存储位置,提高了用户后续计算对应存储位置和进行数据传输产生的额外成本的技术问题,进而实现在验证过程中避免从数据持有端获取原始数据和相关数据标识,避免数据标识被篡改的风险,提高了验证结果的准确率;同时对于验证失败的数据副本,还进一步获取其对应的存储位置,降低存储成本的技术效果。[0183] 图6是根据本发明第六实施例提供的数据处理方法的主要流程的示意图;如图6所示,本发明实施例提供的数据处理装置600设置于数据验证端,主要包括:[0184] 验证挑战发起模块601,用于响应于数据持有端发起的验证请求向数据存储端发起完整性验证挑战,并接收数据存储端返回的响应值。[0185] 具体地,根据本发明实施例,为了验证远程存储的所有数据副本的数据完整性,数据验证端需要在每个完整性验证挑战中发送要挑战的副本数据块的数量c以及两个新生成的密钥:采用PRP函数(PseudoRandomPermutation,伪随机置换函数)对应的置换密钥k1以及PRF函数(Pseudo‑randomFunction,伪随机函数)对应的伪随机数生成密钥k2。数据验证端和数据存储端均需要采用k1和k2来生成一对随机指数和随机值,并组成一个集合Q={(j,rj)},其中, {rj}=ψk2(l)1≤l≤c表示数据验证端随机挑选的需要挑战的副本数据块。[0186] 数据副本验证模块602,根据区块链中的数据标识和响应值对数据副本进行完整性验证。[0187] 具体地,根据本发明实施例,上述数据标识指示了数据副本编号和数据副本版本号。[0188] 根据本发明实施例,数据副本验证模块602接收到数据存储端发送的响应值后,还用于执行下述验证方程实现Verify(验证)方法:[0189][0190] 如果验证通过(验证成功,指全部数据副本都具备完整性和一致性),即Verify方法返回值为1;若验证失败(指至少有一个数据副本发生损坏或丢失),则返回值为0。[0191] 通过上述描述可以看出,μik的求和工作是在数据存储端进行的,即数据存储端提前计算出 并将 发送至数据验证端,证明方式如下:[0192] 这样设置能够大幅度减少通信开销(对于n个数据副本,减少了n倍开销),但是同样存在数据存储端欺骗数据验证端的风险。因为数据存储端可以提前计算出 并将其存储在本地,这样的话,远程存储节点(即数据存储端)即使没有完整地存储用户数据,其提前计算出仍然有效,并可通过数据完整性验证。[0193] 为了避免上述情形,进一步提高验证结果的准确率,根据本发明实施例,要求数据存储端发送的响应值必须包括μ={μik}1≤i≤n,1≤k≤s,然后通过数据验证端进行μik的求和工作,以提高完整性验证结果的准确率。[0194] 进一步地,根据本发明实施例,数据标识是为各数据副本中的每个副本数据块分别进行设置的;上述数据处理装置600还包括定位验证挑战发送模块,在数据验证端对数据副本的完整性验证结果为验证失败的情况下,定位验证挑战发送模块用于:向数据存储端发起定位验证挑战,并接收数据存储端返回的定位值,根据搜索算法、各数据副本对应的数据标识和定位值确定验证失败的数据副本对应的存储位置,并将存储位置发送至数据持有端。[0195] 通过上述设置,为每个数据副本分别设置一套数据标识(指一个数据副本对应的副本数据块的数据标识集合),而不是前文中采用的所有数据副本共用一套数据标识。具体处理方法为:数据持有端仍为每个副本数据块设置相应的数据标识,但不在将所以数据副本中相同副本数据块号对应的数据标识进行聚合,而是在集合中直接包含所有副本数据块的数据标识,即Φ={σij}1≤i≤n,1≤j≤m。[0196] 然后在数据存储端针对数据验证端发起的完整性验证挑战后,数据存储端仍采用原有的响应方案,随机数μ={μik}1≤i≤n,1≤k≤s,但是数据标签σ的生成方法调整为数据验证端接收到数据存储端发送的响应值证明文件P={σ,μ}之后,首先通过Verify方法中的公式对响应值P进行数据完整性验证;如果验证失败,则再向数据存储端发送定位验证挑战,接收数据存储端发送的定位值(σ={σi}1≤i≤n,其中,)。此时,经过完整性验证挑战和定位验证挑战后,数据验证端就会拥有两个列表:数据标识列表σList{σi}1≤i≤n和随机数列表μList={μik}1≤i≤n,1≤k≤s,其中,μList为一个二维列表。[0197] 接下来,根据本发明实施例,数据验证端根据搜索算法、各数据副本对应的数据标识和定位值确定验证失败的数据副本对应的存储位置。[0198] 具体地,根据本发明实施例,可采用二分搜索法,识别出被损坏或丢失的数据副本的索引,从而确定被损坏或丢失的数据副本对应的存储位置。具体操作步骤如下:[0199] 每次将σList和μList平均分为两部分:σList→(σLeft:σRight)和μList→μLeft:μRight,接着讲Verify方法中的公式分别递归地应用到σLeft、σRight、μLeft和μRight中,知道定位到无法通过验证的副本数据块。其中Verify方法中的公式使用的数据标识σ是将σLeft和σRight中的数据标识通过乘法运算聚合生成的。二分搜索算法需要有4输入参数:σList、μList、start(当前工作列表的起始搜索索引)、end(当前工作列表的结束搜索索引),递归的初始输入为(σList、μList、1、n),完整性验证失败(损坏或丢失)的数据副本的索引会被存储至全局变量invalidList中。待全部损坏或丢失的数据副本的索引全部确定后,根据相应的索引能够确定其对应存储位置。[0200] 验证结果发送模块603,用于将完整性验证结果发送至数据持有端和区块链。[0201] 根据本发明实施例的技术方案,因为采用响应于数据持有端发起的验证请求向数据存储端发起完整性验证挑战,并接收数据存储端返回的响应值;根据区块链中的数据标识和响应值对数据副本进行完整性验证;将完整性验证结果发送至数据持有端和区块链的技术手段,所以克服了现有方法中由于依赖数据持有端提供的原始数据或相关存储证明(数据标识),易导致数据泄露,且由于存储证明易被篡改,导致验证结果准确率较低;同时对于验证失败的数据副本无法提供对应的存储位置,提高了用户后续计算对应存储位置和进行数据传输产生的额外成本的技术问题,进而实现在验证过程中避免从数据持有端获取原始数据和相关数据标识,避免数据标识被篡改的风险,提高了验证结果的准确率;同时对于验证失败的数据副本,还进一步获取其对应的存储位置,降低存储成本的技术效果。[0202] 图7是根据本发明第七实施例提供的数据处理系统对应的流程示意图;如图7所示,本发明实施例提供的数据处理系统700主要包括:[0203] 数据持有端701,用于为待备份数据生成多个数据副本,根据密钥对多个数据副本进行加密处理,将多个经过加密处理的数据副本发送至数据存储端进行数据副本存储;将多个数据副本对应的数据标识存储至区块链中。[0204] 数据存储端702,用于接收数据持有端发送的多个数据副本,对多个数据副本进行存储;响应于数据验证端发起的完整性验证挑战,向数据验证端发送响应值。[0205] 数据验证端703,用于响应于数据持有端发起的验证请求向数据存储端发起完整性验证挑战,并接收数据存储端返回的响应值;根据区块链中的数据标识和响应值对数据副本进行完整性验证;将完整性验证结果发送至数据持有端和区块链。[0206] 区块链704,用于接收数据持有端发送的数据标识,接收数据验证端发送的完整性验证结果。[0207] 根据本发明实施例,上述数据处理系统700中数据持有端701、数据存储端702、数据验证端703和区块链704之间进行交互的流程主要为:[0208] S1,由数据持有端701生成多个数据副本,根据密钥对多个数据副本进行加密处理;[0209] S2,由数据持有端701发送多个经过加密处理的数据副本至数据存储端702;[0210] S3,由数据持有端701发送多个数据副本对应的数据标识至区块链704;[0211] S4,数据存储端702接收多个数据副本并进行存储;[0212] S5,由数据持有端701向数据验证端703发起数据副本验证请求;[0213] S6,由数据验证端703向数据存储端702发起完整性验证挑战;[0214] S7,数据存储端702向数据验证端发送响应值;[0215] S8,数据验证端703从区块链704中获取数据副本对应的数据标识;[0216] S9,数据验证端703根据响应值和数据标识进行完整性验证;[0217] S10,数据验证端703将完整性验证结果发送至数据持有端701。[0218] 根据本发明实施例的技术方案,因为采用为待备份数据生成多个数据副本,根据密钥对多个数据副本进行加密处理,将多个经过加密处理的数据副本发送至数据存储端进行数据副本存储;将多个数据副本对应的数据标识存储至区块链中,以使,数据验证端响应于数据持有端发起的验证请求向数据存储端发起完整性验证挑战,根据区块链中的数据标识和数据存储端返回的响应值对数据副本进行完整性验证的技术手段,所以克服了现有方法中由于依赖数据持有端提供的原始数据或相关存储证明(数据标识),易导致数据泄露,且由于存储证明易被篡改,导致验证结果准确率较低;同时对于验证失败的数据副本无法提供对应的存储位置,提高了用户后续计算对应存储位置和进行数据传输产生的额外成本的技术问题,进而实现在验证过程中避免从数据持有端获取原始数据和相关数据标识,避免数据标识被篡改的风险,提高了验证结果的准确率;同时对于验证失败的数据副本,还进一步获取其对应的存储位置,降低存储成本的技术效果。[0219] 图8示出了可以应用本发明实施例的数据处理方法或数据处理装置的示例性系统架构800。[0220] 如图8所示,系统架构800可以包括终端设备801、802、803,网络804和服务器805(此架构仅仅是示例,具体架构中包含的组件可以根据申请具体情况调整)。网络804用以在终端设备801、802、803和服务器805之间提供通信链路的介质。网络804可以包括各种连接类型,例如有线、无线通信链路或者光纤电缆等等。[0221] 用户可以使用终端设备801、802、803通过网络804与服务器805交互,以接收或发送消息等。终端设备801、802、803上可以安装有各种通讯客户端应用,例如购物类应用、网页浏览器应用、搜索类应用、即时通信工具、邮箱客户端、社交平台软件等(仅为示例)。[0222] 终端设备801、802、803可以是具有显示屏并且支持网页浏览的各种电子设备,包括但不限于智能手机、平板电脑、膝上型便携计算机和台式计算机等等。[0223] 服务器805可以是提供各种服务的服务器,例如对用户利用终端设备801、802、803所浏览的购物类网站提供支持的后台管理服务器(仅为示例)。后台管理服务器可以对接收到的数据副本、验证请求等数据进行分析等处理,并将处理结果(例如完整性验证结果、验证失败的数据副本对应的存储位置‑‑仅为示例)反馈给终端设备。[0224] 需要说明的是,本发明实施例所提供的数据处理方法一般由服务器805执行,相应地,数据处理装置一般设置于服务器805中。[0225] 应该理解,图8中的终端设备、网络和服务器的数目仅仅是示意性的。根据实现需要,可以具有任意数目的终端设备、网络和服务器。[0226] 下面参考图9,其示出了适于用来实现本发明实施例的终端设备的计算机系统900的结构示意图。图9示出的终端设备仅仅是一个示例,不应对本发明实施例的功能和使用范围带来任何限制。[0227] 如图9所示,计算机系统900包括中央处理单元(CPU)901,其可以根据存储在只读存储器(ROM)902中的程序或者从存储部分908加载到随机访问存储器(RAM)903中的程序而执行各种适当的动作和处理。在RAM903中,还存储有系统900操作所需的各种程序和数据。CPU901、ROM902以及RAM903通过总线904彼此相连。输入/输出(I/O)接口905也连接至总线904。[0228] 以下部件连接至I/O接口905:包括键盘、鼠标等的输入部分906;包括诸如阴极射线管(CRT)、液晶显示器(LCD)等以及扬声器等的输出部分907;包括硬盘等的存储部分908;以及包括诸如LAN卡、调制解调器等的网络接口卡的通信部分909。通信部分909经由诸如因特网的网络执行通信处理。驱动器910也根据需要连接至I/O接口905。可拆卸介质911,诸如磁盘、光盘、磁光盘、半导体存储器等等,根据需要安装在驱动器910上,以便于从其上读出的计算机程序根据需要被安装入存储部分908。[0229] 特别地,根据本发明公开的实施例,上文参考流程图描述的过程可以被实现为计算机软件程序。例如,本发明公开的实施例包括一种计算机程序产品,其包括承载在计算机可读介质上的计算机程序,该计算机程序包含用于执行流程图所示的方法的程序代码。在这样的实施例中,该计算机程序可以通过通信部分909从网络上被下载和安装,和/或从可拆卸介质911被安装。在该计算机程序被中央处理单元(CPU)901执行时,执行本发明的系统中限定的上述功能。[0230] 需要说明的是,本发明所示的计算机可读介质可以是计算机可读信号介质或者计算机可读存储介质或者是上述两者的任意组合。计算机可读存储介质例如可以是——但不限于——电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。计算机可读存储介质的更具体的例子可以包括但不限于:具有一个或多个导线的电连接、便携式计算机磁盘、硬盘、随机访问存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、光纤、便携式紧凑磁盘只读存储器(CD‑ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。在本发明中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。而在本发明中,计算机可读的信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了计算机可读的程序代码。这种传播的数据信号可以采用多种形式,包括但不限于电磁信号、光信号或上述的任意合适的组合。计算机可读的信号介质还可以是计算机可读存储介质以外的任何计算机可读介质,该计算机可读介质可以发送、传播或者传输用于由指令执行系统、装置或者器件使用或者与其结合使用的程序。计算机可读介质上包含的程序代码可以用任何适当的介质传输,包括但不限于:无线、电线、光缆、RF等等,或者上述的任意合适的组合。[0231] 附图中的流程图和框图,图示了按照本发明各种实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段、或代码的一部分,上述模块、程序段、或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个接连地表示的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图或流程图中的每个方框、以及框图或流程图中的方框的组合,可以用执行规定的功能或操作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。[0232] 描述于本发明实施例中所涉及到的模块可以通过软件的方式实现,也可以通过硬件的方式来实现。所描述的模块也可以设置在处理器中,例如,可以描述为:一种处理器包括数据副本生成模块、和数据副本存储模块。其中,这些模块的名称在某种情况下并不构成对该模块本身的限定,例如,数据副本生成模块还可以被描述为“用于为待备份数据生成多个数据副本,根据密钥对多个数据副本进行加密处理,将多个经过加密处理的数据副本发送至数据存储端进行数据副本存储的模块”。[0233] 作为另一方面,本发明还提供了一种计算机可读介质,该计算机可读介质可以是上述实施例中描述的设备中所包含的;也可以是单独存在,而未装配入该设备中。上述计算机可读介质承载有一个或者多个程序,当上述一个或者多个程序被一个该设备执行时,使得该设备包括:为待备份数据生成多个数据副本,根据密钥对多个数据副本进行加密处理,将多个经过加密处理的数据副本发送至数据存储端进行数据副本存储;将多个数据副本对应的数据标识存储至区块链中,以使,数据验证端响应于数据持有端发起的验证请求向数据存储端发起完整性验证挑战,根据区块链中的数据标识和数据存储端返回的响应值对数据副本进行完整性验证。[0234] 根据本发明实施例的技术方案,因为采用为待备份数据生成多个数据副本,根据密钥对多个数据副本进行加密处理,将多个经过加密处理的数据副本发送至数据存储端进行数据副本存储;将多个数据副本对应的数据标识存储至区块链中,以使,数据验证端响应于数据持有端发起的验证请求向数据存储端发起完整性验证挑战,根据区块链中的数据标识和数据存储端返回的响应值对数据副本进行完整性验证的技术手段,所以克服了现有方法中由于依赖数据持有端提供的原始数据或相关存储证明(数据标识),易导致数据泄露,且由于存储证明易被篡改,导致验证结果准确率较低;同时对于验证失败的数据副本无法提供对应的存储位置,提高了用户后续计算对应存储位置和进行数据传输产生的额外成本的技术问题,进而实现在验证过程中避免从数据持有端获取原始数据和相关数据标识,避免数据标识被篡改的风险,提高了验证结果的准确率;同时对于验证失败的数据副本,还进一步获取其对应的存储位置,降低存储成本的技术效果。[0235] 上述具体实施方式,并不构成对本发明保护范围的限制。本领域技术人员应该明白的是,取决于设计要求和其他因素,可以发生各种各样的修改、组合、子组合和替代。任何在本发明的精神和原则之内所作的修改、等同替换和改进等,均应包含在本发明保护范围之内。

专利地区:北京

专利申请日期:2020-06-17

专利公开日期:2024-06-18

专利公告号:CN113761585B

电话咨询
读内容
搜本页
回顶部