本公开涉及用于电子数据的安全、高效和可验证的存储(storage)、备份、存档(archive)和/或检索的改进技术和系统。具体地但不完全地,这适合在第二方(例如,存储服务提供者)代表第一方(例如,数据所有者、创建者、控制者和/或授权管理员)存储数据的场景中使用,即使第二方不是可信实体。本公开的示例性实施例提供了改进方案,用于根据需要核实存储在第二方或由第二方存储的数据的完整性、存在性和/或可用性。优点包括但不限于,能够将潜在大部分数据的存储外包给辅助位置或设备,从而避免或减轻对主要位置的存储和处理资源的需求。
背景技术:
1、在数字时代,数据存储对于组织和个人来说都是必需的。出于各种原因,安全可靠地存储此类数据可能会带来挑战。例如,数据可能具有情感和/或商业价值;或者从法律、安全、军事或政治角度来看可能是敏感的;以及/或者,数据的存储可能需要数据所有者/控制者无法提供的资源。因此,出于各种原因,可能希望将至少部分数据的存储委托给另一实体。例如,考虑以下场景:个人希望存储家庭视频录像以供后代使用;或者公司希望存储大量历史存档数据以便遵守法律要求;或者发明人希望以带时间戳的可验证方式存储实验数据,但他/她没有必要的资源来存储实验数据。
2、在这种情况下,第一实体可以是数据的所有者、创建者、控制者、管理者和/或管理员。为了便于参考,下面将第一实体称为“数据控制者”。第二实体可以是根据第一实体的请求提供数据存储服务的任何实体,为了便于参考,可以将该实体称为“存储服务提供者”。数据控制者和/或存储服务提供者可以是人类、组织或基于机器的实体。
3、在这些场景中会出现技术挑战,因为在存储服务提供者存储数据之后,数据控制者需要证明提供者a)仍然拥有数据,并且b)数据相对于其原始状态尚未被修改或泄露。存储服务提供者需要能够向数据控制者提供数据的持续完整性和可用性证明。为了确保可靠,需要快速高效地提供这种验证,因为计算复杂证明在时间或处理资源方面成本高昂,所涉及的实体通常无法接受。此外,通常希望以不需要双方之间信任关系的方式提供证明。
4、本公开的实施例提供了至少解决这些技术问题的方案。
技术实现思路
1、本公开提供了(至少)改进的方法和系统,用于安全和/或高效地存储数据,或用于使得能够验证所述数据的持续可用性和未改变状态。优选实施例可以包括使用默克尔树来检查和/或确保存储在数据存储服务提供者处的数据块/部分数据的完整性。
2、根据优选实施例,数据控制者(爱丽丝)希望将部分数据的存储外包或委托给另一实体(鲍勃),因为她自己无法保留整个部分数据的存储或者不希望这样做。本公开不受所述数据的形式、结构或目的的限制。然而,爱丽丝将要求鲍勃证明他继续保存所述数据的整个副本,并且他的副本与爱丽丝提供给他的原始版本没有发生任何变化。
3、在优选实施例中,爱丽丝将原始数据(d)组织或排列成多个段{m1,m2,m3…mn}。每个段是所述数据d的子部分。这种组织/排列可以包括将所述数据划分为逻辑段或物理划分的段,例如通过将所述段中的一个或多个段与其他段分开存储。在优选实施例中,爱丽丝随后在数据存储块(b)中记录或提供所述段,并成对地对它们进行哈希处理以形成默克尔树,如本领域已知的。这提供了二叉树(t),所述二叉树表示所述数据d的完整原始版本,并且包括默克尔根(r),如图7所示。
4、爱丽丝选择或以其他方式识别一个或多个段的集合(m)并保留所述一个或多个段。所述集合m中的每个段可能很小,因此需要很小的存储空间。术语“样本”在下文中还可以用于指代爱丽丝保留的所述段。尽管在一些实施例中可以仅保留一个段,但是在典型的实施例中,m可以包括原始数据d的多于一个段,以便可以在单独的验证会话中使用不同的样本,从而进一步增强安全性。
5、在识别并存储m之前或之后,爱丽丝将段的整个区块b(以及d的完整副本)发送给鲍勃。在鲍勃接收到所述整个部分数据之后,爱丽丝删除她自己的d的整个副本,同时保留对段m的访问权限。在从爱丽丝接收到所述区块b之后,鲍勃将其存储在他控制或至少可以访问并且在未来日期从中获取d的存储资源中。在示例性变型中,爱丽丝可能需要在爱丽丝删除她自己的副本之前确认从爱丽丝安全地接收到所述数据。在其他变型中,爱丽丝可以将数据d发送给鲍勃,然后他可以自己将其组织成片段块。在此类变型中,所述段的结构和/或可以识别和引用各个段的方式可能需要在爱丽丝与鲍勃之间达成一致,或者以某种方式预先确定。
6、当爱丽丝随后要求验证鲍勃仍然具有d并且所述数据处于其原始状态时,她对m的至少一个段执行一个或多个操作(operation)。所述操作提供输出(y),所述输出是处理m的所述至少一个段的结果。然后,爱丽丝计算t的新版本(t')的新默克尔根(r'),其中所述操作中使用的原始段已被替换为处理后的输出y。此后,可以互换地使用术语“修改”、“改变”和“替换”,但是所有这些术语都旨在包括以下解释:至少一个给定段的原始版本被不同的后续版本覆盖或改变或以某种方式替换。“验证”在本文中可能意味着“认证、证明和/或确认”。
7、然后,爱丽丝要求鲍勃使用他的d的副本中的相同段执行相同的操作。鲍勃事先不知道爱丽丝将要求他在验证证明中使用的段和/或操作。然后,鲍勃使用其所述数据的原始副本中的指定段来执行所述操作,以产生输出y。然后,他计算更新后的区块的新默克尔树(t')和根(r'),所述更新后的区块包括y而不是原始段。他向爱丽丝发送所述根r'的新值。然后,爱丽丝可以将鲍勃重新计算的默克尔根r'的值与她计算的r'的值进行比较。如果这两个值匹配,则鲍勃必须拥有爱丽丝数据的完整副本,并且所述数据处于她提供所述数据时的原始状态。如果鲍勃不具有完整数据,或者其中一个部分已被更改,他将无法计算证明的正确值。
8、在以下各节进一步描述了说明性实施例和变型,并且表明本公开(至少)提供了以下非详尽列表中的优点:
9、●能够将数据的存储外包给可能不可信的存储服务提供者;
10、●实现所述数据存在于所述存储服务提供者位置的可验证证明,以及所述数据相对于其原始状态尚未被改变的证明;
11、●减轻无法或不希望自行存储数据的数据控制者的数据存储负担(例如,物理存储限制、法律限制、业务或组织需要将数据放置在共享位置等);
12、●便于证明数据完整性、来源和真实性;
13、●安全、高效、快速地验证数据可用性和完整性;
14、●便于设计和实现需要验证数据真实性和可用性的更广泛系统和应用程序;
15、●允许使用简单的操作,这些操作在存储或处理方面需要较少的资源,并且可以非常快速地提供结果;
16、●爱丽丝保留的段较小,因此不需要大量的存储空间;这对于容量有限的设备来说是有利的;
17、●爱丽丝甚至不需要存储段本身;她只需要拥有默克尔路径的部分,使得她能够在需要时重新计算;这可以对区块b的内容进行简化支付验证(spv)样式验证;
18、●爱丽丝不需要保留较大的样本段集;相反,她可以更改对她的样本执行的操作,以及/或者更改她要求鲍勃用于所述操作的参数。例如,在第一验证中,她可以要求他将字符“g”级联到给定的段,并且在后续验证中要求使用随机生成的位串作为掩码对相同或不同段进行xor操作的结果。在第三验证中,她可以要求他将字符“u”级联到相同或不同段,等等。因此,爱丽丝只需要保留几个段即可安全地允许验证过程的多次重复或变化,而不需要促进鲍勃预测他将被要求提供的证明的能力;
19、●传统上,默克尔证明用于验证特定区块链事务是根的一部分(即,位于特定区块中)。相比之下,本公开使用所述区块的>=1个样本段来验证整个数据树的存在/控制/存储,而不仅仅是其中的一部分。因此,即使爱丽丝的区块b包含10亿个段,她也只需要这些段中的一个段即可快速、轻松地验证所述段中的所有段存在于鲍勃的所述树/区块的副本中;
20、●爱丽丝可以将验证委托或授权给另一方(卡罗尔),例如第三方审计员或需要验证所存储数据的存在性和真实性的某个实体。爱丽丝可以使用任何合适的技术(例如,wo2017/145016中公开的技术)来发送秘密或与卡罗尔共享秘密。卡罗尔可以使用所述秘密向鲍勃请求所述验证证明;
21、●这允许针对特定数据项委托/授权第三方验证,从而提高或至少保护隐私(即,如果卡罗尔只需要验证某些项,则爱丽丝不需要授予卡罗尔对其整个数据存储的访问权限);
22、●本发明有利于技术系统和网络的可扩展性,因为数据的存储可以安全且可验证地外包;
23、●实施例还提供了解决与数据持久性相关的技术挑战的方案;众所周知,常用的系统成像技术面临需要足够的ram来保存所述数据的整个副本的挑战。请参见:https://en.wikipedia.org/wiki/persistence_(computer_science)。实施例可以通过将所述存储委托给所述提供者来解决该挑战;
24、●实施例还可以提供用于数据备份和恢复以及归档、文件系统转储、版本控制和确保一致性的改进方案。请参见:https://en.wikipedia.org/wiki/backup。
1.一种计算机实现的方法,所述方法包括以下步骤:
2.根据权利要求1所述的方法,其中通过以下方式执行或提供所述至少一个子部分的所述变型:
3.根据权利要求1或2所述的方法,其中:
4.根据前述任一项权利要求所述的方法,其中所述至少一个子部分是:
5.根据前述任一项权利要求所述的方法,所述方法包括以下步骤中的一个或多个步骤:
6.根据前述任一项权利要求所述的方法,其中所述方法包括以下各项中的一项或两项:
7.根据前述任一项权利要求所述的方法,其中所述方法包括以下各项中的一项或多项:
8.根据前述任一项权利要求所述的方法,所述方法还包括:
9.根据前述任一项权利要求所述的方法,其中:
10.根据前述任一项权利要求所述的方法,其中:
11.根据前述任一项权利要求所述的方法,其中所述方法包括:
12.一种计算机设备,所述计算机设备包括:
13.一种计算机程序,所述计算机程序包含在计算机可读存储器上并且被配置为当在一个或多个处理器上运行时,执行根据权利要求1至11中任一项所述的方法。