自加密存储设备的可扩展管理的制作方法

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

发明内容
在一个实施方式中,硬件加密存储设备的安全方面和功能可以经由专用的垂直集成计算机可执行指令集来展示,并可以定义特殊输入/输出控制调用,以允许卷管理计算机可执行指令管理硬件加密存储设备的各方面。这样的特殊输入/输出控制调用可以从现有的垂直集成计算机可执行指令集重定向到专用的垂直集成计算机可执行指令集。在另一实施方式中,可以管理硬件加密存储设备的各方面的管理计算机可执行指令可以通过由密钥管理计算机可执行指令所提供的回调机制,或者从可以在结合硬件加密存储设备利用加密密钥时填充的高速缓存接收加密密钥。在又一实施方式中,可以建立特殊化接口来使得独立计算机可执行指令能够以统一的方式管理硬件加密存储设备的各方面。
在另一实施方式中,涉及密钥管理的计算机可执行指令可以基于由硬件加密存储设备提供的标识信息来动态地加载,并在适当时安装或升级。存储在硬件加密存储设备上的计算机可读数据可以包括这样的标识信息,这样的标识信息可以与特定数据集或特定范围的存储位置相关联。在再一个实施方式中,在通过截取被定向到硬件加密存储设备的以电源为中心的请求并执行相关操作以防止硬件加密存储设备在不受保护的状态下断电,来使得硬件加密存储设备在各电源状态之间转换时,可以实现认证和去认证方法。提供本发明内容是为了以精简的形式介绍将在以下具体实施方式
中进一步描述的一些概念。本发明内容并不旨在标识出所要求保护的主题的关键特征或必要特征,也不旨在用于限定所要求保护的主题的范围。通过下面的结合附图对本发明进行的具体实施方式
,本发明的附加特征和优点将变得更加显而易见。


