虚拟机保证转让专利

申请号 : CN201480070923.2

文献号 : CN105830082B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : M.尼斯特罗姆S.索姆

申请人 : 微软技术许可有限责任公司

摘要 :

简要地,本文描述的主题的方面涉及虚拟机。在各方面中,当主机被重置或通电时,执行所测量的启动。如果所测量的启动指示主机处于满足用于获得对加密密钥的访问的策略的状态中,则可以获取加密密钥。可以直接地或间接地使用加密密钥以解密虚拟存储设备的数据。这种经解密的数据然后可以用于实例化虚拟机。

权利要求 :

1.一种在包括一个或多个处理器的计算机系统处实现的用于安全地实例化虚拟机的方法,所述方法包括:开启包括用于托管虚拟机的虚拟环境的主机,所述虚拟环境包括与所述虚拟机相关联的虚拟安全组件;

执行启动进程以实例化所述虚拟环境;

在所述启动进程期间的预限定的状态下,向主机安全组件提供对所述主机的测量,所述测量标识满足用于托管所述虚拟机的策略的所述主机的状态;

基于所述主机的所述状态来获取第一加密密钥,包括:向在所述主机外的密钥分发服务提供所述测量;

接收被密封到所述主机的状态的密封数据;以及

经由所述主机安全组件,解封所述密封数据,所述主机安全组件被配置为仅在所述主机安全组件接收到所述主机当前处于满足用于托管所述虚拟机的所述策略的状态中的证据时才解封所述密封数据;

使用所述第一加密密钥对与所述虚拟机相关联的所述虚拟安全组件进行解密;

从经解密的所述虚拟安全组件,获取与虚拟硬驱动相关联的第二加密密钥,所述虚拟硬驱动与所述虚拟机相关联;

使用所述第二加密密钥来解密与所述虚拟机相关联的所述虚拟硬驱动;以及经由相关联的经解密的所述虚拟硬驱动来实例化所述虚拟机。

2.根据权利要求1所述的方法,其中基于所述主机的所述状态来获取所述第一加密密钥还包括:提供所述主机的当前状态满足用于获取所述第一加密密钥的策略的证据;以及仅在所述证据满足所述策略时才接收所述密封数据。

3.根据权利要求2所述的方法,还包括从所述主机安全组件获取所述证据,所述主机安全组件实现为与所述主机集成并且具有受保护的存储器的分立硬件设备,仅允许所述主机安全组件向所述受保护的存储器写入。

4.根据权利要求2所述的方法,还包括在开启所述主机之前:将所述主机配置到满足所述策略的状态中;

与配置所述主机相结合地,将所述主机的其它测量提供给所述主机安全组件;

从所述主机安全组件获取安全数据,所述安全数据指示所述主机的状态,所述安全数据从所述其它测量导出;以及将所述安全数据提供给所述密钥分发服务以用于随后用来确定所述证据何时事实上满足所述策略。

5.一种计算机系统,包括:

用于存储主机的数据的系统存储器;

一个或多个处理器;以及

一个或多个计算机可读存储介质,具有存储在其上的计算机可执行指令,所述计算机可执行指令由所述一个或多个处理器可执行以使所述计算机系统安全地实例化虚拟机,所述计算机可执行指令包括可执行以使所述计算机系统至少执行以下动作的指令:开启所述主机,所述主机包括用于托管虚拟机的虚拟环境,所述虚拟环境包括虚拟安全组件;

执行启动进程以实例化所述虚拟环境;

在所述启动进程期间的预限定的状态下,向主机安全组件提供对所述主机的测量,所述测量标识满足用于托管所述虚拟机的策略的所述主机的状态;

基于所述主机的所述状态从所述主机安全组件获取第一加密密钥,包括:向在所述主机外的密钥分发服务提供所述测量;

接收被密封到所述主机的状态的密封数据;以及

经由所述主机安全组件,解封所述密封数据,所述主机安全组件被配置为仅在所述主机安全组件接收到所述主机当前处于满足用于托管所述虚拟机的所述策略的状态中的证据时才解封所述密封数据;

使用所述第一加密密钥来解密与所述虚拟机相关联的所述虚拟安全组件;

从经解密的所述虚拟安全组件,获取与虚拟硬驱动相关联的第二加密密钥,所述虚拟硬驱动与所述虚拟机相关联;

使用所述第二加密密钥来解密与所述虚拟机相关联的所述虚拟硬驱动;以及经由相关联的经解密的所述虚拟硬驱动来实例化所述虚拟机。

6.根据权利要求5所述的计算机系统,其中所述第一加密密钥被包含在所述密封数据中。

7.根据权利要求5所述的计算机系统,其中仅所述主机的管理程序具有对所述系统存储器的写访问。

8.一种具有计算机可执行指令的计算机存储介质,所述计算机可执行指令在执行时实施动作,包括:开启包括用于托管虚拟机的虚拟环境的主机,所述虚拟环境包括虚拟安全组件;

执行启动进程以实例化所述虚拟环境;

在所述启动进程期间的预限定的状态下,向主机安全组件提供对所述主机的测量,所述测量标识满足用于托管所述虚拟机的策略的所述主机的状态;

基于所述主机的所述状态来获取第一加密密钥,包括:向在所述主机外的密钥分发服务提供所述测量;

接收被密封到所述主机的状态的密封数据;以及

经由所述主机安全组件,解封所述密封数据,所述主机安全组件被配置为仅在所述主机安全组件接收到所述主机当前处于满足用于托管所述虚拟机的所述策略的状态中的证据时才解封所述密封数据;

使用所述第一加密密钥来解密与所述虚拟机相关联的所述虚拟安全组件;

从经解密的所述虚拟安全组件,获取与虚拟硬驱动相关联的第二加密密钥,所述虚拟硬驱动与所述虚拟机相关联;

使用所述第二加密密钥来解密与所述虚拟机相关联的所述虚拟硬驱动;以及经由相关联的经解密的所述虚拟硬驱动来实例化所述虚拟机。

