基于扇区映射的快速数据加密策略遵从的制作方法

文档序号:6375945阅读:179来源:国知局
专利名称:基于扇区映射的快速数据加密策略遵从的制作方法
基于扇区映射的快速数据加密策略遵从
背景技术
计算机可以在不同设置中使用,有时将会遵循特定策略。例如,在从个人计算机访问电子邮件之类的公司数据时,公司策略可能会规定个人计算机必须加密个人计算机的存储设备上存储的公司数据,以便授权访问公司数据。在遵从该策略之前,计算机可能无法访问特定公司服务,而是一直等待存储设备加密(根据存储设备大小而有可能等待大约数分钟或数小时)以使用公司服务,这样有可能会挫伤用户。

发明内容
本发明内容是为了以简化形式引入精选概念而被提供的,在以下的具体实施方式
部分中将会进一步描述这些概念。本发明内容的目的既不是确定所要求保护主题的关键特征或必要特征,也不是用来限制所要求保护的主题的范围。
根据一个或多个方面,在计算设备上接收激活用于该计算设备的策略的请求。所述策略指示在激活该策略之后计算设备写入存储卷的数据被进行加密。响应于该请求,该策略被激活以用于所述设备,包括在返回遵从策略的指示之后加密写入存储卷的数据,以及使用扇区映射(sector map)来标识存储卷中未加密的一个或多个扇区。此外,响应于该请求,即便存储卷的一个或多个扇区未被加密,也还是返回遵从策略的指示。根据一个或多个方面,为了遵从用于计算设备的指示在该策略被激活之后计算设备写入存储卷的数据被加密的策略,扇区映射将被访问。所述扇区映射标识存储卷的一个或多个扇区,此外还为存储卷的所述一个或多个扇区中的每一个扇区标识扇区内容的签名。如果所述扇区是存储映射中标识的一个或多个扇区之一,并且该扇区内容的签名与扇区映射中标识的扇区签名相匹配,那么响应于读取扇区内容的请求,在不解密扇区内容的情况下返回所述内容。否则,扇区的内容将被解密并且返回解密的内容。


