硬件支持的虚拟化密码服务的制作方法

文档序号:6357714阅读:157来源:国知局
专利名称:硬件支持的虚拟化密码服务的制作方法
技术领域
本发明涉及虚拟机技术,尤其涉及虚拟化密码服务。
背景技术
随着计算设备变得越来越强大并且越来越有能力,计算设备上的一个或多个虚拟环境的执行已变得更实际。每一虚拟环境包括计算设备的硬件抽象,使得在该虚拟环境内执行的计算机可执行指令不能表明它们不是直接在所抽象的硬件上执行的。然而,从物理计算设备的角度来看,虚拟环境只不过是一系列正在执行的计算机可执行指令(非常像任何其他进程或应用)以及一个或多个数据文件。由此,尽管在虚拟环境中执行的计算机可执行指令可感觉到硬盘驱动器或其他计算机可读存储设备的存在,但从物理计算设备的角度来看,这一硬盘驱动器只不过是可用与存储在和这一物理计算设备通信耦合的存储介质上的任何其他数据文件相同的方式来处理的数据文件。由于存储在通信耦合到物理计算设备的存储介质上的单个文件可在虚拟计算环境的上下文中表示整个卷,或甚至整个存储设备,因此将这一文件复制到另一计算设备能使得该另一计算设备能够获得对可能已被在虚拟环境内执行的计算机可执行指令使用或存储的可能敏感或机密的信息的访问。具体地,由于在虚拟计算环境内执行的计算机可执行指令不能检测到底层计算硬件中的差别,因此如果在虚拟计算环境的上下文中表示整个卷或存储设备的文件从一个物理计算设备复制到另一个可能恶意的计算设备,则在虚拟计算环境内执行的计算机可执行指令不能保护它们自身。为了保护虚拟计算环境使用和生成的数据,可从虚拟计算的外部向该虚拟环境内部表示卷或存储设备的文件应用各种保护方法。例如,直接在物理计算设备上执行的计算机可执行指令可加密虚拟计算环境内表示卷或存储设备的文件。或者,可使用访问控制方法来限制对虚拟计算环境内表示卷或存储设备的文件的访问。然而,如果虚拟计算环境内表示卷或存储设备的文件被复制到另外的非授权用户对其具有管理权限的另一计算设备, 则可绕过访问控制方法。并且,尽管加密虚拟计算环境内表示卷或存储设备的文件可能不能被容易地绕过,但是它也会在虚拟计算环境由服务器计算设备主存时引入大量困难。具体地,加密虚拟计算环境内表示卷或存储设备的文件会在每次需要解密这一文件时,如在每次重新弓I导主存该虚拟计算环境的服务器时,要求用户输入口令或其他解密信息。由于现代服务器场可能包括数以万计的服务器,这一用户密集要求是不切实际的。

发明内容
虚拟化密码服务可以是呈现虚拟计算设备所基于的硬件抽象的系统管理程序 (hypervisor)的一部分。该虚拟化密码服务可以支持可在虚拟计算环境本身内执行的现有保护机制。通过这样做,该虚拟化密码服务可以利用硬件安全设备,如可作为主存虚拟计算环境的物理计算设备的一部分来获得的可信平台模块(TPM)。以此方式,虚拟计算环境的安全性可被绑定到主存该虚拟计算环境的具体物理计算设备的硬件。
在一个实施例中,该虚拟化密码服务可向在虚拟计算环境内执行并实现加密和解密的加密机制提供密钥,加密机制可利用该密钥来在虚拟计算环境内保护这一机制可用于加密数据并且这一机制解密数据可能所需的一个或多个密钥。在另一实施例中,从虚拟化密码服务提供且由在虚拟计算环境内执行的加密机制选择的密钥可由虚拟化密码服务提供给作为物理计算设备的一部分的TPM,该物理计算设备主存虚拟计算设备。TPM然后可利用TPM专用密钥来保护这些密钥,并且由此将虚拟化密码服务提供的密钥的保护绑定到计算设备的硬件。在又一实施例中,当在虚拟计算环境内执行的加密机制寻求解密先前加密的信息时,它能向虚拟化密码服务请求执行这一解密所需的密钥。该虚拟化密码服务然后能够将相关信息提供给TPM,TPM能执行必要的解密并返回相关密钥。虚拟化密码服务然后能将相关密钥提供给在虚拟计算环境内执行的加密机制。在再一实施例中,通过用其他物理计算设备的TPM的TPM专用密钥来保护与虚拟化密码服务以及在虚拟计算环境内执行的加密机制的操作相关的密钥,这些密钥可被复制到主存该虚拟计算环境的各实例的物理计算设备。提供本发明内容以便以简化形式介绍将在以下的具体实施方式
中进一步描述的一些概念。本发明内容并不旨在标识所要求保护的主题的访问控制特征或必要特征,也不旨在用于限制所要求保护的主题的范围。当参考附图阅读以下具体实施方式
时,将使得其它特征和优点是显而易见的。


