用于独立代理的数据加密转换的制作方法

文档序号:6425593阅读:119来源:国知局
专利名称:用于独立代理的数据加密转换的制作方法
技术领域
本发明涉及数据加密,尤其涉及用于独立代理的数据加密转换。
背景技术
传统上,计算机可读数据通常由诸如硬盘驱动器等包括其上存储有计算机可读数据的计算机可读介质的数据存储硬件设备来存储。为了防止对数据的未授权的访问,尤其是在例如通过盗窃或遗失而取得对数据存储硬件的物理访问的情况下,开发了 “全卷加密” 概念,藉此以加密方式来存储属于数据卷的数据。因为全卷加密基本上被应用于数据卷中的所有数据,所以它提供比先前所使用的单独文件加密技术更大的保护。因此,即使数据存储设备被盗并被通信耦合至缺少会防止对来自该数据存储设备的数据的未授权访问的可执行指令的计算设备,该数据也仍然可得到保护,因为它是以加密方式物理地存储的。为了增加这样的全卷加密的效率,对数据进行加密和解密的任务可以由与存储设备本身相关联的硬件来执行,而非由主计算设备的中央处理单元来执行。或者,数据的加密和解密以及对加密转换的控制可由中间元件来执行,所述中间元件可作为或不作为存储设备的一部分,并且同样可作为或不作为主计算设备的中央处理单元的一部分。在任一情况下,这些设备将仍然使得该存储设备对于诸如操作系统或应用软件等较高层组件而言,作为传统存储设备出现。然而,在接收到供存储的数据时,该数据在被存储在存储介质上之前可被自动地加密,并且类似地在读取数据时,该数据在被提供给更高层组件之前可首先被解密。通常,包括硬件密码支持或被通信耦合至中间密码元件的存储设备利用单个密钥来加密和解密所有或者基本上所有存储在特定范围的存储位置,或者“地址”中的数据,并利用另一不同的密钥来加密和解密存储在不同范围的存储地址中的数据。包括由单个密钥加密的数据的地址范围传统上被称为“带”或“区域”,并且此存储设备的带或区域通常由存储设备通信耦合的计算设备来配置。

发明内容
在许多情况下,从安全的观点来看,改变用于加密和随后解密存储在存储介质上的数据的密钥、密码算法、或者两者可以是有利的。通常,这些情况与其中密钥或保护它的另一密钥已经被无意地公开或以其他方式被看作不再是秘密的情况相关联。用于加密和解密数据的密钥的改变包括利用新密钥来重新加密数据。在一实施例中,存储在与“现有”密钥相关联的“现有”加密区域中的加密数据可被读取并随后被写入至不同的“替换”加密区域,所述替换加密区域与不同于现有密钥的 “替换”密钥相关联,并且由此影响用于保护该数据的密钥的改变。来自现有加密区域的数据块可被读取并被写入至可与该现有加密区域相邻的替换加密区域。该现有加密区域可随后被缩小以排除该数据块的地址,而该替换加密区域可随后被扩大以便包括该数据块的地址。可随后对现有加密区域中的每一数据块重复这样的过程,在先前操作的数据块的位置中,每一数据块被写入至替换加密区域,从而导致一旦完成重新加密之后数据的“移位”。在另一实施例中,来自现有加密区域的数据块可被读取并被维持在存储器中,同时收缩该现有加密区域以排除该数据块的地址,并且随后扩张替换加密区域以包括该数据块的地址。保留在存储器中的数据可随后被写回同一位置,该位置现在是替换加密区域的一部分,并且因此该数据在被写回时可以用替换密钥来加密。同样地,可以对现有加密区域中的每一数据块重复此过程,不同之处在于,因为该数据被写回同一位置,所以不存在作为重新加密的结果的“移位”。在又一实施例中,可以执行重新加密,同时包括被重新加密的数据的存储设备保持“在线”并且可由与它通信耦合的一个或多个计算设备访问。在此又一实施例中,定向到当前被重新加密的特定数据块的数据读和数据写可被拖延,直至完成这样的重新加密为止。或者,只有数据写可被拖延,而数据读可被重定向,如重定向至出于容错目的而作出的存储器内副本或冗余副本。在还有另一实施例中,通过使用在现有加密区域的收缩之前可将正被重新加密的数据块的副本复制到其中的记录位置,可使得将重新加密的数据存回相同的位置中的重新加密具有容错性。在后续数据块的重新加密开始之前,可清除该记录位置以避免故障情况下的后续混淆。另外,可利用诸如直写(write through)或者转储清除高速缓存语意等已知机制来确保写入记录位置的数据以非易失性方式被保留。在其他实施例中,如果对经重新加密的块的数据写被拖延直到来自将被重新加密的后续块中的数据被复制到该记录位置,那么可跳过清除该记录位置的步骤。同样,可计算并在记录位置中存储正被重新加密的块的扇区摘要,而非将来自正被重新加密的块中的数据复制到该记录位置。提供本发明内容以便以简化形式介绍将在以下的具体实施方式
中进一步描述的一些概念。本发明内容并不旨在标识出所要求保护的主题的关键特征或必要特征,也不旨在用于限定所要求保护的主题的范围。通过下面的结合附图对本发明进行的具体实施方式
,本发明的附加特征和优点将变得更加显而易见。