在整个附图中将会使用相同的数字来参考相似的特征。图I是示出了根据一个或多个实施例来实施快速遵从数据加密策略的处理的例示计算设备的框图。图2示出了根据一个或多个实施例的例示扇区映射。图3示出了根据一个或多个实施例而被保持在存储器中并在存储设备上留存的扇区映射的示例。图4是示出了根据一个或多个实施例来实施快速遵从数据加密策略的处理的另一个例示计算设备的框图。图5是示出了根据一个或多个实施例来实施快速遵从数据加密策略的例示处理的流程图。图6是示出了根据一个或多个实施例的使用扇区映射来实施快速遵从数据加密策略的处理的另一个例示处理的流程图。
图7是示出了根据一个或多个实施例使用加密的组块(chunk)映射来实施快速遵从数据加密策略的处理的例示处理的流程图。图8示出了可以被配置成根据一个或多个实施例实施快速遵从数据加密策略的处理的例示计算设备。
具体实施例方式在这里论述的是快速遵从数据加密策略。可以产生计算设备使用的存储卷的扇区映射,该扇区映射标识存储卷的一个或多个扇区以及所述一个或多个扇区中每个扇区的内容的签名。扇区映射可以是在把操作系统安装到计算设备上之后不久(或是作为其一部分)产生的,或者作为替换,扇区映射可以是稍后在激活用于计算设备的策略之前产生。所激活的用于计算设备的策略指示在激活该策略之后计算设备写入存储卷的内容被加密。在激活了该策略之后,计算设备将会加密写入存储卷扇区的内容。此外,在激活了该策略之后,特定扇区中的内容既有可能是加密的,也有可能是未加密的。使用扇区映射来标识存储卷的哪些扇区具有加密内容,由此标识哪些内容在返回给请求方之前需要解密。·作为替换,可以产生计算设备使用的存储卷的加密组块映射,所述加密组块映射标识存储卷的扇区的组块。对存储卷的扇区的每一个组块,加密组块映射指示组块中的扇区是否加密(或是未被使用)。在激活了用于计算设备且指示在该策略被激活之后计算设备写入存储卷的内容被加密的策略之后,写入存储卷的数据将被加密。如果将数据写入未加密的组块(由加密组块映射确定),那么将会加密所述组块中的扇区,数据将被加密并写入扇区,并且加密组块映射将被更新,以便指示所述组块是加密的。是否解密那些从存储卷中读取的数据是基于从中读取数据的扇区是否未经加密(由加密组块映射确定)来确定的。在这里将会参考密码术,其中所述密码术可以包括对称密钥密码术、公钥密码术以及公钥/私钥对。虽然这些密钥密码术对于本领域技术人员而言是众所周知的,但是为了帮助读者,在这里包含了关于此类密码术的简要综述。在公钥密码术中,实体(例如用户、硬件或软件组件、设备、域等等)具有密钥(公钥和/或私钥)。公钥/私钥对中的公钥是公开可得到的,而私钥则是保密的。在没有私钥的情况下,通过计算来解密使用公钥加密的数据将会非常困难。在使用一些公钥密码术算法的情况下,数据可以由任何具有公钥的实体进行加密,并且只能被具有相应私钥的实体解密。此外,使用一些公钥密码术算法,可以通过使用数据和私钥来产生用于该数据的数字签名。在没有私钥的情况下,通过计算来创建可以使用公钥核实(verify)的签名将会非常困难。通过对公钥、签名以及已被签名的数据执行适当的数字签名核实算法,任何具有公钥的实体都可以使用所述公钥来核实数字签名。另一方面,在对称密钥密码术中,共享密钥(也被称为对称密钥)是为两个实体所知和保密的。通常,任何具有共享密钥的实体都能解密使用该共享密钥加密的数据。在没有共享密钥的情况下,通过计算来解密使用所述共享密钥加密的数据将会非常困难。因此,如果两个实体全都知道共享密钥,那么每个实体都可以加密数据,而另一方则可以解密数据,然而,如果其他实体不知道该共享密钥,那么所述其他实体无法解密该数据。同样,具有共享密钥的实体也可以加密数据,并且所述数据可被同一实体解密,然而,如果其他实体不知道共享密钥,那么所述其他实体将不能解密该数据。此外,基于例如使用了带密钥的散列消息验证码(authentication code)机制之类的对称密钥密码术,可以产生验证码或消息验证码。任何具有共享密钥的实体都可以产生并核实该验证码或消息验证码。例如,可信的第三方可以基于特定实体的身份来产生对称密钥,然后可以产生并核实用于所述特定实体的验证码或消息验证码(例如通过用对称密钥加密或解密数据)。图I是示出了根据一个或多个实施例来实施快速遵从数据加密策略的例示计算设备100的框图。计算设备100可以是多种不同类型的设备,例如物理设备或虚拟设备。举例来说,计算设备100可以是物理设备,例如台式计算机、服务器计算机、膝上计算机或上网本计算机、平板或笔记本计算机、移动站、娱乐设备、与显示设备可通信地耦合的机顶盒、电视或其他显示设备、蜂窝或其他无线电话、游戏控制台、车用计算机等等。计算设备100也可以是虚拟设备,例如在物理设备上运行的虚拟机。虚拟机可以在多种不同类型的物理设备中的任何一种(例如上文列举的多种不同类型中的任何一种)上运行。由此,计算设备100的范围可以是从存储器和处理器资源充足的全资源设备(例如个人计算机、游戏控制台)到存储器和/或处理资源有限的低资源设备(例如传统的机顶盒,手持游戏控制台)。计算设备100包括加密/解密控制模块102、读/写控制模块104、策略模块106、扇区映射108以及存储卷110。虽然在计算设备100中示出了特定模块102、104和106,然而应该指出,模块102、104和106中的一个或多个可以合并成单个模块,或者模块102、104和/或106中的一个或多个的功能可以分离到多个模块中。加密/解密控制模块102管理使用多种不同密码术技术中的任一技术(例如使用对称密钥密码术和/或公钥密码术)对存储卷110上存储的数据的加密和解密。存储卷110上保存的数据110指的是任何可被存储的信息,例如程序数据、用户数据、系统数据、指令或代码等等。通常,只有在得到授权的时候,加密/解密控制模块102才允许加密和/或解密数据。模块102可被授权来允许以不同的方式加密和/或解密数据。例如,只有在计算设备100的用户证明他或她拥有访问数据的有效证书之后,模块102才能被授权允许加密和/或解密数据。多种不同的证书都是可以使用的,例如关于密语(secret phrase)(例如口令)·的知识,与证书对应的私钥,临时秘密(例如一次性口令)等等。作为另一个示例,只有在检测到计算设备100处于特定状态(例如遵守特定策略)之后,模块102才可被授权允许加密和/或解密数据。作为另一个示例,只有在获取了在计算设备100中存储的或由计算设备100存储的特定加密和/或解密密钥之后,模块102才可被授权允许加密和/或解密数据。读/写控制模块104管理从存储卷110中读取数据以及将数据写入存储卷110的处理。这种读和写处理包括读取和写入加密数据(又称为密文)和未加密数据(又称为明文)。读/写控制模块104可以在适当的时候调用模块102来加密和/或解密所读取和/或写入的数据。策略模块106在计算设备100上实施不同的策略。每一个策略标识设备100将要遵循的一个或多个行为,例如要在设备100上运行的程序的类型(例如反恶意软件程序),设备100将要实施的安全类型(例如加密和解密数据)等等。在一个或多个实施例中,策略可以指示一旦在所述设备100上激活该策略(以及可选地在去激活该策略之前),就要对存储卷110上存储的数据进行加密。激活策略指的是在计算设备100上强制实施策略以及计算设备100遵从所述策略。策略模块106可以采用多种不同的方式来获取将要实施的一个或多个策略,例如被预先配置成具有一个或多个策略,接收关于一个或多个策略的用户输入(例如来自管理用户),接收来自远程服务器或服务的一个或多个策略等等。
存储卷110是可以用多种不同的技术实施的存储设备,例如闪存设备、磁盘、光盘及其组合等等。存储卷110还可以是存储设备的一部分,而计算设备和操作系统会在逻辑上将其视为存储设备。例如,存储卷可以是硬盘驱动器分区、闪存设备的一部分等等。存储卷110被示出为作为计算设备100的一部分而被包括。例如,存储卷110可以是与设备100的内部总线相耦合的内部存储设备,其中举例来说,所述存储卷是用串行高级技术附件(SATA)接口、并行ATA (PATA)接口、小型计算机系统接口( SCSI)接口等等耦合的。作为另一个示例,存储卷可以是作为与实施模块102-106中的一个或多个模块的芯片处于相同电路板上的一个或多个芯片来实施的内部存储设备,可以是与模块102-106中的一个或多个模块在相同芯片上实施的内部存储设备等等。作为替换,存储卷110可以位于计算设备100的外部,并且用多种不同的有线和/ 或无线方式耦合至计算设备100。例如,存储卷110可以经由通用串行总线(USB)连接、无线USB连接、IEEE 1394连接、外部SATA (eSATA)连接、Bluetooth连接等等耦合至计算设备100。存储卷110可被设计成与不同的计算设备(同时或者在不同时间)相耦合。在一个或多个实施例中,存储卷110是一个可移除卷,例如作为被设计成易于与计算设备100耦合和去耦合且易于转移至其他计算设备的存储设备的一部分。关于这种可移除存储卷的示例是拇指驱动器或USB闪存设备。作为替换,存储卷110还可以采用其他形式,例如经由网络(例如因特网、局域网(LAN)、蜂窝或其他电话网络、内部网、存储区域网(SAN)、网络附加存储器(NAS)、其他公共和/或专有网络及其组合等等)耦合至计算设备100的网络存储设备。存储卷110包括多个可以存储数据的扇区。保存在扇区中的数据也被称为扇区的内容。每一个扇区都是存储卷110的一部分,并且不同的存储卷可以具有不同的扇区大小(例如512字节、4k字节、8k字节等等)。通常,存储卷具有大小相同的扇区,然而作为替换,它也可以具有不同大小的扇区。扇区映射108标识存储卷110的一个或多个扇区以及所述一个或多个扇区中的每个扇区的内容的签名。以下将会更详细地论述扇区映射108和扇区内容签名的用途。虽然在这里被论述成是基于逐个扇区工作的,但是应该指出,作为替换这里论述的技术也可以基于存储卷110上的其他内容群组(例如基于多个扇区的群组或其他内容集合)而以类似的方式工作。扇区映射108通常被保存在存储设备(例如存储卷110)上,并且会在计算设备100开始工作(例如通电、复位等等)时拷贝至计算设备100的存储器(例如RAM)。所述存储器通常是易失存储器,其在计算设备100断电时不会保持其状态,然而与存储卷110相比通常具有更快的访问时间。作为替换,扇区映射108可被保持在非易失存储器(例如闪速存储器)中,其中所述存储器在计算设备100断电时也会保持其状态。在一个或多个实施例中,加密/解密控制模块102、读/写控制模块104以及策略模块106是在计算设备100的操作系统中实施的。响应于在计算设备上激活了指示要对数据加密的策略,不管将数据写入存储器的是怎样的应用或其他程序,在激活所述策略之后写入存储卷110的数据都会被加密。所述加密/解密控制模块102会为多个应用而不是简单地为单个应用加密写入存储卷110的数据。图2示出了根据一个或多个实施例的例示扇区映射200。举例来说,扇区映射200可以是图I的扇区映射108。所述扇区映射200包括多个扇区标识符以及相应的扇区签名202(1),一202(1)0扇区映射200中的扇区标识符可以采用多种不同的形式,例如扇区的数字标识符。应该指出的是,虽然在图2中示出的是每一个都具有相应扇区签名的多个扇区标识符,但是作为替换,扇区映射200也可以用不同方式配置。例如,扇区映射200可以将扇区签名排列在具有连续的扇区标识符的集合或游程(run)的群组中。单个扇区标识符(例如位于扇区标识符游程开端或起始处的扇区标识符)可被包含在扇区映射200中,然后,在给出了扇区签名大小的情况下,很容易即可识别群组内部的特定扇区签名。举例来说,如果处于群组开端的扇区标识符是扇区732并且扇区签名的长度是6字节,那么能够很容易确定扇区735的扇区签名向扇区签名群组中偏移3x6=18字节。虽然在扇区映射200中仅仅包含单个扇区标识符用于群组,但是应该指出,扇区映射仍被视为标识该群组所包含的集合或游程中的扇区标识符的多个扇区(以及相应的扇区签名)。 在特定时间点,扇区映射200将被锁定。锁定扇区映射200指的是将扇区映射200设置或固定在其当前状态,并且不允许改变扇区映射200。扇区映射200可以用不同的方式锁定,例如将其存入非易失的一次性写入存储器单元,将其存入只能被计算设备100的操作系统访问的存储卷110的一部分,以及操作系统拒绝执行对扇区映射200的任何写入等·等。如下文更详细论述的那样,扇区映射200可以是在不同时间锁定的(例如在安装操作系统或激活策略的时候)。扇区映射200不必并且通常不会包含用于存储卷的每个扇区的标识符及相应签名。相反,扇区映射200包含在锁定扇区映射200之前写入的扇区的标识符及相应签名。作为替换,扇区映射200可以包括在锁定扇区映射200之前未被写入的多个扇区的标识符,并且还可以包括哪些标识的扇区在锁定扇区映射200之前已被写入的一个或多个指示(例如标记值,包含仅仅用于在锁定扇区映射200之前写入的那些扇区的签名等等)。扇区映射200中的扇区签名是扇区中的内容的至少一部分的表示。所述扇区签名可以根据扇区的内容以多种不同的方式产生。在一个或多个实施例中,扇区签名是通过选择扇区内容中的特定数量的字节产生的(例如扇区的前六个字节的内容,从扇区的第11个字节开始的所述扇区的8个字节的内容等等)。作为替换,扇区签名也可以用不同的方式产生,例如通过将多种不同的散列算法应用于扇区内容来获取散列值,通过将其他不同的算法或规则应用于扇区内容来获取代表扇区内容的值等等。在锁定扇区映射200之后,使用扇区映射200中的扇区签名来识别相应扇区的内容是否改变(如下文更详细论述的那样,该处理可用于确定是否要解密内容)。在任何给定时间,扇区映射200中标识的扇区的内容签名可以用与为该扇区映射200生成该扇区的签名相同的方式生成。来自扇区映射200的签名与为该扇区产生的签名进行比较,并且确定这两个签名是否匹配(例如是否相同)。如果这两个签名匹配,则不会在锁定扇区映射200之后改变相应签名的内容。然而,如果这两个签名不匹配,那么会在锁定扇区映射200之后改变相应签名的内容。在一个或多个实施例中,扇区映射200用一种便于快速访问扇区映射200的内容的方式保持在存储器或存储设备中。例如,在存储设备上,扇区映射200可被保持在存储设备的连续扇区的群组中,保持在存储器中的连续地址的群组中等等。此外,扇区映射200的内容还可以基于扇区标识符并以数字顺序保存在存储设备和/或存储器中,以及保存在以扇区标识符为基础编索引的_■进制树中等等。
在一个或多个实施例中,在存储设备上,扇区映射200的内容被保持在扇区标识符的群组中,其中每一个群组都包括连续的扇区标识符集合或游程。每一个群组都包括用于标识该群组的不同信息的报头,例如群组大小(例如用于存储所述群组的存储设备扇区的数量,所述游程中的扇区标识符的数量等等),所述群组的校验和值,用于访问群组中的第一个扇区标识符和扇区签名的存储卷(或存储器)的偏移等等。然后,当计算设备开始工作时(例如通电、复位等等),这些群组能够很容易被映射到存储器中的扇区映射。应该指出的是,在这样的实施例中,扇区映射200不必包含每一个扇区标识符的标识符,而是相反,只需包括扇区标识符游程中的第一个扇区标识符以及与所述游程中的扇区标识符相对应的扇区签名的指示。由此,在给出了扇区签名大小的情况下,与所述游程中的特定扇区相对应的扇区签名是很容易得到的。回到图1,扇区映射108包括在锁定扇区映射108之前被写入的扇区的标识符和相应签名。在锁定扇区108之后,加密/解密控制模块102对写入存储卷110的数据进行加 密。此类数据可以包括写入到先前未被写入的存储卷110的扇区的数据,以及写入到先前已被写入的存储卷110的扇区的数据(改写扇区)。然而,在锁定扇区映射108之前写入存储卷110的数据并未加密。相应地,在锁定扇区映射108之后,使用扇区映射108来确定该扇区是不是在锁定扇区映射108之前被写入(由此未被加密),或者该扇区是否在锁定扇区映射108之后被写入(由此是加密的)。在锁定扇区映射108之后,当请求从存储卷110的扇区中读取数据时,将会检查(例如由读/写控制模块104或策略模块106)是否在扇区映射108中标识了所述扇区。如果在扇区映射108中没有标识该扇区,那么写入该扇区的数据是在锁定扇区映射108之后写入的,由此所述扇区的内容是经过加密的。相应地,在将扇区内容返回给请求方之前,读/写控制模块104将会调用加密/解密控制模块102来解密该扇区的内容。然而,如果在扇区映射108中标识了所述扇区,那么将会检查(例如由读/写控制模块104或策略模块106)该扇区的当前内容的签名是否与扇区映射108中该扇区的签名相匹配。如果这两个签名匹配,那么写入该扇区的数据是在锁定扇区映射108之前写入的,由此所述扇区的内容并未加密。相应地,读/写控制模块104可以将该扇区的内容返回给请求方,并且不必调用加密/解密控制模块102来解密该扇区的内容。然而,如果这两个签名不匹配,那么写入该扇区的数据是在锁定扇区映射108之后写入的,由此,该扇区的内容是经过加密的。相应地,在将该扇区的内容返回给请求方之前,读/写控制模块104将会调用加密/解密控制模块102来解密该扇区的内容。在一个或多个实施例中,读/写控制模块104还会保持与存储卷110相对应的位图,其中所述位图中的每个比特都与存储卷110的一个扇区相对应。如果卷110的特定扇区是在锁定扇区映射108之后写入的(可选地,该扇区是在锁定扇区映射108之后首次写入的),那么模块104将会置位与该特定扇区相对应的比特(例如置位成值I)。如果该扇区在锁定扇区映射108之后尚未被写入,那么不会置位相应比特(例如具有值O)。在读取扇区的内容时,如果置位了与该扇区相对应的位图中的比特,那么模块104就知道该扇区是在锁定扇区映射108之后写入的。相应地,在将该扇区的内容返回给请求方之前,模块104将会调用加密/解密控制模块102来解密该扇区的内容。然而,如果没有置位与扇区相对应的位图中的比特,那么如上所述,模块104将会继续检查在扇区映射108中是否标识了所述扇区和/或签名是否匹配。作为替换,将数据写入存储卷110的扇区以及更新位图(例如将对应于所述扇区的比特置位成值I)的处理可以作为原子操作来执行,在这种情况下,如果没有置位与扇区对应的位图中的比特,那么模块104可以将该扇区的内容返回给请求方,并且不需要调用加密/解密控制模块102来解密该扇区的内容。所述位图还可以用于解决签名冲突。签名冲突是在扇区的两个不同内容产生相同签名的时候发生的。由于与扇区对应的比特是在扇区写入时置位的,由此模块104知道所述扇区是在锁定了扇区映射108之后写入的,因此,所述位图允许有签名冲突要解决的情形。如果置位与扇区相对应的比特,那么不管扇区的当前内容签名是否与扇区映射108中该扇区的签名相匹配,都表明所述扇区是在锁定扇区映射108之后写入的。扇区映射108可以是在多个不同的时间产生和锁定的。在一个或多个实施例中,扇区映射108是作为在计算设备100上安装或初始化操作系统的处理的一部分而被产生和锁定的。例如,该处理可以由计算设备100的厂家或销售方来完成(例如在计算设备100的 买方收到计算设备100之前),可以由计算设备100的用户来完成等等。扇区映射108的产生和锁定可以作为在计算设备100上安装操作系统的处理的一部分来执行,或者可以作为用于计算设备100的单独的初始化或装配处理的一部分来执行。操作系统被安装在计算设备100上,其中写入至存储卷110的扇区的数据未被加密/解密控制模块102加密。在这样的实施例中,扇区映射108可以用不同的方式产生。例如,在操作系统的安装过程中可以保持关于存储卷110的哪些扇区已被写入的记录。该记录中标识的扇区可被标识成是扇区映射108中的扇区,此外在扇区映射108中还会产生和存储相应的签名。作为另一个示例,可以扫描存储卷110以便识别出哪些扇区已被写入以及哪些未被写入,已写入的那些扇区可被标识成是扇区映射108中的扇区以及在扇区映射108中产生和存储的相应签名。作为另一个示例,通过将存储卷映像拷贝至存储卷110,可以将操作系统安装在计算设备100上,该存储卷映像可以包括扇区映射108。由此,在这样的实施例中,扇区映射108是在将操作系统安装到计算设备100上的时候产生和锁定的,并且如上所述,对存储卷110的后续写入是经过加密的。当在设备100上激活这样一个策略时,其中该策略指示在该策略被激活之后保存在存储卷110上的数据被加密,因为在锁定扇区映射108之后写入存储卷110的任何数据都是经过加密的,所以计算设备100是快速遵从该策略的。在遵从该策略之前,计算设备100不必等待所有存储卷110都被加密。由此,尽管存储卷110的一些扇区尚未加密,然而由于设备100已经加密了写入存储卷110的数据(并且由此会在激活策略之后加密存储卷110上保存的数据),因此,策略模块106可以快速指示遵从所述策略。这里使用的快速遵从策略指的是在阈值数量的时间以内和/或在不需要加密整个存储卷的情况下的遵从。所述阈值数量的时间通常是一个预计不会招致可被用户注意的延迟的很小数量(例如大约数秒)。同样,快速指示遵从策略指的是在这样的阈值数量的时间内和/或在不需要加密整个存储卷的情况下指示遵从。应该指出的是,策略模块106不需要故意延迟遵从策略和/或指示遵从策略,但是可以发生一些延迟(例如在等待设备100执行与遵从策略不相关的其他功能的时候,在锁定扇区映射108的时候,在加密特定专用文件(例如页面文件、用于崩溃转储的文件、休眠(hibernate)文件等等)的时候,......)。在其他实施例中,不是作为在计算设备100上安装或初始化操作系统的处理的一部分锁定扇区映射108,相反,扇区映射108是响应于在计算设备100上策略的激活而被锁定的。在锁定扇区映射108之前,数据是在没有被加密/解密控制模块102加密的情况下写入存储卷110的扇区的,并且数据是在未被模块102解密的情况下从存储卷110的扇区中读取的。初始扇区映射108被产生(例如像上文中论述的那样作为在计算设备100上安装或初始化操作系统的处理的一部分)。对于每次写入扇区,都会用被写入的扇区的标识符(如果尚未包含在扇区映射108中)以及写入该扇区的内容的相应签名来更新扇区映射108。由此,在这样的实施例中,扇区映射108是随时间产生的,并且将会保持存储卷110的哪些扇区已被写入的不断发展的当前标识以及已被写入的那些扇区的签名。响应于在计算设备100上激活指示在被激活之后加密存储卷110上存储的数据的策略的请求,策略模块106将会激活该策略。作为策略激活的一部分,扇区映射108将被锁定,由此,如上所述,对存储卷110的后续写入将被加密。因为在锁定扇区映射108之后写入存储卷110的数据被加密,所以,计算设备100是快速遵从所述策略的。在遵从所述策略之前,计算设备100不需要等待所有存储卷100都被加密。由此,即使存储卷110的一些扇区尚未加密,因为对存储卷110的后续写入将被加密,并且设备100由此会在激活所述策略 之后加密存储卷Iio上存储的数据,所以,策略模块106可以快速指示(例如以小于阈值数量的延迟)遵从所述策略。在扇区映射108保持了存储卷110的哪些扇区已被写入的不断发展的当前标识以及已被写入的那些扇区的签名的实施例中,扇区映射108可以保持在存储器(例如RAM)中以及留存在存储设备(例如存储卷110)上。在这样的实施例中,扇区映射108中的扇区可以聚集在一起,其中每一个群组都是扇区映射108的多个扇区的集合。群组中的扇区数量可以改变,并且不同的群组可以具有不同数量的扇区。哪些扇区被包括在哪些群组中可以用不同的方式确定。例如,扇区可以依照扇区编号的数字顺序、基于扇区标识符的散列值等等来归组在一起。图3示出了根据一个或多个实施例保持在存储器中以及留存在存储设备上的扇区映射的示例。图3示出了保存扇区映射302的存储卷300以及保存扇区映射312的存储器310。通常,存储器310是在包含该存储器310的计算设备断电时不会保持其状态的易失存储器,然而,与存储卷300相比,该存储器通常具有更快的访问时间。扇区映射302和312中的每一个都是相同扇区映射的一个版本,其中所述扇区映射可以是图I的扇区映射108。如图所示,扇区映射302和312中的每一个都包括归组到多个群组中的扇区。每一个群组都包括多个扇区标识符以及相应的扇区签名。此外,每一个群组都具有指示所述群组变脏还是干净的标记,该标记以如下所述的方式使用。当计算设备开始工作时(例如通电、复位等等),将扇区映射302从存储卷300拷贝至存储器310作为扇区映射312。此时,扇区映射302和312中的每一个群组的标记值被置位成指示相应群组是干净的(然而如下所述,将一个或多个标记值置位成指示相应群组变脏的情形也有可能出现)。群组是干净的表明存储卷300上的群组的内容(扇区标识符以及相应的扇区签名)与存储器310中的所述群组的内容是相同的。随后,在将数据写入存储卷的扇区时,使用该扇区的新写入内容的签名来更新扇区映射312。然而,扇区映射302尚未更新来包含该扇区的新写入内容的签名。此外,扇区映射312中包含该扇区的群组的标记以及扇区映射302中包含该扇区的群组的标记将被置位,以便指示所述群组变脏(如果未被置位成指示所述群组变脏)。群组变脏表明存储卷300上该群组的内容不同于存储器310中所述群组的内容。在某个点,扇区映射312中脏群组的内容将被冲洗(flush)到存储卷300。将脏群组冲洗到存储卷300指的是将数据群组从扇区映射312写入扇区映射302,以及将扇区映射302和312中那些写入的群组的相应标记置位来指示相应群组是干净的。冲洗脏群组的特定点是可以改变的,例如响应于阈值数目的群组被标记成变脏、从把群组标记成变脏时起经过的阈值数量的时间,在存储卷使用率很低的时间期间(例如小于在阈值数量的时间中对存储卷300执行读取和/或写入访问的阈值次数)等等。当计算设备再次开始工作时(例如通电、复位等等),在扇区映射302中,每一个被标记成干净的群组都会从存储卷300拷贝至存储器310作为存储映射312的群组。对于被标记成变脏的扇区映射302的每一个群组,该群组中标识的扇区的扇区签名是基于所标识的那些扇区的内容产生的。所产生的这些扇区签名被保存在扇区映射302及扇区映射312的群组中,并且这些群组在扇区映射302和312中会被标记成干净。由此,虽然在将扇区映射312中的一个或多个脏群组冲洗到存储卷300之前有可能出现计算设备崩溃或断电的情形,然而当计算设备再次开始工作时,这些情形将很容易解决。对于未被冲洗到存储卷300的扇区映射312中的一个或多个脏群组来说,每一个群组在扇区映射302中的标记仍旧指示所述群组是脏的,由此将会重新产生扇区签名。在一个或多个实施例中,当因为对扇区的特定写入而置位扇区映射302和扇区映射312中的标记的时候,直到在将映射302和312中的标记置位成指示包含该扇区的标识符的群组是脏的,所述对扇区的写入才会结束。相应地,如果计算设备在写入过程中崩溃或断电,那么在将映射302和312中的标记置位成指示该群组是脏的之前,所述对扇区的写入不会结束。由此,由于崩溃或断电可能出现这样的情形,其中扇区映射302中的标记被置位成指示群组是脏的,然而在存储卷300中实际并未写入导致将所述标记置位成指示群组变脏的数据。当计算设备再次开始工作时,因为扇区映射302中的标记会被置位成指示该群组是脏的,由此将会重新产生在该群组中标识的扇区签名,所以,这种情形很容易即可解决。由此,扇区映射302和312将会保持用于该扇区的准确签名。回到图I,在一个或多个实施例中,响应于在计算设备100上激活这样一个策略,其中该策略指示在该策略被激活之后存储在存储卷110上的数据被加密,策略模块106将会开始实施对存储卷110的扇区中的未加密数据进行加密的处理。哪些扇区具有未加密数 据是很容易识别的(例如基于扇区映射108,基于与存储卷110相对应的上述位图等等)。例如,该处理可以通过从被读取的扇区请求未加密数据以及将其写入该扇区来执行。由于将数据写回扇区的请求是在激活策略之后接收的,因此,所写回的数据是经过加密的。如果在存储卷110上没有留下未加密数据,那么可以停止使用扇区映射108(由于在锁定扇区映射108之前已经将写入存储卷110的数据已经作为加密数据重新写入,因此可以删除和/或忽略扇区映射108)。在对存储卷110的扇区中的未加密数据执行这种加密处理时,可以采用不同的方式来保持哪些扇区已加密的记录。例如,在从扇区中读取未加密数据并将其作为加密数据写回所述存储卷之后,可以从扇区映射108中移除该扇区的扇区标识符以及相应的扇区签名(实际上是解锁扇区映射108,以便移除扇区标识符以及相应的扇区签名)。作为另一个示例,在从扇区中读取了未加密数据并将其作为加密数据写回存储卷之后,可以置位与该扇区相对应的位图(与如上所述的存储卷110相对应)中的比特。策略模块106可以采用不同的方式来执行这种加密存储卷110的扇区中的未加密数据的处理。例如,策略模块106可以监视计算设备110,以便在存储卷使用率低(例如低于阈值时间量中对存储卷110的读取和/或写入访问的阈值次数)的时间期间执行该处理。作为另一个示例,策略模块106可以监视计算设备100,以便在计算设备100通常不被使用的时间期间(例如午夜到上午4:00之间)执行该处理。作为再一个示例,策略模块106可以监视计算设备100,以便在计算设备100插上插头(例如依靠AC电源而不是电池电源工作)的时间期间执行该处理。图4是示出了根据一个或多个实施例来实施快速遵从数据加密策略的处理的另一个例示计算设备400的框图。计算设备400可以是与图I的计算设备100相似的多种不同类型的设备,例如物理设备或虚拟设备。 与图I的计算设备100相似,计算设备400包括加密/解密控制模块102、读/写控制模块104、策略模块106以及存储卷110。然而,计算设备400包括加密组块映射402以及转换日志404,而不是扇区映射。在使用加密组块映射402的实施例中,加密组块映射402将存储卷110的扇区归组在一起形成组块。每一个组块都是存储卷110的多个扇区的集合。组块中扇区的数量是可以改变的,并且不同的组块可以具有不同数量的扇区。哪些扇区被包括在哪些组块中可以用不同的方式确定。例如,扇区可以依照扇区编号并按照数字顺序归组在一起。加密组块映射402为存储卷110的每一个扇区组块识别包含在该组块中的扇区是否加密(或者可选地识别其是否未被使用)。如果组块中的扇区未被加密,那么该组块也被称为是未加密的。同样,如果组块中的扇区是加密的(或者未被使用的),那么该组块也被称为是加密的(或未被使用的)。加密组块映射402通常是一个位图。例如,加密组块映射402可以包括多个比特,其中每一个比特都对应于存储卷110的一个扇区组块,并且置位每一个比特(例如置位成值I)指示相应组块中的扇区是经过加密的(或未被使用的),或者不置位所述比特(例如具有值O)来指示相应组块中的扇区是未加密的。作为替换,可以使用除了位图之外的其他映射或记录。这里的论述参考指示相应组块是否加密或未被使用的处理(例如,与组块相对应的比特被置位)。作为替换,加密组块映射402可以在不支持组块未被使用的可能性的情况下指示相应组块是否加密。例如,置位与组块对应的比特以便指示所述组块是经过加密的(而未被置位则仅仅是因为所述组块未被使用)。在计算设备400上激活这样一个策略之前,其中该策略指示在该策略被激活之后存储在存储卷Iio上的数据被加密,这时不必使用加密组块映射402。数据可以在未加密的情况下被写入存储卷110,以及从存储卷110中被读取。然而,响应于在计算设备400上激活了这样一个策略,其中该策略指示在该策略被激活之后保存在存储卷Iio上的数据被加密,读/写控制模块104将会调用加密/解密控制模块102来加密那些写入存储卷110的数据。读/写控制模块104还使用加密组块映射402来确定是否解密从存储卷110中读取的数据。由此,因为在激活所述策略之后写入存储卷110的数据被加密,所以,计算设备400是快速遵从所述策略的。在开始遵从所述策略之前,计算设备400不需要等待所有存储卷100都被加密。由此,即便存储卷110的一些扇区尚未加密,然而因为对存储卷110的后续写入将被加密,并且设备400由此会在激活了所述策略之后对存储卷110上存储的数据进行加密,所以,策略模块106可以快速指示(例如以小于阈值数量的延迟)遵从所述策略。在一个或多个实施例中,保持多个版本的加密组块映射402。例如,可以保持两个版本(最近版本以及前一个版本)的加密组块映射402。每一个版本通常具有一个版本号或其他标识符(例如,与较久远的版本相比,更新近的版本具有较高版本号)。在改变加密组块映射402时,前一个版本的加密组块映射402将被最近版本的加密组块映射402取代,然后,所述改变将会针对最近版本的加密组块映射402进行。由此,两个版本的加密组块映射402包括最近版本的加密组块映射402,以及下一个最近版本的加密组块映射402。此外,加密组块映射402的版本还可以保持在存储器(例如RAM)中并留存在存储设备(例如存储卷110)上。在一个或多个实施例中,在每次改变加密组块映射402的版本时,存储器中的版本以及留存在存储设备上的版本都会更新。作为替换,加密组块映射402的至少一部分可以保持在非易失存储器(例如闪存)中,其中所述非易失存储器在计算设备·400断电时保持其状态,在这种情况下,至少加密组块映射400的所述部分的版本不必同时保存在存储器中以及留存在存储设备上。在激活了策略(指示在激活所述策略之后存储在存储卷110上的数据被加密)之后,当请求从存储卷110的扇区中读取数据时,检查加密组块映射402 (例如由读/写控制模块104或策略模块106)以便确定包含被读取扇区的组块是否未被加密(例如与包含该扇区的组块相对应的比特未被置位)。如果该组块尚未加密,那么读/写控制模块104将会读取所述扇区并将扇区内容返回给请求方。然而,如果组块是经过加密或未被使用的(例如置位了与包含扇区的组块相对应的比特),那么读/写控制模块104将会调用加密/解密控制模块102来解密该扇区的内容,以及将解密的扇区内容返回给请求方。在激活了策略(指示在激活所述策略之后存储在存储卷110上的数据被加密)之后,在请求将数据写入存储卷Iio的扇区时,检查加密组块映射402 (例如由读/写控制模块104或策略模块106)以便确定包含被写入扇区的组块是否未被加密(例如没有置位与包含该扇区的组块相对应的比特)。如果该组块不是未加密的(组块中的扇区已被加密或者未被使用),那么读/写控制模块104将会调用加密/解密控制模块102来加密该扇区的内容,并且将加密的扇区内容写入存储卷110。然而,如果组块未被加密,那么读/写控制模块104将会抑制(hold)写入请求,以便允许加密包含了将被写入的扇区的组块中的其他扇区。模块104读取组块中的扇区(例如组块中的所有扇区或是组块中除了被请求写入数据的扇区之外的那些扇区)的内容。模块104调用加密/解密控制模块102来加密所读取的每个扇区,以及将这其中的每个扇区的加密内容写入存储卷110。模块104还会将被加密扇区的记录保持在转换日志404中。与如上所述的扇区映射108的扇区标识符及扇区签名相似,转换日志404包括被加密扇区的标识符以及所述扇区的签名。然而,转换日志404中的签名通常是存储了加密内容的扇区的签名。与加密组块映射402的版本相似,转换日志404被保持在存储器(例如RAM)中并留存在存储设备上(例如存储卷110)。作为替换,转换日志404可以保持在非易失存储器(例如闪存)中,其中所述非易失存储器在计算设备400断电时保持其状态,在这种情况下,转换日志404不必保持在存储器中以及留存在存储设备上。此外,与加密组块映射402的版本相似,可以保持多个版本的转换日志404。在将加密的扇区内容写入存储卷110以及更新了转换日志404 (在存储器中以及留存在存储设备上)之后,改变加密的组块映射402以便反映已经加密了包含被写入的数据的组块。例如,与包含被写入扇区的组块相对应的比特将会置位。然后,读/写控制模块104停止抑制写入请求,并且重新处理该写入请求。包含被写入扇区的组块不再是未加密的,由此,读/写控制模块104调用加密/解密控制模块102来加密该扇区的内容,以及如上所述将已加密的扇区内容写入存储卷110。应该指出的是,这种顺序是可以进行各种各样的改变的。例如,可以在抑制写入请求之前对所写入的数据进行加密。
作为替换,不对写入请求进行重新处理,相反,模块104可以读取组块中的扇区的内容,使用正被作为写入请求的一部分写入的内容来替换正被写入的扇区,以及将组块的扇区的加密内容写入存储卷110。由此可以有效地将写入请求引入到组块的读取、加密和写入处理中。在一个或多个实施例中,响应于在计算设备400上激活这样一个策略,其中该策略指示在该策略被激活之后存储在存储卷110上的数据被加密,策略模块106开始实施标识存储卷110中未使用的扇区组块的处理。可以采用不同的方式来确定存储卷110的特定扇区是否已被使用,例如通过从计算设备400的操作系统中获取哪些扇区已被使用以及哪些扇区未被使用的指示。响应于检测到该组块中的所有扇区未被使用的组块,策略模块106改变加密组块映射402,以便指示该组块是经过加密或未被使用的(例如置位与该组块相对应的比特)。由此,加密组块映射402在一开始可以指示所有组块均未加密,然后,在加密了组块或者将其标识成未使用时,加密组块映射402将这些组块标记成已加密或未被使用。策略模块106可以用不同的方式来执行这种标识未使用组块的处理。例如,策略模块106可以监视计算设备400,以便在存储卷使用率低的时间期间(例如低于阈值时间量中对存储卷110的读取和/或写入访问的阈值次数)执行该处理。作为另一个示例,策略模块106可以监视计算设备400,以便在计算设备400通常不被使用的时段期间(例如午夜到上午4:00之间)执行该处理。作为再一个示例,策略模块106可以监视计算设备400,以便在计算设备100插上插头(例如依靠AC电源而不是电池电源工作)的时段期间执行该处理。同样,在一个或多个实施例中,策略模块106可以开始实施一个对存储卷110的扇区中的未加密数据进行加密的处理。策略模块106可以在不同的时间开始加密存储卷110的扇区中的未加密数据,例如在已经结束标识存储卷110中未使用的扇区组块的处理之后,响应于在计算设备400上激活了这样一个策略,其中该策略指示在该策略被激活之后存储在存储卷110上的数据被加密等等。哪些扇区具有未加密数据可以很容易识别(例如,包含在具有加密组块映射402中未置位的相应比特的组块中的扇区,计算设备400的策略模块106和/或操作系统保持的其他记录或日志)。例如,通过从被读取组块的扇区中请求未加密数据,以及随后将其写回到这些扇区,可以执行对存储卷110的扇区中的未加密数据的加密处理。由于将数据写回到扇区的请求是在激活策略之后接收的,因此,所写回的数据是经过加密的。一旦组块的加密扇区被写回,则加密组块映射402将会被改变,以便反映所述组块不再是未加密的(例如置位与该组块对应的比特)。
当存储卷110上不再剩余未加密数据时,可以停止使用加密组块映射402,并且可以删除和/或忽略加密组块映射402。在使用加密组块映射402之前写入存储卷110的数据已被作为加密数据重新写入,并且使用加密组块映射402写入存储卷110的数据是经过加密的。读/写控制模块104可以简单地调用加密/解密控制模块102来加密正被写入的数据,以及在没有使用加密组块映射402的情况下解密正被读取的数据。在执行这种对存储卷110的扇区中的未加密数据进行加密的处理时,可以采用不同的方式来保持哪些扇区已被加密的记录。例如,策略模块106可以保持已经加密了哪些扇区的单独日志或记录。作为另一个示例,在读取来自组块的扇区的未加密数据并且将其作为加密数据写回到存储卷之后,可以置位加密组块映射402中与所述组块相对应的比特。策略模块106可以采用不同的方式来执行这个对未加密扇区进行加密的处理。例如,策略模块106可以监视设备400,以便在存储卷使用率低的时间期间(例如低于阈值时间量中对存储卷110的读取和/或写入访问的阈值次数)执行该处理。作为另一个示例,策略模块106可以监视计算设备400,以便在计算设备400通常不被使用的时段期间(例如午夜到上午4:00之间)执行该处理。作为再一个示例,策略模块106可以监视计算设备400,以便在计算设备100插上插头(例如依靠AC电源而不是电池电源工作)的时段期间执行该处理。虽然在计算设备400中示出了单个加密组块映射402,但是作为替换,可以包含多个加密组块映射402 (每一个都具有如上所述的多个版本)。这些不同的加密组块映射402可以对应于存储卷110的不同部分。这些不同的部分可以用不同的方式确定,例如具有特定大小的存储卷110的特定扇区集合(例如总共有2-4G字节的扇区集合)。这些不同的加密组块映射中的每一个都是以如上所述的方式使用的,并且使用多个加密组块映射中的哪一个是由为特定请求读取或写入的一个或多个特定扇区决定的。·在写入过程中,例如在将数据写入存储卷110的时候,在留存转换日志或加密组块映射的时候等等,这时有可能出现计算设备400崩溃或断电的情形。为了解决这种情形,在计算设备400启动时(例如由于重启、复位等等),读/写控制模块104检索留存在存储卷110上的加密组块映射402的最近有效版本。加密组块映射402的特定版本是否有效可以用不同的方式确定(例如基于校验和或是与加密组块映射402 —起保存在存储卷110上的其他值)。此外,读/写控制模块104还会检索留存在存储卷110上的转换日志404的最近有效版本。转换日志404的特定版本是否有效可以用不同方式确定(例如基于校验和或是与转换日志404 —起保存在存储卷110上的其他值)。转换日志404包括一个关于最近加密的扇区(或组块)的指示。对于最近加密的扇区(或组块)来说,如果加密组块映射402指示包含最近加密的扇区的组块(或者最近加密的组块)不是未加密的(例如置位了与该组块相对应的比特),那么不需要执行恢复处理。然而,如果加密组块映射402指示包含最近加密的扇区的组块(或者最近加密的组块)是未加密的(例如没有置位与该组块相对应的比特),那么可以执行恢复处理。执行什么恢复处理可以用不同的方式确定,例如基于扇区签名(例如,组块中的哪些扇区已被加密可以基于该签名来确定——如果转换日志404中的扇区签名与存储卷110上的扇区签名匹配(例如相同),那么该扇区已被加密,如果这两个签名不匹配,那么所述扇区未被加密)。组块中未加密的扇区将被加密,并且加密组块映射402中与所述组块相对应的比特将被置位。可选地,可以调用一个或多个支持恢复处理的其他操作系统模块来执行所述恢复处理。如上所述,加密扇区的签名被保存在转换日志404中。作为替换,转换日志404中的签名可以是未加密扇区的签名。在这种情形下,扇区可被解密,并且扇区中未加密内容的签名可被产生。如果扇区中的未加密内容的签名与转换日志404中的扇区签名匹配(例如相同),那么所述扇 区已被加密,如果签名不匹配,那么所述扇区未被加密。图5是示出了根据一个或多个实施例来实施快速遵从数据加密策略的例示处理500的流程图。处理500由诸如图I的计算设备100之类的计算设备执行,并且可以通过软件、固件、硬件或是其组合来实施。处理500被显示成是一组行为,并且不受限于所显示的用于执行不同行为操作的顺序。所述处理500是一个用于实施快速遵从数据加密策略的处理的例示处理;并且通过参考不同的附图,在这里还包含了关于实施快速遵从数据加密策略的处理的附加论述。在处理500中,要求激活用于计算设备的策略的请求将被接收(行为502)。该策略指示在该策略被激活之后计算设备写入存储卷的数据被加密。所述请求可以是从不同的来源接收的,例如计算设备用户、计算设备访问的服务、与计算设备耦合的网络的管理员等
坐寸ο响应于该请求,为计算设备激活该策略(行为504)。通过激活该策略,即使存储卷的一个或多个扇区尚未加密(明文),也会加密在返回了遵从所述策略的指示之后写入存储卷的数据。响应于该请求,还返回一个表明遵从所述策略的指示(行为506)。该指示可以作为遵从的快速指示而被即时返回,并且即使存储卷的一个或多个扇区尚未加密(明文),也还是可以返回所述指示。图6是示出了根据一个或多个实施例使用扇区映射来实施快速遵从数据加密策略的例示处理600的流程图。处理600由诸如图I的计算设备100之类的计算设备执行,并且可以通过软件、固件、硬件或是其组合来实施。处理600被显示成是一组行为,并且不受所显示的用于执行不同行为操作的顺序的限制。所述处理600是一个用于使用扇区映射来实施快速遵从数据加密策略的例示处理;通过参考不同的附图,在这里还包含了使用扇区映射来实施快速遵从数据加密策略的附加论述。在处理600中,访问用于标识存储卷的一个或多个扇区的扇区映射(行为602)。访问所述扇区映射以便遵从一个策略,其中所述策略指示在该策略被激活之后由计算设备写入存储卷的数据被加密。通常,扇区映射是从如上所述的易失存储器中访问的,并且可以在适当的时候从存储卷拷贝至易失存储器。在激活策略之后,接收一个要求读取存储卷的扇区的内容的请求(行为604)。响应于该请求,检查是否在扇区映射中标识了所述扇区(行为606)。如果在扇区映射中标识了所述扇区,则检查扇区的内容的签名是否与扇区映射中标识的扇区签名相匹配(行为608)。如果扇区内容签名与扇区映射中标识的扇区签名匹配,则在不解密内容的情况下返回该扇区的内容(行为610)。所述内容将被返回给请求方,例如在计算设备上运行的另一个程序或应用,其中读取内容的请求是从该请求方接收的。然而,在行为608中,如果扇区内容签名不与扇区映射中标识的所述扇区的签名相匹配,或者在行为606中,如果在扇区映射中没有标识所述扇区,那么将会解密所述扇区的内容(行为612),并且返回经过解密的内容(行为614)。所述内容将被返回给请求方,例如在计算设备上运行的另一个程序或应用,其中读取内容的请求是从所述请求方接收的。作为替换,如上所述,可以使用一个具有指示相应扇区是否是在锁定扇区映射之后写入的比特的位图。在使用这种位图时,在处理600中将会包含一个处于行为606之前的附加行为,所述附加行为检查所述位图是否指示所述扇区是在锁定扇区映射之后写入的。如果该位图指示所述扇区是在锁定扇区映射之后写入的,则解密(行为612)并返回(行为614)所述扇区的内容。然而,如果所述位图指示所述扇区在锁定扇区映射之后尚未写入,那么处理600将会前进至行为606。图7是示出了根据一个或多个实施例使用加密组块映射来实施快速遵从数据加密策略的处理的例示处理的流程图。处理700由诸如图I的计算设备100之类的计算设备执行,并且可以通过软件、固件、硬件或是其组合来实施。处理700被显示成是一组行为,并且不受所显示的用于执行不同行为操作的顺序的限制。所述处理700是一个使用加密组块映射来实施快速遵从数据加密策略的例示处理;并且通过参考不同的附图,在这里还包含·了使用加密组块映射来实施快速遵从数据加密策略的附加论述。在处理700中,用于标识存储卷的一个或多个扇区组块的加密组块映射将被访问(行为702)。访问所述加密组块映射以便遵从一个策略,其中所述策略指示在该策略被激活之后计算设备写入存储卷的数据被加密。包含被请求写入数据的扇区的组块将被识别(行为704)。如上所述,哪些扇区被包括在哪些组块中可以用不同的方式确定。确定组块是否是未加密的(行为706)。如上所述,所述确定是基于加密组块映射做出的。举例来说,如果没有置位加密组块映射中与所述组块相对应的比特,那么所述组块是未加密的,如果置位了加密组块映射中与所述组块相对应的比特,那么所述组块是加密的(或者未被使用的)。如果组块不是未加密的,则对写入该扇区的数据进行加密(行为708),以及将经过加密的数据写入存储卷的扇区(行为710)。然而,如果组块是未加密的,那么抑制写入请求(行为712)、抑制所述写入请求允许加密处于包含了被请求写入数据的扇区的组块中的扇区。对于包含了被请求写入数据的扇区的组块来说,所述组块中的扇区将被加密(行为714)。包含在组块中的所有扇区都可被加密,或者作为替换,除了请求写入数据的扇区之外,所述组块中的其他扇区可以采用如上所述的方式来加密。在存储器中,加密组块映射将被更新,并且经过更新的映射被留存在存储卷上(行为716)。如上所述,对加密组块映射的更新是对加密组块映射进行改变以便反映包含在行为714中加密的扇区的组块不再是未加密的。此外,如上所述,还可以保持加密组块映射的多个版本。停止抑制写入请求(行为718),并且处理700返回到行为706,以便再次检查组块是否是未被加密的。当组块不再是未加密时,如上所述,处理700前进至行为708和710。作为替换,处理700可以返回到行为708而不是行为706。这里论述的快速遵从数据加密策略的技术支持多种使用情景,由此,即便存储卷的一个或多个扇区未被加密,也允许提供遵从策略的快速指示,其中所述策略指示在该策略被激活之后写入存储卷的数据被加密。例如,扇区映射可被用于识别在锁定扇区映射之前写入的是哪些扇区。该扇区映射可以是在计算设备上安装或初始化操作系统的时候锁定的,或者作为替换,该扇区映射可以是响应于要求遵从策略的请求而被锁定的。无论何时锁定扇区映射,在锁定之后都会加密写入存储卷的数据,并且基于将数据写入存储卷的时间,可以使用扇区映射来确定是否解密数据。作为另一个示例,加密组块映射可以用于标识在将策略应用于计算设备之后哪些扇区组块尚未加密的。在激活策略之后写入扇区的数据将被加密,并且基于包含了从中读取数据的扇区的组块是否是未加密的,可以使用加密组块映射来确定是否解密数据。在这里论述了由不同模块执行的不同动作,例如接收、返回、记录、存储、生成、获取等等。在这里被论述成执行某个动作的特定模块包括执行该动作的特定模块本身,或者作为替换,包括调用或以其他方式来访问执行该动作(或是结合该特定模块来执行该动作)的别的组件或模块的特定模块。由此,执行动作的特定模块包括执行该动作的特定模块本身和/或由执行该动作的特定模块调用或以其他方式访问的别的模块。
图8示出了根据一个或多个实施例可被配置成实施快速遵从数据加密策略的例示计算设备800。其中举例来说,计算设备800可以是图I的计算设备100。计算设备800包括一个或多个处理器或处理单元802,一个或多个可以包含一个或多个存储器和/或存储组件806的计算机可读媒体804,一个或多个输入/输出(I/O)设备808,以及允许不同组件和设备相互通信的总线810。计算机可读媒体804和/或一个或多个I/O设备808可以作为计算设备800的一部分而被包含,或者作为替换,它们也可以与计算设备800相耦合。处理器802、计算机可读媒体804、一个或多个设备808和/或总线810可以可选地作为单个组件或芯片(例如片上系统)来实施。总线810代表使用了多种不同总线架构的若干种总线结构中的一种或多种,包括存储器总线或存储器控制器、周边总线、加速图形端口、处理器或本地总线等等。总线810可以包括有线和/或无线总线。存储器/存储组件806代表一个或多个计算机存储媒体。组件806可以包括易失媒体(例如随机存取存储器(RAM))和/或非易失媒体(例如只读存储器(ROM)、闪存、光盘、磁盘等等)。组件806可以包括固定媒体(例如RAM、R0M、固定硬盘驱动器等等)以及可移除媒体(例如闪存驱动器、可移除硬盘驱动器、光盘等等)。这里论述的技术可以通过软件来实施,指令由一个或多个处理单元802执行。应该意识到的是,不同的指令可以存入计算设备800的不同组件,例如存入处理单元802、处理单元802的不同高速缓冲存储器、设备800的其他高速缓冲存储器(未显示)或其他计算机可读媒体等等。此外还应该意识到,在计算设备800中存储指令的位置是可以随时间改变的。一个或多个输入/输出设备808允许用户将命令和信息输入计算设备800,并且还允许将信息呈现给用户和/或其他组件或设备。输入设备的示例包括键盘、光标控制设备(例如鼠标)、麦克风、扫描仪等等。输出设备的示例包括显示设备(例如监视器或投影仪)、扬声器、打印机、网卡等等。在这里可以在软件或程序模块的一般上下文中描述不同的技术。通常,软件包括执行特定任务或实现特定抽象数据类型的例程、程序、应用、对象、组件、数据结构等等。这些模块和技术的实施方式可以保存在某种形式的计算机可读媒体上,或者经由所述媒体来传送。计算机可读媒体可以是任何能被计算设备访问的可用介质或媒体。作为示例而不是限制,计算机可读媒体可以包括“计算机存储媒体”和“通信媒体”。“计算机存储媒体”包括通过任何方法和技术实现的用于存储诸如计算机可读指令、数据结构、程序模块或其他数据之类的信息的易失和非易失以及可移除和不可移除媒体。计算机存储媒体包括但不局限于RAM、ROM、EEPR0M、闪速存储器或其他存储器技术、CD-ROM、数字多用途碟片(DVD )或其他光存储器、磁带盒、磁带、磁盘存储器或其他磁存储设备、或是可以用于存储期望信息并能被计算机访问的其他任何介质。与纯信号传输、载波或是信号本身相比,计算存储媒体指的是用于存储信息的媒体。由此,计算机存储媒体指的是无信号的承载媒体而不是通信媒体。“通信媒体”通常包括计算机可读指令、数据结构、程序模块或是诸如载波或其他传输机制之类的调制数据信号中的其他数据。通信媒体还包括任何信息递送媒体。术语“调制数据信号”意指这样的信号,其特性中的一个或多个被以将信息编码在该信号中的方 式而被设置和改变。作为示例而不是限制,通信媒体包括有线媒体,例如有线网络或直接线路连接,以及包括无线媒体,例如声学、RF、红外及其他无线媒体。此外,在计算机可读媒体的范围中还应该包含上述各项的组合。通常,这里描述的任何功能或技术都可以用软件、固件、硬件(例如固定逻辑电路)、手动处理或是这些实施方式的组合来实施。这里使用的术语“模块”和“组件”通常代表软件、固件、硬件或是其组合。在软件实施方式的情况下,模块或组件代表当在处理器(例如一个或多个CPU)上运行时执行指定任务的程序代码。程序代码可被保存在一个或多个计算机可读存储器设备中,关于所述设备的进一步描述可以参考图8来发现。在硬件实施方式的情况下,所述模块或组件代表执行指定任务的功能块或其他硬件。例如,在硬件实施方式中,所述模块或组件可以是专用集成电路(ASIC)、现场可编程门阵列(FPGA)、复杂可编程逻辑器件(CPLD)等等。这里描述的快速遵从数据加密策略的技术的特征是平台无关的,意味着该技术可以在具有各种处理器的各种商用计算平台上实施。虽然已经在特定于结构特征和/或方法行为的语言中描述了本主题,然而应该理解,所附权利要求中限定的主题不必局限于上述具体特征或行为。相反,上文描述的具体特征和行为是作为用于实施权利要求的例示形式公开的。
权利要求
1.一种方法,包括 在计算设备上接收(502)要求激活用于计算设备的策略的请求,所述策略指示在激活该策略之后计算设备写入存储卷的数据被加密; 响应于该请求,激活(504)用于计算设备的策略,包括在返回了遵从策略的指示之后,对写入存储卷的数据进行加密,并且还包括使用扇区映射来识别存储卷中未被加密的一个或多个扇区;以及 响应于该请求,尽管存储卷的一个或多个扇区是未加密的,也还是返回(506 )遵从所述策略的指示。
2.如权利要求I所述的方法,所述返回包括在不等待存储卷被加密的情况下返回所述响应。
3.如权利要求I所述的方法,所述激活还包括使用扇区映射来确定是否响应于读取扇区内容的请求来解密存储卷的扇区内容,所述扇区映射标识存储卷的一个或多个扇区,所述扇区映射还为所述一个或多个扇区中的每个扇区标识扇区内容的签名。
4.如权利要求3所述的方法,所述扇区映射标识的一个或多个扇区包含在锁定扇区映射以便禁止改变扇区映射之前已被写入的存储卷的一个或多个扇区,所述扇区映射响应于为所述计算设备激活所述策略的请求而被锁定。
5.如权利要求4所述的方法,还包括在锁定扇区映射之前 在存储卷上保持扇区映射的弟一版本; 在易失存储器中保持扇区映射的第二版本; 将扇区标识符以及扇区签名归组到多个群组中,每一个群组都包括一个或多个扇区的扇区签名; 响应于数据被写入一个群组中标识的扇区,更新该群组的标记值以便指示该群组变脏;以及 响应于阈值数量的被指示成变脏的多个群组,将那些被指示成变脏的群组从扇区映射的第二版本拷贝至扇区映射的第一版本。
6.如权利要求3所述的方法,还包括 对来自存储卷扇区的未加密数据进行加密; 确定存储卷中何时没有剩余未加密的数据;以及 响应于在存储卷上没有剩余未加密的数据,删除扇区映射以及停止使用扇区映射。
7.一种计算设备,包括 一个或多个处理器(802);以及 其上存储有多个指令的一个或多个计算机可读媒体(804),在被一个或多个处理器执行以遵从用于计算设备的策略的时候,所述指令将会促使所述一个或多个处理器执行以下处理 访问(602)标识了存储卷的一个或多个扇区的扇区映射,所述扇区映射还为所述一个或多个扇区中的每一个标识了扇区内容的签名,所述策略指示在激活了所述策略之后计算设备写入存储卷的数据被加密;以及 如果扇区是所述一个或多个扇区之一并且该扇区的内容的签名与在扇区映射中标识的扇区的签名相匹配,则响应于要求读取内容的请求,在不解密内容的情况下返回(610)存储卷的所述扇区的内容,否则解密(612)所述扇区的内容并且返回(614)解密的内容。
8.如权利要求7所述的计算设备,扇区映射标识的一个或多个扇区包括在锁定对扇区映射的改变以便禁止改变扇区映射之前写入的存储卷的一个或多个扇区,所述扇区映射是作为在计算设备上安装操作系统的处理的一部分而被锁定的。
9.如权利要求7所述的计算设备,扇区映射标识的一个或多个扇区包括在扇区映射被锁定以便禁止改变扇区映射之前写入的存储卷的一个或多个扇区,所述扇区映射是响应于激活用于计算设备的策略的请求而被锁定的。
10.如权利要求7所述的计算设备,所述多个指令还会促使一个或多个处理器执行以下处理 检查与扇区相对应的比特,所述比特是与存储卷相对应的位图中的多个比特之一,所述多个比特中的每一个都指示存储卷的相应扇区在锁定扇区映射以便禁止改变扇区映射之后是否已被写入; 只有在与扇区相对应的比特指示所述扇区在锁定扇区映射之后未被写入的情况下,才检查所述扇区是不是所述一个或多个扇区之一以及所述扇区的内容的签名是否与在扇区映射中标识的所述扇区的签名相匹配;以及 如果与扇区相对应的比特指示所述扇区在锁定扇区映射之后已被写入,则解密所述扇区的内容以及返回解密的内容。
11.一种或多种其上存储有多个指令的计算机存储媒体,当被计算设备的一个或多个处理器执行以便遵从用于该计算设备的策略时,所述指令促使所述一个或多个处理器执行如权利要求1-6中任何一个所述的方法。
全文摘要
为了遵从用于计算设备的指示在其被激活之后计算设备写入存储卷的数据被加密的策略,扇区映射被访问。所述扇区映射标识存储卷的一个或多个扇区,并且还为存储卷的一个或多个扇区中的每一个标识该扇区的内容的签名。如果扇区是所述一个或多个扇区之一,并且该扇区的内容的签名与在扇区映射中标识的该扇区的签名相匹配,则响应于读取扇区内容的请求,在没有解密内容的情况下返回该扇区的内容。否则,该扇区的内容将被解密,并且将会返回解密的内容。
文档编号G06F21/62GK102945355SQ20121031463
公开日2013年2月27日 申请日期2012年8月30日 优先权日2011年8月30日
发明者I.巴斯莫夫, M.B.G.奈斯特伦, A.M.塞门科, D.M.麦克尔弗, D.李 申请人:微软公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1