说明书 :

虚拟机保证

背景技术

[0001] 随着计算设备已经变得更为强大,一个或多个虚拟环境在计算设备上的执行已经变得更加实用。虚拟环境可以包括计算设备的硬件抽象使得在虚拟环境内执行的计算机可执行指令不能告知它们不是在所抽象的硬件上直接执行。对于计算机安全性之上的顾虑而言,虚拟机用户可能想要具有关于虚拟机和托管环境的整体性的保证。
[0002] 本文要求保护的主题不限于解决任何缺陷或者仅在诸如以上描述的那些之类的环境中操作的实施例。相反,该背景技术仅提供用于说明本文描述的一些实施例可以在其中实践的一个示例性技术领域。

发明内容

[0003] 简要地说,本文描述的主题的方面涉及虚拟机。在各方面中,当主机重置或通电时,执行所测量的启动。如果所测量的启动指示主机处于满足用于获取对加密密钥的访问的策略的状态中,则可以获取加密密钥。可以直接地或者间接地使用加密密钥以对虚拟存储设备的数据进行解密。这种经解密的数据然后可以用于实例化虚拟机。
[0004] 提供本发明内容以简要地标识以下在具体实施方式中进一步描述的主题的一些方面。本发明内容不意图标识所要求保护的主题的关键或必要特征,也不意图用于限制所要求保护的主题的范围。
[0005] 短语“本文描述的主题”是指在具体实施方式中描述的主题,除非上下文清楚地以其它方式指示。术语“方面”应当解读为“至少一个方面”。标识在具体实施方式中描述的主题的方面不意图标识所要求保护的主题的关键或必要特征。
[0006] 以上描述的方面以及本文描述的主题的其它方面通过示例的方式说明并且不受限于附图,其中相同的参考标号指示相似的元件,并且其中。

附图说明

[0007] 图1是表示本文描述的主题的方面可以并入其中的示例性计算环境的框图;
[0008] 图2-5是大体表示依照本文描述的主题的方面配置的系统的示例性组件的框图;
[0009] 图6是大体表示依照本文描述的主题的方面在准备密钥分发服务以分发密钥时可能发生的动作的流程图;
[0010] 图7是大体表示依照本文描述的主题的方面在实例化虚拟机时可能发生的示例性动作的流程图;以及
[0011] 图8是大体表示依照本文描述的主题的方面可能由密钥分发服务采取的示例性动作的流程图。

具体实施方式