通过参考各个附图,可以更好地理解如下具体实施方式
,其中图1是具有硬件加密存储设备的示例性计算设备的框图;图2是示例性的数据的离线、原地重新加密的框图;图3是示例性的数据的在线、原地重新加密的框图;图4是示例性的数据的容错的、离线、原地重新加密的框图;图5是示例性的数据的容错的、在线、原地重新加密的框图;图6是另一示例性的数据的容错的、在线、原地重新加密的框图;图7是又一示例性的数据的容错的、在线、原地重新加密的框图;图8是示例性的数据的离线、非原地重新加密的框图;图9是示例性的数据的在线、非原地重新加密的框图;图10是数据的示例性重新加密的流程图11是示例性的数据的离线、原地重新加密的流程图;图12是示例性的数据的容错的、离线、原地重新加密的流程图;图13是另一示例性的数据的容错的、离线、原地重新加密的流程图;图14是示例性数据的在线、原地重新加密的流程图;图15是示例性的数据的容错的、在线、原地重新加密的流程图;图16是另一示例性的数据的容错的、在线、原地重新加密的流程图;图17是又一示例性的数据的容错的、在线、原地重新加密的流程图;图18是示例性的数据的离线、非原地重新加密的流程图;以及图19是示例性的数据的在线、非原地重新加密的流程图。
具体实施例方式以下描述涉及可使用及利用独立加密代理来执行加密操作的重新加密机制。数据的重新加密可“原地”执行,以使得经重新加密的数据被存储在与先前经加密的数据相同的诸如由存储地址等所确定的“位置”。或者,数据的重新加密可“非原地”执行,以使得经重新加密的数据被“移位”,或者存储在与存储先前经加密的数据的位置相邻的位置中。数据的重新加密可“在线”执行,以使得诸如数据卷等被重新加密的数据整个集合保持可由在通信耦合至存储数据的存储设备的一个或多个计算设备上执行的计算机可执行指令访问。或者,数据的重新加密可“离线”执行,以使得数据不可由在通信耦合至存储数据的存储设备的一个或多个计算设备上执行的计算机可执行指令访问。对于数据的原地重新加密,可通过可任选地将被重新加密的数据块复制到记录位置来实现容错,从所述记录位置可在一个或多个故障的情况中恢复被重新加密的数据块。可任选地,可诸如通过已知函数等来计算摘要,而非复制数据本身,并可将摘要存储在记录位置中。同样可任选地,如果对前一已经被重新加密的数据块的改变被拖延直至当前正被重新加密的数据块被完全复制到记录位置中,那么该记录位置中的数据无需被显式地清除。此处所描述的技术着重但不限于,对作为某些类型存储设备的一部分的基于硬件的加密机制的应用,此处被称为“硬件加密存储设备”。下述机制适用于任何类型的独立加密代理,所述独立加密代理独立于实现下述机制的计算机可执行指令。因此,可由下述机制同等地利用提供可通信上耦合在计算设备和存储设备之间的通过(pass-through)密码支持的硬件设备,以及由计算机可执行指令组成可向存储在以及读取自通信上耦合至计算设备的存储设备的数据提供通过密码支持的软件元件。由此,以下对硬件加密存储设备或者由此提供的硬件密码支持的参考旨在被理解为同等地适用于任何其他独立密码代理。另外,虽然未作要求,但以下描述将处在诸如程序模块等正由一个或多个计算设备执行的计算机可执行指令的一般上下文中。更具体而言,除非另外指明,否则描述将参考由一个或多个计算设备或外围设备所执行的动作以及其所执行的操作的符号表示。由此, 可以理解,这些有时被称为由计算机执行的动作和操作包括对以结构化形式表示数据的电信号进行操纵的处理单元。该操纵变换数据或将数据保存在存储器中的各个位置处,这以本领域技术人员都理解的方式重新配置或以其他方式更改计算设备或外围设备的操作。其中维护数据的数据结构是具有由该数据的格式定义的特定特性的物理位置。一般而言,程序模块包括执行特定任务或实现特定抽象数据类型的例程、程序、对象、组件、数据结构等。此外,本领域技术人员将会认识到这些计算设备不必限于常规个人计算机,并且包括其他计算配置,包括手持式设备、多处理器系统、基于微处理器的或可编程消费电子设备、网络PC、小型计算机、大型计算机等等。类似地,这些计算设备不必限于独立计算设备,因为各机制也可以在其中任务由通过通信网络链接的远程处理设备执行的分布式计算环境中实现。在分布式计算环境中,程序模块既可以位于本地又可以位于远程存储器存储设备中。转向图1,示出了示例性计算设备100,它可包括但不限于,一个或多个中央处理单元(CPU) 120、系统存储器130和将包括该系统存储器在内的各种系统组件耦合至处理单元120的系统总线121。系统总线121可以是若干类型的总线结构中的任何一种,包括使用各种总线体系结构中的任何一种的存储器总线或存储器控制器、外围总线,以及局部总线。 取决于具体物理实现,CPU120、系统存储器130和所示其他组件中的一个或多个可在物理上位于同处,如在单个芯片上。在这一情况下,系统总线121的一部分或全部可以只不过是单个芯片结构内的硅通路,且其在图1中的图示只不过是出于说明目的的记法方便。除了上述元件之外,计算设备100通常还包括能够包括可由计算设备100访问的任何可用介质的计算机可读介质,并且包括易失性和非易失性介质以及可移动和不可移动介质两者。作为示例而非限制,计算机可读介质可以包括计算机存储介质和通信介质。计算机存储介质包括以用于存储诸如计算机可读指令、数据结构、程序模块或其它数据等信息的任何方法或技术来实现的介质。计算机存储介质包括但不限于,RAM、ROM、EEPR0M、闪存或其它存储器技术、CD-ROM、数字多功能盘(DVD)或其它光盘存储、磁带盒、磁带、磁盘存储或其它磁性存储设备、或能用于存储所需信息且可以由计算设备100访问的任何其它介质。通信介质通常以诸如载波或其他传输机制等已调制数据信号来体现计算机可读指令、 数据结构、程序模块或其他数据,并包括任意信息传送介质。作为示例而非限制,通信介质包括有线介质,如有线网络或直接线连接,以及诸如声学、RF、红外及其它无线介质之类的无线介质。上述中任一组合也应包括在计算机可读介质的范围之内。系统存储器130包括易失性和/或非易失性存储器形式的计算机存储介质,如只读存储器(ROM) 131和随机存取存储器(RAM) 132。基本输入/输出系统133 ¢10 包含有助于诸如启动时在计算设备100中元件之间传递信息的基本例程,它通常存储在ROM 131 中。RAM 132通常包含处理单元120可以立即访问和/或目前正在操作的数据和/或程序模块。作为示例而非限制,图1示出了操作系统134、其它程序模块135和程序数据136。计算机系统100还可包括其它可移动/不可移动、易失性/非易失性计算机存储介质。例如,图1示出了硬盘驱动器141,该硬盘驱动器141对不可移动(从该硬盘驱动器本身)、非易失性磁介质进行读写,并且提供硬件密码支持160,以使得硬盘驱动器141本身可以,例如加密由诸如CPU 120等计算设备100的其他组件提供给它的数据。可以与示例性计算设备一起使用的其它可移动/不可移动、易失性/非易失性计算机存储介质包括但不限于,磁带盒、闪存卡、固态存储设备(SSD)、数字多功能盘、数字录像带、固态RAM、固态ROM 等等。硬盘驱动器141或这些其他可移动/不可移动、易失性/非易失性计算机存储介质中的任一个通常通过诸如接口 140等不可移动的非易失性存储器接口来连接到系统总线 121。为了易于说明和引用,以下描述在图1中示出的所示硬件加密硬盘驱动器141的上下文中提供。然而,如对于本领域技术人员将会是清楚的,在以下描述的机制中没有一种机制限于硬盘驱动器141的磁介质,并且能够在任何类型的计算机存储介质上同等地实现,包括以上枚举的可移动/不可移动、易失性/非易失性计算机存储介质中的任一种。虽然未在图1中具体示出,但诸如硬件加密硬盘驱动器141等硬件加密存储设备的硬件密码支持160可以包括用于执行密码功能的专用处理器和/或存储器,诸如对提供到硬盘驱动器或由硬盘驱动器从其存储介质中读取的数据的加密或解密。这样的加密与解密可以参考可以由硬件密码支持160维护的通常被称为“驱动器介质密钥”的一个或多个密钥来执行。驱动器介质密钥本身可以通过一个或多个其他密钥来保护,如在一公知的密钥分层保护方案中,其中一层的一个密钥保护较低层的另一密钥。通常,单个驱动器介质密钥用于加密及解密存储在以及读取自硬盘驱动器141上的某一范围的地址或者存储位置的全部数据。存储位置寻址的一个常见实现被称为“逻辑块寻址”。这一范围的地址或者存储位置通常被称为“带”或者“加密区域”,且单个存储设备可具有多个这样的“带”或者 “加密区域”,和对应于那些带或者加密区域的多个驱动器介质密钥。因此,虽然在计算设备 100上执行的计算机可执行指令本身可不专门对存储在以及读取自硬盘驱动器141的数据执行加密和解密,但是它们可通过创建、修改和删除硬盘驱动器141上的带或者加密区域来控制此加密和解密的各方面,因为在这些加密区域和用于保护该数据的驱动器介质密钥之间存在一一对应的关系。以上讨论并在图1中示出的驱动器及其相关联的计算机存储介质为计算设备100 提供对计算机可读指令、数据结构、程序模块以及其它数据的存储。例如,硬件加密硬盘驱动器141被示为存储操作系统144、其他程序模块145、以及程序数据146,程序数据既可包括为程序模块145创建的以便用作程序模块的执行的一部分的数据,也可包括由计算设备 100的用户通过利用程序模块145所创建的数据。注意,这些组件可以与操作系统134、其它程序模块135和程序数据136相同,也可以与它们不同。操作系统144、其它程序模块145 和程序数据146在这里被标注了不同的标号是为了说明至少它们是不同的副本。操作系统134和程序模块135中的每一个或者两者可包括用于以诸如以下详细描述的方式来执行密码管理161的计算机可执行指令。具体地,如将在以下描述的,这样的密码管理161可与例如硬件加密存储设备的硬件密码支持160互操作以便实现以下描述的重新加密能力162。计算设备100可以在使用对一个或多个远程计算机的逻辑连接的联网环境中操作。为了说明简便起见,计算设备100在图1中被示为连接到不限于任何特定网络或联网协议的网络180。图1中所描绘的逻辑连接是通用网络连接171,其可以是局域网(LAN)、广域网(WAN)或其他网络。计算设备100通过网络接口或适配器170来连接到通用网络连接 171,该网络接口或适配器又连接到系统总线121。在联网环境中,相对于计算设备100或其部分或外围设备所描绘的程序模块可被存储在通过通用网络连接171被通信耦合到计算设备100的一个或多个其他计算设备的存储器中。可以理解,所示的网络连接是示例性的, 且可以使用在计算设备之间建立通信链路的其他手段。转向图2,所示系统200示出示例性步骤序列,通过该示例性步骤序列可重新加密数据,同时利用诸如图1中所示硬件加密硬盘驱动器141的硬件密码支持160等独立密码代理。如图2中所指示的,用于此重新加密的存储设备的数据存储容量在一个给定时间点由配置210示出,并在一后续时间点由配置220示出。动作270和280可发生在这些时间点之间,其中配置210和220以及动作270和280之间的时间关系可由图2左侧存在的“时
间箭头”来表示。出于以下描述的目的,将被重新加密的数据可以是初始加密区域的一部分,在以下描述和图示中命名为“加密区域A”。如前所示,加密区域可以与单个密钥相关联以使得作为加密区域一部分的数据通过以加密形式被存储来得到保护,所述加密形式是参考与该密码区域相关联的密钥而生成的。因此,将被重新加密的数据,作为加密区域A的一部分, 可最初以加密形式被存储,所述加密形式是参考与加密区域A相关联的密钥而生成的。为了重新加密该数据,使得不再以参考与加密区域A相关联的密钥生成的加密形式来存储, 并且相反地,以参考不同密钥生成的加密形式来存储,该数据可被移动到一不同的、后续的加密区域,在以下描述和图示中被命名为“加密区域B”。如本领域技术人员可以理解的,因为加密区域B不同于加密区域A,用于加密存储在加密区域B中的数据的密钥不同于用于加密存储在加密区域A中的数据的密钥。由此,将数据从加密区域A移动至加密区域B影响数据的重新加密,因为它不再由与加密区域A相关联的密钥来加密,而是相反地用与加密区域B相关联的密钥来加密。以此方式,数据的实际重新加密由传统承担对写入存储设备的数据进行加密和对读取自该存储设备的数据进行解密的独立密码代理来执行。如图2中系统200所示,来自加密区域A 261的将被重新加密的数据块251 (例如通过将其移动到加密区域B 241)可从加密区域A 261被复制到例如计算设备的短期存储器230中,作为块的副本253。如本领域技术人员可认识到的,短期存储器230可以是以上结合图1的计算设备100所参考的计算机可读存储介质中的任一种,但最有可能为RAM 132。一旦完成块251到计算设备的短期存储器230的复制,如图2的系统200中动作270所示,加密区域A 261可收缩与块251相等的量。随后,并由此根据图2的时间箭头指示符在以下示出,加密区域B 241可如动作280所示被扩展。如复制动作292所示,一旦完成区域B 241的扩展观0,保持在短期存储器230中块的副本253可以被复制到新扩展的加密区域B M2,其中该副本将被存储为块252。如本领域技术人员可以认识到的,在配置 220中,块252的数据可以加密形式被存储,其中此数据是参考与新扩展的加密区域B 242 相关联的密钥来加密的,并可由此从块251中的其原始状态被重新加密,在块251中该数据可能已经以参考与加密区域A 261相关联的密钥所生成的加密形式被存储。如图2的系统200中相同相对水平布局所示,块252可被存储在存储设备上与块 251相同的“位置”中。如此处所使用的,术语“位置”旨在指代用于定位存储在存储设备上的数据的寻址或其他标识。因为块252可被存储在与块251相同的位置中,所以在图2中示例性示出的重新加密的结束处,无需修改标识各种加密区域和数据位置的结构来说明该重新加密。可以等效方式对加密区域A 262中的全部剩余数据重复在图2的系统200中参考块251示出的机制。最终,如本领域技术人员可推导出的,加密区域B将逐块扩展直到加密区域B包含先前由加密区域A所包含的全部位置,并且加密区域A将会被收缩至零大小区域。在一实施例中,如果零大小的加密区域没有被自动删除,那么可在此重新加密的结束处发出显式指示以便显式地从标识各种加密区域的结构中移除零大小的加密区域A。转向图3,所示系统300包括与先前参考图2所描述的各机制相同的机制,还具有可允许执行数据的重新加密,同时维护对除了在任何给定时间点处当前正被重新加密的数据以外的全部数据的可访问性的附加方面。出于简洁和一致性的目的,之前附图中未改变的元件在后续附图始终保留他们相同的附图标记。因此,如图3所示,再次参考该图左侧的时间箭头指示符,最初,对当前正被重新加密的块251的数据写311以及对块251的数据读 312可被拖延。一旦完成了当前未决的读和写,并且所有剩余的读312和写311都被拖延, 便可通过动作以如前所述的相同方式来复制块251。类似地,在通过动作四2复制回块252时,分别通过动作270和动作280进行的区域A的收缩以及区域B的扩展可同样地以如前所述的相同的方式来进行。一旦完成了复制动作四2,对块252的数据读322以及对块252的数据写321可被允许继续进行,并且可解除先前所实现的拖延。如前,剩余加密区域A 262中的诸如块251等连续的块可以类似方式被重新加密, 其中在复制动作291和区域调整动作270和280之前定向到这些连续块的读312和写311 被拖延,并随后在一旦完成复制动作292之后,便解除拖延。以此方式,存储设备上的数据, 除了正被重新加密的特定块的数据之外,可保持对诸如进程或者此存储设备通信耦合的一个或多个计算设备上执行的其他计算机可执行指令可访问。在一个实施例中,如图3系统300中所示,读312不是被拖延,而是被重定向到驻留在计算设备的短期存储器230中的块253。以此方式,至少就关于数据读312而言,正被重新加密的块251的数据即使在重新加密期间也可保持可以被访问。如本领域技术人员可认识到的,图2和图3中示出的并在以上详细描述的各重新加密机制可能不能够从诸如电源丢失或者其他意外中断等故障中恢复。更具体地,如果在加密区域A已经由动作270收缩之后,但是在块的副本253作为块252被存储在存储设备之上之前,短期存储器230中块的副本253丢失,那么该数据块可能被不可逆地丢失。转向图4,这里所示的系统400示出可提供容错以避免在诸如刚刚所述情况下的数据丢失的示例性机制。更具体地,如图4的系统400所示,先前所描述的复制动作291可用将块251作为块451复制到加密区域A 261的另一部分的复制动作491来扩充。虽然未在图中这样具体地命名,在此为了易于引用,此位置将被称为“记录位置”。配置410不同于先前所描述的配置210,因为在配置410中记录位置包括块的副本451。在一个实施例中, 除了块251的数据之外,块451还可包括描述块251的位置的头部。如将在以下详细描述的,此基于头部的位置信息可用于在故障的情况下恢复,并由此帮助提供容错。分别经由动作270和动作280进行的对区域A的收缩以及对区域B的扩展可然后如以上详细描述的继续进行。如果诸如电源丢失等故障发生并导致保留在计算设备的短期存储器230中的块253丢失,那么复制动作292可被复制动作492代替,所述复制动作492 将块451从记录位置中复制到加密区域B M2,作为如前所述的经重新加密的块252。当然, 如果没有这样的故障发生,那么复制动作292可如上详细描述的继续进行。因此,在图4中用虚线示出复制动作292和492以便表示他们彼此是替换的。在一个实施例中,复制动作491可利用已知的现有机制来确保块451是以非易失性的方式被存储的,如直接存储在非易失性的计算机可读存储介质上,而非存储在诸如通常在易失性计算机可读介质上维护的高速缓存中。作为一个示例,复制动作491可利用直写(write through)或者转储清除高速缓存语意来确保块451被直接存储在存储设备的非易失性计算机可读存储介质上。可任选地,在继续执行动作270和280之前,将对存储为块 451的数据进行复查,如通过证实块451的副本,将块451的散列值与块251的散列值进行比较,或者其他类似的复查等。如果正在执行由图4的系统400所示出的重新加密机制的同时发生故障,那么块 451可用于恢复,并且不丢失在故障时正被重新加密的块251的任何数据。更具体地,在最初执行时,图1中示出的密码管理161可首先检查记录位置中诸如块451等数据的存在,因为仅该记录位置中此类数据的存在可指示重新加密过程或许由于故障而在完成之前终止。一旦作出重新加密过程是在完成之前被终止的确定,可在以上详细描述的步骤序列内作出何时发生此终止的进一步的确定。此进一步的确定可检查加密区域A和加密区域 B的相对位置。例如,如果在加密区域A和B之间存在间隙,那么很有可能在由动作270执行的区域A的收缩之后,但在本应该已由动作280执行的区域B的扩展之前,该重新加密过程被终止。在这种情况下,如由图4中动作280所示,图1中示出的密码管理161可继续扩展区域B,并且随后如动作492所示,将块451的内容作为块252复制到新扩展的区域B 2420或者,如果在加密区域A和B之间没有发现间隙,那么可以作出动作270和280是否已经结合当前块251的重新加密而被执行,或者动作270和280是否尚未结合当前块251 的重新加密而被执行的确定。可参考块451来作出这样的确定。更具体地,在一个实施例中,如果块451头部中的位置字段标识加密区域A沈1,并且块451与加密区域A 261中的块251相匹配,则由于记录位置中的块451与仍然在“现有”的加密区域A 261中的块251相匹配,可确定动作270 和观0尚未被执行。因此,可以执行动作270和观0,之后执行如前所述的复制动作492。 或者,如果块451头部中的位置字段标识加密区域A沈1,但块451不与加密区域A 261中的块251相匹配,那么可确定在复制动作491期间发生了故障,并且处理可继续进行初始复制动作291和491,随后接着执行全部如上详细描述的动作270和观0以及复制四2。在另一实施例中,如果块451的头部中的位置字段标识加密区域B M2,并且块451与加密区域 B 242中的块252相匹配,那么可确定在重新加密过程的终止之前已经执行了动作270和 280以及确实执行了复制动作四2。因此,重新加密过程可以对后续块的选择继续,并相应地继续进行。在又一实施例中,如果块451的头部中的位置字段标识加密区域B M2,但块 451不与加密区域B中的块252相匹配,那么可确定已经执行过动作270和观0,因为,如本领域技术人员可认识到的,由动作280进行的加密区域B 242在块251的位置上的扩展本质上使得这些数据无意义,因为加密这些数据的密钥,即与加密区域A相关联的密钥,不再与此位置现在所属的加密区域相关联。因此,可确定动作270和观0已经被执行过,但是复制292至少在该重新加密终止之前尚未彻底完成。因此,在此情况下,如由复制动作492所示,重新加密过程可以将块451复制到块252来继续。在一个实施例中,在利用保留在记录位置中的块451以便从故障中恢复之前,可按诸如以上详细描述的方式来验证块451,如参考校验和或者其他此类算法验证。如果块 451对此验证失败,处理可继续进行初始复制动作291和491,并且随后执行全部如上详细描述的动作270和观0以及复制四0。转向图5,这里所示的系统500示出参考图4的系统400在以上详细描述的容错机制,不同之处在于现在执行这些机制,同时存储设备保持可由在通信耦合至存储设备的一个或多个计算设备上执行的计算机可执行指令访问。因此,如前参考图3的系统300所述,定向至当前正被重新加密的块251的读312和写311可被拖延直到其重新加密。在一个替换实施例中,如上详细所述,读312不是被拖延而是可被重定向至驻留在计算设备的短期存储器230中的块253。在另一替换实施例中,因为块251的副本不只作为块253驻留在短期存储器230中,还作为块451驻留在记录位置中,读312不是被拖延或重定向到块 253,而是可被重定向至该记录位置中的块451。如以上详细描述的在这些读312重定向至块253的情况下,至少就数据读312而言,读312重定向至块451可类似地用于保持所有的数据(包括当前正被重新加密的块251的数据)在线或可被访问。系统500的机制可随后以先前参考图4的系统400所描述的同样的方式来继续进行,不同之处在于,如图5的系统500所示,配置520与图4中示出的配置420不同可在于在在复制492完成之后,存储在记录位置中的块421可被显式地清除,如由已清除的块552 所示。同样地,如前一样,诸如直写或者转储清除高速缓存语义等机制可用于确保已清除的块552存储在非易失性计算机可读存储介质上。当对块252重新启用读322和更特别的写321时,如先前所详细解释的,块252的内容可以改变。如果重新加密过程在此刻被终止,如由于故障,那么上述通过利用块451从此故障中恢复的机制可能不能正确地操作,因为块451的头部中的位置字段可能指向加密区域B M2,但是由于被允许修改块252的内容的写321,块451可能不与块252相匹配。因此,用于在重新加密过程完成前从重新加密过程的终止中恢复的上述机制可被修改,以使得如果记录位置指向加密区域B 242但不与块252的内容相匹配,那么不是以上述方式再次执行复制动作492 (这将导致被允许发生的写321的盖写,并因此导致这些数据的丢失), 而是可做出对已清除的块阳2的引用。如果该记录位置的内容已经被清除,如由已清除的块552所示,那么可做出如下确定,即使块451的内容不与块252的内容相匹配,复制动作 492也已经成功地完成,并且块252的内容反映在此复制动作492完成之后如由写321引起的进一步的修改。因此,在这种情况下,重新加密可以对用于重新加密的加密区域A中后续块的选择继续。转向图6,根据一个实施例,这里所示的系统600示出对刚刚详细描述的图5的系统500的优化。更具体地,清除记录位置来生成图5中所示的已清除的块552的显式动作可被跳过,并且如果读322以及更加重要地写321被拖延再多一个周期,那么整个重新加密过程可由此被优化。因此,如图6中系统600所示,再次跟随由该图左边示出的时间箭头所示的时间流程,指向块251的读311和写312可被拖延,如复制动作291和491所指示的, 可将块251复制到计算设备的短期存储器以及记录位置,如动作270和280所指示的,可收缩加密区域A 261并可扩展加密区域B M1,所有这些都在以上被详细描述。随后,如替换复制动作292和492所示,块251的内容可作为块252被写回至新扩展的加密区域B 242 中,再次所有都在以上被详细描述。然而,在图6所示的系统600中,配置620可不同于之前所述的配置520,其中块 451可保留在记录位置中。可以完成块251的重新加密,作为新扩大的加密区域B 242中的块252,不同之处在于对块252的写321和读322可继续被拖延,同时重新加密在图6中被命名为“块原”651的后续块上开始。因此,如图6的系统600所示,后续块651的重新加密可开始于复制动作691和695,所述复制动作691和695可按与上述复制动作291和491 相同的方式将该后续块651的内容复制到计算设备的短期存储器以及记录位置中,作为块 655。一旦完成复制动作691和695,并完成对其的任何可任选的验证,那么对已经完成重新加密的块252的写321和读322可被启用并不再被拖延。以此方式,可跳过从记录位置中显式清除块451的内容,因为在故障的情况下,由于写321尚未被启用,所以块451将继续与块252相匹配直至已经开始后续块651的重新加密。在从此故障中恢复时,无需担心先前所述的由写321引起的对块252的盖写改变,记录位置的内容,即块451,可被复制到块252,因为直至由配置630所表示的时间之前将不会启用这样的写321,在该时间点上记录位置中的位置字段,即与后续块655相关联的头部, 将不再指向块252,而将指向后续块651。因此,没有理由来显式地清除记录位置中的内容以便用作故障恢复指南,从而可省略这一步骤,导致更高的效率。在另一实施例中,由图7的系统700示出,可通过避免将块251的所有数据作为块 451复制491到记录位置来实现效率。相反地,如图7的系统700所示,块251的组件,诸如各个扇区、组或者对块251的其他类似量化等,可具有为它们中的每一个计算的摘要值,并且如图7中示出的动作791所示,只有那些摘要值可被存储在记录位置中作为块扇区的摘要751。因此,配置710与先前所描述和示出的配置410的不同在于记录位置不包括块251 的副本,而是仅包括块扇区的摘要751。当然,如果在维护对数据的可访问性的同时利用这一实施例,由于该记录位置将不包含块251的相同副本,而将包括块扇区的摘要751,所以读312不能按先前所述的方式被重定向至该记录位置。如本领域技术人员可认识到的,比起复制块251的所有数据,可更高效地将各个块扇区的摘要到记录位置作为块扇区的摘要 751。过程可随后如先前所述继续进行,不同之处在于,在可导致计算设备的短期存储器230中块253的丢失的故障的情况下,不是将块451从记录位置中复制到新扩展的加密区域B 242中的块252,而是可进行比较动作792,由此将块252的各个扇区或者其他组件的摘要与存储在记录位置中作为块扇区的摘要751的那些相同扇区或者其他组件的摘要进行比较。更具体地,如果该记录位置中的位置字段标识加密区域A沈1,那么可从初始复制动作中进行恢复。然而,如果该位置字段标识加密区域B M2,那么可执行比较动作 792。虽然比较动作792被示为直接在摘要751和块252之间发生时,但是实际上这样的比较动作很可能是更高效的,并将因此很可能在短期存储器230内执行,如通过首先将块252 复制到短期存储器230并在那里计算各相关摘要来执行。如所示的,摘要比较792可以在逐扇区的基础上进行,以使得如果一个扇区的摘要匹配,那么该比较可继续进行至下一个扇区。最终,可作出关于块扇区的摘要751是否与作为新扩展的加密区域B 242的一部分的块252的数据相匹配的确定。这样的比较可标识在重新加密过程期间何时发生故障。更加具体地,如果摘要相匹配,那么处理可以下一个块继续。如果摘要不相匹配,那么可撤销动作270和观0,并且类似于刚刚所述的比较动作792的比较动作可在块251 (现在返回作为加密区域A 261的一部分)和摘要751之间进行。如果,某些摘要最初相匹配,那么该比较可继续进行直到摘要不再相匹配,此时块251中的数据可用块扇区的摘要751的摘要信息来重构。在块251的数据被重构之后,处理可再次以对块251的重新加密继续。然而,为了完全恢复,可利用能保证扇区要么被写要么没有被写的存储设备。如果扇区没有被写,那么原始数据保持不变,如果扇区被写,那么新数据被写入,并且在两种情况下,这些动作可以是原子的。如果利用在诸如电源故障等故障上简单“撕裂”的存储设备,并且没有完成扇区写,那么损坏的或者坏的组可保持不变且可能不能实现容错。另外,如在一个实施例中示出的,可能需要撤销在改变加密区域A和B的大小时进行的动作270和观0,并且在此实施例中,可利用能提供这种撤销的加密机制。虽然以上描述已经针对其中经重新加密的数据被存储在相同的位置中的重新加密方法,但是在其他实施例中,经重新加密的数据可以被存储在偏移其原始位置的位置中。 如将示出的,这种“非原地”重新加密可以被更高效地执行,但可能要求分区表或其他类似寻址信息或其他此类数据库可被调整以便解决数据位置中的“移位”。另外,对于这种将被执行的“非原地”重新加密,可在加密区域之间建立间隙以使得无需重新格式化存储设备或者至少对加密区域的重新调整,将被重新加密的第一个块或者最后一个块都有可被存储的某个位置。如本领域技术人员可认识到的,所提及的“移位”可以是逻辑移位,因为存储此信息的实际物理位置可取决于该存储设备所利用的存储机制和存储介质而极大地变化。转向图8,这里所示的系统800示出用于执行此“非原地”重新加密的一个示例性机制。最初,配置810可类似于以上详细描述的那样而存在,除了加密区域B 241可包括类似于无意义数据852的无意义数据859的扇区以外,其创建和出现以下被更详细地描述。随后,块251的内容可被复制到块851,所述块851是加密区域B 241的一部分。在一个实施例中,块851可以在加密区域B 241和加密区域A 261之间的边界处,以使得块851,尽管是加密区域B 241的一部分,但是与在加密区域A 261的边缘处的块251相邻。然而,在其他实施例中,无意义数据859的大小可大于块851的大小,以使得块851不直接与加密区域 A 261相邻。配置210之后的配置820可由此包括具有经重新加密的块851的加密区域B 对1,连同包括原始的未经重新加密的块251的加密区域A沈1,其中加密区域B 241和加密区域A 261都尚未被调整以解决作为经重新加密的块851的块251的重新加密。相反地, 仅在已经建立了配置820之后,才可执行如由动作270示出的加密区域A 261的收缩以及如由动作280示出的加密区域B 241的扩展,所有都在以上详细描述。加密区域调整动作270和280的结果可以是图8中示出的配置830,其中新扩展的加密区域B 242包括经重新加密的块851以及与其相邻的、在新扩展的加密区域B 242和新收缩的加密区域A 262之间的新边界处的无意义数据块852,所述无意义数据块852在其与和加密区域A 261相关联的密钥相关联时曾是块251。后续块651可随后被复制到新扩展的加密区域B 242中并仅盖写无意义数据852。以此方式,可完成先前与加密区域A相关联的所有数据的重新加密,不同之处在于,如本领域技术人员可认识到的,经重新加密的数据的位置将通常以至少与一个块一样大的量偏移原始加密的数据的位置。因此,可能需要调整分区表、寻址数据库或者其他此类寻址和定位信息来解决数据位置中的这种“移位”。如果在图8所示的过程期间发生故障,那么基于加密区域A和B之间的间隙的存在(如果有的话),重新加密过程可继续。更具体地,如果在动作270的执行已经完成之后, 但是在动作观0的执行已经完成之前发生故障,那么在加密区域A 262和加密区域B 241 之间可存在间隙。在此情况下,重新加密可以动作观0的执行而继续。如果不存在这样的间隙,那么从故障中恢复的重新加密可以复制动作891继续。如前所述,可执行该重新加密机制,同时数据保持可由在耦合到其数据正被重新加密的存储设备的一个或多个计算设备上执行的计算机可执行指令访问。转向图9,这里所示的系统900示出了参考图8描述的重新加密机制,不同之处在于,其数据正被重新加密的存储设备保持可被访问。因此,如上所述,对正被重新加密的块251的写311和读312可被拖延直到其重新加密。一旦已经完成此重新加密,如块851,可允许继续进行写921和读 922,不同之处在于,如图9的系统900所示,写921和读922的寻址或其他位置标识信息可被调整来解决经重新加密的块851的位置相对于之前原始加密的块251的移位。更具体地,尽管可如前所示在各加密区域之间建立间隙,但在一个实施例中,可使此间隙对于诸如在图1中所示的操作系统134和其他程序模块135不可见。因此,虽然诸如图9的系统900 中的加密区域B 241等已经被重新加密的加密区域的大小可能已经被增加,但是诸如加密区域A 261等尚未被重新加密的加密区域的大小可保持不变。因此,尽管对加密区域A 261 内的位置的读和写可因此被通过,对加密区域B 241内的位置的读和写可按间隙的大小被移位。对诸如图9中示出的系统900的块251等正被重新加密的块的读和写可被拖延,并可在该块完成时被调整以便解决该移位。在一替换实施例中,加密区域B 241的读和写可被通过,而那些定向至加密区域A 261的读和写可按间隙的大小被移位。在此实施例中,对诸如块251等正在被重新加密的块的读和写可被拖延,并可在该块完成时被改变以便不再解决移位,而是可在无需调整的情况下被通过。尽管以上描述已经对诸如块251等数据块作出参考,仍尚未显式地定义此块的大小。在一个实施例中,块的大小在整个重新加密过程期间可保持静态。然而,在一替换实施例中,给定对计算资源的任何适用的约束的条件下,该块的大小可被动态地调整及优化,然后存在。更具体地,如果例如其上正在执行此重新加密的存储设备在该重新加密正被执行的同时保持可被访问,那么较小的块大小可降低任何重新加密的即时影响,因为此较小的块大小可导致较少的读和写被拖延以及以其他方式被延迟。然而,较小的块大小可能增加重新加密的持续时间,因为对于任何给定量的将被重新加密的数据,将需要诸如通过上述机制来处理更多数量的块。相反地,较大的块大小可减少重新加密的持续时间,因为对于任何给定量的将被重新加密的数据,将需要处理更少数量的块。但是如果其中正在执行重新加密的存储设备保持可被访问,那么此较大的块大小可增加重新加密的即时影响,因为较大的块大小可能导致更多数量的读和写被拖延以及以其他方式被延迟。因此,该替换实施例构想了该块大小的动态调整,以使得当需要增加的输入/输出吞吐量时利用较小的块大小,而当需要增加的重新加密的速度时利用较大的块大小。转向图10,这里所示的流程图1000示出示例性的一系列初步步骤,所述初步步骤可作为以上详细描述的重新加密机制的一部分来执行。具体地,如所示,可在步骤1010处启动重新加密。随后,在步骤1020处,可作出要执行“原地”还是“非原地”重新加密的确定。如果在步骤1020处,确定正在被执行的是“非原地”重新加密,那么可在步骤1025处作出关于在重新加密过程期间是否要将正被重新加密的卷或者其他存储元件或划分保持在线的确定。如果在步骤1025处,确定将在卷保持在线的同时执行重新加密,那么处理可根据图19中示出的步骤继续进行。或者,如果在步骤1025处确定可离线执行该重新加密, 那么处理可根据图18中示出的步骤继续进行。如果在步骤1020处确定将执行“原地”重新加密,那么可在步骤1030处作出类似的确定。如果在步骤1030处,确定将在卷保持在线的同时执行重新加密,那么可在步骤 1040处作出随后确定来确定是否将以容错方式来执行该重新加密。如果在步骤1040处确定并不需要容错,那么处理可根据图14中示出的步骤继续进行。相反地,如果在步骤1040 处,确定将以容错方式来执行“原地”重新加密,那么可在步骤1050和1060处分别作出进一步确定来确定是要采用对诸如利用摘要的容错机制的优化还是对诸如避免显式清除步骤的容错机制的优化。如果在步骤1050和1060处,确定将不采用这两个优化中的任一个, 那么处理可根据图15中示出的步骤继续进行。然而,如果将采用如步骤1050所确定的涉及摘要的利用的优化,那么处理可根据图17中示出的步骤继续进行,而如果将采用如步骤 1060所确定的涉及跳过显式清除步骤的优化,那么处理可根据图16中示出的步骤继续进行。在未具体由图10的流程图1000示出的另一实施例中,可同时而排他地利用这两种对容错机制的优化。一起利用两种优化仅是以上单独所描述的各机制的直接组合,且因此不在附图中被进一步描述或者示出。返回到步骤1030处的判决,如果确定在卷保持在线的同时无需执行“原地”重新加密,那么处理可进行至步骤1045,此时可作出关于是否要以容错方式来执行重新加密的判决。如果在步骤1045处,确定无需以容错方式来执行该重新加密,那么处理可根据图11 中示出的步骤继续进行。然而,如果在步骤1045处,确定需要以容错方式来执行该重新加密,那么可在步骤1055处作出关于是否将采用涉及利用摘要的优化的进一步判决。如果在步骤1055处,确定无需采用此优化,那么处理可根据图12中示出的步骤继续进行,然而,如果在步骤1055处确定应当采用此优化,那么处理可根据图13中示出的步骤继续进行。如本领域技术人员可认识到的,以上参考图10的流程图1000所描述的各判决可以是由人类用户例如通过用户接口来作出的判决,所述用户接口可由例如图1中示出的密码管理161来呈现。或者,可基于预先建立的偏好来作出流程图1000的各判决,所述偏好可存储在例如注册数据库或者其他类似构造中。转向图11,如果,基于图10的流程图1000的判决,确定将执行原地的、离线的、没有容错的重新加密,那么处理可继续进行图11的流程图1100的步骤。如本领域技术人员可认识到的,存储设备无需实际上“离线”,相反,图1中示出的计算设备100上的执行过程 (例如也在图1中示出的密码管理161)可简单地使存储设备看上去“离线”并且不可用于读写来自此计算设备上执行的其他计算机可执行指令的请求。因此,以下描述的流程图可包括可由在图1的计算设备100上执行的计算机可执行指令(如密码管理161)所执行的步骤,但是该存储设备被指示为名义上的“离线”。转向图11,首先,在步骤1110处,可从一存储介质中读取将被重新加密的数据块。随后,在步骤1120处,可收缩最初包含该块的加密区域以便不再包括在步骤1110处所读取的数据块的地址或者其他形式的位置。在步骤 1130处,可扩大替换加密区域以便包括那些地址。随后,在步骤1140处,在步骤1110处所读取的数据块可被写回至诸如相同地址等相同的位置,在所述位置中先前曾保存过该数据块,不同之处在于,如所示,所述位置现在可以是替换加密区域的一部分。作为步骤1140的可任选组成部分,可证实或者以其他方式验证该数据块以便确保步骤1140处对数据块的写入是在没有出错的情况下执行的。在步骤1150处,可以作出关于是否有附加数据留待被重新加密的确定。例如,此确定可参考在步骤1120处被收缩的加密区域以便确定该加密区域的大小现在是否为零。 如果现有加密区域的大小不为零,或者在步骤1150处以其他方式确定有附加数据留待被重新加密,那么可在步骤1160处选择将被重新加密的后续数据块,且处理可随后返回至步骤1110并重复以上描述的各步骤。然而,另选地,如果在步骤1150处确定没有附加数据留待被重新加密,那么该重新加密过程可如所示地在步骤1170处结束。
转向图12,如果,基于图10的流程图1000的判决,确定将执行原地的、离线的、容错的重新加密,那么处理可继续进行图12的流程图1200的步骤。在图12的流程图1200 中,与上述那些参考图11的流程图1100的步骤相同的步骤保留他们相同的数字标识符,且为简明起见,不再重复其描述。如可从流程图1200中看到的,可以使得以下参考图11的流程图1100详细描述的重新加密通过增加步骤1210来变得容错,所述步骤1210可在步骤 1110和1120之间插入。更具体地,在将要被重新加密的数据块已经在步骤1110处被读取之后,可在步骤1210处将其复制至记录位置。作为步骤1210的可任选的组成部分,可证实或者以其他方式验证记录位置中该块的副本以便确保到该位置的复制是在没有出错的情况下执行的。如先前所详细描述的,在步骤1210处对记录位置的数据写可使用直写高速缓存语义或者其他机制来执行以便确保以非易失性方式来执行对该记录位置的数据写。转向图13,如果,基于图10的流程图1000的判决,确定将执行原地的、离线的、容错的重新加密,并且随后在实现容错时要利用基于摘要利用的优化,那么处理可继续进行图13的流程图1300的步骤。如前,与上述参考先前所描述的流程图而描述的那些步骤相同的步骤保留他们相同的数字标识符,且为简明起见,不再重复其描述。在图13的流程图 1300中,将被重新加密的数据块在已经在步骤1110处被读取之后,并非如步骤1210中将其复制到记录位置,相反地,该块的各扇区或者该块的其他量的摘要在步骤1310处被计算并被存储在该记录位置中。处理可随后按已经详细描述过的方式继续进行。转向图14,如果,基于图10的流程图1000的判决,确定将执行原地的、在线的、 没有容错的重新加密,那么处理可继续进行图14的流程图1400的步骤。如前,与上述参考先前所描述的流程图所述的那些步骤相同的步骤保留他们相同的数字标识符,且为简明起见,不再重复其描述。首先,在先前所描述的读取将被重新加密的数据块的步骤1110之前,可在步骤1410使对该块的所有读和写都待决。可任选地,不是将来自该块的读和对该块的写都待决,而是可仅使对该块的写被待决,而读可被重定向至存储器位置,在后续步骤 1110处可在该存储器位置读取该块。虽然对读的这种任选的重定向被示为步骤1410的一部分,但是其可能在步骤1110之后执行,因为,如本领域技术人员已知的,可能直至所述步骤完成之后才知道在步骤1110处读取该数据块的存储器位置。步骤1410的括号中的“(> 1110) ”意味着传达对存储器的重定向可能在步骤1110之后发生。随后,在步骤1410处被待决的读和写可在步骤1420处被允许,且可如所示地停止使定向到该块的将来的读和写待决。同样地,可任选地,如果读被重定向至该块,例如被保留在存储器中,可在步骤1420 处停止这种重定向并且可将该读返回到从该块的存储器位置中读取数据。转向图15,如果,基于图10的流程图1000的判决,确定将执行原地的、在线的、容错的重新加密,那么处理可继续进行图15的流程图1500的步骤。如前,与上述参考之前所描述的流程图所述的那些步骤相同的步骤保留他们相同的数字标识符,且为简明起见,不再重复其描述。如图15的流程图1500所示,在将要被重新加密的数据块已经在步骤1110 处被读取之后,可在步骤1510处将该数据块复制至记录位置。步骤1510可不同于先前参考图12所描述的步骤1210,因为,作为步骤1510的可任选的组成部分,不仅可如前所述的证实副本,而且可将作为步骤1410的可任选的组成部分的被重定向至存储器的读重定向至该记录位置,作为步骤1510的可任选的组成部分。图15的流程图1500的其余步骤已经全部在以上单独地、详细地被描述,除了在数据块已经在步骤1140处被写回至其原始位置之后,该原始位置是替换加密区域的一部分,出于以上详细描述的原因,可在步骤1520处清除该记录位置。转向图16,如果,基于图10的流程图1000的判决,确定将执行原地的、在线的、容错的重新加密,并且该容错将通过跳过记录位置的显式清除步骤来优化,那么处理可继续进行图16的流程图1600的步骤。如前,与那些参考之前所描述的流程图所述的那些步骤相同的步骤保留他们相同的数字标识符,且为简明起见,不再重复其描述。如可从图16的流程图1600中看到的,对读加密的数据块的读和写,或者可任选的,至少是写可如前所述地在步骤1410处被待决。然而,这样的待决或者重定向,在步骤1140之后不被如前那样被解除,反而在到达步骤1610之前保持额外的周期。在步骤1610处,可停止定向至先前刚被重新加密的块的所有待决的读和写。可任选的,如果仅写被待决,而读被重定向,那么随后可在步骤1610处停止此读的重定向。以此方式,之前作为步骤1210所述的记录位置的显式清除无需是图16的流程图1600的组成部分。如本领域技术人员可认识到的,因为步骤1610应用于先前被重新加密的块,当在步骤1150处,确定没有附加数据留待被重新加密时,在步骤1170处结束之前,处理可重新访问步骤1610以确保对最后一个块的读和写被停止。为便于可视呈现,此最后步骤未在图16的流程图1600中被显式地示出。转向图17,如果,基于图10的流程图1000的判决,确定将执行原地的、在线的、 容错的重新加密,并且该容错将通过利用摘要来优化,那么处理可继续进行图17的流程图 1700的步骤。虽然,如前,与上述参考先前所描述的流程图所述的那些步骤相同的步骤保留他们相同的数字标识符,且为简明起见,不再重复其描述,但是图17的流程图1700不包括先前未描述的步骤。相反可看到,图17的流程图1700本质上是图13的流程图1300和图 14的流程图1400的合并,并且因此完全基于先前已经详细描述过的步骤。转向图18,如果,基于图10的流程图1000的判决,确定将执行非原地的、离线的重新加密,那么处理可继续进行图18的流程图1800的步骤。在一个实施例中,如先前指示的,为了执行非原地重新加密,可能已经在加密区域之间建立了间隙,如在存储介质的初始化期间。然而,在一替换实施例中,可在该重新加密开始之前创建此间隙,在这种情况下,图 18中示出的流程图1800和图19中示出的流程图1900可在那些流程图的开始处具有未被显式地示出的附加步骤以便创建此间隙。更具体的,如果图1中示出的密码管理161在分区管理器之下操作,那么分区表可在该重新加密过程的结束处仅被更新一次,并且读和写可在各块被写到加密区域B 241中之后被重定向到这些块,如图9所示并如上详细描述的那样。相反地,如果图1中示出的密码管理161在分区管理器之上操作,那么图9中示出的加密区域B 241可在该重新加密过程之前被扩展并在该重新加密过程之后被收缩。在此实施例中,显式间隙创建步骤可以是图18的流程图1800和图19的流程图1900的一部分,并且在此实施例中,如前所示,图9中示出的对加密区域A 261的读和写可移位,而同样在图 9中示出的加密区域B 241的那些读和写保持未移位。转回至图18的流程图1800,如前, 与上述参考先前所描述的流程图所述的那些步骤相同的步骤保留他们相同的数字标识符, 且为简明起见,不再重复其描述。在图18的流程图1800中,将被重新加密的数据块在步骤 1110处被读取之后,可在步骤1810处将其写回至存储介质的一位置中,该位置与其在步骤 1110处被读取的位置相邻但是替换加密区域的一部分。作为步骤1810的可任选的组成部分,可证实或者以其他方式验证被写回至替换加密区域的数据块的副本,以便确保复制过程成功地完成并且没有差错。仅在该数据块已经被重新加密之后,由于在步骤1810处被写回至是替换加密区域的一部分的位置,该处理可继续进行以上详细描述的步骤1120和 1130。在完成该重新加密之后,如可在步骤1150处确定的,当发现没有附加数据留待被重新加密时,可根据经重新加密的数据的新位置来重新对准分区表或者维护寻址信息的其他表或数据库,所述新位置可如先前所解释的那样,作为步骤1810处的写的结果,被“移位” 至与其之前位置相邻的位置。在步骤1820处的重新对准可解决这样的“移位”。转向图19,如果,基于图10的流程图1000的判决,确定将执行非原地的、在线的重新加密,那么处理可继续进行图19的流程图1900的步骤。如前,与上述参考之前所描述的流程图所述的那些步骤相同的步骤保留他们相同的数字标识符,且为简明起见,不再重复其描述。在图19的流程图1900中,在步骤1110处读取将被重新加密的数据块之前,对该块的读和写可在步骤1910处被待决。步骤1910与之前详细描述的步骤1410的不同在于在步骤1910处,可能不存在用于仅待决对该块的写并将读重定向至存储器中的副本的选项。相反地,由于在步骤1110处读取的数据块在步骤1810处被直接写回至存储介质,所以无需将读重定向至存储器,因为他们可被重定向至新的经重新加密的块。因此,如图19的流程图 1900所示,在步骤1920处,步骤1910中的读和写的待决可被解除,并且对该块的待决的以及未来的所有读和写可被重定向至在步骤1810处被存储在替换位置中的经重新加密的块的替换位置。处理可继续进行所示出的步骤,其每一个都在以上被详细描述。在步骤1930 处,在结束之前,在步骤1170处,可按与先前描述的步骤1820中相同的方式来重新对准分区表。然而,除了如在步骤1820中重新对准分区表之外,步骤1930还可包括在此重新对准之后,停止已经在步骤1920处实现的任何重定向,因为,如本领域技术人员可认识到的,这些重定向在该重新对准之后将不再有效。处理可随后如示在步骤1170处结束。如从以上描述可以看出,已经提供了可利用独立加密代理的重新加密机制。鉴于此处所描述的主题的许多可能的方案,作为本发明,我们声明所有这样的实施方式都在下面的权利要求书以及又等效内容的范围和精神内。
权利要求
1.一种利用至少一个独立密码代理来执行一组数据的重新加密的方法,所述至少一个独立密码代理执行步骤包括在存储之前加密数据并在从存储中读取之后解密数据,两者都是参考与加密区域相关联的密钥来执行的,以使得第一加密区域061,262)中的数据是参考与第一加密区域061 二6 相关联的第一密钥来加密及解密的,第二加密区域041, 242)中的数据参考与第二加密区域041, 相关联的第二密钥来加密及解密的,所述第一和第二密钥彼此不同且彼此独立,所述方法包括以下步骤从所述第一加密区域061,262)中的所述一组数据中读取第一数据块051,252);将所述第一数据块051,252)写入所述第二加密区域041,242)中;根据所述第一数据块051,252)的大小收缩所述第一加密区域061,262);根据所述第一数据块051,252)的大小扩展所述第二加密区域041,242);并对所述第一加密区域061,262)中所述一组数据中的连续数据块重复所述读取、写入、收缩以及扩展,直至所述第一加密区域061,262)中的所述一组数据中的全部数据都已经被写入所述第二加密区域041,242)中,且直到所述第一加密区域061,262)已经被缩减至零大小,而所述第二加密区域041,242)已经被扩展至所述第一加密区域(沈1, 262)在重新加密之前的大小。
2.如权利要求1所述的方法,其特征在于,所述收缩收缩所述第一加密区域以便不再包括所述第一加密区域中所述第一数据块的原始位置,所述扩展扩展所述第二加密区域以便现在包括所述第一数据块的所述原始位置;将所述第一数据块写入所述第二加密区域是在所述收缩和扩展之后执行的,且将所述第一数据块写入在所述第一数据块的原始位置中,不同之处在于,该原始位置现在位于经扩展的第二加密区域中。
3.如权利要求2所述的方法,其特征在于,还包括下列步骤将所述第一数据块写入一记录位置以便为在该组数据的重新加密期间所遭受的故障提供容错。
4.如权利要求2所述的方法,其特征在于,还包括下列步骤计算所述第一数据块中至少一些扇区的摘要;并将所计算的摘要写入一记录位置以便为在该组数据的重新加密期间所遭受的故障提供容错。
5.如权利要求2所述的方法,其特征在于,还包括下列步骤在发起对该组数据的重新加密之前,检查记录位置;并且,如果该记录位置存在,那么从该组数据先前故障终止的重新加密中开始恢复。
6.如权利要求5所述的方法,其特征在于,还包括通过执行以下步骤来从所述先前故障终止的重新加密中恢复,所述步骤包括确定所述第一加密区域和所述第二加密区域是否相邻;如果所述第一加密区域和所述第二加密区域不相邻,那么用所述扩展来重启所述重新加密;如果所述第一加密区域和所述第二加密区域相邻,那么确定所述记录位置的内容是指向并匹配于所述第一加密区域中的第一数据块,还是指向并匹配于被写入所述第二加密区域中的第一数据块;如果所述第一加密区域和所述第二加密区域相邻且所述记录位置的内容指向并匹配于所述第一加密区域中的第一数据块,那么用所述收缩和所述扩展来重启所述重新加密;如果所述第一加密区域和所述第二加密区域相邻且所述记录位置的内容指向但并不匹配于所述第一加密区域中的第一数据块,或者所述记录位置的内容验证失败,那么用所述读取、写入、收缩和扩展来重启所述重新加密;如果所述第一加密区域和所述第二加密区域相邻且所述记录位置的内容指向并匹配于被写入所述第二加密区域中的第一数据块,那么用清除所述记录位置来重启所述重新加密,之后进行所述重复;如果所述第一加密区域和所述第二加密区域相邻且所述记录位置的内容指向但并不匹配于被写入所述第二加密区域中的第一数据块,那么用所述写入来重启所述重新加密,之后进行所述重复;以及如果所述第一加密区域和所述第二加密区域相邻且所述记录位置的内容已经被清除, 那么用所述重复来重启所述重新加密。
7.如权利要求2所述的方法,其特征在于,还包括下列步骤在所述读取和写入之前使定向至所述第一加密区域中的第一数据块的读和写待决;并在所述写入之后停止所述待决。
8.如权利要求7所述的方法,其特征在于,还包括以下步骤将所述第一数据块写入所述第一加密区域中的一记录位置以便为在该组数据的重新加密期间所遭受的故障提供容错;并将被待决的读重定向至所述记录位置中的第一数据块。
9.如权利要求2所述的方法,其特征在于,还包括以下步骤在所述读取和写入之前使定向至所述第一加密区域中的第一数据块的读和写待决;并仅在将来自所述第一加密区域中该组数据中的第二数据块写入至记录位置之后停止所述待决,所述第二块紧接着所述第一块。
10.如权利要求1所述的方法,其特征在于,所述将所述第一数据块写入所述第二加密区域在与所述第一加密区域中的第一数块的原始位置相邻的位置中写入所述第一数据块; 且所述收缩收缩所述第一加密区域以便不再包括所述第一加密区域中的所述第一数据块的原始位置,而所述扩展扩展所述第二加密区域以便现在包括所述第一数据块的所述原始位置。
11.如权利要求10所述的方法,其特征在于,还包括以下步骤重新对准分区表以便解决所述第一加密区域中该组数据的原始位置与被写入所述第二加密区域中的该组数据的新位置之间的移位。
12.如权利要求10所述的方法,其特征在于,还包括以下步骤在所述读取和写入之前使定向至所述第一加密区域中的第一数据块的读和写待决;在所述写入之后停止所述待决;以及调整读和写以便解决与所述第一加密区域中的第一数据块的原始位置相邻的所述第二加密区域中的第一数据块的位置。
13.如权利要求10所述的方法,其特征在于,还包括以下步骤创建至少两个分区以使得在所述至少两个分区之间存在间隙,所述间隙至少与所述第一数据块一样大。
14.如权利要求1所述的方法,其特征在于,如果要更快地执行所述重新加密,那么增大所述第一数据块的大小,如果要增加所述第一组数据的输入/输出吞吐量,那么减小所述第一数据块的大小。
15.一种或多种包括用于执行权利要求1的步骤的计算机可执行指令的计算机可读介质。
全文摘要
可用独立密码代理来执行数据的重新加密,所述独立密码代理可根据密码区域来自动加密及解密数据,以使得单个密码区域内的数据用相同的密钥加密及解密。可通过从现有密码区域中的块中读取数据,收缩现有密码区域超过该块,将替换密码区域扩展到该块上并随后将数据写回至现在是替换密码区域的一部分的相同位置来执行“原地”的重新加密。可通过从现有密码区域中的块中读取数据,并随后将该数据写回至与作为替换密码区域的一部分的直接相邻的位置来执行“非原地”重新加密。在所述经重新加密的数据被“移位”后,可适当地扩展及收缩各密码区域,并选择另一块。
文档编号G06F21/24GK102262721SQ201110149829
公开日2011年11月30日 申请日期2011年5月24日 优先权日2010年5月25日
发明者D·G·莫斯, D·阿布扎瑞恩, G·B·利亚霍维斯基, I·巴斯莫夫, K·梅拉, O·T·乌雷彻 申请人:微软公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1