用于验证远程数据的完整性的协议的制作方法

文档序号:7735446阅读:204来源:国知局
专利名称:用于验证远程数据的完整性的协议的制作方法
用于验证远程数据的完整性的协议背景存在许多远程地存储数据的原因。例如,备份站点外数据的要求,使相同的数据可 由多个办公司容易地访问的要求等。另外,新兴的所谓Web 2.0分布式应用程序中的某一 些需要用户远程地存储数据。然而,在所有这些场景中,当一人想要检查远程存储的数据的 完整性时引发了重大问题。传统方法访问远程存储位置,并且随后请求数据传输。一旦远 程存储的数据被接收,用户随后将所接收的数据与已知完整性的数据(例如,原始数据或 原始数据的经验证的副本)进行比较。在具有web接口和远程数据存储的分布式应用程序 的上下文中,该远程数据存储的带宽可以是有限的。因此,当许多用户想要检查他们数据的 完整性时(例如,在某一“标准”、定期的基础上),带宽需求随着大量数据被访问和传输而 激增。尽管在Web 2.0的上下文中提出了各种问题,但在该上下文以及其他上下文中存在 其他问题。随后的描述标识了附加问题,并且呈现了可允许对远程存储的数据的高效验证 的示例性协议。概述一种用于验证远程存储的数据的完整性的示例性方法,包括提供密钥;提供指 纹,该指纹使用该密钥以应用于已知完整性的数据的加密钥的密码散列函数来生成;将该 密钥发送到存储已知完整性的数据的副本的远程存储位置;从该远程存储位置接收指纹, 该指纹使用该密钥以应用于该数据的远程存储的副本的加密钥的密码散列函数来生成;以 及至少部分地基于将所提供的指纹与所接收的指纹进行比较来验证该数据的远程存储的 副本的完整性。还公开了其他示例性方法、系统等。