[0012] 定义
[0013] 如本文中使用的,术语“包括”及其变形应解读为意指“包括但不限于”的开放式术语。术语“或”应解读为“和/或”,除非上下文清楚地以其它方式指示。术语“基于”应解读为“至少部分地基于”。术语“一个实施例”和“一实施例”应解读为“至少一个实施例”。术语“另一实施例”应解读为“至少一个其它实施例”。
[0014] 如本文中使用的,诸如“一”、“一个”和“这个”之类的术语包括所指示的项目或动作中的一个或多个。特别地,在权利要求中,对项目的引用一般意指存在至少一个这样的项目并且对动作的引用意指执行动作的至少一个实例。
[0015] 术语数据应宽泛地解读为包括可以由一个或多个计算机存储元件表示的任何事物。逻辑上,数据可以表示为易失性或非易失性存储器中的一系列0和1。在具有非二进制存储介质的计算机中,数据可以根据存储介质的能力来表示。数据可以组织到不同类型的数据结构中,包括诸如数字、字母等的简单数据类型,分层、链接或其它相关数据类型,包括多个其它数据结构或简单数据类型的数据结构,等等。数据的一些示例包括信息、程序状态、程序数据、其它数据等等。
[0016] 标题仅用于方便起见;关于给定议题的信息可以在其标题指示该议题的章节之外找到。
[0017] 其它明显和隐含的定义可以包括在下文中。
[0018] 示例性操作环境
[0019] 图1图示了本文描述的主题的方面可以在其上实现的适当计算系统环境100的示例。计算系统环境100仅为适当计算环境的一个示例并且不意图暗示关于本文描述的主题的方面的功能性或用途的范围的任何限制。计算环境100也不应当解释为具有涉及示例性操作环境100中所图示的组件的组合或其中任何一个的任何依赖性或要求。
[0020] 本文描述的主题的方面与众多其它通用或专用计算系统环境或配置可操作。可以适用于与本文描述的主题的方面一同使用的公知计算系统、环境或配置的示例包括个人计算机、服务器计算机——在裸金属上或者作为虚拟机——手持式或膝上型设备、多处理器系统、基于微控制器的系统、机顶盒、可编程和不可编程的消费电子、网络PC、小型计算机、大型计算机、个人数字助手(PDA)、游戏设备、打印机、包括机顶、媒体中心或其它器具的器具、嵌入或附连到机动车的计算设备、其它移动设备、包括手机、无线电话和有线电话的电话设备、包括以上系统或设备中的任一个的分布式计算环境,等等。尽管各种实施例可能限于以上设备中的一个或多个,但是术语计算机意图涵盖以上设备,除非以其它方式指示。
[0021] 可以在诸如程序模块之类的由计算机执行的计算机可执行指令的一般上下文中描述本文描述的主题的方面。一般地,程序模块包括例程、程序、对象、组件、数据结构等,其执行特定任务或者实现特定抽象数据类型。本文描述的主题的方面也可以在分布式计算环境中实践,其中任务由通过通信网络链接的远程处理设备执行。在分布式计算环境中,程序模块可以位于本地和远程计算机存储媒体(包括存储器存储设备)二者上。
[0022] 可替换地或者此外,本文描述的功能性可以至少部分地由一个或多个硬件逻辑组件执行。例如并且不作为限制,可以使用的说明性类型的硬件逻辑组件包括现场可编程门阵列(FPGA)、程序特定集成电路(ASIC)、程序特定标准产品(ASSP)、片上系统(SOC)、复杂可编程逻辑器件(CPLD)等。
[0023] 参照图1,用于实现本文描述的主题的方面的示例性系统包括以计算机110形式的通用计算设备。计算机可以包括能够执行指令的任何电子设备。计算机110的组件可以包括处理单元120、系统存储器130、以及将包括系统存储器的各种系统组件耦合到处理单元120的一个或多个系统总线(由系统总线121表示)。系统总线121可以是若干类型总线结构中的任一种,包括存储器总线或者存储器控制器、外围总线、以及使用各种总线架构中的任一种的本地总线。作为示例而非限制,这样的架构包括工业标准架构(ISA)总线、微通道架构(MCA)总线、增强ISA(EISA)总线、视频电子标准联盟(VESA)本地总线、还已知为夹层总线的外围组件互连(PCI)总线、外围组件互连扩展(PCI-X)总线、高级图形端口(AGP)和PCI express(PCIe)。
[0024] 处理单元120可以连接到硬件安全设备122。安全设备122可以能够生成并且安全地存储加密密钥,其可以用于保护计算机110的各种方面。在一个实施例中,安全设备122可以包括受信平台模块(TPM)芯片、TPM安全设备等。
[0025] 计算机110典型地包括各种计算机可读媒体。计算机可读媒体可以是可以由计算机110访问的任何可用媒体并且可以包括易失性和非易失性,以及可移除和不可移除媒体二者。作为示例而非限制,计算机可读媒体可以包括计算机存储媒体和通信媒体。
[0026] 计算机存储媒体包括以任何方法或技术实现以用于存储诸如计算机可读指令、数据结构、程序模块或其它数据之类的信息的易失性和非易失性、可移除和不可移除媒体二者。计算机存储媒体包括RAM、ROM、EEPROM、固态存储装置、闪存或其它存储器技术、CD-ROM、数字多用盘(DVD)或其它光盘存储装置、盒式磁带、磁带、磁盘存储装置或其它磁性存储设备、或者可以用于存储期望的信息并且可以由计算机110访问的任何其它介质。计算机存储媒体不包括通信媒体。
[0027] 通信媒体典型地在诸如载波之类的调制数据信号或者其它传输机制中体现计算机可读指令、数据结构、程序模块或者其它数据并且包括任何信息递送媒体。术语“调制数据信号”意指使得其一个或多个特性以这种方式设定或改变以便于将信息编码在信号中的信号。作为示例而非限制,通信媒体包括诸如有线网络或直接有线连接之类的有线媒体,以及诸如声学、RF、红外和其它无线媒体之类的无线媒体。以上中的任一个的组合也应当包括在计算机可读媒体的范围内。
[0028] 系统存储器130包括以易失性和/或非易失性存储器的形式的计算机存储媒体,诸如只读存储器(ROM)131和随机存取存储器(RAM)132。包含诸如在启动期间帮助在计算机110内的元件之间传递信息的基本例程的基本输入/输出系统133(BIOS)典型地存储在ROM 
131中。RAM 132典型地包含处理单元120立即可访问和/或当前由处理单元120对其进行操作的数据和/或程序模块。作为示例而非限制,图1图示了操作系统134、应用程序135、其它程序模块136和程序数据137。
[0029] 计算机110还可以包括其它可移除/不可移除、易失性/非易失性计算机存储媒体。仅作为示例,图1图示了从不可移除非易失性磁性媒体读取或向其写入的硬盘驱动141、从可移除非易失性磁盘152读取或向其写入的磁盘驱动151、以及从可移除非易失性光盘156(诸如CD ROM、DVD或其它光学媒体)读取或向其写入的光盘驱动155。可以在示例性操作环境中使用的其它可移除/不可移除、易失性/非易失性计算机存储媒体包括盒式磁带、闪存卡以及其它固态存储设备、数字多用盘、其它光盘、数字视频带、固态RAM、固态ROM等。硬盘驱动141可以通过接口140连接到系统总线121,并且磁盘驱动151和光盘驱动155可以通过用于可移除非易失性存储器的接口(诸如接口150)而连接到系统总线121。
[0030] 以上讨论并且在图1中图示的驱动及其相关联的计算机存储媒体为计算机110提供计算机可读指令、数据结构、程序模块和其它数据的存储。在图1中,例如,硬盘驱动141被图示为存储操作系统144、应用程序145、其它程序模块146和程序数据147。要指出的是,这些组件可以与操作系统134、应用程序135、其它程序模块136和程序数据137相同或者不同。操作系统144、应用程序145、其它程序模块146和程序数据147在本文中被给予不同标号以在最低限度上说明它们是不同副本。
[0031] 用户可以通过诸如键盘162和定点设备161(通常称为鼠标、追踪球或触摸板)之类的输入设备将命令和信息录入到计算机110中。其它输入设备(未示出)可以包括麦克风(例如用于语音或其他音频)、操纵杆、游戏垫、盘式卫星天线、扫描仪、触敏屏、手写板、相机(例如用于输入手势或其它视觉输入)等。这些和其它输入设备通常通过耦合于系统总线的用户输入接口160而连接到处理单元120,但是可以通过诸如并行端口、游戏端口或通用串行总线(USB)之类的其它接口和总线结构进行连接。
[0032] 通过使用以上标识的输入设备中的一个或多个,可以建立自然用户接口(NUI)。NUI可以依赖于语音识别、触摸和触笔识别、屏幕上和屏幕附近两者的手势识别、空中手势、头部和眼睛追踪、话音和语音、视觉、触摸、手势、机器智能等。可以用来与用户交互的一些示例性NUI技术包括触敏显示、话音和语音识别、意图和目标理解、使用深度相机(诸如立体相机系统、红外相机系统、RGB相机系统及其组合)的运动手势检测、使用加速度计/陀螺仪的运动手势检测、面部识别、3D显示、头部、眼睛和凝视追踪、沉浸式增强现实和虚拟现实系统、以及用于使用电场感测电极感测脑部活动的技术(EEG及相关方法)。
[0033] 监控器191或其它类型的显示设备也经由诸如视频接口190之类的接口连接到系统总线121。除监控器之外,计算机还可以包括诸如扬声器197和打印机196之类的其它外围输出设备,其可以通过输出外围接口195连接。
[0034] 计算机110可以使用到诸如远程计算机180之类的一个或多个远程计算机的逻辑连接而操作在联网环境中。远程计算机180可以是个人计算机、服务器、路由器、网络PC、对等设备或者其它常见网络节点,并且典型地包括以上相对于计算机110描述的元件中的许多或全部,尽管已经仅在图1中图示存储器存储设备181。图1中描绘的逻辑连接包括局域网(LAN)171和广域网(WAN)173,但是也可以包括电话网络、近场网络和其它网络。这样的联网环境在办公室、企业范围的计算机网络、内联网和因特网中很常见。
[0035] 当使用在LAN联网环境中时,计算机110通过网络接口或适配器170连接到LAN 171。当使用在WAN联网环境中时,计算机110可以包括调制解调器172、网卡、或者用于通过诸如因特网之类的WAN 173建立通信的其它构件。可以在内部或外部的调制解调器172可以经由用户输入接口160或其它适当机制而连接到系统总线121。在联网环境中,相对于计算机110描绘的程序模块或其部分可以存储在远程存储器存储设备中。作为示例而非限制,图
1图示了如驻留在存储器设备181上的远程应用程序185。将领会到,所示出的网络连接是示例性的并且可以使用建立计算机之间的通信的其它措施。
[0036] 保证
[0037] 如之前提及的,对于虚拟机,用户可能想要具有关于虚拟机和主机环境的整体性的保证。图2是大体表示依照本文描述的主题的方面配置的系统的示例性组件的框图。在图2中图示的组件是示例性的并且不意为全部包括可能需要或包含的组件。此外,组件的数目可以在其它实施例中不同而不脱离本文描述的主题的方面的精神或范围。在一些实施例中,结合图2描述的组件可以包括在其它组件(示出或未示出)中或者放置在子组件中而不脱离本文描述的主题的方面的精神或范围。在一些实施例中,结合图2描述的组件和/或功能可以跨多个设备分布。
[0038] 如本文中使用的术语“功能”可以被认为是执行一个或多个任务的代码的部分。尽管功能可以包括返回数据的代码块,但是其不限于返回数据的代码块。功能也可以执行特定任务而不返回任何数据。此外,功能可以或者可以不具有输入参数。功能可以包括子例程、子程序、过程、方法、例程等。
[0039] 如本文中使用的,术语组件可以在可替换实施方式中解读为包括诸如全部或部分的设备、一个或多个软件模块或其部分的集合、一个或多个软件模块或其部分与一个或多个设备或其部分的某种组合等。在一种实现方式中,组件可以通过结构化(例如编程)处理器(例如图1的处理单元120)以执行一个或多个动作而实现。
[0040] 例如,在图2中图示的组件可以使用一个或多个计算设备实现。这样的设备可以包括例如个人计算机、服务器计算机、手持式或膝上型设备、多处理器系统、基于微控制器的系统、机顶盒、可编程消费电子、网络PC、小型计算机、大型计算机、个人数字助手(PDA)、游戏设备、打印机、包括机顶、媒体中心或其它器具的器具、嵌入或附连到机动车的计算设备、其它移动设备、包括以上系统或设备中的任一个的分布式计算环境,等等。
[0041] 可以配置成实现图2的组件中的一个或多个的示例性设备包括图1的计算机110。
[0042] 在一种实现方式中,组件还可以包括代码或者由代码表示。代码包括指示计算机要采取的动作的指令。代码也可以包括数据、资源、变量、定义、关系、关联等,其包括除计算机要采取的动作之外的信息。例如,代码可以包括图像、网页、HTML、XML、其它内容等。
[0043] 代码可以由计算机执行。当代码由计算机执行时,这可以称为进程。如本文中使用的术语“进程”及其变形可以包括一个或多个传统进程、线程、组件、库、执行任务的对象等。进程可以实现在硬件、软件或者硬件和软件的组合中。在实施例中,进程是能够执行动作或者用于执行动作的不管如何称呼的任何机制。进程可以分布在多个设备或单个设备之上。
代码可以在用户模式、内核模式、某种其它模式、以上的组合等中执行。
[0044] 尽管在本文中有时候使用术语“客户端”和“服务器”,但是要理解到,客户端可以实现在具有典型地与服务器相关联的硬件和/或软件的机器上,并且同样地,服务器可以实现在具有典型地与台式、个人或移动计算机相关联的硬件和/或软件的机器上。此外,客户端有时可以充当服务器并且反之亦然。有时,更频繁地充当客户端或服务器的两个或多个实体可以同时为对等体、服务器或客户端。在实施例中,客户端和服务器可以实现在相同物理机器上。
[0045] 为了解释简单起见,以某种顺序描述以下描述的一些动作。尽管顺序可能遵循一些实现方式,但是不意图将其它实现方式限于特定顺序。实际上,在一些实现方式中,本文描述的动作可以以任何方式排序并且可以彼此并行地进行。
[0046] 如本文中描述的术语“虚拟硬驱动”仅为示例性的。在其它可替换方案中,可以替换其它虚拟存储设备,诸如虚拟软盘、虚拟固态存储装置或者其它虚拟读写媒体、虚拟CD ROM、DVD、或者其它虚拟只读媒体,而不脱离本文描述的主题的方面的精神或范围。术语虚拟存储设备意图涵盖任何类型的虚拟存储设备,包括例如以上提到的那些。
[0047] 虚拟存储设备可以包括意为供管理程序使用的元数据或者与其相关联。在一些实现方式(在下文更详细描述)中,该元数据可以隐藏并且不被管理程序所托管的虚拟机可看到。例如,在具有虚拟受信平台模块(vTPM)的实现方式中,虚拟机可以仅具有如由管理程序所给予的虚拟存储设备的视图。该视图排除意为供管理程序使用的元数据。在这些实现方式中,使用vTPM的虚拟机可能仅对视图中的内容进行加密或解密。
[0048] 在其中不存在vTPM的其它实现方式(在下文更详细地描述)中,包括意为供管理程序使用的元数据的整个虚拟存储设备可以被加密。在这些实现方式中,在从密钥分发服务获取密钥之后,管理程序可以对包括意为供管理程序使用的元数据的整个虚拟存储设备进行解密。
[0049] 转向图2,系统200可以包括主机230、密钥分发服务235和其它组件(未示出)。主机230可以适用于托管可能与虚拟硬驱动205-207相关联的一个或多个虚拟机208-210。主机
230可以托管一个或多个虚拟机(例如虚拟机208-210)。虚拟机可以与一个或多个虚拟硬驱动(例如虚拟硬驱动205-207中的一个或多个)相关联。主机230可以包括管理程序215和分立的受信平台模块225或其它安全设备。
[0050] 管理程序215是创建虚拟机208-210可以在其中操作的虚拟环境的组件。管理程序215可以实现在硬件、固件、软件、以上中的两个或更多的组合等中。管理程序215可以直接在主机230的硬件上执行或者可以在托管于主机230上的操作系统环境内执行。
[0051] 贯穿本文献,频繁地使用术语受信平台模块(TPM)。TPM是本领域技术人员很好理解的。然而,术语TPM的使用不意图将本文描述的主题的方面单单限于遵守用于实现TPM的标准的一个或多个版本的设备。相反,该术语被用作可以依照本文描述的主题的方面使用的安全组件的一个示例。
[0052] 在其它实现方式中,也可以使用提供安全功能性的其它安全组件,而不脱离本文描述的主题的方面的精神或范围。例如,安全设备可以具有包括至少以下各项的特性:
[0053] 1. 受保护的存储器。安全设备可以包括仅安全设备可以向其写入的存储器。该存储器可以用于存储测量,以密封和解封,以及用于其它加密功能。
[0054] 2. 用于标识安全设备的措施。例如,安全设备可以包括仅设备知晓并且将设备与其它设备进行区分的秘密。
[0055] 3. 用于执行认证的措施。安全设备可以具有可以用于创建关于由安全设备控制的任何资产的受信消息的处理器或其它电路。由安全设备控制的一些示例性资产可以包括加密对象、密封团块、安全设备与其相关联的平台的状态等。
[0056] 尽管安全设备通常被认为是分离的分立组件,但是并不要求这样。例如,在一种实现方式中,与处理器耦合的固件可以用作安全设备。
[0057] 当在本文中使用术语TPM时,要理解到,在可替换实现方式中,可以使用其它安全设备(包括本文提及的那些)而不脱离本文描述的主题的方面的精神或范围。
[0058] 为了帮助理解,在下文描述TPM的一些特征,但是不意图详述TPM的所有特征。此外,通过在本文中描述TPM的一些特征,不意图将可以使用的安全设备的类型限于具有所述特征的那些。
[0059] 除其它之外,TPM可以还包括它可以在其中存储数据的一个或多个寄存器的集合。寄存器可以是易失性的使得它们在主机通电时维持数据并且可以在主机断电或重置时重置。寄存器可以用于存储可以用于确保托管TPM的主机处于某一状态的测量。
[0060] 测量由数据表示。在一种实现方式中,测量对应于代码散列和/或配置数据。在另一实现方式中,测量可以包括诸如代码的签名之类的代码特性。在另一实现方式中,测量可以包括批准代码的权威机构的身份。以上示例性实现方式不意图是穷举性的或包括全部的。基于本文中的教导,本领域技术人员可以认识到可以使用的其它测量而不脱离本文描述的主题的方面的精神或范围。
[0061] 测量可以在各种时间取得。例如,在执行固件之前,可以计算固件的散列并且将其作为测量提供给TPM。在执行操作系统启动加载器之前,可以计算启动加载代码的散列并且将其作为测量提供给TPM。在执行操作系统的一个或多个组件之前,可以计算组件的代码的散列并且将其作为测量提供给TPM。所测量的启动可以包括在从加电起的启动链路中的某些点处取得测量(例如在执行代码之前)并且包括操作系统内核、管理程序和/或启动必要驱动器的发起。
[0062] 当需要测量时,TPM内部的组件可以完成测量所必要的任何计算并且然后将表示测量的数据提供给TPM,要求TPM更新所指示的寄存器。计算可以涉及例如将代码读入到存储器中并且执行代码上的散列以获得测量。
[0063] 结合向TPM提供测量,也可以传递TPM寄存器的指示。当TPM与所指示的寄存器一起接收到测量时,TPM可以以便于维持关于已经将什么测量到寄存器中的历史的这种方式来更新寄存器。这样做的一种方式是将所接收的测量连结与当前处于寄存器中的内容并且执行结果上的加密散列。加密散列的输出然后可以写回到寄存器。
[0064] 尽管组件可以提供测量并且指示TPM寄存器,但是不允许组件直接向寄存器写入。换言之,TPM的寄存器不能由TPM外部的组件写入。
[0065] 在一种实现方式中,管理程序215可以管理一个或多个虚拟TPM(vTPM)220-222。每一个vTPM可以与虚拟机(例如虚拟机205-207中的一个或多个)相关联。在该实现方式中,管理程序215可以在不可用于管理程序215外部的组件的管理程序215的安全存储器中存储表示vTPM的数据。为了获得对vTPM的访问,可能要求攻击者获得对管理程序215本身的控制。
[0066] 在另一实现方式中,主机230可以管理vTPM 220-222。在该实现方式中。具有管理员特权的用户和进程可以能够访问vTPM 220-222。该实现方式在图3中图示。如图3中所图示的,系统300具有在管理程序215外部受管理的vTPM 220-222。
[0067] 在又一种实现方式中,主机230外部的服务可以管理vTPM 220-222。该实现方式在图4中图示。如在图4中图示的,系统400具有由主机230内部的vTPM服务405管理的vTPM 220-222。
[0068] 在一种实现方式中,密钥分发服务235可以在主机230外部托管。在另一种实现方式中,密钥分发服务235可以托管在主机230上,如在图5中图示的。如在图5中图示的,系统500具有托管在主机230上的密钥分发服务235。
[0069] 返回到图2,系统200可以托管在公共或私用云中。云是通常用作暗喻因特网的术语。其带来以下构思:计算、软件、数据访问、存储和其它资源可以由连接到因特网(或其它网络)的实体提供而不要求用户知晓关于递送那些资源的计算基础设施的位置或其它细节。
[0070] 虚拟机208-210可以经由云提供给一个或多个租户。租户可以与虚拟机208-210中的一个或多个相关联。租户可以包括有权利访问虚拟机中的一个或多个的用户、公司或其它实体。租户可能不想要其它租户、云托管运营商、攻击者或者其它实体获得对租户的虚拟机的访问。租户还可能想要来自云托管运营商的以下保证:托管租户的虚拟机的主机满足某些策略(例如主机的配置处于由租户限定的一个或多个状态的集合中)。
[0071] 为了确保满足策略,在一种实现方式中,租户可以要求与虚拟机相关联的虚拟硬驱动的部分或全部利用秘密密钥来加密。经加密的虚拟硬驱动可以仅在知晓秘密密钥的情况下被解密。在没有其相关联的虚拟硬驱动的情况下,虚拟机可能不能够执行。
[0072] 尽管在本文中有时候引用单数形式的策略,但是要理解到,本文中的操作也可以应用于多个策略。例如,如果主机遵守可接受的策略的集合中的任一个,则经密封的密钥可以解封。同样地,如果管理程序提供主机状态满足可接受的策略的集合中的任一个的证据,则密钥分发服务可以提供用于访问vTPM的密钥。例如,管理程序可以通过提供由主机的TPM对主机状态的认证来提供该证据。
[0073] 在一种实现方案中,可以用于解密虚拟硬驱动的秘密密钥可以是与密钥分发服务235所提供的相同密钥。在该实现方式中,可能不需要vTPM 220-222。一旦从密钥分发服务
235获得秘密密钥,则该密钥可以用于解密虚拟硬驱动。
[0074] 在另一实现方式中,可以解密虚拟机的虚拟硬驱动的秘密密钥可以密封到与虚拟机相关联的vTPM。密封可以涉及vTPM的一个或多个寄存器。寄存器的集合可以选取成以便实施租户选择的策略。当经由vTPM密封密钥时,密钥仅可以在用于密封密钥的(多个)寄存器包括它们在密钥被密封时进行的相同数据的情况下从vTPM获取。
[0075] 此外,vTPM可以以使得仅占有针对vTPM的正确密钥k的主机将能够访问它的这种方式得到保护。实现这一点的一种示例性方式如下:
[0076]
[0077] 其中indices是TPM寄存器的所选集合,k是用于加密虚拟硬驱动的密钥,C是由密封操作生成的密码文本,MAKSRK是用于创建使用dTPM 225的存储根密钥(SRK)的C的算法,或者在可替换实现方式中,密钥分发服务235的密钥,并且PCRindex[i]是由index[i]指示的dTPM 225的寄存器。在一种实现方式中,仅SRK的公共部分需要用于密封操作。使所得密码文本C可用于主机230。密封操作可以例如通过密钥分发服务235来进行。
[0078] 在通电时,主机230进行所测量的启动。主机230然后可以尝试经由如下解封操作来解封密码文本C:
[0079]
[0080] 解封操作可以由密钥分发服务235或者由主机230基于如下文描述的密钥分发来执行。如果解封操作由分发服务235执行,则主机可以在由dTPM签署的分组中向密钥分发服务235传递由dTPM 225测量的数据。如果由主机230执行解封操作,则主机可以使用之前分发的密钥,其可以仅在主机230上解封,如果主机230处于满足策略的状态中(如由dTPM 225所测量)。
[0081] 如果所有寄存器处于正确状态中(意味着主机230处于与策略相容的状态中),则解封将继续并且主机230将提供有解密虚拟机的vTPM的密钥或者直接解密(多个)VHD的密钥(如在下文更详细描述的)。此时,虚拟机可以启动,因为vTPM可用于解封对虚拟机的(多个)VHD进行解密所必要的密钥。如果vTPM状态在启动之后依照租户的策略,则解锁将发生。当虚拟机解锁时,其还可能试图基于其当前vTPM状态而进行认证。该认证允许虚拟机向其它租户资源证实其与租户策略相容。
[0082] 此时,已经实现以下目标:
[0083] 1. 借助通过执行虚拟机而完成的认证,向租户保证虚拟机与租户设定的虚拟机策略相容;
[0084] 2. 由于对虚拟机的(多个)VHD加密的密钥的密封,向租户保证VHD内容尚未修改;以及
[0085] 3. 由于vTPM密封,向租户保证虚拟机运行于与用于主机的设定策略相容的主机上。
[0086] 为了还进行保护以防VHD的内容在运行时间期间的修改,代码整体性策略可以在主机上实现。
[0087] 在可替换的实现方式中,作为密钥分发服务235执行解封操作的替代方案,密钥分发服务235可以简单地提供密钥以解密虚拟硬驱动。例如,主机230可以在由dTPM签署的分组中向密钥分发服务235传递由dTPM 225测量的数据,并且密钥分发服务235可以通过为主机提供密钥以解密虚拟硬驱动而做出响应。
[0088] 在一种实现方式中,密钥k保护的vTPM数据是vTPM的认可主要种子和存储主要种子,因为其它任何事物要么是短暂、公共的,或者是可以导出的。在另一实现方式中,密钥k可以保护除主要种子和存储主要种子之外的数据。
[0089] 在一种实现方式中,密钥分发服务235可以受租户的控制。在另一实现方式中,密钥分发服务235可以受主机的控制(例如操作主机230的云运营商)。在第一种实现方式中,租户维持解密vTPM所必要的密钥之上的完全控制(并且通过它,虚拟机),但是可能需要承受维持到托管方的连接以便允许虚拟机启动的负担。在第二种实现方式中,租户可以让托管方(例如托管方的组织的分离部分)运行密钥分发服务235。在一种实现方式中,这可以完成使得要求托管方的组织中的至少两个实体协作以便访问租户vTPM密钥k。
[0090] 可用于解密vTPM的密钥以各种方式分发。例如,在一种实现方式中,密钥可以在已知主机的(多个)什么状态满足策略之后的任何时间分发。例如,在配置满足策略的状态中的主机230之后,dTPM的一个或多个寄存器的状态可以由dTPM 225签署并且发送给密钥分发服务235。在接收到此之后,密钥分发服务235可以立即或者在此之后的任何时间向主机230发送密钥,该密钥以使得主机230可以仅在主机230处于满足策略的状态中时解密密钥的这种方式进行加密或包装。以这种方式加密密钥可以涉及利用主机的TPM的公共密钥以及满足策略的状态(由主机的TPM测量的)对密钥进行加密。
[0091] 在另一实现方式中,密钥分发服务235可以等待直到在提供密钥之前请求密钥。在该实现方式中,密钥分发服务235可以在提供密钥之前核验请求机器的状态。如果密钥满足策略,则可以由密钥分发服务235提供密钥;否则,密钥分发服务235可以从请求者扣留密钥。
[0092] 以上密钥分发的示例仅为示例性的。基于本文的教导,本领域技术人员可以认识到还可以使用的分发密钥的其它方式而不脱离本文描述的主题的方面的精神或范围。
[0093] 以上教导可以应用于不具有安全设备或者具有安全设备的较旧版本的安全机器。例如,一些机器可能根本就不具有TPM。其它机器可以具有TPM,但是TPM可能根据陈旧的TPM标准来实现。一些操作系统可以不执行,除非它们能够访问根据某一版本或更大版本所实现的TPM。
[0094] 为了补救以上描述的那些之类的这种平台,平台可以配置有管理程序。管理程序然后可以用于在虚拟环境中执行操作系统。当操作系统请求访问TPM时,管理程序可以提供适当版本的虚拟TPM。管理程序可以保护虚拟TPM,因此仅管理程序可以改变虚拟TPM的受保护存储器。就操作系统而言,虚拟TPM看起来就像是分立的物理TPM。
[0095] 此外,用于创建虚拟TPM的播种(seeding)秘密可以经由键盘或其它输入设备而录入,从USB或在使用播种秘密之后断开的其它外部存储设备来读取等等。
[0096] 用于保护机器的以上方法的一个缺点在于,机器的快速硬件(例如CPU)可以用于执行vTPM的功能。这可以极大地加速机器的加密功能。
[0097] 在较旧版本的TPM可用于机器上时,该较旧版本的TPM可以用于提供以下证据:机器处于其中允许机器获取对vTPM密钥的访问的状态中。尽管这可能不像具有机器上的新版本TPM并且使用该新版本TPM获取对vTPM密钥的访问那样理想,但是其可能比非TPM解决方案更好。
[0098] 图6-8是大体表示依照本文描述的主题的方面可能发生的示例性动作的流程图。出于解释简单起见,结合图6-8描述的方法被描绘和描述为一系列动作。要理解和领会到,本文描述的主题的方面不受所图示的动作和/或动作的次序所限制。在一个实施例中,动作可以以如下文描述的次序而发生。然而,在其它实施例中,动作中的两个或更多可以并行地或者以另一次序而发生。在其它实施例中,动作中的一个或多个可以与本文没有呈现和描述的其它动作一同发生。此外,可能并非要求所图示的全部动作以实现依照本文描述的主题的方面的方法。另外,本领域技术人员将理解和领会到,方法可以可替换地表示为经由状态图的一系列相关状态或者事件。
[0099] 图6是大体表示依照本文描述的主题的方面在准备密钥分发服务以分发密钥时可能发生的动作的流程图。在块605处,动作开始。
[0100] 在块610处,获取满足策略的测量。例如,参照图2,主机230可以启动并且与将主机230配置到满足策略的状态中相结合地在预限定的状态下取得测量。
[0101] 在块615处,可以将测量的证据提供给密钥分发服务。例如,参照图2,dTPM 225可以用于获取安全数据,其包括已经由dTPM 225签署的测量的散列。该安全数据指示满足策略的主机的状态。安全数据从测量经由散列而导出。该安全数据然后可以提供给密钥分发服务235。
[0102] 在块620处,可以存储证据。例如,参照图2,密钥分发服务235可以将证据存储在密钥分发服务235可访问的存储装置(未示出)中。密钥分发服务235可以使证据与特定vTPM、管理程序、主机、虚拟机等的(多个)标识符相关联,使得例如证据可以与随后提供的证据在提供密钥之前进行比较。在可替换方案中,证据可以由密钥分发服务235丢弃并且可以依赖于密封/解封操作来保护密钥。
[0103] 在块625处,分发密钥以用于解密虚拟安全设备。如之前提及的,这可以响应于针对密钥的请求或者在这样的请求之前而完成。例如,参照图2,在一种实现方式中,管理程序215可以从密钥分发服务235请求密钥并且可以将与策略相容的证据提供给密钥分发服务
235。作为响应,密钥分发服务235可以核验证据事实上是否满足策略,并且如果是,则将加密密钥提供给管理程序215。
[0104] 在另一实现方式中,密钥分发服务235可以在接收到以上提及的安全数据之后的任何时间处将经密封的密钥提供给主机230。密钥可以密封成使得主机230可以不解封密钥,除非主机处于满足策略的状态中。
[0105] 在块630处,可以执行其它动作,如果有的话。
[0106] 图7是大体表示依照本文描述的主题的方面在实例化虚拟机时可能发生的示例性动作的流程图。在块705处,动作开始。
[0107] 在块710处,主机通电。例如,参照图2,主机230可以通过激活开启开关而通电。除物理地使主机通电之外,在可替换方案中,术语通电还可以是指使主机230重启而没有物理地接通或断开向主机230的电力。
[0108] 在块715处,执行启动进程。启动进程包括准备主机以执行虚拟机所需要的动作。这些动作包括实例化适用于托管主机的虚拟环境。启动进程可以包括例如:
[0109] 1. 加载和执行固件;
[0110] 2. 加载和执行启动加载器;
[0111] 3. 加载和执行管理程序、操作系统或其它代码的组件;以及
[0112] 4. 准备主机以执行虚拟机所需要的其它动作。
[0113] 在块720处,在启动进程期间的预限定状态下,将主机的测量提供给主机安全组件。预限定的状态可以包括例如在执行新代码之前每一次将新代码加载到存储器中、在加载新代码之前将新代码加载到存储器中的次数的子集、在执行一个或多个代码片段之后或者其它状态。例如,按照图2,主机可以执行所测量的启动并且将测量提供给dPTM 225。
[0114] 在块725处,如测量到主机安全组件中的测量可以用于获取加密密钥。测量可以指示主机处于满足用于托管某一虚拟机的策略的状态中。在一种实现方式中,获取加密密钥可以包括:
[0115] 1. 从密钥分发服务,获取密封到主机的状态的密封数据(要指出的是,一旦该密钥可用,就可以分发该密钥);以及
[0116] 2. 经由主机安全组件对密封数据解封。主机安全组件可以配置成仅在测量指示主机处于满足用于托管虚拟机的策略的状态中的情况下才对密封数据进行解封。
[0117] 例如,参照图2,密钥分发服务235可以向主机230提供密钥,其密封到满足策略的主机230的状态。仅在主机230处于满足策略的状态中的情况下,主机230才可以使用dTPM 225解封密钥。
[0118] 在另一实现方式中,获取加密密钥可以包括:
[0119] 1. 在实例化虚拟环境之后,发送针对加密密钥的请求并且提供测量满足用于获取加密密钥的策略的证据;以及
[0120] 2. 仅在证据事实上满足策略的情况下才接收加密密钥。
[0121] 例如,参照图2,在实例化虚拟环境之后,管理程序215可以将针对vTPM 220的加密密钥的请求发送给密钥分发服务235并且可以提供证据(例如由dTPM 225生成的安全数据)以指示主机230处于满足用于获取针对vTPM 220的加密密钥的策略的状态中。密钥分发服务235可以经由证据核验主机处于该状态中并且如果证据事实上满足策略则可以提供加密密钥。
[0122] 在块730处,加密密钥用于对表示虚拟安全设备的数据解密。例如,参照图2,管理程序215可以使用从密钥分发服务235所获取的加密密钥来解密vTPM 220。在解密vTPM 220之后,管理程序215可以开始执行虚拟机并且向虚拟机提供vTPM 220的服务。
[0123] 在块735处,可以从经解密的虚拟安全设备获取存储密钥。例如,参照图2,虚拟机208可以在启动过程中从vTPM 220获取存储密钥。该存储密钥可以用于解密虚拟硬驱动
205。在可替换方案中,管理程序215可以使用来自密钥分发服务235的密钥(或者从该密钥导出的密钥)直接解密虚拟硬驱动205。
[0124] 在块740处,虚拟机可以经由虚拟存储设备的经解密的数据而实例化。例如,参照图2,管理程序可以利用虚拟硬驱动205的经解密的数据来实例化虚拟机208。
[0125] 在块745处,可以执行其它动作(如果有的话)。例如,虚拟机、管理程序、主机或另一组件可以从安全组件获取认证并且将该认证提供给另一实体以向其他实体保证环境处于与其他实体的策略相容的状态中。认证可以基于在启动进程期间的预限定状态处所获得的测量并且可以由安全组件的私用密钥签署。
[0126] 图8是大体表示依照本文描述的主题的方面可能由密钥分发服务采取的示例性动作的流程图。在块805处,动作开始。
[0127] 在块810处,接收针对密钥的请求。例如,参照图2,密钥分发服务235可以接收针对vTPM 220的密钥的请求。请求可以从主机的组件(例如管理程序、操作系统或其它组件)接收。密钥可以与测量满足用于获取密钥的策略这一证据一起传送。密钥可以是用于与虚拟机相关联的虚拟安全设备(例如vTPM)的加密密钥。加密密钥提供用于直接地或间接地解密与虚拟机相关联的虚拟存储设备的解密数据。此处的直接地意指解密数据可以用作密钥。间接地意指解密数据可以用于解密其它数据(例如vTPM),所述其它数据可以用于解密其它数据等等(1-n次)以便最终获取解密虚拟存储设备的密钥。
[0128] 在块815处,响应于请求,可以核验证据以确定其是否满足策略。例如,参照图2,密钥分发服务235可以核验证据是否满足允许请求者获取密钥的策略。
[0129] 在块820处,如果证据满足策略,则提供密钥。例如,参照图2,密钥分发服务可以将密钥提供给主机230的请求组件。对于附加的安全性,密钥可以以接收组件(如果可信的话)可以解密密钥的方式而加密。
[0130] 在块825处,可以执行其它动作,如果有的话。在之前提及的密钥分发服务235的另一实现方式中,密钥分发服务235可以分发密封到满足租户策略的主机的状态的密钥。密钥分发服务235可以在知晓状态之后的任何时间完成此。
[0131] 如可以从前面的详细描述看到的,已经描述了涉及虚拟机保证的方面。尽管本文描述的主题的方面易受各种修改和可替换构造的影响,但是在图中示出并且在上文已经详细描述了其某些所图示的实施例。然而,应当理解的是,不意图将所要求保护的主题的方面限于所公开的具体形式,而是相反,意图是涵盖落入本文描述的主题的各种方面的精神和范围内的所有修改、可替换构造和等同方案。