通过参考各个附图,可以更好地理解如下具体实施方式
,其中图1是具有硬件加密存储设备的示例性计算设备的框图;图2是示例性现有和专用垂直集成计算机可执行指令集的框图;图3是垂直集成计算机可执行指令集之间的示例性通信流的框图;以及图4是专用垂直集成计算机可执行指令的一方面的示例性操作的流程图。
具体实施例方式下面的描述涉及提供用于管理硬件加密存储设备的各方面的集中式且可扩展框架的机制的原理。涉及计算机可读数据的存储的现有垂直集成计算机可执行指令集可以通过专用垂直集成计算机可执行指令集来扩展,专用垂直集成计算机可执行指令集可以截取和重定向适当的输入/输出控制调用,并可以提供特殊化接口,以使得独立的计算机可执行指令能够以统一的方式管理硬件加密存储设备的各方面。所需的加密密钥可以在首次使用它们时被高速缓存,或者可以通过密钥管理计算机可执行指令可以向其注册的回调机制来获取。另外,可以基于可以从硬件加密存储设备接收到的标识信息来动态地加载、安装或升级密钥管理计算机可执行指令。可以截取以电源为中心的请求,并可以实现适当的认证或去认证方法,以避免在硬件加密存储设备被断电时使其处在不受保护的状态。此处所描述的技术聚焦于,但不限于,“栈”体系结构,其中垂直集成计算机可执行指令按以下方式执行动作表示栈体系结构的较高部分的计算机可执行指令将信息和请求传递到表示栈体系结构的较低部分的计算机可执行指令,相反,表示栈体系结构的较低部分的计算机可执行指令将所请求的信息向上传递回到表示栈体系结构的较高部分的计算机可执行指令。实际上,下面所描述的机制可以通过任一个或多个计算机可执行指令集来实现,无论是操作系统的一部分,还是作为独立计算机可执行指令。因此,尽管下面的描述参考在一些操作系统中常见的栈体系结构,但这些描述本身的范围并不旨在被限于此,相反,同等地适用于任何计算机可执行指令,无论如何分区,包括无论作为操作系统的一部分还是独立地执行。
另外,虽然未作要求,但以下描述将处在诸如程序模块等正由一个或多个计算设备执行的计算机可执行指令的一般上下文中。更具体而言,除非另外指明,否则描述将参考一个或多个计算设备或外围设备所执行的动作以及其所执行的操作的符号表示。由此,可以理解,这些有时被称为计算机执行的动作和操作包括以结构化形式表示数据的电信号的处理单元的操纵。该操纵在存储器中的各个位置变换或维护数据,这以本领域技术人员都理解的方式重新配置或以其他方式更改计算设备或外围设备的操作。其中维护数据的数据结构是具有由该数据的格式定义的特定特性的物理位置。一般而言,程序模块包括执行特定任务或实现特定抽象数据类型的例程、程序、对象、组件、数据结构等。此外,本领域技术人员将会认识到这些计算设备不必限于常规个人计算机,并且包括其他计算配置,包括手持式设备、多处理器系统、基于微处理器的或可编程消费电子设备、网络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 (BIOS)包含有助于诸如启动时在计算设备100中元件之间传递信息的基本例程,它通常存储在ROM 131 中。RAM 132通常包含处理单元120可以立即访问和/或目前正在操作的数据和/或程序模块。作为示例而非限制,图1示出了操作系统134、其它程序模块135和程序数据136。计算机系统100还可包括其它可移动/不可移动、易失性/非易失性计算机存储介质。例如,图1示出了硬盘驱动器141,该硬盘驱动器141对不可移动(从该硬盘驱动器本身)、非易失性磁介质进行读写,并且提供硬件加密支持160,以使得硬盘驱动器141本身例如能够加密由诸如CPU 120等计算设备100的其他组件提供给它的数据,而不使CPU 120 负担这一加密。可以与示例性计算设备一起使用的其它可移动/不可移动、易失性/非易失性计算机存储介质包括但不限于,固态存储设备(SSD)、磁带盒、闪存卡、数字多功能盘、 数字录像带、固态RAM、固态ROM等等。硬盘驱动器141或这些其他可移动/不可移动、易失性/非易失性计算机存储介质中的任一个通常通过诸如接口 140等不可移动存储器接口来连接到系统总线121。为了易于说明和引用,以下描述在图1和稍后示出的所示硬件加密硬盘驱动器141的上下文中提供。然而,如对于本领域技术人员将会是清楚的,在以下描述的机制中没有一种机制限于硬盘驱动器141的磁介质,并且能够在任何类型的计算机存储介质上同等地实现,包括以上枚举的可移动/不可移动、易失性/非易失性计算机存储介质中的任一种。虽然图1中未专用示出,但诸如硬件加密硬盘驱动器141之类的硬件加密存储设备的硬件加密支持160可以包括用于执行加密功能的专用处理器和/或存储器,诸如对提供到硬盘驱动器或由硬盘驱动器从其存储介质中读取的数据的加密或解密。这样的加密与解密可以参考可以由硬件加密支持160维护的常常被称为“驱动器介质密钥”的一个或多个加密密钥来执行。驱动器介质密钥本身可以通过一个或多个其他密钥来保护,诸如在其中一层的一个密钥保护较低层的另一密钥的公知的密钥分层保护方案中。最终,可以经由这一系列分层密钥,利用由诸如操作系统134或程序模块135之类的在计算设备100上执行的进程控制和管理的加密密钥来锁定或者解锁存储在硬件加密硬盘驱动器141的存储介质上的计算机可读数据。更具体而言,通过在其控制内提供相关密钥,在计算设备100上执行的进程可以通过允许硬件加密支持160解除保护来解锁存储在硬盘驱动器141上的数据,并使用驱动器介质密钥来解密从硬盘驱动器的存储介质中读取的数据并加密被写入到该介质中的数据。类似地,通过指示硬件加密支持160保护驱动器介质密钥以使得除非通过由在计算设备100上执行的进程维护的密钥才能访问这些密钥,那些进程可以锁定存储在硬盘驱动器141上的数据,并使该数据无法被访问。上文讨论并在图1中示出的驱动器及其相关联的计算机存储介质为计算设备100 提供了对计算机可读指令、数据结构、程序模块和其它数据的存储。例如,硬件加密硬盘驱动器141被示为存储操作系统144、其它程序模块145和程序数据146。注意,这些组件可以与操作系统134、其它程序模块135和程序数据136相同,也可以与它们不同。操作系统 144、其它程序模块145和程序数据146在这里被标注了不同的标号是为了说明至少它们是不同的副本。计算设100备可以使用对一个或多个远程计算机的逻辑连接在联网环境中工作。 为了说明简便起见,计算设备100在图1中被示为连接到不限于任何特定网络或联网协议的网络180。图1所描绘的逻辑连接是一般网络连接171,其可以是局域网(LAN)、广域网 (WAN)或其他网络。计算设备100通过网络接口或适配器170连接到通用网络连接171,该网络接口或适配器进而连接到系统总线121。在联网环境中,相对于计算设备100或其部分或外围设备所描绘的程序模块可被存储在通过一般网络连接171通信地耦合到计算设备 100的一个或多个其他计算设备的存储器中。可以理解,所示的网络连接是示例性的,且可以使用在计算设备之间建立通信链路的其他手段。
转向图2,其中所示出的系统200示出了以通常所示出的垂直布局定向的示例性对象集和计算机可执行指令集,其中,被可视地描绘为在该垂直布局中较高的对象和计算机可执行指令集将请求和信息传送到被可视地描绘为在垂直布局中较低的对象和计算机可执行指令集,相反,在垂直布局中被描绘成较低的那些元素执行所请求的动作,并将响应性信息返回到在垂直布局中被描绘成较高的那些元素。如本领域的技术人员所认识到的, 图2的系统200中所示出的至少一些对象和计算机可执行指令集可以是诸如图1中所示出的操作系统134之类的操作系统的元素,而图2中所示出的其他对象和计算机可执行指令集可以是独立应用程序或实用程序的元素,诸如由图1中所示出的程序模块135 —般地表示的那些。在图2的系统200所示的分层元素的最低层的可以是存储设备210,其可包括诸如图1中所示出的硬件加密硬盘驱动器141之类的硬件加密存储设备。通信地耦合到存储设备210的可以是包括存储总线驱动程序220的计算机可执行指令。如本领域的技术人员所认识到的,存储总线驱动程序220通常可以是诸如图1中所示出的操作系统134之类的操作系统的组件,并可以包括涉及发现通信地耦合到如图1所示的计算设备100的存储设备并与其通信的功能,在该计算设备100上可以执行包括存储总线驱动程序220的计算机可执行指令。在一个实施方式中,存储总线驱动程序220可以创建设备对象,如图2的系统200 中所示出的设备对象221和222,这些设备对象可以充当由存储总线驱动程序检测到的并且存储总线驱动程序与其建立了通信的一个或多个存储设备210的表示。通常,将为单个存储设备创建诸如设备对象221或222之类的单个设备对象,虽然如本领域的技术人员所知,某些类型的存储设备可以导致为单个存储设备创建多个存储设备对象。诸如可以通过存储设备对象表示的单个存储设备可以被进一步分成一个或多个逻辑卷。传统上,将一个存储设备划分为多个逻辑卷是以单个卷包括该存储设备上的多个存储位置的连续阵列的方式进行。尽管如此,下面所描述的机制同样适用于包括多个范围的非连续卷。表示诸如如图2所示的卷管理器230之类的卷管理器的计算机可执行指令, 可以使用由存储总线驱动程序220创建的存储设备对象221和222,来将存储设备210中的一个或多个划分为一个或多个卷。在图2的示例性系统200中,卷管理器230被示为使用存储设备对象222,而不是存储设备对象221,示出了单个存储设备对象可以被独立地处理,一个存储设备可以被分区为多个卷,而另一存储设备可以不这样做。如图2的系统200所示,卷管理器230可以创建一个或多个卷设备对象,如卷设备对象231-232,来表示与存储设备对象222相关联的存储设备被分成的卷。表示卷提供层 240,以及一个或多个管理应用程序250的计算机可执行指令可以通信地耦合到卷管理器 230,并可以为卷管理器提供用户界面。例如,管理应用程序250可以是能够将一个存储设备分区为一个或多个逻辑卷,并提供允许用户访问这样的功能的用户界面,并控制其使用的若干个实用程序中的任何一个。类似地,卷提供层240可以同样提供允许用户有选择地将一个或多个存储设备分区为多个卷的用户界面。存储总线驱动程序220、卷管理器230,以及卷提供层240通常可以是诸如如图1 所示的操作系统134之类的已知操作系统的一部分。尽管准确的实现显然是操作系统特定的,但是,下面的描述假设存储总线驱动程序220、卷管理器230和卷提供层240或一个或多个管理应用程序250的相关功能,由于某种原因已经存在于图1的计算设备100上,从而, 可以充当下面所描述的机制可以发展的基础。在一个实施方式中,实现存储安全类驱动程序的计算机可执行指令可以在图1的计算设备100上执行,以发现诸如硬件加密存储设备之类的存储设备的安全功能。更具体而言,以类似于存储总线驱动程序220与存储设备210进行通信以及发现与在其上面执行存储总线驱动程序的计算设备的通信连接的方式的方式,存储安全类驱动程序260可以同样与存储设备210进行通信,诸如通过由存储总线驱动程序220所创建的存储设备对象221 和222中的一个或多个,并发现存储设备210中的任何一个或多个是否包括可以由存储安全类驱动程序作为安全设备对象暴露的安全功能。如以前一样,存储安全类驱动程序260 在图2的示例性系统200被视为维护与存储设备对象222而不是与存储设备对象221的通信连接,示出了存储安全类驱动程序260可以独立地选择要与其通信地耦合的一个或多个存储设备对象。通常,存储安全类驱动程序260可以与那些与包括安全功能的存储设备相关联的存储设备对象建立通信连接,安全功能可以由存储安全类驱动程序暴露为一个或多个安全设备对象。由存储安全类驱动程序260所生成的安全设备对象可以表示存储安全类驱动程序在通过与存储设备210相关联的存储设备对象与这样的存储设备进行通信时发现的,并且由存储总线驱动程序220所暴露的那些安全功能。在图2的示例性系统200中, 存储安全类驱动程序260被示为提供两个独立安全设备对象261和262,它们可以表示与存储安全类驱动程序所可通信地耦合的存储设备对象222相关联的存储设备的安全能力。在一个实施方式中,通过诸如安全设备对象261和262之类的安全设备对象来表示的发现的安全功能可以在主机_设备协议级通过IEEE 1667筒仓来表示。在一个实施方式中,计算机可执行指令的组件的单独的栈可以构建于由存储安全类驱动程序260所创建的安全设备对象上方,与计算机可执行指令的组件的栈可以构建于存储设备对象上方的已知方式相同。一个这样的栈可以负责管理硬件加密存储设备上的存储位置或地址的特定范围。在如图2所示的示例性系统200中,安全设备对象262可以表示由硬件加密存储设备展示的安全功能,如根据最终由在该硬件加密存储设备可通信地耦合到的计算设备上执行的计算机可执行指令进行管理的一个或多个加密密钥,加密被提供到存储设备的数据,以及随后解密从存储设备中读取的数据的能力。为便于引用,为符合通常由本领域的技术人员所使用的术语,下面将使用术语 “带”来表示硬件加密存储设备上的共享一个或多个共同的加密方面的存储地址的范围。例如,单个带可以包括全部可以利用单个加密密钥解密的数据,写入到该带的任何数据都可以利用在被写入到存储介质之前的该相同密钥来进行加密。构成单个带的存储地址的范围常常与构成单个卷的存储地址的范围相同,以便卷因为它与带在一起,基本上具有单个加密密钥,该单个加密密钥在硬件加密存储设备上加密被写入到该卷的所有数据,相应地,也解密从该卷中读取的所有数据。在这样的情况下,涉及卷的操作,如调整卷大小,删除卷,或创建新卷,可以对与其位于一起的带具有对应的影响。然而,为执行影响该带的任何动作, 因此,可能需要首先使与该带相关联的那个加密密钥可以被相关进程访问。提供诸如图2的示例性系统200所示出的通用带管理驱动程序270之类的通用带管理驱动程序的计算机可执行指令,可以位于栈的底部,以便允许作为相同栈的一部分的其他计算机可执行指令集在通用带管理驱动程序之前处理输入/输出请求和通信。因此,如图2所示,通用带管理驱动程序270可以是构建于诸如安全设备对象262之类的安全设备对象的顶部的计算机可执行指令的单独的集合的栈的底部成员。可以诸如在图2中可视地表示的,安排这样的栈的其他成员,如包括第三方密钥管理驱动程序275和276的计算机可执行指令,以便通信和请求可以在被通用带管理驱动程序270处理之前分别由第三方密钥管理驱动程序276和275进行处理。如以前一样,通用带管理驱动程序270被示为只与安全设备对象262,而不与安全设备对象261进行通信,以说明安全设备对象261和262是分开的并且独立的对象,包括,例如其中通用带管理驱动程序270的功能可以只适用于或关于安全设备对象262,而非安全设备对象261的对象。在一个实施方式中,实现通用带管理驱动程序270的计算机可执行指令可以支持可以被其他进程用来执行各种带管理动作的特定带管理输入/输出控制。实现通用带管理驱动程序270的计算机可执行的指令还可以能够使用如下面比较详细地描述的带管理协议,带管理协议可以得到存储设备210之中的存储设备的支持,具有由安全设备对象262展示的自加密功能,以允许通用带管理驱动程序270适当地指示这样的硬件加密存储设备。如前面所指出的,由诸如如图1所示的硬件加密硬盘驱动器141之类的硬件加密存储设备提供的硬件支持的加密与解密,可以基于加密密钥,这些加密密钥最终可以被在这样的硬件加密存储设备通信地耦合到的计算设备上执行的计算机可执行指令所管理的加密密钥来保护。这样的加密密钥可以由诸如包括图2的示例性系统200中所示出的密钥管理器290的计算机可执行指令之类的密钥管理计算机可执行指令来进行管理。在一个实施方式中,通用带管理驱动程序270本身不必直接地提供密钥管理功能,而是可以使用由密钥管理器290 (甚至可以是旧式密钥管理器)提供的密钥管理功能。实现收件箱密钥管理提供者280或第三方密钥管理提供者285的计算机可执行指令可以在密钥管理器290和通用带管理驱动程序270之间接口。通过使用密钥管理提供者280和285中的一个或多个,通用带管理驱动程序270 可以获取加密密钥,这些加密密钥可以被用来直接或间接地最终锁定和解锁与安全设备对象262相关联的硬件加密存储设备上的各个带。在一个实施方式中,通用带管理驱动程序 270可以从高速缓存获取可以由通用带管理驱动程序维护的或代表它维护的这样的密钥。 然而,在替换实施方式中,通用带管理驱动程序270可以从一个或多个密钥管理提供者280 和285获取这样的密钥,诸如通过下面将比较详细地描述的回调机制。例如,如果诸如默认收件箱密钥管理提供者280或专用第三方密钥管理提供者285之类的密钥管理提供者表示它提供的加密密钥将不被高速缓存,则在对其使用密钥的安全操作完成之后,这样的密钥可以被通用带管理驱动程序270从存储器中丢弃。在这样的情况下,通用带管理驱动程序 270可能不能从高速缓存获取这样的密钥,并在随后的时间需要这样的密钥时可以使用回调机制来请求这样的密钥。如果由通用带管理驱动程序270执行或代表它执行密钥高速缓存,则密钥管理器 290可以利用这样的高速缓存,且不必提供额外的组件。然而,如果请求不高速缓存加密密钥,则密钥管理器290可以向通用带管理驱动程序270注册诸如密钥管理提供者280和285 之类的密钥管理提供者,以便注册的密钥管理提供者可以在由通用带管理驱动程序请求时提供与特定带相关的加密密钥。可另选地,密钥管理器290可以添加密钥管理驱动程序,作为通用带管理驱动程序270的上部过滤器。在这样的实施方式中,这些密钥管理驱动程序,由于包括比包括通用带管理驱动程序270的计算机可执行指令在栈结构的较高层执行的计算机可执行指令,可以在通用带管理驱动程序之前处理带管理输入/输出控制。图2的示例性系统200所示出的第三方密钥管理驱动程序276,示出了这样的实施方式的一个示例。如果诸如第三方密钥管理驱动程序275和276之类的密钥管理驱动程序可以获取与动作所指向的带相关联的加密密钥,则该密钥管理驱动程序可以通过与存储设备本身进行交互来执行相关操作,而不一定需要由通用带管理驱动程序270执行另外的处理。如前面所指出的,带管理协议可以得到通用带管理驱动程序270的支持。一个示例性协议可以包括用于支持已经存在于存储设备上的带的枚举,在存储设备上创建新的带,改变带在存储设备上的位置,改变带安全参数,带内的数据的加密擦除以及一个或多个带的删除的机制。在枚举带的情况下,示例性协议可以提供表示要枚举的特定带的参数,诸如通过带标识符,或枚举所有带标记。作为响应,对于每一个枚举的带,可以提供该带的开始和大小,元数据以及锁定状态。另外,可以与任何其他相关或现有的密钥管理元数据一起,提供特定密钥管理器的信息或标识。为允许创建带,示例性协议可以提供表示带大小和起始位置的参数,要被存储在与带相关联的任何元数据中的或(作为其一部分)的信息以及关于带的锁定状态的信息。 另外,示例性协议可以提供指出如密钥管理器290之中的可以负责管理与带相关联的加密密钥的密钥管理器的标识符,以及关于与带相关联的认证加密密钥的信息,以及可能与已标识的密钥管理器有关或者被已标识的密钥管理器使用的任何元数据。可任选地,示例性协议可以提供基准带标识符或偏移参数。当向现有卷中添加一个范围时,可以提供此参数。 诸如密钥管理器290之类的密钥管理器,可以类似于基准带地配置新创建的带。至少,同一个密钥管理器可以设置带认证密钥,而一些密钥管理器可以走得更远,将认证密钥从基准带复制到新创建的带。为便于改变带在存储设备上的位置,示例性协议可以提供表示要改变其位置的带的标识符的参数,或可以具有相同功能的带偏移,以及该带所需的新起始位置和新大小。可任选地,示例性协议还可以提供与该带的元数据相关联的参数,以及当前带认证密钥的指示。如果没有提供后一参数,带可以具有默认密钥,或者诸如第三方密钥管理驱动程序275 或276之类的密钥管理驱动程序,或者诸如收件箱密钥管理提供者280或第三方密钥管理提供者285之类的密钥管理提供者中的一个,应该能够提供密钥,以便调用成功。类似地,为便于带的安全性的改变,示例性协议可以再次提供表示要改变其安全性的带的标识符的参数,或可以具有相同功能的带偏移,当前带认证密钥,以及诸如带锁定状态之类的新安全信息。可任选地,示例性协议也可以提供指定新密钥管理器的参数,诸如通过密钥管理标识符、新密钥管理元数据,以及新带认证密钥。如果没有提供新带认证密钥,则带的认证密钥可以保持不变。示例性协议可以通过相似参数促进带内的数据的加密擦除,因为在一个实施方式中带内的数据的加密擦除可以导致为带生成新的随机加密密钥,从而,使存储在这样的带上的数据变得无用。然而,带可以仍保留其现有位置。因此,带内的数据的加密擦除可以类似于带的安全性的改变,因为两者都可以包括对于带的加密密钥的改变,从而,示例性协议可以提供相似的参数,如其内容要被安全地擦除的带的标识,当前带认证密钥等等。
最后,如所示出的,示例性协议可以允许请求删除带,并可指定下列参数带标识符,或偏移,以及擦除标记,当前带认证密钥。如果提供了擦除标记,则它可以指出,带在被删除之前将被加密擦除。相反,如果没有提供当前带认证密钥,则要么带可以具有默认密钥,要么密钥管理驱动程序或密钥管理提供者中的一个应该能够提供密钥。在一个实施方式中,上文引用的元数据可以存储在由硬件加密存储设备每带地提供的存储空间。这样的分配的存储空间可以允许卷提供层240存储带特定的信息,包括,例如,对应的卷的标识符,也可以允许密钥管理器290存储可能是对它们特定的或者它们可利用的信息,诸如,例如,从密钥管理器290中标识拥有带的密钥管理器的唯一标识符。上文所描述的示例性协议可以被,例如,卷提供层240或管理应用程序250中的一个或多个用来执行各种以带为中心的操作。根据上文所描述的示例性协议的输入/输出控制可以由,例如,卷提供层240提供到卷管理器230,随后,从卷管理器提供到表示将在其上执行所请求的操作的硬件加密存储设备的存储设备对象222。在一个实施方式中,这样的输入/输出控制通信可以由存储安全类驱动程序260截取,并可以由存储安全类驱动程序通过与安全设备对象(如安全设备对象262)相关联的密钥管理驱动程序和密钥管理提供者路由,安全设备对象与由输入/输出控制通信引用的硬件加密存储设备的安全能力相关联。转向图3,所示出的示例性系统300示出了示例性通信路径,其中根据上文所描述的协议的输入/输出控制通信可以通过存储安全类驱动程序260被截取,并以这样的方式被路由,以便获取被提供到硬件加密存储设备所需的相关加密密钥。更具体而言,如图3所示,卷提供层240,例如,或者没有在图3中专用示出的管理应用程序250中的一个或多个, 可以根据上文所描述的协议,启动某种形式的以带为中心输入/输出控制。在图3的示例性系统300中作为通信310示出了这样的初始以带为中心的输入/输出控制。作为示例,通信310可以是通过卷提供层240,使用上文所描述的协议来启动的通信,以改变带的位置, 或其安全性。然而,初始通信310可以不包括最终执行所请求的动作所需的相关加密密钥。相反,如图3的示例性系统300所示,存储安全类驱动程序260可以截取通信310,并可以通过分层在适当的安全设备对象(如安全设备对象262)的顶部的计算机可执行指令的单独的组件的栈,作为通信320重定向它,安全设备对象可以表示初始通信310所定向到的存储设备的相关的安全方面。返回到上面的示例,如果通信310是例如改变带的位置或其安全的通信,则存储安全类驱动程序260可以截取通信310,并通过分层在适当的安全设备对象262之上的计算机可执行指令的单独的组件的栈,作为通信320重定向它,安全设备对象 262可以表示通过存储设备对象222来表示的硬件加密存储设备的硬件加密方面,在由存储安全类驱动程序260截取原始通信310之前,该原始通信310被指向存储设备对象222。在一个实施方式中,可以通过存储安全类驱动程序260中的枚举机制来定位通过其相关联的栈来重定向通信320的诸如安全设备对象262之类的正确的安全设备对象。例如,现代操作系统中的增强的存储框架可以提供用于枚举IEEE 1667筒仓以及相应的设备对象的机制。上文所描述的重定向可以通过配置存储安全类驱动程序来实现,以提供输入/输出控制重定向机制,该机制可以允许来自构建在安全设备对象之上的栈的计算机可执行指令请求将某些输入/输出控制重定向到包括请求了计算机可执行指令的栈。例如,通用带管理驱动程序270可以向存储安全类驱动程序260注册上文参考示例性带管理协议所描述的带管理输入/输出控制。当存储安全类驱动程序260接收那些被注册的输入/输出控制中的一个时,它可以通过利用适当数量的栈位置来创建代理输入/输出请求,执行通信320 所示的重定向,利用来自原始以带为中心的输入/输出控制的参数填充它,并将它发送到相关的,在此情况下是带管理栈的顶部。如此,如图3的示例性系统300所示,重定向的通信320可以分别经过第三方密钥管理驱动程序276和275,然后,到达通用带管理驱动程序 270。在代理输入/输出请求已经完成之后,原始输入/输出控制可以利用相同的状态和信息完成。如前面所指出的,原始通信310可以不包括在原始通信310中对存储设备执行所要求的输入/输出控制所必需的相关加密密钥。通过与安全设备对象262相关联的计算机可执行指令的栈的重定向的通信320被设计为至少部分地获取这样的相关加密密钥,以便执行所要求的输入/输出控制。在一个实施方式中,可以基于与带相关联的标识符,确定特定密钥管理提供者,该特定密钥管理提供者的计算机可执行指令管理与特定带相关联的一个或多个加密密钥。如前面所指出的,这样的标识符可以是可以存储在存储设备上的元数据的一部分,可以通过上文所描述的协议,添加、修改或删除元数据。诸如第三方密钥管理提供者285之类的单个密钥管理提供者,可以通过引用这些带标识符,注册为特定带的密钥管理提供者。如果对于可以从硬件加密存储设备中获取的或者可以在通信310和320中指定的特定带标识符没有注册密钥管理提供者,可以使用诸如收件箱密钥管理提供者280 之类的默认密钥管理提供者。如图3的示例性系统300所示出的通信330所示,通用带管理驱动程序270可以使用带标识符,或者特定密钥管理提供者的标识,来确定与相关密钥管理提供者的通信330, 以便获取与通信320的输入/输出控制相关的加密密钥。一旦通用带管理驱动程序270已经获取了相关加密密钥,诸如通过通信330,就可以使用那些相关加密密钥来允许通用带管理驱动程序270来执行与通信320的输入/输出控制相关的动作(诸如由通信320的输入 /输出控制所请求的,或者所需要的那些动作),相应地利用将允许存储设备执行所请求的功能的相关加密密钥生成命令通信340,包括那些相关动作。例如,在一个实施方式中,可以通过通信310和随后重定向的通信320传递到通用带管理驱动程序270的单个以带为中心的输入/输出控制,可以使通用带管理驱动程序270生成一系列命令通信340,包括,例如,指示硬件加密存储设备执行下列操作的通信启动会话,利用相关加密密钥(诸如通过通信330获取的那个)向会话进行认证,在带表的行中迭代,以发现与以带为中心的输入/ 输出控制相关的带,启动事务,对表进行修改,停止和提交事务,以及关闭会话。然后,可以通过与相关存储设备相关联的存储设备对象(如存储设备对象222), 以与定向原始通信310相同的方式(假定没有被存储安全类驱动程序260以上文具体实施方式
的方式重定向),定向命令通信340。图3中的标记为311的虚线箭头旨在表示原始通信310的计划的路径,并示出了通信340沿着该同一个计划的路径继续。在某些情况下,硬件加密存储设备的带可能需要在通常不由密钥管理器290中的一个启动的操作过程中改变。例如,实用程序可能尝试改变硬件加密存储设备上的卷大小, 而不会察觉到也应该以相同的方式改变与这样的卷相关联的加密带。由于可能需要带认证密钥以便对带执行操作,因此,在向硬件加密存储设备发送相应的命令之前,可能需要获取与上文所描述的通信330相关联的带认证密钥,诸如通过通用带管理驱动程序270。在一个实施方式中,当带最初被解锁时,可以由通用带管理驱动程序270,或者代表通用带管理驱动程序270,高速缓存带认证密钥。随后,当由通用带管理驱动程序270接收需要带认证密钥中的一个或多个的诸如对通信320的重定向的输入/输出控制之类的动作时,通用带管理驱动程序可以简单地引用此高速缓存,并获取相关加密密钥。出于安全目的,在一个实施方式中,由通用带管理驱动程序270对高速缓存的密钥的使用可以仅限于不改变带的安全状态或认证密钥的带操作。此策略可以由通用带管理驱动程序270实施。然而,由于安全原因,带认证密钥高速缓存可以不需要,如此,密钥管理器290中的提供带认证密钥的密钥管理器可以指出,不高速缓存密钥。因此,在替换实施方式中,通用带管理驱动程序270可以提供一个或多个密钥管理提供者可以用来进行注册,以从通用带管理驱动程序获得关于在没有认证密钥的情况下请求的带操作的通知的机制。由诸如第三方密钥管理提供者285或者收件箱密钥管理提供者280之类的密钥管理提供者进行的注册,可以通过调用通用带管理驱动程序270,并提供当通用带管理驱动程序270接收没有带认证密钥的以带为中心的输入/输出控制时可以由它调用的回调函数的地址,来执行。在一个实施方式中,上文引用的回调功能可以提供可以指定这样的回调所应用的存储设备对象的参数,这样的回调要应用的一个或多个带标识符,以及关于正在为其请求带认证密钥的所请求的操作的信息,包括当前带位置和新带位置(如果正在移动带的话), 以及当前带安全和新带安全(如果正在改变带安全的话)。回调可以要么返回当前带认证密钥,要么可以否决整个操作,在这样的情况下,可以舍弃原始以带为中心的输入/输出控制请求,诸如由通用带管理驱动程序270舍弃。当诸如第三方密钥管理提供者285或默认收件箱密钥管理提供者280之类的密钥管理提供者向通用带管理驱动程序270进行注册时,它们可以提供可以被用来将硬件加密存储设备的特定带与提供标识符的密钥管理提供者相关联的一个或多个密钥管理标识符。 在一个实施方式中,可以使用那些密钥管理标识符来动态地加载密钥管理提供者。例如,诸如第三方密钥管理提供者285和收件箱密钥管理提供者280之类的密钥管理提供者,可以使用诸如操作系统注册表数据库之类的预先定义的配置存储来将密钥管理标识符与特定计算机可执行指令集相关联。如果通用带管理驱动程序270发现针对其没有密钥管理提供者注册回调的标识符,则它可以扫描此预先定义的配置存储,以查找相关密钥管理提供者的计算机可执行指令集的入口点,并可以使该计算机可执行指令集被实例化。也可以使用这样的机制来动态地下载或更新一个或多个密钥管理提供者的计算机可执行指令。在一个实施方式中,可以从硬件加密存储设备中检索硬件加密存储设备的带的密钥管理标识符,诸如在设备枚举过程中,并可以以某种形式上传到更新服务器。然后,更新服务器可以基于所提供的标识符来在其数据库搜索软件程序包,如果检测到匹配, 则可以建议安装相应的软件程序包,如果在服务器上有比安装在相关的计算设备的版本更新的版本,则安装更新。转向图4,其中所示出的示例性流程图400示出了可以由例如通用带管理驱动程序270执行的一系列示例性步骤。一开始,在步骤410中,可以接收以带为中心的输入/输出控制,该控制缺乏执行控制所要求的动作的适当的加密密钥。在步骤420中,可以确定是否已经高速缓存了相关密钥。如果在步骤420中在高速缓存中发现了相关密钥,则处理可以转到步骤499,在那里可以执行以带为中心的输入/输出控制,除非此时指定了所需的密钥。然而,如果在步骤420中没有高速缓存相关密钥,则可以在步骤430中从硬件加密存储设备中检索与相关带相关联的密钥管理标识符。在步骤440中,通过使用在步骤430 中获取的密钥管理标识符,可以找到所标识的密钥管理提供者。在一个实施方式中,如果在步骤450中密钥管理提供者没有注册回调机制,则可以引用一个外部进程来请求按需实例化、下载或升级密钥管理提供者。如此,如示例性流程图400所示,可以在步骤460中请求所标识的密钥管理提供者的实例化、下载或升级。随后,在步骤465中,可以确定是否成功地执行了所请求的动作。如果成功地执行,如由步骤465所确定的,则可以执行步骤470的处理,如下面所描述的。可另选地,如果在步骤465中,确定所请求的动作没有成功地执行, 则处理可以转到步骤490,也下面如所描述的。返回到步骤450,如果在步骤450中找到密钥管理提供者,则执行步骤470的处理,在那里可以使用由该密钥管理提供者注册的回调机制来获取与在步骤410中接收到的以为带中心的输入/输出控制相关的带认证密钥。如果在步骤480中确定回调成功,则可以执行步骤499的处理,并可以执行以带为中心的输入/输出控制,除非此时指定所需的密钥。然而,如果在步骤480中确定回调不成功,诸如如果密钥管理提供者确定不应该提供带认证密钥,则处理可以转到步骤490,使在步骤410中接收到的以带为中心的输入输出/控制失效。在一个实施方式中,为确保存储在硬件加密存储设备上的数据在设备断电时被保护,可实现确保在设备被转换到低耗电状态之前锁定硬件加密存储设备的相关带。在从低耗电状态变回到正常操作状态时,可以恢复硬件加密存储设备的安全状态。因为可以使用硬件加密存储设备来存储连续变化的,并可能需要立即可访问的信息,如页文件,可能需要在当读和写请求已经停止,或者还没有恢复,但是硬件加密存储设备仍可以通电或已经通电之间的较短时间窗口内执行去认证,以及随后的再认证。如图2和3所示,存储安全类驱动程序260可以通过截取从较高层的驱动程序发送到存储总线驱动程序220的电源请求,也如图2和3所示,并从存储总线驱动程序到较高层的驱动程序完成,来促进电源转换时的去认证和再认证。例如,在断电时,如图2和3所示,存储安全类驱动程序260可以接收设备断电请求,使其不挂断,将按需去认证请求发送到构建于由存储安全类驱动程序所创建的安全设备对象(诸如如图2和3所示的安全设备对象262)的顶部的每一个安全栈的顶部,等待所有按需去认证请求完成,然后,发送原始断电请求。类似地,在通电时,如图2和3所示,存储安全类驱动程序260可以接收设备通电请求,将栈位置和完成例程添加到通电请求中,发送经过修改的通电请求,当调用完成例程时,将按需再认证请求发送到构建于由存储安全类驱动程序所创建的安全设备对象(诸如如图2和3所示的安全设备对象262)的顶部的每一个安全栈的顶部。当全部按需再认证请求完成时,如图2和3所示,存储安全类驱动程序260可以完成原始通电请求。如图2和3所示,当通用带管理驱动程序270接收按需去认证请求时,它可以从密钥高速缓存或者上文具体实施方式
的密钥管理提供者回调中的一个获取带认证密钥。例如,可以将回调的带操作类型设置为临时去认证,然后,可以将带锁定状态改变为永久锁定。类似地,如图2和3所示,当通用带管理驱动程序270接收到按需再认证请求时,它可以从密钥高速缓存或者密钥管理提供者回调中的一个获取带认证密钥,也如上文所具体实施方式
的。例如,可以将回调的带操作类型设置为再认证,然后,可以将带锁定状态恢复为过渡到低耗电状态之前的状态。因为来自不同的供应商的计算机可执行指令的多个组件可以共同存在于类似于上文所描述的那种系统中,因此,可能需要适当的同步。密钥管理器之间的同步自然地通过没有在密钥管理器之间共享的带认证密钥来实现。一旦一个密钥管理器已经取得一个带的所有权,则其他密钥管理器再不能改变该带,除非所有者释放了带密钥。如图2和3所示, 卷提供层240和密钥管理器之间的同步可以通过将改变带位置和改变带安全调用分离来实现。更具体而言,如图2和3所示,通用带管理驱动程序270,可以确保以原子方式执行每一个以带为中心的输入/输出控制,对于一个特定带或硬件加密存储设备上的地址集合, 在任何给定时间都只有一个以带为中心的输入/输出控制在执行。硬件加密存储设备可以通过每个带地为诸如密钥管理标识符之类的各种元数据提供存储,来促进模块化密钥管理的实现。进一步保护这样的元数据硬件加密存储设备的完整性可以默认地实施对它的只读访问,只有当在可通信地耦合到硬件加密存储设备上执行的计算机可执行指令已经使用所述相应的带的认证密钥向硬件加密存储设备进行认证之后,才允许读写访问。如果硬件加密存储设备提供单个每带元数据字段,则可以将该字段的头几个字节分配到密钥管理标识符,将字段的其余部分用于额外的元数据。从上面的描述可以看出,提供了用于对硬件加密存储设备进行可扩展的管理的模块化机制。鉴于此处所描述的主题的许多可能的方案,作为本发明,我们声明所有这样的实施方式都在下面的权利要求书以及又等效内容的范围和精神内。
权利要求
1.一种处理以带为中心的输入/输出控制通信的方法,包括下列步骤创建表示硬件加密存储设备(141)的自加密特征的安全设备对象(262);检测被定向到现有存储设备对象(222)的与所述硬件加密存储设备(141)相关联的以带为中心的输入/输出控制通信(310);将所检测到的以带为中心的输入/输出控制通信(310)重定向到表示垂直地置于所述安全设备对象(262)上方的计算机可执行指令集(276,275,270)的栈的顶部的第一计算机可执行指令集(276),以使得通信(320)从所述栈中的较高的计算机可执行指令集前进到所述栈中的较低的计算机可执行指令集;以及将命令通信(340)提供到所述现有存储设备对象(222),所述命令通信(340)指示所述硬件加密存储设备(141)执行与所检测到的以带为中心的输入/输出控制通信(310)相关的动作,其中所提供的命令通信(340)是由所述栈中的计算机可执行指令响应于所述将所述以带为中心的输入/输出控制通信(310)重定向到所述栈而生成的。
2.如权利要求1所述的方法,其特征在于,检测到的所述以带为中心的输入/输出控制通信是与现有卷管理器相关联的输入/输出控制通信并且是以带为中心的,因为它们被定向到所述硬件加密存储设备上的与一个或多个带相关联并且位于同处的一个或多个卷。
3.如权利要求1所述的方法,其特征在于,还包括发现由所述硬件加密存储设备支持的安全功能的步骤,所发现的安全功能包括自加密;并且其中所述创建表示所述硬件加密存储设备的自加密特征的所述安全设备对象响应于所述发现由所述硬件加密存储设备支持的所述安全功能而执行。
4.如权利要求1所述的方法,其特征在于,还包括创建表示硬件加密存储设备的独立于所述自加密特征的检测到的安全特征的另一安全设备对象的步骤。
5.如权利要求1所述的方法,其特征在于,所述命令通信包括与受所述以带为中心的输入/输出控制通信影响的一个或多个带相关的一个或多个加密密钥。
6.如权利要求1所述的方法,其特征在于,还包括下列步骤检测设备断电请求;挂起被定向到所述硬件加密存储设备的所检测到的设备断电请求;将按需去认证请求发送到垂直地置于所述安全设备对象上方的计算机可执行指令集的所述栈的顶部;以及当所述按需去认证请求已经完成时,结束所检测到的设备断电请求的挂起。
7.如权利要求1所述的方法,其特征在于,还包括下列步骤检测被定向到所述硬件加密存储设备的设备通电请求;修改所检测到的设备通电请求,所述修改包括添加栈位置和完成例程;传输经修改的设备通电请求;将按需再认证请求发送到垂直地置于所述安全设备对象上方的计算机可执行指令集的所述栈的顶部;以及当所述按需再认证请求已经完成时,完成所检测到的所述设备通电请求。
8.如权利要求1所述的方法,其特征在于,还包括下列步骤接收重定向的以带为中心的输入/输出控制通信;标识所述硬件加密存储设备中的受所述重定向的以带为中心的输入/输出控制通信影响的至少一个带;响应于并根据所述重定向的以带为中心的输入/输出控制通信,生成所述命令通信, 其中所述命令通信包括与所标识的至少一个带相关的至少一个加密密钥。
9.如权利要求8所述的方法,其特征在于,还包括高速缓存所述至少一个加密密钥的步骤;其中所述生成是用高速缓存的至少一个加密密钥执行的。
10.如权利要求9所述的方法,其特征在于,所述生成是只在所述以带为中心的输入/ 输出控制通信不改变所标识的至少一个带的安全状态情况下才用所述高速缓存的至少一个加密密钥执行的。
11.如权利要求8所述的方法,其特征在于,还包括下列步骤获取所标识的至少一个带的元数据;使用所获取的元数据来标识至少一个密钥管理器;以及从所述至少一个密钥管理器获取所述至少一个加密密钥。
12.如权利要求11所述的方法,其特征在于,还包括从所述至少一个密钥管理器接收回调机制的注册的步骤;其中所述从所述至少一个密钥管理器获取所述至少一个加密密钥是通过调用所述回调机制来执行的。
13.如权利要求11所述的方法,其特征在于,还包括基于所获取的元数据来获取并安装所标识的至少一个密钥管理器的步骤。
14.如权利要求11所述的方法,其特征在于,还包括基于所获取的元数据来升级所标识的至少一个密钥管理器的步骤。
15.一种或多种具有用于执行如权利要求1所述的步骤的计算机可执行指令的计算机可读介质。
全文摘要
可以使用安全设备对象来支持涉及管理通过安全设备对象来表示的安全功能的计算机可执行指令的组件的栈。在硬件加密存储设备的情况下,安全设备对象可以表示那些设备的自加密能力,附带的栈可以包括涉及带和密钥管理的驱动程序。默认带管理驱动程序可以支持可以被重定向到带管理驱动程序的以带为中心的输入/输出控制集。它可以高速缓存带认证密钥或为密钥提供者提供注册其本身以按需提供密钥的回调机制。密钥提供者标识符可以存储在存储设备上,并被用来在需要带认证密钥时动态地加载、安装或升级密钥提供者。带管理驱动程序也可以防止存储设备在解锁的状态下被断电。
文档编号G06F12/14GK102222049SQ20111010215
公开日2011年10月19日 申请日期2011年4月14日 优先权日2010年4月14日
发明者G·B·利亚霍维斯基 申请人:微软公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1