以下具体实施方式
在结合附图参考时可得到最佳的理解,附图中图1是包括TPM的示例性计算设备的框图;图2是由示例性计算设备主存的示例性虚拟计算环境的框图;图3是使用虚拟化密码服务的虚拟存储设备的示例性加密的框图;图4是虚拟存储设备和TPM之间的示例性交互的框图;图5是使用虚拟化密码服务的虚拟存储设备的示例性解密的框图;图6是硬件保护的秘密在多个计算设备之间的示例性转移的框图;以及图7是虚拟存储设备的示例性操作的流程图。
具体实施例方式以下描述涉及诸如在系统管理程序中提供虚拟化密码服务,用于向在虚拟计算环境内执行的计算机可执行指令提供对基于硬件的密码保护的访问。该虚拟化密码服务可将密钥提供给在虚拟计算环境中执行的加密机制,这些加密机制可使用该密钥来保护这些加密机制用于在虚拟计算环境中加密和解密数据的密钥。虚拟化密码服务所提供的、在虚拟计算环境内执行的加密机制所选择的密钥然后可由虚拟化密码服务提供给可信平台模块 (TPM),该TPM由专用于该TPM的密钥来保护。随后,当在虚拟计算环境中执行的加密机制寻求解密先前加密的数据时,它们能够将受保护的密钥连同用于保护该受保护密钥的密钥的指示一起提供给虚拟化密码服务。该虚拟化密码服务能够将相关信息提供给TPM,并且可从TPM接收回在虚拟计算环境中执行的加密机制所需要的密钥。该虚拟化密码服务然后能够将这一密钥返回到虚拟计算环境中。以此方式,在虚拟计算环境中执行的加密能被绑定到主存该虚拟计算环境的计算设备的TPM所提供的基于硬件的安全性。此处描述的技术参考但不限于可信平台模块、诸如卷主密钥等特定类型的密钥、 以及诸如整卷加密机制等特定类型的加密机制和方法。实际上,所描述的技术同样适用于任何类型的基于硬件的安全模块、任何类型的加密机制或方法、以及这些加密机制和方法使用的任何类型的密钥。术语“可信平台模块”(即“TPM”)、“卷主密钥”(即“VMK”)以及 “整卷加密”在此处仅为了便于描述而使用,并且提供了可被本领域技术人员容易理解的通用参考。因此,如此处所使用的,术语“可信平台模块”,即“TPM”意味着任何类型的基于硬件的安全模块;术语“卷主密钥”,即“VMK”意味着任何类型的密码密钥;且术语“整卷加密” 意味着任何类型的加密机制,不论是应用于整个卷、整个存储设备、还是仅应用于其所描绘的部分。虽然未作要求,但以下描述将处在诸如程序模块等正由计算设备执行的计算机可执行指令的一般上下文中。更具体而言,除非另外指明,否则该描述将参考一个或多个计算设备或外围设备所执行的动作以及其所执行的操作的符号表示。由此,可以理解,这些有时被称为计算机执行的动作和操作包括以结构化形式表示数据的电信号的处理单元的操纵。 该操纵在存储器中的各个位置变换或维护数据,这以本领域技术人员都理解的方式重新配置或以其他方式更改计算设备或外围设备的操作。其中维护数据的数据结构是具有由该数据的格式定义的特定特性的物理位置。一般而言,程序模块包括执行特定任务或实现特定抽象数据类型的例程、程序、对象、组件、数据结构等。此外,本领域技术人员将会认识到这些计算设备不必限于常规个人计算机,并且包括其他计算配置,包括手持式设备、多处理器系统、基于微处理器的或可编程消费电子设备、网络PC、小型计算机、大型计算机等等。类似地,计算设备不必限于独立计算设备,各机制也可在通过通信网络链接的分布式计算环境中实施。在分布式计算环境中, 程序模块可以位于本地和远程存储器存储设备中。参考图1,示出了示例性计算设备100,其部分地包括在以下描述的方法中进一步引用的硬件元件。示例性计算设备100可包括但不限于,一个或多个中央处理单元 (CPU) 120、系统存储器130、可信平台模块(TPM) 150、和将包括该系统存储器在内的各种系统组件耦合至处理单元120的系统总线121。系统总线121可以是几种类型的总线结构中的任何一种,包括存储器总线或存储控制器、外围总线、以及使用各种总线体系结构中的任一种的局部总线。取决于具体物理实现,CPU 120、系统存储器130和TPM 150中的一个或多个可在物理上位于同处,如在单个芯片上。在这一情况下,系统总线121的一部分或全部可以只不过是单个芯片内的硅通路,且其在图1中的图示只不过是出于说明目的的记法方便。TPM 150可包括用于提供给它的信息的加密和解密的TPM专用密钥151。传统上, TPM 150包括一组初始的不可变加密公钥和私钥,该组密钥可按已知且确立的方式用于获得临时加密公钥和私钥,如可随意删除或不会经历了 TPM重置还存在的公钥和私钥。另外, TPM 150可包括平台配置注册表(PCR) 155,该PCR能安全地存储与计算设备100的状态唯一地相关联的值或其他数据。这些值在传统上由CPU 120经由系统总线121提供给TPM 150。在某些实施例中,仅准许CPU 120所执行的具体代码将会修改存储在PCR 155中的值
7的数据发送给TPM 150。除了上述元素之外,计算设备100通常还包括计算机可读介质,计算机可读介质可包括可由计算设备100访问的任何可用介质。作为示例而非限制,计算机可读介质可以包括计算机存储介质和通信介质。计算机存储介质包括以用于存储诸如计算机可读指令、 数据结构、程序模块或其它数据等信息的任何方法或技术来实现的介质。计算机存储介质包括但不限于,RAM、ROM、EEPR0M、闪存或其它存储器技术、CD-ROM、数字多功能盘(DVD)或其它光盘存储、磁带盒、磁带、磁盘存储或其它磁性存储设备、或能用于存储所需信息且可以由计算设备100访问的任何其它介质。通信介质通常以诸如载波或其他传输机制等已调制数据信号来体现计算机可读指令、数据结构、程序模块或其他数据,并包括任意信息传送介质。作为示例而非限制,通信介质包括有线介质,如有线网络或直接线连接,以及诸如声学、射频(RF)、红外线及其他无线介质之类的无线介质。上述中任一组合也应包括在计算机可读介质的范围之内。在使用通信介质时,计算设备100可以经由到一个或多个远程计算机的逻辑连接在联网环境中工作。图1所描绘的逻辑连接是到网络180的通用网络连接171,网络180可以是局域网(LAN)、广域网(WAN)或其他网络。计算设备100通过网络接口或适配器170连接到通用网络连接171,该网络接口或适配器进而连接到系统总线121。在联网环境中,相对于计算设备100或其部分或外围设备所描绘的程序模块可被存储在通过一般网络连接 171通信地耦合到计算设备100的一个或多个其他计算设备的存储器中。可以理解,所示的网络连接是示例性的,且可以使用在计算设备之间建立通信链路的其他手段。在计算机存储介质中,系统存储器130包括易失性和/或非易失性存储器形式的计算机存储介质,如只读存储器(ROM) 131和随机存取存储器(RAM) 132。基本输入输出系统133 (BIOS)特别地包含用于引导计算设备100的代码,其通常被存储在ROM 131中。RAM 132通常包含处理单元120可以立即访问和/或目前正在其上操作的数据和/或程序模块。 作为示例而非限制,图1示出了操作系统134、其它程序模块135和程序数据136驻留在RAM 132中。RAM 132还可包括可以与TPM 150的操作相关的数据,如TCG事件日志190。在一个实施例中,TCG事件日志190可包括计算设备100自从施加了电源或自从其上一次被重启以来所加载或执行的所有模块的唯一标识;这些模块是其加载或执行导致了当前由TPM 150在一个或多个PCR 155中维护的值的相同模块。计算设备100另外可包括其它可移动/不可移动、易失性/非易失性计算机存储介质。仅作为示例,图1示出了对不可移动、非易失性磁性或固态介质进行读写的硬盘驱动器141。可以与示例性计算设备一起使用的其它可移动/不可移动、易失性/非易失性计算机存储介质包括但不限于,基于固态的存储设备、磁带盒、闪存卡、数字多功能盘、数字录像带、固态RAM、固态ROM等等。硬盘驱动器141通常通过诸如接口 140的不可移动存储器接口连接到系统总线121。上文讨论并在图1中示出的驱动器及其相关联的计算机存储介质为计算设备100 提供了对计算机可读指令、数据结构、程序模块和其它数据的存储。例如,在图1中,硬盘驱动器141被示为存储操作系统144、其它程序模块145和程序数据146。注意,这些组件可以与操作系统134、其它程序模块135和程序数据136相同,也可以与它们不同。操作系统 144、其它程序模块145和程序数据146在这里被标注了不同的标号是为了说明至少它们是不同的副本。转向图2,系统200示出了由物理计算设备100经由系统管理程序211主存的、虚拟计算设备201形式的虚拟计算环境。除了上述通用元件之外,计算设备100的示例性硬盘驱动器141还可包括虚拟存储设备文件222和计算机可执行指令,计算机可执行指令包括系统管理程序221以及用于执行并支持虚拟计算环境的其他计算机可执行指令。如先前结合图1所指示的,被示为存储在硬盘驱动器141上的元件可改为存储在远程访问的存储介质上,如网络附连存储(NAQ存储设备或存储区域网(SAN),而对以下的描述没有任何影响。在图2所示的系统200中,包括系统管理程序221的计算机可执行指令已被执行,从而得到被示为RAM 132中的系统管理程序211的存储器内版本。类似地,虚拟存储设备文件 222的存储器内高速缓存可作为虚拟存储设备文件212驻留在RAM 132中。如本领域的技术人员已知的,执行包括系统管理程序211的计算机可执行指令可实现使得物理计算设备 100能够支持如虚拟计算设备201所表示的虚拟环境的机制。由此,如图2的系统200中所示,虚拟计算设备201被示为由系统管理程序211来支持,系统管理程序211然后与计算设备100的其余部分进行交互。为便于说明,虚拟计算设备201和系统管理程序211在图2的左手侧示出,与物理计算设备100相对。然而,应注意,在左手侧示出的框表示执行进程,而在右手侧示出的在上文详细描述的计算设备100的大多数框表示物理硬件。系统管理程序211作为执行进程以其主存虚拟计算设备201的容量在图2的左手侧示出,并且作为RAM 132的组件在图2 的右手侧示出。系统管理程序211的两个框都被加上阴影来指示它们表示同一组正在执行的计算机可执行指令。在图2的系统200中被表示为虚拟计算设备201的虚拟计算环境中,操作系统234 和一个或多个应用程序,如应用程序261和沈2,能够以它们原本在物理计算设备100上执行的相同的方式来执行。更具体地,如本领域的技术人员已知的,系统管理程序211能够支持虚拟计算设备201中的一组通用计算硬件,使得例如操作系统231能够以与其对于物理计算硬件相同的方式来与系统管理程序211所提供的抽象通过接口连接。由此,如图2的系统200中所示,存储设备241可由在虚拟计算设备201内执行的系统管理程序211进程, 如操作系统234来呈现。操作系统234可将存储设备241感受为类似于以上详细描述的且在通信上耦合到计算设备100的硬盘驱动器141的物理存储设备。然而,存储设备241可能不是物理实体,如由其虚线边框所指示的,而可以是系统管理程序211从存储在虚拟存储设备文件222中并高速缓存在RAM 132中的虚拟存储设备文件212中的信息所提供的抽象。当在虚拟计算设备201中执行进程,如应用程序261或262或操作系统234将数据存储在存储设备241上时,此类数据可以实际上作为高速缓存在RAM 132中的虚拟存储设备文件的一部分来存储,并且最终作为存储在物理硬盘驱动器141上的虚拟存储设备文件222 的一部分来存储,物理硬盘驱动器141通信耦合到支持虚拟计算设备201的计算设备100。 对存储设备241的虚线以及虚拟存储设备文件222的实线加阴影旨在示出虚拟元件与其支持的物理实施例之间的这一连接。在某些情况下,系统管理程序211可以向虚拟计算设备 201提供对诸如硬盘驱动器141等物理存储设备的直接访问。在这些情况下,可能不存在虚拟存储设备文件222。尽管如此,以下描述仍然同样适用于这些情况,例外是以下对虚拟存储设备文件222的复制的参考将改为需要复制存储在赋予虚拟计算设备201其直接访问权的物理存储设备上的数据。在一个实施例中,虚拟化密码服务250可以是包括系统管理程序211的计算机可执行指令的一部分,并且可以在虚拟计算设备201所表示的虚拟化环境内呈现密码服务 251,该密码服务251可由在虚拟计算设备201上执行的进程以与在物理计算设备100上执行的进程能利用TPM 150相同的方式来利用。机械上,虚拟计算设备201内的诸如应用程序261或262或操作系统234等进程发起的针对密码服务251的通信可由虚拟化密码服务 250接收,并以诸如以下详细描述的方式来相应地处理。类似地,虚拟化密码服务250接收的通信在适当时可被呈现给虚拟计算设备201内的执行进程,如同它们是来自从中抽象的密码服务251 —样。如同存储设备241和虚拟存储设备文件222的情况一样,密码服务251以虚线示出来指示它是虚拟化密码服务250支持的虚拟抽象,虚拟化密码服务250的实线与密码服务251的虚线有相同的阴影。然而,为便于说明,在作为虚拟计算设备201的一部分来抽象的密码服务251与包括虚拟化密码服务250的执行进程和计算机可执行指令之间将不示出显式链路或通信,因为此类通信对本领域的技术人员是公知的,并且只会不必要地使附图变得复杂且因此负面地影响其易读性。在一个实施例中,操作系统234可以是常用操作系统中的任一个。如本领域的技术人员已知的,此类操作系统通常包括某种形式的加密能力,如被示为图2的系统200中的操作系统234的一部分的整卷加密服务235。如本领域的技术人员也已知的,整卷加密服务可以加密存储设备或存储设备的卷分区的全部或基本上全部,使得数据以加密格式存储, 但仍对诸如应用程序261和262等较高层应用程序可用,如同它们未被加密一样。在图2 的系统200中所示的虚拟计算设备201的情况下,虚拟存储设备Ml的加密在本质上导致存储在硬盘驱动器141上的虚拟存储设备文件222中的数据的加密,硬盘驱动器141通信耦合到主存虚拟计算设备201的物理计算设备100。转向图3,其中所示的系统300示出了一系列示例性步骤和通信,通过该系列步骤和通信,整卷加密服务235在保护与整卷加密服务对存储设备241的加密相关联的密钥时可利用密码服务251。如本领域的技术人员已知的,整卷加密服务235用于加密存储设备 241的密钥本身可由其他密钥来保护,如与用户输入的口令或诸如指纹等其他用户输入的数据相关联的密钥,但这并非必需的。为便于引用,整卷加密服务235用于加密存储设备 241的密钥将被命名为“卷主密钥”,即“VMK”。由此,如图3的系统300中所示,整卷加密服务235可利用VMK 310来加密存储设备M1,如加密动作311所示。为了保护VMK 310,整卷加密服务235可诸如经由请求320来请求密码服务251 枚举可由密码服务251出于保护VMK 310的目的提供给整卷加密服务235的一个或多个密钥。在一个实施例中,如果整卷加密服务235直接在物理计算设备100上执行,则请求320 可以是整卷加密服务对TPM 150做出的相同的请求。然而,由于整卷加密服务235不知道它正在虚拟计算设备201上执行,因此在这一实施例中,整卷加密服务235不需要被修改来利用密码服务251。对密钥枚举的请求320可由虚拟化密码服务250来处理,因为假定执行虚拟化密码服务250的计算机可执行指令生成了虚拟计算设备201中的密码服务251的表示,请求 320实际是针对该虚拟化密码服务的。在处理请求320时,虚拟化密码服务250在一个实施例中可参考可被存储在计算设备100的硬盘驱动器141上的一组密钥,如密钥322,如通信325和3 所示。在一替换实施例中,虚拟化密码服务250可具有与其一起存储的一组密钥,或甚至可以在进行中生成一组随机密钥。在又一替换实施例中,虚拟化密码服务250 可以诸如通过图1所示的网络180参考服务器计算设备来至少获得特定密钥的公共版本的列表。不管获得密钥的方式是什么,虚拟化密码服务250经由虚拟计算设备201中表示的密码服务251能向整卷加密服务235枚举一组密钥,如通信330所示。从该组枚举的密钥,整卷加密服务235可选择要用于保护VMK 310的一个或多个密钥,如所选密钥340。整卷加密服务235然后可生成受保护VMK 350,该受保护VMK 350然后可由整卷加密服务235 存储在存储设备Ml的未加密服务362中,如通信352所示。在一个实施例中,存储设备 241的其余部分可包括加密部分361。除了受保护VMK 350之外,整卷加密服务350还可在存储设备241的未加密部分362中随受保护VMK —起存储被用于生成受保护VMK的所选密钥;340的标识。尽管非必需,但此处描述的密码密钥可包括可按公知方式来互操作的公钥和私钥。在这一情况下,虚拟化密码服务250经由消息330枚举的密钥不需要包括这两个密钥, 而是可改为仅包括公钥的列表。因而,类似地,所选密钥340可以仅是公钥,使得整卷加密服务235可用该公钥来加密VMK 310,以生成受保护VMK 350,但之后无法解密该受保护VMK 350,因为整卷加密服务235缺少对应于所选公钥340的私钥。如将在下文中更详细描述的, 整卷加密服务235可利用密码服务251、虚拟化密码服务250和可信平台模块150,借助给予用于生成受保护VMK 350的所选密钥的私有版本的保护,来获得对VMK 310的基于硬件的保护。更具体地,转向图4,其中示出的系统400示出了一系列示例性机制和通信,通过该一系列机制和通信,虚拟化密码服务250能实线对VMK 310的基于硬件的保护。如上所述,参考图3所示的系统300,VMK 310可由整卷加密服务235使用所选密钥340的公共版本来保护。因而,在图4所示的系统400中,整卷加密服务235可经由通信410向密码服务 251标识所选密钥。在一个实施例中,所选密钥的标识可由整卷加密服务235如上所述从存储在存储设备241的未加密部分362中的信息来获得。虚拟化密码服务250可基于整卷加密服务235经由通信410提供的信息来标识与用于保护VMK 310的所选密钥340的公共版本相对应的所选密钥341的私有版本。虚拟化密码服务250然后可经由通信420将所选密钥341的该私有版本提供给主存虚拟计算设备201的计算设备100上的TPM 150。作为通信420的一部分,虚拟化密码服务250可请求TPM 150使用TPM专用密钥 151之一来保护所选密钥341的私有版本。在一个实施例中,所选密钥341的私有版本可由 “存储根密钥”(SRK)的公共版本来保护。如本领域的技术人员已知的,SRK可包括在获得 TPM的所有权时,如在诸如图1所示的操作系统134等操作系统的初始引导期间,可由TPM 150生成的公钥和私钥。然而,在其他实施例中,所选密钥341的私有版本可由来自TPM专用密钥151中的某一其他密钥来保护,只要这样的保护最终被绑定到基于硬件的保护。在图4的系统400所示的具体实施例中,虚拟化密码服务250经由通信420提供给TPM 150的所选密钥341的私有版本可由SRK 402的公共版本来保护,以生成所选密钥 430的私有版本的受保护版本。传统上,密钥的这一受保护版本被称为密钥“团”(blob)。
11一旦生成,所选密钥团430就可由TPM 150返回,并最终可被存储,如作为密钥322的一部分存储在硬盘驱动器141上,如通信440所示。当重启,或更准确地,重新实例化虚拟计算设备201时,操作系统234可利用整卷加密服务235来对存储设备Ml的加密部分361进行解密,并使得存储在其上信息如预期的那样来利用。为了对存储设备Ml的加密部分361进行解密,整卷加密服务235可利用 VMK 310。然而,如所示并描述的,整卷加密服务235可能只能访问它先前存储在存储设备 241的未加密部分362中的VMK团350。因此,为了对存储设备241的加密部分361进行解密,整卷加密服务235可以请求密码服务251对VMK团350进行解密,并向整卷加密服务返回它所需要的VMK 310。转向图5,其中所示的系统500示出了一系列示例性机制和通信,通过该一系列机制和通信,整卷服务235可利用加密服务251来从VMK团350中获得VMK 310。最初,如通信510所示,VMK团350可由整卷加密服务235从存储设备Ml的未加密部分362中读取, 并且如通信511所示,该VMK团350之后可被提供给密码服务251。连同通信511 —起,整卷加密服务235还可经由通信520向密码服务251标识如上详细所述整卷加密服务选择来保护VMK的密钥。有了经由通信511和520提供的信息,虚拟化密码服务250可向主存虚拟计算设备201的计算设备100上的TPM 150提供最初由整卷加密服务235经由通信511提供的 VMK团350以及所选密钥团,虚拟化密码服务250可基于经由通信520从整卷加密服务提供的标识来从诸如硬盘驱动器141上的存储读取该所选密钥团。由此,如图5的系统500中所示,虚拟化密码服务250可经由通信512将VMK团350提供给TPM 150,并且还可从存储在硬盘驱动器141上的密钥322中标识正确的所选密钥团,并将经由通信521该所选密钥团430提供给TPM 150。TPM 150然后可以按已知方式利用TPM专用密钥161中适当的一个密钥来对所选密钥团430进行解密,然后利用所得的所选密钥来对VMK团350进行解密。由此,如图5的系统500中所示,TPM 150可利用SRK 401的私有版本来对最初用SRK 402的公共版本加密的所选密钥团430。对所选密钥团430的这一解密可导致TPM 150能够访问在所选密钥团430中加密的所选密钥341的私有版本。有了所选密钥341的私有版本,TPM然后可如上所述对最初用所选密钥;340的公共版本加密的VMK团350。在解密了 VMK团350之后,TPM 可获得对原始VMK 410的访问权,TPM然后经由通信530将该原始VMK返回给虚拟化密码服务250,如图5中所示。虚拟化密码服务250经由在虚拟计算设备201内操作的密码服务251可将VMK 310返回给整卷加密服务235,如图5中的通信531所示。有了 VMK 310,整卷加密服务235 然后可视需要对存储设备241的加密部分361进行解密,如解密动作540所示。以此方式, 虚拟计算设备201存储在存储设备241上的信息可由硬件专用密码元件来保护,如对主存虚拟计算设备201的计算设备100上的TPM 150专用的TPM专用密钥151,其中该信息如上所述在虚拟存储设备文件222中反映。另外,上述机制不需要人类用户输入,并且因此可以例如在计算设备100的自动重引导之后,如在将更新应用于计算设备100之后,在虚拟计算设备201的重新实例化时自动执行。如果某人要将虚拟存储设备文件222从硬盘驱动器141复制到另一存储设备,随后在通信上将该另一存储设备耦合到不同的计算设备,则该人将不能使得在虚拟计算设备 201内执行的进程能够访问存储设备241上的加密部分361,因为这一不同计算设备上的 TPM将无法返回整卷加密服务235所需的VMK310。然而,为了启用虚拟计算设备201如在各自能够主存虚拟计算设备201的实例或能提供虚拟计算设备201的冗余副本的大量服务器计算设备中的授权移动或复制,所选密钥341的私有版本可由对这些其他计算设备上的TPM专用的TPM专用密钥来保护。转向图 6,其中所示的系统600示出了一组示例性替换机制和通信,通过该组机制和通信,所选密钥341的私有版本可由对可在其上实例化虚拟计算设备201的其他计算设备上的TPM专用的TPM专用密钥来保护。在一个实施例中,如图6的系统600中所示,所选密钥341的私有版本可简单地从计算设备100复制到另一计算设备610,如通信640所示。为了维持安全性,这一复制可经由“潜行者网(sneakernet)”来发生,其中管理员或其他可信用户将所选密钥341的私有版本复制到诸如拇指驱动器等移动存储介质,然后将这一拇指驱动器物理地携带到计算设备 610并将所选密钥341的私有版本从该拇指驱动器复制到计算设备610。一旦在计算设备610处,所选密钥341的私有版本可由作为TPM专用密钥621的一部分的SRK 623的公共版本,以及与计算设备610相关联的TPM的SRK 622的私有版本来加密。如前一样,这一加密可得到然后可被存储在与计算设备610相关联的存储介质上 (如图6所示的示例性硬盘驱动器611)的所选密钥团630。所选密钥团630在硬盘驱动器 611上的存储由图6的系统600中所示的通信631来示出。一旦生成了所选密钥团630,就可从计算设备610不可逆地擦除所选密钥341的公共版本。如本领域的技术人员将认识到的,在上述实施例中,由于管理员或其他可信用户能够直接访问计算设备610,因此他们能够执行任何适当的动作来确保计算设备610是可信计算设备。在另一实施例中,管理员或其他可信用户不需要能够直接访问计算设备以在这一其他计算设备上存储信息来启用上述基于硬件的安全机制。同样如图6的系统600中所示,计算设备100,或更准确地,通信地耦合到计算设备100的硬盘驱动器141,可包括能存储作为与另一计算设备640相关联的TPM 650的TPM 专用密钥651的一部分的SRK 652的公共版本的数据库或其他信息存储。例如,最初设置计算设备640的管理员或其他可信用户可从这一其他计算设备640复制SRK 652的公共版本,并可将其存储在该用户可维持对其的访问(包括经由计算设备100)的数据库上。有了对与计算设备640相关联的TPM 650的SRK 652的公共版本的访问,在计算设备100上执行的进程可通过用SRK 652的公共版本以上文详细描述的方式加密所选密钥 341的私有版本来生成所选密钥团670。如本领域的技术人员已知的,所得的所选密钥团 670可诸如经由通信671被安全地发送到计算设备640,因为具有对SRK 653的私有版本的访问权的计算设备才能够解密这一个团670。所接收的所选密钥团670然后可由计算设备 640诸如存储在通信耦合到计算设备640的硬盘驱动器641中,如图6所示的通信672所示。在又一实施例中,如果与另一计算设备相关联的TPM的SRK的公共版本并不是立即已知的,或者至少不是可信地“已知的”,则可通过使得这一其他计算设备生成“证明身份密钥”(AIK),然后以本领域的技术人员公知的技术来充分利用来自该AIK的信任,在这一其他计算设备和能够访问所选密钥341的私有版本的计算设备(如计算设备100)之间建立信任。一旦建立了信任,并且与该另一计算设备相关联的TPM的SRK的公共版本是可信地已知的,则对该另一计算设备的所选密钥团可在具有对所选密钥341的私有版本的访问权的计算设备上生成。在图6中,任选通信660表示以本领域技术人员已知的方式的信息交换, 通过该信息交换,SRK 652的公共版本可通过使用上述AIK以可信方式来获得。如前一样, 所生成的所选密钥团可以简单地诸如经由网络通信被发送到另一计算设备,而不会引入附加的安全风险。在一个实施例中,可以由虚拟化密码服务250经由虚拟计算设备201中的密码服务251变得对整卷加密服务235可用的密钥可以是一组预定密钥,其中每一密钥被分配或关联于一特定功能、计算设备组或其他类似的类别。例如,公司内的不同级别的雇员可被授予对诸如虚拟计算设备201等被主存在多个服务器计算设备上的不同类型的虚拟计算设备的访问权。为了防止来自一个级别的雇员无意地或故意地获得对为来自另一级别的雇员所保留的信息的访问权,可向不同级别的雇员分配不同的密钥集。由此,例如,一组私钥和公钥可被分配给,或以其他方式关联于,具有管理状态的雇员,而作为另一示例,一组不同的私钥和公钥可被分配给,或关联于,在薪资部门工作的雇员。在这一实施例中,即使诸如虚拟存储设备文件222等虚拟存储设备文件可按任何人都能够访问备份的方式来备份,但仅具有对正确密钥的访问权的那些人才能够有意义地访问那些虚拟存储设备文件中的数据。当诸如经由上文所述并在图3中示出的通信330向整卷加密服务235枚举密钥时,虚拟化密码服务250可指定经由通信330所提供的每一密钥承载了什么角色或其他关联。整卷加密服务235然后可选择适当的密钥,包括例如通过诸如经由虚拟计算设备201显示的用户界面来向用户呈现此类角色或其他关联。由此,在这一实施例中,如果虚拟计算设备201曾经被用于在存储设备241上存储薪资信息,则整卷加密服务235可利用与在薪资部门工作的雇员相关联的密钥来加密存储设备Ml。随后,可诸如以上文详细描述的方式向预期被在薪资部门工作的雇员利用的每一计算设备供应所选密钥团,其中由所选密钥团保护的所选密钥是与在薪资部门工作的雇员相关联的密钥的私有版本。万一这一虚拟计算设备201的虚拟存储设备文件222被复制到不是薪资部门的一部分的计算设备,如管理计算设备,则这一管理计算设备不能包括保护与在薪资部门工作的雇员相关联的密钥的私有版本的所选密钥团,并且因此,这一管理计算设备可能无法提供解密存储设备241所需的VMK 310并获得对薪资信息的访问权。转向图7,其中所示的流程图700示出了可由诸如以上详细描述的虚拟化密码服务250等虚拟化密码服务执行的一系列示例性步骤。最初,在步骤710,处理可在诸如系统管理程序211等包括虚拟化密码服务的系统管理程序被实例化时开始。随后,在步骤715, 可获得一组或多组私钥和公钥的访问权,或者,或除此之外,可生成一组或多组私钥和公钥。在步骤720和725,处理可等待对密钥团解密的请求,或对枚举要用于生成密钥团的可用密钥的请求。如果在步骤725,接收到枚举可用密钥的请求,则在步骤730,可枚举在步骤715获得的密钥。随后,在步骤735,可接收将一组特定私钥和公钥从所枚举的密钥中标识出来的标识。如上所述,步骤735所标识的密钥可以是由在虚拟计算环境中执行的整卷加密服务选择来保护解密密钥的密钥,该解密密钥将是这一整卷加密服务获得对虚拟计算环境内的数据的访问所需要的。在步骤740,可将步骤735标识的密钥的私有版本提供给主存虚拟计算环境的计算设备的TPM,以便保护对这一 TPM专用的一个或多个TPM专用密钥。如本领域的技术人员已知的,响应于这一请求,TPM可返回密钥团,该密钥团可在步骤745接收,并存储在可访问存储介质上。处理然后可返回到步骤720和725。另一方面,如果在步骤720接收到对现有密钥团解密的请求,则处理可在步骤750 继续,在那里可接收要解密的密钥团以及用于生成该密钥团的密钥的标识。随后,在步骤 755,可将在步骤750接收的密钥团连同保护所标识的解密第一密钥团所需的密钥的密钥团一起提供给TPM。作为响应,如果TPM具有所需的TPM专用密钥,则TPM可对保护所标识的密钥的密钥团进行解密,且因此获得所标识的密钥,TPM随后可利用该所标识的密钥来对密钥团解密以获得发起在步骤720接收到的请求的整卷加密服务所需的密钥。该密钥,本示例中为VMK,可在步骤750从TPM接收,并且可在步骤765提供给整卷加密服务。如前一样,处理然后可返回到步骤720和725来等待来自在虚拟计算环境中执行的整卷加密服务的下一请求。如可以看到的,提出了在虚拟计算环境中使用的密码信息的基于硬件的保护。考虑此处所述的主题的众多可能的变化,本发明要求保护落入以下权利要求书范围内的所有这样的实施例及其等效实施方式。
权利要求
1.一种具有计算机可执行指令的计算机可读介质,所述计算机可执行指令用于使用基于硬件的安全模块(150)来提供对在由计算设备(100)主存的虚拟计算环境O01)中执行的进程的基于硬件的保护,所述计算设备包括所述基于硬件的安全模块(150),所述计算机可执行指令执行以下步骤生成所述虚拟计算环境O01)内的密码服务051)的表示;经由所述密码服务(251)的表示向在所述虚拟计算环境O01)内执行的进程枚举一个或多个密钥;向所述基于硬件的安全模块(150)提供所枚举的密钥中的至少一个,以便通过所述基于硬件的安全模块专用的密钥(151)来保护;经由所述密码服务051)的表示从在所述虚拟计算环境O01)内执行的进程接收 所述进程访问所述虚拟计算环境O01)内的受保护数据所需的密钥(310)的受保护版本 (350);以及将用于保护所述受保护密钥的所选密钥(340)的从所枚举的密钥中标识出来的标识;定位所标识的所选密钥(341)的受保护版本030);向所述基于硬件的安全模块(150)提供在所述虚拟计算环境(201)中执行的进程所需要的密钥(310)的受保护版本(350)以及所标识的所选密钥(341)的受保护版本030);从所述基于硬件的安全模块(150)接收在所述虚拟计算环境(201)中执行的进程所需要的密钥(310);以及经由所述密码服务(251)的表示向在所述虚拟计算环境O01)内执行的进程提供在所述虚拟计算环境O01)内执行的进程所需要的密钥(310)。
2.如权利要求1所述的计算机可读介质,其特征在于,还包括用于响应于所述枚举从在所述虚拟计算环境中执行的进程接收所选密钥的标识的计算机可执行指令;其中提供给所述基于硬件的安全模块以便通过所述基于硬件的安全模块专用的密钥来保护的所枚举的密钥中的至少一个是所标识的所选密钥的私有版本。
3.如权利要求1所述的计算机可读介质,其特征在于,还包括用于执行以下步骤的计算机可执行指令响应于提供所枚举的密钥中的至少一个以便通过所述基于硬件的安全模块专用的密钥来保护,从所述基于硬件的安全模块接收所提供的至少一个密钥的受保护版本;以及将所提供的至少一个密钥的受保护版本存储在通信耦合到所述计算设备的存储介质上。
4.如权利要求1所述的计算机可读介质,其特征在于所枚举的密钥仅包括公钥/私钥对的公共版本;提供给所述基于硬件的安全模块以便通过所述基于硬件的安全模块专用的密钥来保护的所枚举的密钥中的至少一个是对应于所述公共版本的私有版本;所选密钥的标识是所标识的所选密钥的公共版本的标识;并且所标识的所选密钥的受保护版本是所标识的所选密钥的私有版本的受保护版本。
5.如权利要求1所述的计算机可读介质,其特征在于,在所述虚拟计算环境中执行的进程是整卷加密进程,所述整卷加密进程加密存储在虚拟存储设备文件中的数据,所述虚拟存储设备文件在所述虚拟计算环境内被表示为一个或多个存储介质。
6.如权利要求1所述的计算机可读介质,其特征在于,所述用于枚举一个或多个密钥的计算机可执行指令包括用于从不同于主存所述虚拟计算环境的计算设备的服务器计算设备获得所述一个或多个密钥。
7.如权利要求1所述的计算机可读介质,其特征在于,所述用于枚举一个或多个密钥的计算机可执行指令包括用于对所述一个或多个密钥的每一个枚举相关联的角色的计算机可执行指令。
8.如权利要求1所述的计算机可读介质,其特征在于,还包括用于执行以下步骤的计算机可执行指令获得与另一计算设备相关联的基于硬件的安全模块专用的密钥;用与所述另一计算设备相关联的基于硬件的安全模块专用的密钥来保护所选密钥的私有版本;以及提供用与所述另一计算设备相关联的基于硬件的安全模块专用的密钥来保护的所选密钥的受保护的私有版本以便发送到所述另一计算设备。
9.一种生成物理存储介质(141)上的受保护虚拟存储设备文件022)的方法,所述受保护虚拟存储设备文件(222)通过基于硬件的保护来保护,所述方法包括以下步骤生成虚拟计算环境O01)内的存储设备041)的表示,使得存储在所述虚拟计算环境 (201)内的存储设备041)上的数据在存储在所述物理存储介质(141)上的虚拟存储设备文件022)中得到反映;生成所述虚拟计算环境O01)内的密码服务051)的表示;执行所述虚拟计算环境O01)内的数据保护进程035),所述数据保护进程(23 利用至少一个密钥(310)来保护存储在所述虚拟计算环境O01)内的存储设备041)的表示上的数据;经由所述密码服务(251)的表示向在所述虚拟计算环境O01)内执行的数据保护进程 (235)枚举一个或多个密钥;经由在所述虚拟环境O01)内执行的数据保护进程(23 从所枚举的密钥中选择一个或多个保护者密钥C340)来保护所述至少一个密钥(310);在所述虚拟计算环境O01)内的存储设备(Ml)的表示上存储通过所选的一个或多个保护者密钥(340)保护的至少一个密钥(310)的受保护版本(350);向主存所述虚拟计算环境O01)的计算设备(100)上的基于硬件的安全模块(150) 提供所选的一个或多个保护者密钥(341)以便通过所述基于硬件的安全模块专用的密钥 (151)来保护;以及在物理存储介质(141)上存储所选的一个或多个保护者密钥(341)的受保护版本 G30),所述受保护版本(430)通过所述基于硬件的安全模块(150)专用的密钥(151)来保护。
10.如权利要求9所述的方法,其特征在于,所枚举的一个或多个密钥仅包括公钥/私钥对的公共版本,并且其中向所述基于硬件的安全模块提供所选的一个或多个保护者密钥还包括仅提供所述公钥/私钥对的私有版本,其公共版本是所选的一个或多个保护者密钥。
11.如权利要求9所述的方法,其特征在于,所述数据保护进程是整卷加密服务。
12.如权利要求9所述的方法,其特征在于,枚举一个或多个密钥包括从不同于主存所述虚拟计算环境的计算设备的服务器计算设备获得所述一个或多个密钥。
13.如权利要求9所述的方法,其特征在于,枚举一个或多个密钥包括对所述一个或多个密钥中的每一个枚举相关联的角色。
14.如权利要求9所述的方法,其特征在于,还包括以下步骤获得与另一计算设备相关联的基于硬件的安全模块专用的密钥;以及用与所述另一计算设备相关联的基于硬件的安全模块专用的密钥来保护所选的一个或多个保护者密钥。
15.如权利要求9所述的方法,其特征在于,还包括以下步骤经由所述密码服务的表示从所述虚拟计算环境内接收所述至少一个密钥的受保护版本;以及用于保护所述至少一个密钥以便生成所述至少一个密钥的受保护版本的所选的一个或多个保护者密钥的标识;定位所标识的所选的一个或多个保护者密钥的受保护版本;向主存所述虚拟计算环境的计算设备上的基于硬件的安全模块提供所述至少一个密钥的受保护版本以及所标识的所选的一个或多个保护者密钥的受保护版本; 从所述基于硬件的安全模块接收所述至少一个密钥; 经由所述密码服务的表示向所述虚拟计算环境提供所述至少一个密钥;以及在所述虚拟计算环境内利用所述至少一个密钥来访问所述虚拟计算环境内的存储设备的表示上存储的受保护数据,以生成可使用的虚拟计算环境。
全文摘要
本发明公开了一种硬件支持的虚拟化密码服务。可使用可信平台模块(TPM)来提供对在虚拟计算环境中使用的密码信息的基于硬件的保护。虚拟化密码服务可以与虚拟环境接口,并枚举该虚拟环境内的加密机制能用于保护其密钥的一组密钥。虚拟化密码服务所提供的密钥可进一步通过主存虚拟环境的计算设备上的TPM的TPM专用密钥来保护。由此,对虚拟环境内的受保护数据的访问权仅在虚拟化密码服务的密钥已经通过当前主存虚拟环境的计算设备上的TPM的TPM专用密钥来保护的情况下才被授予。虚拟化密码服务的密钥可通过为使虚拟环境能被其他计算设备主存而选择的计算设备上的TPM的TPM专用密钥来保护。
文档编号G06F21/00GK102208001SQ20111008702
公开日2011年10月5日 申请日期2011年3月30日 优先权日2010年3月30日
发明者D·J·林斯雷, S·汤姆 申请人:微软公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1