参考以下附图描述非限制性和非穷尽的示例图1是用于验证远程存储的数据的完整性的传统系统的图示;图2是用于验证远程存储的数据的完整性的示例性系统的图示;图3是用于验证远程存储的数据的完整性的示例性方法的框图;图4是与参与系统以便对数据进行远程存储和对这些数据进行验证的各方相关 联的各种组件的框图;图5是用于数据的远程存储和这些数据的验证的示例性系统,任选地是对等系统 的图示;以及图6是示例性计算设备的框图。详细描述此处所描述的各种示例性方法、设备和系统涉及验证远程存储的数据的完整性。 一种示例性协议提供了高效的完整性检验,并且允许诸如对等系统等高效系统的形成,其 中对等体可备份彼此的数据,并且验证备份数据的完整性,而无需传输该备份数据。如下所 解释的,参考附图,一示例性协议包括密钥的传输以及指纹的接收,其中该指纹至少部分地 基于该密钥并且至少部分地基于正经历完整性检验的远程存储的数据来生成。此协议可用
4任何各种方式和系统来实现。为了更好地理解传统系统面临的问题,描述了典型的传统系 统,之后是使用这一示例性基于密钥/指纹的协议的示例性系统。图1示出了用于验证远程数据的完整性的传统系统100以及相关联的时间线102。 系统100包括具有相关联的计算机100和用于存储数据的数据存储112的“本地”方X。系 统100还包括具有相关联的计算机120和用于存储数据的数据存储122的“远程”方Y。网 络105允许在X方的计算机100与Y方的计算机120之间发生通信。时间线102示出了通常发生在用于验证远程数据的完整性的传统方法中的各步 骤。在步骤A,X方从数据114生成副本115,并且将该副本115发送到Y方。在步骤B,Y 方接收经由网络105所传输的该副本115。在执行步骤A和B时,数据114的完整性可能受 损。例如,副本115可能缺少完整性,和/或经由网络105的传输可能破坏副本115。尽管 可能发生后一种类型的破坏,但在图1的示例中,为简明起见,数据115被表示为被发送和 接收而没有破坏。在Y方接收数据115之后,在步骤C,数据115被存储在数据存储122处作为数据 116。数据116表示最初具有完整性或例如因写错误或其他错误而不具有完整性的数据。或 者,随着时间的推移,会发生影响数据116的完整性的某种过程,使得它不再表示数据114 的准确的副本。根据步骤D,X方想要验证发送到Y方的数据的完整性。此查询可以用各种方式中 的任一种来发生。例如,X方可呼叫Y方、发电子邮件给Y方、或采取提示Y方响应该查询 的某种其他动作。在步骤E,Y方通过同意发送其存储的数据116的副本来响应X方。在该示例中,在制作所存储的数据116的副本时可能发生一个或多个错误。此外, 分别在其中Y方发送其所存储的数据116的副本到X方的步骤F和其中X方接收并存储所 存储的数据116的副本的步骤G,可能发生破坏所存储的数据116的副本的其他错误。例 如,“错误”中的某一些可以是由Y方所引起的对数据的恶意破坏。在步骤H,X方执行比较来将从Y方所接收的数据116与其数据114作比较。尽管 该比较旨在验证远程存储的数据的完整性,但如所解释的,该比较可充满可使验证挫败的 问题。在要验证的数据例如是大文件时,这些问题可能被混合(例如,较多的读/写错误、 传输错误等的机会)。在图1的示例中,X方可被认为是数据“所有者”。尽管此示例示出了 X方执行远 程数据的验证,但在一替换方案中,X方可以将此责任或任务委托给第三方。然而,这一委 托将不解决可能发生的问题的本质或数量。实际上,这一委托将使验证甚至更易于发生错误。作为另一替换方案,X方可以是数据114的所有者,但将该数据存储在第三方存储 提供者处。无论配置如何,在需要数据传输来执行出于验证该数据的完整性的目的的比较 时存在问题。在许多对等环境中存在另一场景。例如,在对等环境中,用户机器(对等体)可存 储“属于”一个或多个其他用户(即,由其拥有)的数据。在这一示例中,出于验证远程数 据的完整性的目的的远程数据副本的传送可能是麻烦且昂贵的,并且对于对等网络的性能 和用户体验是有害的。存在又一场景,其中一个人将大量数据存储在诸如Amazon S3服务等远程存储提供者上。在这一场景中,数据传送可能是昂贵的。因此,出于验证远程数据的完整性的目的 来传输远程数据副本是不合需要的。如此处所描述的,一示例性协议克服了与图1的系统100和/或一个或多个上述 场景相关联的各种问题。具体地,一示例性协议允许数据所有者验证这些远程存储的数据 的完整性。此外,数据所有者可将完整性检验能力委托给第三方。这一示例性协议可由多 个对等应用程序来使用。图2示出了包括三方的示例性系统200以便沿时间线202示出示例性协议的操 作。如图2所示,系统200包括作为X方且具有相关联的计算机210和用于存储数据的数 据存储212的数据所有者、作为Y方且具有相关联的计算机220和用于存储数据的数据存 储222的存储提供者、以及作为Z方且具有相关联的计算机230和用于存储用于验证数据 的信息的数据存储232的确认者。网络205允许在X方的计算机210、Y方的计算机220和 Z方的计算机230之间发生通信。在图2的场景中,认为存储提供者Y安全地存储从数据所有者X所获得的数据,并 且确认者Z需要能够高效地验证存储提供者Y具有从数据所有者X所获得的数据的准确的 (例如,确切的)副本,而不需要传送该数据的任何重要的部分。数据所有者X和确认者Z 可以是相同的用户或是不同的用户。例如,在图1的传统系统100中,X方被描述为是数据 所有者和确认者(即,最终验证数据的完整性的一方)。时间线202示出了通常在用于依赖示例性协议来验证远程数据的完整性的示例 性方法中发生的各种步骤。在步骤Α,X方从数据214生成副本215,并且将该副本215发 送到Y方。在步骤B,Y方接收经由网络205所传输的该副本215。在执行步骤A和B时, 数据214的完整性可能受损。例如,副本215可能缺少完整性,和/或经由网络205的传输 可能破坏副本215。尽管可能发生后一种类型的破坏,但在图2的示例中,为简明起见,数据 215被表示为被发送和接收而没有破坏。在Y方接收数据215之后,在步骤C,数据215被存储在数据存储222处作为数据 216。数据216表示最初具有完整性或例如因写错误或其他错误而不具有完整性的数据。 或者,随着时间的推移,可能发生影响数据216的完整性的某种过程,使得它不再表示数据 214的准确的副本。在各种场景中,数据可能被Y方或恶意攻击Y方的其他人故意地破坏。在可能缺 少损害数据所有者的严重意图的场景中,Y方可仅期望更多的存储器(例如,硬盘驱动器空 间)来存储它自己的数据。如所解释的,示例性方案需要Y方有具备完整性的数据的副本。 这阻止Y方例如用随机字节进行响应来模仿所存储的数据的完整性或存在性。在图2中,步骤A、B和C本质上与在图1的传统时间线102中发生的那些步骤相 同。然而,之后的步骤由于它们依赖于可消除图1的系统100中存在的各种问题的示例性 协议而不同。根据时间线202,在步骤D,该步骤D可在将数据215从X方发送到Y方之前发生, X方将信息242、244发送到Z方,即确认者,用于确认或验证在X方(即,计算机210和数 据存储21 的远程所存储的数据的完整性。根据示例性协议,信息242是一个或多个位串 (例如,1,2,…,k,其中k>0),并且信息244是至少部分从该位串中的一个所生成的指 纹;注意到在某些情况下,指纹可从一个以上位串中生成。位串可例如使用随机数生成器来
6生成,或使用主密钥来伪随机地生成。在图2的示例中,k个位串其中k>0)的每一 个被用作加密钥的密码散列函数的密钥,其中该散列函数随后被应用于数据来生成对应的 指纹,并且总共有k个指纹M4。在步骤E,该步骤E发生在步骤C之后的某一时间(或某些时间),Z方通过向Y 方发送一个或多个位串242来向Y方发出质询。这一通信可经由网络205或通过其他手 段(例如,安全线,专用线,等)来发生。在步骤F,Y方通过基于一个或多个所接收的位串
例如,使用加密钥的密码散列函数和计算机220)及其所存储的数据(例如,远程方拥 有的所存储的数据)来生成一个或多个指纹M5,并且随后将该一个或多个指纹245发送到 Z方来响应该质询。在步骤G,Z方例如通过将从Y方所接收的一个或多个指纹245与从X方所接收的 适当的一个或多个指纹244作比较来验证这些指纹。因此,在系统200中,示例性协议不需要远程存储的数据的传输来验证该数据的 完整性。相反,需要计算步骤来基于质询(例如,位串,即用于加密钥的密码散列函数的密 钥)生成至少一个指纹。由于单个位串和指纹相比于要验证的数据的大小可能相当小,因此通信可高效地 发生而开销极小。此外,这一通信可在诸如专用电话线等其中带宽有限的各种通信路径上 发生。图3示出了用于验证远程存储的数据的完整性的示例性方法300。在提供框304 中,提供了密钥。在另一提供框308中,提供了指纹,其中该指纹使用该密钥以应用于已知 完整性的数据的加密钥的密码散列函数来生成。尽管框304和308被示为单独的框,但这 些动作可在提供一个或多个密钥/指纹对的单个提供框中发生。在发送框312中,该密钥 被发送到存储已知完整性的数据的副本的远程存储位置。接收框316从远程存储位置接收 指纹,其中该指纹使用该密钥以应用于该数据的远程存储的副本的加密钥的密码散列函数 来生成。验证框320至少部分地基于将所提供的指纹与所接收的指纹进行比较来验证该数 据的远程存储的副本的完整性。以这一方式,远程存储的数据的完整性可被验证,而无需从 远程存储位置传输数据。图4示出了所有者410、存储者420和确认者430的各种组件(例如,诸如图2的 系统200中所示的那些)。各组件任选地(且通常)是用于在所有者侧机器、存储者侧机 器、确认者侧机器等上执行的软件组件。如已经提到的,所有者还可作为其自己的确认者来 操作以便确认所有者自己的远程数据。在这一场景中,单个机器(例如,计算设备)可包括 所有者组件以及确认者组件的各种模块。此外,所有者可作为一个或多个其他所有者的存 储者来操作。在这一场景中,单个机器可包括所有者组件以及存储者组件的各种模块。所有者410包括所有者侧组件412,它包括串生成器模块413和指纹生成器模块 414。这些模块的对应功能的示例已经在上文中参考图2的系统200来呈现。存储者420包括存储者侧组件422,它包括用于将所有者与所存储的数据相关联 的所有者/存储者表模块423、以及用于响应于质询来生成指纹的指纹生成器模块414,如 已经描述的。确认者430包括确认者侧组件432,它包括用于将所有者与所存储的数据相关联 的所有者/存储者表模块433,用于调度质询或位串和/或指纹的更新的调度器模块434,用于管理用于来发出质询的串和用于验证质询的指纹的串/指纹管理模块435,用于验证 响应于质询所接收的指纹的验证模块436,以及在与确认相关联的各种任务中的任一个中 使用的一组应用程序编程接口(API)437。例如,所有者可经由API调用来访问确认者以便 通知该所有者关于是否成功完成了质询,该API调用指定文件、存储位置(例如,存储者)、 一系列位串以及对应的指纹、用于向存储者的发出质询的时间表以及联系信息(例如,电 子邮件地址等)。确认者可包括存储者响应质询所使用的API。例如,在接收到质询之后, 存储者可做出API调用,该API调用包括一个或多个指纹,且任选地连同与所存储的正被验 证的数据相关的一条或多条其他信息(例如,在最近三周中被访问两次的数据、由于缺少 访问而被压缩的数据、被X方访问的数据、等等)。以这一方式,存储者可向确认者返回可帮 助数据所有者管理数据或对于该数据进行动作的信息。 图5示出了示例性系统500,其中经由网络505通信的两方510、520协同操作来存 储其数据中的至少某一些(例如,作为备份)。510方和520方中的每一方都使用计算设备 来操作,该计算设备包括所有者侧组件512、存储者侧组件522以及确认者侧组件532,诸如 参考图4所描述的那些组件。510方具有相关联的数据存储512,并且520方具有相关联的 数据存储522。在图5的示例中,510方制作其数据515的副本516,并且将该副本516发送到520 方以供存储。类似地,520方制作其数据525的副本526,并且将该副本5 发送到510方 以供存储。如已经解释的,510和520方可使用示例性协议来确认他们远程存储的数据,该 示例性协议依赖发出质询、以及至少部分基于该质询和至少部分基于所存储的要验证的数 据来返回指纹。可复制图5的示例性系统500用于对等系统中的存储交换。存储交换允许一个人 以提供他的盘空间的某一部分用于其他人的备份数据为代价来在其他用户的机器上备份 他们的数据。例如,在用户“共享” 1. 5GB她的硬盘驱动器空间的之后,该用户被允许在其他 对等体上备份IGB她的个人文件。存储交换可使用示例性位串/指纹协议来确保对等体不 删除或修改其他对等体的数据。在另一场景中,用户可能希望在诸如Amazon S3等其中通信可能是昂贵的远程存 储服务上存储数据。示例性位串/指纹协议的使用可帮助确保(a)存储提供者仍存储数据 以及(b)存储提供者没有修改数据。由于协议可以用最少通信来实现,因此这些保证可用 非常小的通信成本来实现。如此处所描述的,示例性协议可用于验证存储在远程机器上的数据的完整性。这 一协议提供了向另一方(例如,确认者)委托验证权利的能力。在各种示例中,协议使用通 过将密码散列函数应用于所存储的数据所生成的指纹来验证该数据的完整性。尽管各种示 例旨在用于验证远程数据,但所有者可能希望通过使用高完整性存储者作为完整性度量来 验证其自己(例如,本地)所存储的数据的完整性。如此处所描述的,示例性确认者方法可产生质询并且验证该质询。作为协议,包 括质询和响应的交互序列克服了与通过发送数据的副本的验证相关联的许多问题(见,例 如,图1的传统系统100)。如此处所描述的,示例性确认者可被编程为执行周期性的更新。此外,确认者可基 于关于存储者的历史信息来调度查询。例如,如果已知存储者缺少完整性,则确认者可发出更频繁的质询。相反,对于具有所展示的完整性的存储者,质询的频率可以相当小。一般而 言,示例性确认者可取决于环境以增大或减小的时间间隔发出周期性的质询。如此处所描述的,一示例性方法可包括调度质询的发出来检验一方或多方所存储 的数据的完整性,其中所发出的质询要求被质询的一方(例如,行动来远程地存储数据所 有者的数据的存储者)应用加密钥的密码散列函数;以及至少部分地基于一方满足一个或 多个所发出的质询(例如,成功的质询或不成功的质询)的能力来调整对该方的发出频率。 例如,在一方无法满足一个或多个所发出的质询时可增加频率。或者,在一方满足一个或多 个所发出的质询时减少频率。这一方法可包括从所存储的数据的一个或多个所有者获得质 询信息,例如,其中该获得周期性地发生并且允许数据所有者提供新的质询信息。如此处所描述的,示例性对等系统包括一个或多个计算设备,该一个或多个计算 设备被配置成本地存储数据,其中本地存储的数据包括本地所有者所拥有的数据以及远 程所有者所拥有的数据副本;接收与远程所有者所拥有的数据副本相关联的密钥;使用该 密钥以应用于远程所有者所拥有的数据副本的加密钥的密码散列函数来生成指纹;以及将 该指纹发送到对等系统中的另一计算设备用于验证远程所有者所拥有的数据副本的完整 性。在这一系统中,其他计算设备可被配置成接收指纹,并且将该指纹与使用该密钥以应用 于远程所有者所拥有的已知完整性的数据的加密钥的密码散列函数所生成的指纹作比较。在示例性对等体统中,一个或多个计算设备可被配置成生成密钥,以及使用该密 钥以应用于已知完整性的数据的加密钥的密码散列函数来生成指纹。这一计算系统可进一 步被配置成将密钥和指纹发送到对等系统中的一个或多个计算设备。此外,对等系统可包 括用于对发送密钥到对等系统中的一个或多个计算设备进行调度的一个或多个时间表。示例性计算设备图6示出了可用于实现各示例性组件并形成示例性系统的示例性计算设备600。 例如,图2的系统的计算设备可以包括设备600的各种特征。在非常基本的配置中,计算设备600通常包括至少一个处理单元602和系统存储 器604。取决于计算设备的确切配置和类型,系统存储器604可以是易失性的(诸如RAM)、 非易失性的(诸如ROM、闪存等等)或两种类型的某种组合。系统存储器604通常包括操 作系统605、一个或多个程序模块606,且可以包括程序数据607。操作系统605包括基于 组件的框架620,其支持组件(包括属性和事件)、对象、继承、多态性、反射,并且提供面 向对象的基于组件的应用程序编程接口(API),诸如由华盛顿州雷蒙德市的微软公司制造 的.NET 框架的API。计算设备600具有由虚线608划分的非常基本的配置。同样,一终 端可具有更少的组件,但将与可具有这一基本配置的计算设备交互。计算设备600可具有附加特征或功能。例如,计算设备600还可包括附加数据存 储设备(可移动和/或不可移动),诸如例如磁盘、光盘或磁带。这样的附加存储在图6中 由可移动存储609和不可移动存储610例示。计算机存储介质可包括以用于存储诸如计算 机可读指令、数据结构、程序模块或其他数据等信息的任何方法或技术实现的易失性和非 易失性、可移动和不可移动介质。系统存储器604、可移动存储609和不可移动存储610都 是计算机存储介质的示例。计算机存储介质包括,但不限于,RAM、R0M、EEPR0M、闪存或其他 存储器技术、CD-ROM、数字多功能盘(DVD)或其他光盘存储、磁带盒、磁带、磁盘存储或其他 磁性存储设备、或能用于存储所需信息且可以由计算设备600访问的任何其他介质。任何这样的计算机存储介质都可以是设备600的一部分。计算设备600也可具有诸如键盘、鼠 标、笔、语音输入设备、触摸输入设备等的输入设备612。也可包括输出设备614,如显示器、 扬声器、打印机等等。这些设备在本领域中是已知的,这里就不再对它们进行详细讨论。计算设备600还可包含允许该设备诸如通过网络(例如考虑上述图2的网络205) 来与其他计算设备618进行通信的通信连接616。通信连接616是通信介质的一个示例。 通信介质通常可以具体化为计算机可读指令、数据结构、程序模块等。尽管用结构特征和/或方法动作专用的语言描述了本主题,但可以理解,所附权 利要求书中定义的主题不必限于上述具体特征或动作。相反,上文所描述的具体特征和动 作是作为实现权利要求的示例形式来公开的。
权利要求
1.一种用于验证远程存储的数据的完整性的方法,所述方法包括 提供密钥;提供指纹,所述指纹使用所述密钥以应用于已知完整性的数据的加密钥的密码散列函 数来生成;将所述密钥发送到存储所述已知完整性的数据的副本的远程存储位置; 从所述远程存储位置接收指纹,所述指纹使用所述密钥以应用于所述数据的远程存储 的副本的加密钥的密码散列函数来生成;以及至少部分地基于将所提供的指纹与所接收的指纹进行比较来验证所述数据的远程存 储的副本的完整性。
2.如权利要求1所述的方法,其特征在于,所述密钥任选地包括位串,任选地包括随机 生成的密钥,任选地包括对应于所述已知完整性的数据的一个或一系列密钥,或任选地包 括通过将伪随机数生成器应用于主密钥来生成的一系列密钥中的一个密钥。
3.如权利要求1所述的方法,其特征在于,所提供的指纹包括对应于所述已知完整性 的数据的一系列指纹中的一个指纹。
4.如权利要求1所述的方法,其特征在于,所提供的密钥和所提供的指纹任选地作为 一对来提供,并且所述已知完整性的数据的所有者任选地提供所述密钥和所述指纹。
5.如权利要求1所述的方法,其特征在于,所述发送根据时间表来发生。
6.如权利要求1所述的方法,其特征在于,进一步包括提供一个以上的密钥,并且提供 一个以上的指纹,其中每一所提供的指纹对应于所提供的密钥中的一个。
7.如权利要求1所述的方法,其特征在于,所述验证发生在计算设备处,所述计算设备 提供所述密钥,提供所述指纹,将所述密钥发送到所述远程存储位置,并且从所述远程存储 位置接收所述指纹。
8.一种计算设备,包括 一个或多个处理器;用于存储密钥和指纹的存储器,所述指纹使用所述密钥以应用于已知完整性的数据的 加密钥的密码散列函数来生成;包括指令的组件,所述指令用于将所述密钥发送到存储所述已知完整性的数据的副本 的远程存储位置;从所述远程存储位置接收指纹,所述指纹使用所述密钥以应用于所述数 据的远程存储的副本的加密钥的密码散列函数来生成;以及至少部分地基于将所提供的指 纹与所接收的指纹进行比较来验证所述数据的远程存储的副本的完整性;任选地包括存储,所述存储用于存储所述已知完整性的数据,并且使用所述密钥以应 用于所述已知完整性的数据的加密钥的密码散列函数来生成所述指纹;以及 任选地包括用于远程存储另一者所拥有的数据的存储。
9.一种对等系统,包括计算设备,所述计算设备被配置成本地存储数据,其中所述本地存储的数据包括本地所有者所拥有的数据以及远程所有 者所拥有的数据副本;接收与所述远程所有者所拥有的数据副本相关联的密钥;使用所述密钥以应用于所述远程所有者所拥有的数据副本的加密钥的密码散列函数来生成指纹;以及将所述指纹发送到所述对等网络中的另一计算设备用于验证所述远程所有者所拥有 的数据副本的完整性。
10. 一种至少部分地由计算设备实现的方法,包括调度质询的发出来检验一方或多方所存储的数据的完整性,其中所发出的质询要求被 质询方应用加密钥的密码散列函数,并且所述被质询方行动来远程地存储数据所有者的所 述数据;至少部分地基于一方满足一个或多个所发出的质询的能力来调整对该方的发出频率;以及任选地从所存储的数据的一个或多个所有者获得质询信息,其中所述获得任选地周期 性地发生。
全文摘要
一种用于验证远程存储的数据的完整性的方法,包括提供密钥;提供指纹,该指纹使用该密钥以应用于已知完整性的数据的加密钥的密码散列函数来生成;将该密钥发送到存储已知完整性的数据的副本的远程存储位置;从该远程存储位置接收指纹,该指纹使用该密钥以应用于该数据的远程存储的副本的加密钥的密码散列函数来生成;以及至少部分地基于将所提供的指纹与所接收的指纹进行比较来验证该数据的远程存储的副本的完整性。还公开了其他示例性方法、系统等。
文档编号H04L9/30GK102099812SQ200980128925
公开日2011年6月15日 申请日期2009年4月7日 优先权日2008年5月20日
发明者A·米佳金, D·X·查尔斯, K·E·劳特 申请人:微软公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1