首页 / 专利库 / 空中管制 / 许可 / 来自加密模板的加密虚拟机的安全创建

来自加密模板的加密虚拟机的安全创建

阅读:1077发布:2020-05-26

专利汇可以提供来自加密模板的加密虚拟机的安全创建专利检索,专利查询,专利分析的服务。并且在潜在地不安全的环境中以安全的方式引导机器。方法包括目标机器开始引导过程。方法还包括目标机器确定其需要供应数据以继续引导。目标机器联系安全 基础 设施以获得供应数据。目标机器提供能够由安全基础设施验证的身份 声明 。作为安全基础设施验证身份声明的结果,目标机器从安全基础设施接收 请求 以建立被密封到目标机器的密钥。目标机器将建立的密钥提供给安全基础设施。目标机器从安全基础设施接收供应数据。供应数据被加密到所建立的密钥。目标机器对经加密的供应数据解密,并且使用供应数据完成引导。,下面是来自加密模板的加密虚拟机的安全创建专利的具体信息内容。

1.在计算环境中,一种在潜在不安全的环境中以安全方式引导机器的方法,所述方法包括:
目标机器基于模板开始引导过程;
所述目标机器确定其需要供应数据以继续引导;
所述目标机器联系安全基础设施以获得所述供应数据;
所述目标机器提供能够由所述安全基础设施验证的身份声明
作为所述安全基础设施验证所述身份声明的结果,所述目标机器从所述安全基础设施接收用于建立被密封到所述目标机器的密钥的请求
所述目标机器向所述安全基础设施提供已建立的所述密钥;
所述目标机器从所述安全基础设施接收所述供应数据,其中所述供应数据被加密到已建立的所述密钥;以及
所述目标机器对经加密的所述供应数据进行解密,并且使用所述供应数据来验证所述模板可接受用于在引导所述目标机器中使用,以及然后使用所述供应数据完成引导所述目标机器。
2.根据权利要求1所述的方法,其中使用所述供应数据完成引导包括:使用所述供应数据连接到网络存储装置以执行网络引导。
3.根据权利要求1所述的方法,其中使用所述供应数据完成引导包括:使用所述供应数据加入机器集群。
4.根据权利要求1所述的方法,其中使用所述供应数据完成引导包括:使用所述供应数据在主机上创建虚拟机(VM),其中所述供应数据包括用于所述VM的数据。
5.根据权利要求1所述的方法,还包括:作为验证所述模板的部分将所述模板重新加密到所述目标机器,以防止在所述模板的部分已经被验证之后篡改所述模板。
6.根据权利要求1所述的方法,还包括:在验证所述模板可接受用于在引导所述目标机器中使用之后,将保密数据注入到所述目标机器中。
7.根据权利要求1所述的方法,还包括:
接收要被注入到所述目标机器中的非保密数据;
确定所述非保密数据是被允许被注入到所述目标机器中的非保密数据类别中的数据;
以及
作为结果,将所述非保密数据注入到所述目标机器中。
8.在计算环境中,一个或多个计算机可读物理存储介质,其包括被存储在其上的计算机可执行指令,所述计算机可执行指令在由一个或多个处理器执行时使得以下被执行:
目标机器开始引导过程,其中所述目标机器基于模板开始所述引导过程;
所述目标机器确定其需要供应数据以继续引导;
所述目标机器联系安全基础设施以获得所述供应数据;
所述目标机器提供能够由所述安全基础设施验证的身份声明;
作为所述安全基础设施验证所述身份声明的结果,所述目标机器从所述安全基础设施接收用于建立被密封到所述目标机器的密钥的请求;
所述目标机器向所述安全基础设施提供已建立的所述密钥;
所述目标机器从所述安全基础设施接收所述供应数据,其中所述供应数据被加密到已建立的所述密钥;
所述目标机器对经加密的所述供应数据进行解密;
所述目标机器使用所述供应数据来验证所述模板可接受用于在引导所述目标机器中使用,以及;
所述目标机器使用所述供应数据完成引导。
9.根据权利要求8所述的一个或多个计算机可读物理存储介质,还包括被存储在其中的计算机可执行指令,所述计算机可执行指令在由一个或多个处理器执行时使得作为验证所述模板的部分将所述模板重新加密到所述目标机器,以防止在所述模板的部分已经被验证之后篡改所述模板。
10.根据权利要求8所述的一个或多个计算机可读物理存储介质,还包括被存储在其中的计算机可执行指令,所述计算机可执行指令在由一个或多个处理器执行时使得以下被执行:
接收要被注入到所述目标机器中的非保密数据;
确定所述非保密数据是被允许被注入到所述目标机器中的非保密数据类别中的数据;
以及
作为结果,将所述非保密数据注入到所述目标机器中。
11.一种计算系统,其包括执行计算机可执行指令的一个或多个处理器,所述计算机可执行指令在被执行时,将所述计算系统配置有在潜在不安全的环境中以安全方式引导目标机器的架构,并且其中所述架构执行以下:
基于模板开始针对目标机器的引导过程;
做出供应数据被需要以继续引导的确定;
联系安全基础设施以获得所述供应数据;
提供能够由所述安全基础设施验证的身份声明;
作为所述安全基础设施验证所述身份声明的结果,从所述安全基础设施接收用于建立被密封到所述目标机器的密钥的请求;
向所述安全基础设施提供已建立的所述密钥;
从所述安全基础设施接收所述供应数据,其中所述供应数据被加密到已建立的所述密钥;以及
对经加密的所述供应数据进行解密,并且使用所述供应数据来验证所述模板可接受用于在引导所述目标机器中使用,以及然后使用所述供应数据完成引导所述目标机器。
12.根据权利要求11所述的系统,其中使用所述供应数据完成引导包括:使用所述供应数据连接到网络存储装置以执行网络引导。
13.根据权利要求11所述的系统,其中使用所述供应数据完成引导包括:使用所述供应数据加入机器集群。
14.根据权利要求11所述的系统,其中使用所述供应数据完成引导包括:使用所述供应数据在主机上创建虚拟机(VM),其中所述供应数据包括用于所述VM的数据。
15.根据权利要求11所述的系统,其中所述架构还执行以下:
作为验证所述模板的部分将所述模板重新加密到所述目标机器,以防止在所述模板的部分已经被验证之后篡改所述模板。
16.根据权利要求11所述的系统,其中所述架构还执行以下:
在验证所述模板可接受用于在引导所述目标机器中使用之后,将保密数据注入到所述目标机器中。
17.根据权利要求11所述的系统,其中所述架构还执行以下:
接收要被注入到所述目标机器中的非保密数据;
确定所述非保密数据是被允许被注入到所述目标机器中的非保密数据类别中的数据;
以及
作为结果,将所述非保密数据注入到所述目标机器中。

说明书全文

来自加密模板的加密虚拟机的安全创建

背景技术

[0001] 计算系统的互连已经促进分布式计算系统,诸如所谓的“”计算系统。在本描述中,“云计算”可以是用于使能对可以利用减少的管理精或服务提供商交互被提供且被释放的可配置的计算资源(例如,网络、服务器、存储装置、应用、服务等)的共享池的无所不在的方便的按需网络访问的系统或资源。云模型可以由以下各项组成:各种特性(例如,按需自助式服务、广泛网络接入、资源池、快速弹性、所测量的服务等)、服务模型(例如,软件即服务(“SaaS”)、平台即服务(“PaaS”)、基础设施即服务(“IaaS”)以及部署模型(例如,私有云、社区云、公共云、混合云等)。
[0002] 在云计算环境中,租户可以包括用户、公司或具有访问被部署在由云服务提供商运行的数据中心处的虚拟机(VM)中的一个或多个虚拟机的权利的公司或其他实体的部。通常,当租户想要具有数据中心中托管的VM时,租户通常想要大量的VM被创建且被托管。如果租户将创建并且将所有这些VM从租户传送到数据中心,则将要求大型网络流量和计算资源。然而,待启动的许多VM可能是几乎或实际上同样的。因此,在一些情况下,模板可以被提供给数据中心,数据中心可以复制以创建大量的实际上同样的VM。
[0003] 在其中数据中心中的租户将有限信任放在数据中心的人员中的计算环境中,VM有时必须从同样加密的模板以加密的形式被创建。来自模板的VM创建通常包含创建模板的虚拟硬驱动(VHD)的副本,但是出于密码安全的原因,每个VHD利用不同的密钥被加密。
[0004] 在此所请求保护的主题不限于解决任何缺点或仅在环境(诸如上文所描述的那些环境)中操作的实施例。相反,该背景仅被提供为图示其中可以实践本文所描述的一些实施例的一个示例性技术领域。发明内容
[0005] 在此所说明的一个实施例包括可以被实践在计算环境中的方法。方法包括用于在潜在地不安全的环境中以安全方式引导机器的动作。方法包括目标机器开始引导过程。方法还包括目标机器确定其需要供应数据以继续引导。目标机器联系安全基础设施以获得供应数据。目标机器提供能够由安全基础设施验证的身份声明。作为安全基础设施验证身份声明的结果,目标机器从安全基础设施接收请求以建立被密封到目标机器的密钥。目标机器将建立的密钥提供给安全基础设施。目标机器从安全基础设施接收供应数据。供应数据被加密到所建立的密钥。目标机器对经加密的供应数据进行解密,并且使用供应数据完成引导。
[0006] 提供该概述以引入以在详细描述中下文进一步描述的简化形式的概念的选择。该概述不旨在标识所要求保护的主题的关键特征或基本特征,其也不旨在用作辅助确定所要求保护的主题的范围。
[0007] 附加特征和优点将在以下描述中被阐述并且部分从描述将是明显的或可以通过本文中的教导的实践被学习。可以借助于在所附的权利要求中特别指出的设备和组合实现和获得本发明的特征和优点。本发明的特征将从以下描述和所附的权利要求变得更充分地明显或可以通过如在下文中所阐述的本发明的实践被学习。附图说明
[0008] 为了描述可以获得上文记载的优点和其他优点和特征的方式,将通过参考在附图中图示的特定实施例来提供上文简要描述的主题的更特定描述。理解这些附图仅描述典型实施例并且因此将不被认为在范围方面是限制性的,将通过使用附图以附加特殊性和细节描述和解释实施例,在附图中:
[0009] 图1图示了用于在完全启动虚拟机之前执行密钥更新操作的系统;
[0010] 图2图示了高层组件架构;
[0011] 图3图示了执行密钥更新操作的系统的详细示例;以及
[0012] 图4图示了在潜在地不安全的环境中以安全方式引导机器的方法。

具体实施方式

[0013] 现在参考图1,在此所描述的一些实施例实现以安全方式在完全地启动虚拟机(VM)102之前执行密钥更新操作的方法。在一些实施例中,这可以通过将从模板104创建的加密的VM 102部署到主机106来完成,其中由在模板的虚拟硬驱动(VHD)108上所执行的卷加密方法来加密模板。经加密的VM 102副本被提供给主机106并且包括初始化管理器110。可以例如使用某种技术(诸如从华盛顿雷德蒙德的微软公司可获得的可执行的引导管理器软件)实现初始化管理器110。
[0014] 执行初始化管理器110。初始化管理器110能够对VHD 108解密并且将VHD 108重新加密为新的密钥112,使得具有唯一密钥的VM 102被创建。可以然后完全在主机106处启动VM 102。新的密钥112可以使用被提供有VM 102的工具(诸如在初始化管理器110中的那些工具)本地生成或者可以从外部源(诸如密钥分布服务(KDS)114)被获得。
[0015] 在备选实施例中,VM 102可以是未加密的VM。在这种情况下,可能已经针对VM 102创建测量(例如散列)。VM 102可以被部署到主机106。在这些实施例中,VM 102还包括初始化管理器110。可以执行初始化管理器110。初始化管理器110可以利用适当的(并且在一些情况下唯一的)密钥112对VM 102的VHD 108进行加密。在一些实施例中,主机106将通过计算VM 102的散列,以确定VM 102的哈希是否匹配先前所计算和所提供的散列以确保VM 102尚未被篡改或被损坏。
[0016] 针对虚拟机和物理机存在用于机器保护的相同原理和要求,并且许多相同架构原理是适用的。加密敏感数据的机器在此被称为受保护机器。
[0017] 受保护机器是敏感数据已经被加密的那些受保护机器,并且在静止时且在传送期间保持加密。受保护机器的数据在保护系统的信任边界内被解密。取决于(即,虚拟的或物理的)机器的类型以及实现,该边界可以是仅受保护机器自身或其可以包括附加服务,诸如属于虚拟机的管理程序或主机操作系统的那些服务。
[0018] 受保护机器被描述为存在于两个状态(或者提供或者操作)之一中。受保护机器处于供应状态,同时其与外部服务交互,接收受保护数据或执行被要求使其操作的过程。一旦已经成功地提供受保护机器,则其进入其中其提供期望能力和服务的操作状态。
[0019] 在许多情况下,表征供应状态的供应操作在初始机器设置期间仅发生一次。这些类型的操作的示例将是对建立唯一计算机实例所要求的机器名、地址或身份的变化。虽然常常是这种情况,但是其不必总是这样。例如,如果在启动或某个规则间隔时由受保护机器要求一些数据片,则机器可能需要重复地提供。
[0020] 在此描述了用于受保护机器的供应架构。实施例可以支持各种实现,其支持物理机和虚拟机二者。另外,一系列操作技术可以跨越实现变化。这些包括可信平台模(TPM)芯片的存在或缺乏,以及其版本、固件类型以及虚拟机底层的管理程序能力。
[0021] 可以实现可以在实现之间变化的各种受保护机器操作技术。例如,一些实现可以要求专用硬件(诸如TPM芯片或硬件安全模块(HSM)),而其他实现不是。不同的实现可以要求系统服务以及系统操作者和管理员中的不同的信任平。
[0022] 描述在此被组织为两个主要章节。在第一章中,呈现了用于受保护机器的高层架构。在第二章中,图示了详细实施例。
[0023] 第1章:高层架构
[0024] 受保护机器
[0025] 在此描述了提供受保护机器所使用的架构。受保护机器的一个示例是具有使用某个全卷加密软件加密的其盘卷的一个示例。例如,实施例可以使用从华盛顿雷德蒙德的微软公司可获得的BitLocker。受保护机器在提供兼容的信任测量集的环境内操作。
[0026] 在许多情况下,受保护机器将依赖于特定于针对主机系统的客户虚拟机和/或物理TPM的虚拟TPM,在主机系统上,虚拟机被部署以确保密钥的保护,并且将该保护绑定到特定系统状态。TPM的使用在许多情况下可以是期望的,然而其不是严格必须的。不支持测量的环境可以以相同的方式由用户信任,并且如果该环境适当地被实现且被操作,则可以是至少与使用物理TPM的那些一样值得信任。
[0027] 信任模型和边界
[0028] 以其完整性可以被信任的这样的方式创建和操作每个受保护机器。这隐含托管机器的环境可以仅通过定义明确的信道与受保护机器交互。其中环境可以妥协受保护机器的所有区域被信任并且这些区域的集合表示用于受保护机器的信任模型。
[0029] 每个环境可以具有稍微不同的信任模型,并且实际上,相同环境中的不同的类型的受保护机器可以具有不同的信任模型。贯穿架构讨论,组件被分为被信任的那些组件和不被信任的那些组件。被信任的组件据称在受保护的信任边界内。
[0030] 架构
[0031] 该章节描述提供受保护机器所使用的高层概念组件架构。可以使用不同的组合中的各种组件来实现该架构。稍后的章节将描述实现该模式的特定实现架构。
[0032] 在图2中描绘了高层组件架构。在所图示的示例中,提供受保护机制在包括结构控制器202的计算结构内发生。结构控制器202指定发生什么事件以及那些事件何时发生。
[0033] 支持受保护机器的结构具有某种服务或组件,这种服务或组件可以可靠地并且安全地存储值得保护的秘密。出于该描述的目的,服务被假定为管理被用于访问受保护数据的密钥。在一些实现中,该服务可以存储受保护数据的整个内容。在概念架构中,这被示出为密钥管理服务204。图1中所图示的KDS 114是密钥管理服务的示例。
[0034] 供应服务206负责分发被用于提供特定受保护机器的数据。被分发的数据可以包括受保护数据和非受保护数据二者。供应服务206可以提供其服务以同时支持许多受保护机器。对于每个受保护机器而言,供应服务206与组件(被称为供应代理208)交互。供应代理208的实例在每个受保护机器基础上存在。
[0035] 供应服务206和供应代理208经由一个或多个供应信道210通信。供应信道简单地是通信的装置。这些信道210不需要提供隐私性、完整性或可靠性。在所图示的示例中,信道210被假定为不安全的。信道可以涵盖这样的不同的机制作为网络、共享存储器、串行端口或盘文件。由于这些信道所要求的低服务质量,供应服务器206和供应代理208可以根据需要添加隐私性、完整性和可靠性。
[0036] 供应代理208可以执行由受保护机器所要求的所有任务,然而,存在可以要求附加的专业能力的特定场景。特别重要的一组能力包含将通用模板机器镜像用作用于多个受保护机器的基础的过程。为了适应这一点,一些实施例可以包括可以可选地存在的两个附加组件。
[0037] 模板组件中的第一个模板组件被称为模板管理器212。模板管理器212负责对盘镜像执行所有操作,盘镜像被要求以将(一个或多个)模板盘转换为针对受保护机器的特定(一个或多个)目标盘。例如,如果模板盘被加密并且被签名,则模板管理器212将从供应代理208接收一个或多个密钥并且将然后验证签名,并且根据需要更新加密。
[0038] 一旦模板管理器212已经完成创建特定机器盘镜像所要求的任务,则受保护机器可能能够运行,然而,更可能的是,存在仍然被要求的操作系统或专用定制。最后的组件(被称为目标镜像适配器214)能够从供应代理208接收受保护数据并且使用这些数据执行受保护盘镜像的定制。
[0039] 受保护机器将通常具有一个或多个加密卷。可以例如使用从华盛顿雷德蒙德的微软公司获得的BitLocker对这些卷进行加密。将加密包含OS的卷。为了OS引导,该卷使用某个适当的密钥被解。在受保护机器内,可以存在附加的加密卷并且这些可以使用被存储在OS卷内的密钥被解锁。受保护机器还可以包含未被加密的卷。
[0040] 一旦被创建,受保护机器就在其寿命期间操作。受保护机器的操作可以要求某些秘密在正确的时间被管理用于并且被引入该机器。这些操作被认为是再发生的供应任务并且假定正确的架构组件将完成这些任务。
[0041] 密钥管理和分布
[0042] 存在于受保护机器内或提供那些机器的秘密数据可以采取各种大小和类型。在一些情况下,这些数据可以简单地是类似密码的小项,其中在其他中其可以是大的复杂结构,诸如虚拟盘内的加密卷。
[0043] 为了完成保护目标,架构将指代仅数据的保护而非受保护数据自身。受保护数据常常具有以下特点:
[0044] ●其被认证-受保护数据可以通过某种方式被认证,使得可以检测那些数据的任何变更。
[0045] ●其被加密-受保护数据还可以是敏感的并且被加密以防止未授权的公开。
[0046] 将通过某个密钥管理服务204管理认证和加密数据项所使用的密钥。要求对受保护数据的访问的实体(诸如结构服务)将请求来自密钥管理服务204的适当的密钥。其是密钥管理服务204仅在值得信任的环境下发布这样的密钥的责任。
[0047] 结构控制器
[0048] 在具有负责机器自身外的系统操作的所有方面的管理软件的一组系统内管理受保护机器。这样的机器的集合通常在此被称为结构并且控制结构的软件系统被称为结构控制器202。
[0049] 结构管理可以被分解为若干组件。这些组件中的一些组件将是跨管理的机器而操作的服务,而其他可以特定于个体机器,诸如在单个主机上操作的代理。
[0050] 供应服务
[0051] 结构维持可以统筹供应过程以及贯穿其寿命向机器提供秘密的服务。该服务被称为供应服务206,并且其是将由主机拥有并且操作的总体结构的一部分。供应服务206获得受保护供应数据116并且将那些数据传递给用于目标OS实例的另一组件(被称为供应代理208)。
[0052] 供应服务206被期望具有对用于一个或多个受保护机器的供应数据116的访问。其是供应服务206维持属于多个机器的数据之间的正确分离的责任,这是因为其处于其服务的每个这样的机器的信任边界内。
[0053] 在要求的情况下——例如由于通信限制——供应服务206可以被分割为被信任和不被信任的部分。当这完成时,不被信任的部分不具有对受保护数据的清楚文本的访问并且不能够使得那些数据被发布到不正确的目标。
[0054] 供应代理
[0055] 供应代理208是在信任边界内运行并且负责统筹供应操作的特定组件。供应代理208可以在提供被要求的任何时间运行。一些示例可以包括:
[0056] ●一次,在初始引导期间,为了获得由目标OS实例需要操作的唯一的私有数据。
[0057] ●在每次引导时。例如,为了获得不能安全地被存储在OS实例自身内的凭证或密钥。
[0058] 供应代理208使用由该对组件定义的协议和数据交换方法与供应服务206交互。供应代理208存在于受保护机器的信任边界内并且将通常具有对从供应服务206传递的敏感信息的访问。如果被要求,例如由于与供应服务206通信的细节,则供应代理208可以被分割为被信任组件和不被信任的组件二者。如果这被完成,不被信任的组件存在于受保护机器的信任边界外部并且不使受保护数据对其暴露。通常期望给定供应代理208实例将仅与单个供应服务206交互。
[0059] 一旦供应代理208已经完成操作,目标受保护机器(例如,图1中的VM 102)就能够引导。可以是以下情况:目标能够直接地引导,或者目标可以需要重新引导但是其是供应代理208在或者故障或者可引导的受保护机器的情况下退出的责任。供应代理208可以在每个受保护机器起动时操作。如果每次系统开始时需要某种水平的供应,则情况可以是这样。特定示例可以是每次其引导时被递送到系统的盘加密密钥。
[0060] 供应信道
[0061] 供应服务206和供应代理208相互通信。在一些实现中,这些可以实际上是相同程序的部分并且通信可以以内部数据结构的形式。在其他情况下,两个组件可以在不同的过程中或甚至在不同的机器上运行。这些组件的确切实现将指定允许他们通信的一个或多个信道的要求。
[0062] 当供应信道不具有超过通信-不可靠的通信的特定能力,各种不同的信道可以存在。一些可能的示例包括:
[0063] ●在存储器中,相同可执行的组件之间的数据结构。
[0064] ●主机之间的基于网络的传输。
[0065] ●虚拟机与相同主机的引导中运行的服务之间的专门传输
[0066] 模板管理器
[0067] 受保护机器寿命中所设计的固有挑战之一是简单地创建受保护机器。在一些情况下,受保护机器将由被信任的管理员在紧密控制的条件下被创建。在这样的情况下,存在用于安装的硬件、环境和源介质值得信任的高度保证。然而,在大多数情况下,新的受保护机器的创建从现有模板(例如,图1中的模板104)发生。模板包含运行系统的通用副本。为了创建新的受保护机器,副本由通用系统组成并且然后该副本被专用于创建唯一目标实例(例如,VM 102)。
[0068] 在供应过程内,其是模板管理器212将机器模板转换为唯一目标的任务。模板内的源盘(例如,VHD 108)可以被加密或者其可以具有某种形式的完整性验证。模板管理器212在信任边界内运行以验证源模板并且实施任何必要的加密。
[0069] 模板管理器212从供应代理208被调用,并且期望模板管理器212在受保护机器的寿命中被调用至多一次。供应服务206应当具有足够的控制来确定其何时调用模板管理器212。
[0070] 目标镜像适配器
[0071] 一旦模板管理器212已经创建唯一目标受保护机器镜像,镜像自身就可能需要变更以允许其操作。例如,通用操作系统镜像将要求一些设置组,其将允许其操作为唯一操作系统镜像。在从华盛顿雷德蒙德的微软公司可获得的Windows中,这是被称为专用的过程。目标镜像适配器214负责将特定实例数据注入到受保护机器镜像中。
[0072] 一旦供应代理208已经验证模板管理器212已经成功地运行,其就断定目标盘卷具有必需的安全性水平以允许其内的敏感特定机器数据的持久性。供应代理208然后执行目标镜像适配器214,其负责这些“修复”类型的操作。
[0073] 目标镜像适配器214在受保护机器的信任边界内运行,处理敏感数据(诸如私有密钥和管理凭证)。适配器功能取决于目标OS类型和需要发生的配置的性质。例如,数据可以被写到目标OS卷以允许专用化。目标镜像适配器214可以被分割为多个部分,如果例如那些部分需要在机器的引导周期中的不同的点处运行。在这种情况下,假定目标镜像适配器214的所有部分在受保护机器的信任边界内运行。
[0074] 第2章——提供受保护虚拟机
[0075] 实施例可以包括将使能受保护物理机或虚拟机的创建、迁移和操作的服务和组件的集合。
[0076] 可以实现其中结构管理器254(即,SC-VMM)和本地虚拟化管理程序215主机管理员二者都不应当能够妥协虚拟机的保护或访问该机器的保密数据中的任一个的实施例。
[0077] 受保护虚拟机可以依赖于操作系统的一个或多个技术和特征以安全地操作。
[0078] 基础组件
[0079] 可以被用于构建使用从华盛顿雷德蒙德的微软公司可获得的Hyper-V实现的实施例中的总体受保护VM场景的若干组件如下:
[0080] ·虚拟安全模式(VSM)——用于保护高值数据的Hyper-V(或其他管理程序)实施的存储器隔离模型。
[0081] ·Hyper-V代码完整性(HVCI)——由控制什么代码可以被执行在根分区的内核模式中的Hyper-V(或其他管理程序)实施的策略。
[0082] ·可信平台模块(TPM)——可以被用于测量平台状态和保护秘密的硬件或固件中实现的隔离安全性模块。
[0083] ·远程认证——使用TPM以密码认证的方式在平台的状态上报告并且然后确定该平台的某个部分的状态或健康的过程。
[0084] ·健康证书——当通过结构可接受的某个测量已知为健康时被发出到主机的证书。
[0085] ·密钥分布服务(KDS)——如果平台可以证明其健康则将密钥发布到平台的服务。
[0086] 方案预演
[0087] 现在,在图3中图示详细示例。示例VM 102(或在一些实施例中,物理机)的保护的基础单元可以是加密盘卷(诸如VHD 108)。受保护数据被放置在虚拟盘(VHDX)内的卷上,并且该卷使用全卷加密(FVE)被加密。给定虚拟机可以具有以该方式加密的其虚拟盘卷的任何集合。受保护VM 102具有利用FVE加密的其操作系统(OS)卷。FVE强加针对VM的OS的引导卷被解密的要求,然而该卷的内容将被完整性验证。
[0088] FVE保护卷可以被配置用于使用若干不同的密钥类型进行解锁。一些密钥要求用户存在以录入密码或PIN。其他类型的密钥可以要求被存储在另一卷上的受保护数据内或来源于其的密钥。然而,可以从外部设备(诸如USB拇指驱动器)读取其他类型的密钥。当加密卷表示数据卷时,这些密钥中的一些密钥适于服务器使用。例如,来源于运行的OS中的存储库的密钥足以解锁用于机器的数据卷。
[0089] 以上密钥通常不适于解锁OS卷,并且甚至更多地因此,托管云环境中的OS卷。原因在于,所有密钥或者已经要求运行OS——当加锁卷是OS卷时不可能的一些东西——或者其要求用户输入。FVE还支持在硬件251中运行的可信平台模块或TPM 261的使用以保护OS卷解锁密钥,其允许OS卷被密封到特定计算机系统并且在引导期间自动地解锁。
[0090] 在一些实施例中,VM 102可以具有虚拟TPM(vTPM)220作为其虚拟硬件的一部分。这允许基于TPM的FVE保护器被使用在VM 102的OS卷上。在一些方面中,保护FVE卷的虚拟TPM或vTPM的并入简单地移动保护问题。现在,不是保护FVE密钥,使vTPM的私有屏蔽数据免于公开和篡改变得必要。VM的虚拟硬件可以被实现在根分区内。这已经传统地意味着机器的根分区的管理员可以访问虚拟硬件并且公开或改变被存储在其内的数据。然而,该方案将不符合与使本地管理员免于妥协受保护VM的目标。
[0091] 一些实施例实现虚拟安全模式或VSM 266。简单地,VSM使用硬件存储器映射来创建单个分区内的不同的信任水平(被称为虚拟信任水平或简单地VTL)。分区内的代码使用特定虚拟化管理程序215调用进入或退出VTL。进入或退出VTL将使得虚拟化管理程序215改变对在分区内运行的代码可访问的存储器映射。
[0092] VSM创建由此在比如根分区中运行的代码不能够访问某些受保护数据的新的能力。这甚至适于在当前不具有放置在其上的限制的内核模式中运行的代码。仅非常小数量的代码将被允许在提高的VTL处执行。该被信任代码——常常现在仅被称为“VSM代码”——可以被控制使得第三方将不能够对其进行延伸。
[0093] 在一些实施例中,在VSM 266代码中实现新的vTPM 220硬件。这意味着包括vTPM 220的秘密屏蔽部分的数据将对大部分根分区代码是不可访问的,即使该代码利用管理权限运行并且即使该代码在内核模式中运行。VSM 266代码被认为是在管理受保护VM的信任边界内。
[0094] 虽然VSM 266可以为被信任代码和数据的管理提供显著地改进的边界,但是其并不是不受攻击影响。防止攻击的一个方式是对系统强加代码完整性控制或CI控制。CI控制使用特定策略(被称为CI策略)以确定什么代码被允许在系统上执行。然而,存在于系统的根分区中的CI策略容易受到攻击。实施例可以实现使得用于内核模式根分区组件的CI策略执行能够从管理程序自身完成的安全性特征。该特征横过CI策略的运行时间变更,并且在从华盛顿雷德蒙德的微软公司可获得的方案中,被称为Hyper-V代码完整性或HVCI。在CI 263处图示了示例。
[0095] 虽然CI策略可以在系统运行时间期间被很好地保护,但是其仍然容易受到离线攻击。如果系统关闭,则具有对机器的存储装置的访问的攻击者可能能够变更控制CI 263的策略以及其他策略,并且然后重新启动妥协状态中的机器。这将然后允许后续的在线攻击。为了减轻该类型的攻击,实施例还可以实现机器健康的附加硬件边界测量,其允许在使受保护数据被部署到其之前检测妥协的主机。这些测量将机器的物理TPM 261使用在远程认证的过程中。
[0096] 以上特征描述了实现重要的深度防御策略以及提供并且操作受保护VM所要求的信任边界的最小化的手段。对于受保护VM功能存在而言,技术上并不要求这些特征中的每个特征。
[0097] 受保护VM的信任边界
[0098] 受保护VM 120的所有者明确地仅信任将操作并且可能地创建VM 120的结构的密钥分布服务(KDS)114。所有者通过创建和/或操作VM 102所要求的秘密的保护者做出KDS 114来明确地表达该信任。在结构内,KDS 114具有在坚持结构策略的条件下分发密钥的能力。
[0099] 对于待创建或待操作的受保护VM 102而言,一个或多个秘密在主机106处是可用的。这些秘密包括vTPM 220以及可能的卷加密密钥或从模板104创建新的VM所需要的其他数据。受保护数据被递送到主机106并且在该主机的VSM 265内被解密。主机106上的VSM 265内的代码请求来自KDS 114的密钥,并且如果KDS 114将主机106视为健康的,则那些密钥被递送。证实的结构主机的VSM 265内的代码被认为是在用于在该主机106上运行的受保护VM的信任边界内。
[0100] 受保护VM 102还是的信任边界自身的一部分。也即,受保护VM 102内的代码具有构成受保护VM 102的受保护数据的访问。这一点的隐含在于,在主机106的VSM 265内已经访问的受保护数据可以然后在那些数据所属的受保护VM 102内暴露。然而,关于VSM中的VM的并非所有数据可以暴露在VM内。例如,vTPM的屏蔽位置未被暴露,仅因为那些pTPM将不在物理机上。
[0101] 如果存在适当的抽象(诸如虚拟化机制)来支持其,则对于一些受保护数据而言从VSM 266直接暴露于受保护VM 102是可能的。vTPM 220是该类型的数据的示例,其中vTPM内容在允许功能vTPM被暴露到VM 102中的VSM 266内操作。VM 102绝不具有对vTPM 220内容(诸如屏蔽数据)的直接访问。该模型直接地并行物理机上的物理TPM。
[0102] 在其他情况下,可用于主机的VSM 265中的受保护VM 102的受保护数据不具有虚拟硬件等效。在这些情况下,数据被安全地传输到VM 102中以供使用。大多数供应数据116落到该类别中。在这些情况下,在主机的VSM 265与目标受保护VM 102之间保护数据,使得其不能以不可检测的方式或以任何其他方式被公开、被修改,妥协由方案做出的完整性和私有性保证。
[0103] 从架构视,在一些实施例中,KDS 114、供应服务206的部分、供应代理208、模板管理器212和目标适配器214(参见图1)全部在针对受保护VM 102的信任边界内。
[0104] 受保护数据
[0105] 受保护VM的创建和操作使用受保护数据。受保护数据是被加密且被认证并且其在方案的正式信任边界内被解密的(一个或多个)数据项。在一些实施例中,每个分离的受保护数据片具有描述当前保护状态的唯一数据结构。该结构被称为保护描述符或PD。在一些实施例中,每个受保护数据片是不具有内在意思的八位字节流。各种组件和过程封装受保护数据用于其使用。
[0106] 受保护VM可以依赖于其操作寿命期间的一个受保护数据片(即vTPM 220)。vTPM 220进而被用于保护VM的FVE OS卷的加密密钥。vTPM 220是每个受保护VM的操作状态,并且如此,其被携带在VM的定义中(例如,在由华盛顿雷德蒙德的微软公司所提供的虚拟机实现的情况下的a.vmcx文件)。
[0107] 如果新的受保护VM 102在被信任环境中由其所有者创建,则其可以绝不要求超过vTPM 220的任何受保护数据。在这种情况下,受保护VM 102被创建为运行虚拟化管理程序215的计算机上的空的VM。新的VM 102具有与其相关联的vTPM 220并且所有者将新的软件安装到安全和被信任环境中的VM 102中。环境是安全并且被信任的,这是因为安装过程自身不是安全的。
[0108] 然而,在许多情况下,新的受保护VM 102通过从模板104开始创建并且将模板104专用以形成不同的受保护目标VM 102。首先,新的模板OS被放下在OS盘上。模板OS是以通用的形式并且其稍后被专用化以产生不同的OS实例。部署和专用化的过程要求被用于区分新实例的某个供应数据116的集合(参见图1)。这些供应数据116通常包括类似计算机名和管理员密码的内容。
[0109] 当从模板创建新的VM时,需要一些附加的受保护数据。这些受保护数据包含敏感信息,诸如初始加密密钥(稍后待描述的)以及管理员密码或其他专用数据)。在一些实施例中,供应数据根据受保护VM并且仅在创建时间时被使用一次。
[0110] 基于受保护虚拟机模板的供应能力
[0111] 在一系列步骤中执行来自模板OS盘的不同的VM 102。步骤的集合可以基于确切的场景变化,但是其通常可以包括以下各项:
[0112] 1.将模板OS卷解密——OS卷可以具有被要求将其解锁的外部密钥。如果这样的话,密钥被传递到工厂中并且被用于将安全卷解锁。
[0113] 2.将OS卷重新加密——在大多数情况中,模板OS卷不具有加密密钥或者跨从相同模板得到的所有盘将相同的加密密钥。可能需要将卷重新加密。
[0114] 3.认证OS卷——一些OS卷伴随有签名信息。签名被验证以确保模板尚未变更。
[0115] 4.将供应数据与模板相匹配——所有者可以具有旨在用于与不同的模板操作一起使用的不同的供应数据。供应数据被匹配到模板。
[0116] 5.注入供应数据——一旦目标OS卷被验证并且安全的,供应数据就可以被注入到其中。这些数据被传递到工厂中。
[0117] 模板盘类型
[0118] 存在现在描述的两个基于不同的模板的供应场景。这两者导致具有一个或多个FVE加密卷的受保护VM 102。另外,这两个场景要求受保护供应数据116的某个集合。场景之间的差异在于(一个或多个)模板虚拟盘的源和保护。两个盘场景是:
[0119] 1)加密的模板——虚拟OS盘包含使用秘密FVE密钥加密的OS卷。秘密FVE密钥是受保护数据。
[0120] 2)签名的模板——虚拟OS盘包含加密的OS卷,然而FVE被暂停意味着没有秘密密钥被要求以访问卷。根分区包含OS卷上的签名目录以允许完整性检查。
[0121] 在这两种情况下,被执行的VM工厂操作在根盘的OS卷上。VM 102可以包含附加的加密卷,并且如果其这样做,则任何自动解锁被设定在模板盘的OS卷中。在一些实施例中,VM工厂不对数据卷执行重新加密操作。
[0122] 加密模板被预期由单个所有者或租户私有地使用并且可以包含该租户的私有数据。VM工厂使这些数据免于公开。签名模板被预期发布并且不包含敏感数据。可以使用签名目录认证签名模板,但是包含在其中的数据应当被假定为自由地公开。签名模板是用于通用工作量的有用的起始点。因此,例如,可以由租户直接地提供加密模板,而签名模板通常在任何租户的模板图库中是可用的。
[0123] 模板虚拟硬盘创建
[0124] 为了使能来自模板的受保护VM的创建,首先创建一个或多个模板虚拟硬盘。在安全环境中创建模板虚拟硬盘。这被完成,因为创建过程可能依赖于管理未给予用于受保护VM的规定的信任边界内的保护的数据的操作。
[0125] 在大多数情况下,由需要私有加密模板的租户或由希望发布标准模板的主机或供应商创建模板虚拟硬盘。可以在独立安全机器上创建这些模板盘。
[0126] OS盘创建
[0127] 每个受保护VM从虚拟根盘上的加密OS卷引导。为了创建新的OS模板盘,过程以新的未保护的VM开始。该新的VM(被称为模板VM)特别地存在以创建新的模板OS盘。模板VM不需要具有vTPM。
[0128] 模板VM初始地具有空白根盘。一旦创建新根盘,就安装操作系统的新副本。这可以是支持FVE的可商业获得的版本。例如,一些实施例可以使用Windows 8或稍后从华盛顿雷德蒙德的微软公司获得。OS盘然后使FVE驱动器加密启用。可以利用以下参数执行驱动器加密:
[0129] 1)加密可以被设定为仅对所使用的空间进行加密。大多数OS盘是多驱动器错误容限(例如,通过具有冗余度)盘,并且该选项快速得多并且导致更小的虚拟盘文件。
[0130] 2)将密钥保存到文件。由传输密钥(Transport Key)或TK保护的FVE密钥可以被保存到文件。为了促进这一点,附加的虚拟盘可以被附接到VM或者密钥可以暂时地被保存到OS盘自身。
[0131] 一旦FVE已经完成加密OS卷,密钥就被存储在安全位置。密钥被包含在上文(2)中所指定的位置处的文件中。一旦密钥已经被保存到安全位置,其就从原始位置被擦除。
[0132] 对于签名模板而言,如果模板创建过程被用于授权签名模板,那么在OS卷上现在暂停FVE。暂停FVE允许在没有上文所创建的密钥的情况下访问OS卷。以上密钥不应当在暂停FVE之后被要求。
[0133] 一旦OS或任何附加元件被安装并且所有配置已经被完成,OS就应当被一般化。在一些实施例中,这可以使用从华盛顿雷德蒙德的微软公司获得的Windows sysprep实用程序完成。当完成一般化时,目标OS可以被配置为当其被然后引导时,使设置专用化和定制免于运行。现在,模板VM应当关闭。
[0134] 模板签名目录创建
[0135] 模板盘被签名而不管最后的产品是加密模板还是仅签名模板。该基本原理在于,加密单独不能被用于检测篡改。虽然攻击者可以以可以引入安全漏洞的方式篡改FVE加密盘被认为是极其不可能的,但是有可能的是,可以破坏使得结果的VM不正确地操作的数据。
[0136] 来自包含新模板镜像的模板VM的OS虚拟盘文件被安装在安全授权工作站上。这可以是在其上模板VM被更早地创建但是那未被要求的相同工作站。OS盘文件被安装在其上的工作站使模板签名证书被安装。
[0137] 一旦OS虚拟盘被安装,就存在在其上存在的两个分区。第一个是包含根文件的未加密的根分区。第二个是已经利用FVE加密的OS卷自身。FVE可能暂停或可能尚未暂停,但是如果FVE是活跃的,则卷未被解锁。OS卷被离线,使得当前OS不具有安装在其上的文件系统。
[0138] 作者可以使用特殊签名目录创建工具生成用于OS卷的签名目录。作为结果的签名目录是被写到盘的根分区的文件。工具考虑针对卷ID和版本的用户输入,如下文所描述的。
[0139] OS卷目录文件字段如下:
[0140] 散列-盘的所有使用块的密码散列。在一些实施例中,散列未覆盖由当前文件系统未使用的块。散列包含算法ID和散列值二者。
[0141] 卷ID-由允许发布者对卷进行命名和记版本的发布者分配的结构。卷ID包含以下部分:
[0142] -名称-分配给卷的文本名称。该名称可以是发布者的选择的任何东西。
[0143] -版本号-在一些实施例中,这可以是形式w.x.y.z的四部分版本号。
[0144] 发布者证书-证书包含对应于由发布者所使用的签名密钥的公共密钥。签名检查可以使用仅密钥,或者如果其能够的话,使用整个证书确定签名是否有效。
[0145] 签名-目录中的所有字段上的签名。
[0146] 目录的位置应当具有默认,但是还应当能够经由根配置数据(BCD)设置而被指定。
[0147] 加密模板发布
[0148] 当加密模板被发布时,对应的密钥文件被维持并且在参考模板的新的供应数据将被创建时是可用的。密钥文件被保持在安全位置(诸如加密外部驱动器),并且仅在供应数据创建要求其时是可用的。
[0149] 数据盘创建
[0150] 除受保护OS盘之外,受保护VM可以具有一个或多个数据盘。数据盘(如果其存在的话)可以是清楚的或者根据需要被加密。如果要求加密数据盘,则在一些实施例中,其可以在模板OS盘的创建之前被创建。模板OS盘上的OS被配置为自动地解锁FVE加密数据盘。
[0151] 供应数据创建
[0152] 当要从模板104创建新的受保护VM 102时,则可以使用特殊文件(被称为供应数据密钥文件(PDK))。密钥文件简单地是结构化的一组元件,其中每个元件包含其自身的描述表头。PDK提供针对包括必需密钥和允许卷ID的基于模板的创建的一种方法。通过将创建新的受保护VM的租户确定PDK的颗粒度。一些示例包括:
[0153] ·租户可以选择具有被用于创建所有受保护VM的一个PDK。
[0154] ·租户可以基于其内容和使用创建针对不同种类的机器的不同的PDK。
[0155] ·租户可以选择针对每个单个受保护VM的不同的PDK以确保针对每一个的特定设置。
[0156] 供应数据116可以被提供到密钥文件结构中。总体密钥文件可以然后被保护为私有数据。
[0157] 在一些实施例中,PDK包含使用在供应过程中的至少三个项,这些是:
[0158] 1)卷ID限定符——描述来自对应的PS卷目录的信息的一组限定符。如果PDK包含可以匹配OS卷ID的卷ID限定符,则特定PDK可以与模板OS盘一起被使用,如稍后所描述的。
[0159] 2)工厂数据——引导安全VM工厂操作的设置。
[0160] 3)定制数据段——被用于定制来自模板盘的OS的一组数据项和描述。
[0161] OS卷ID限定符
[0162] 在所说明的实施例中,每个目录包含针对OS卷和版本号的文本名,其二者由模板的创建者或发布者确定。将总体目录签名。目录包含签名者的证书,其继而包含公共签名密钥。
[0163] OS卷限定符(或简单地限定符)基本上是被用于匹配一个或多个目录的规则。在一些实施例中,每个限定符包含以下项:
[0164] 名称-被用于匹配目录中的名称的名称。限定符中的名称可以包含具有与命令提示相同匹配规则的通配符(诸如“*”和“?”)。
[0165] 版本-在一些实施例中,多部分版本号。版本的每个部分是可选的,与总体版本一样。如果版本被省略,那么空版本匹配来自目录的所有版本。如果版本的任何部分是缺失的,则该部分被解译为是0。
[0166] 版本规则-可以是大于、大于等于、小于、小于等于、等于或不等于。这是将限定符中的版本与目录中的版本匹配所使用的规则。
[0167] 签名密钥-被期望被用于签名卷目录的公共密钥。可以省略签名密钥以创建允许所有目录的限定符,尽管这显著地放宽安全性。
[0168] 卷密钥-可选的并且不存在于仅签名模板中,包含解锁卷所需要的FVE加密密钥。
[0169] PDK的限定符段包含一个或多个个体OS卷限定符条目。每个条目可以描述一系列目标OS卷目录。最简单的限定符包含通配符名、没有版本、等于版本规则、没有签名密钥并且没有卷密钥。所得到的PDK可以与所有仅签名的模板一起使用。
[0170] 工厂数据
[0171] 工厂数据描述工厂将如何处理模板盘。工厂数据是OS相关的。在一些实施例中,指定以下值:
[0172] ·FVEK重新加密——仅适于加密模板盘,(如果模板盘是仅签名的)被忽略。选择指定“没有重新加密”,其针对非加密(即,仅签名的)模板被忽略,因为在那些情况下,密钥是众所周知的,使得实施例总是滚动FVEK。当该选项被指定时,针对每个模板副本滚动全卷加密密钥(FVEK)。应用该选项显著地增加VM工厂的处理时间。应用该选项还防止其中单个父盘由多个差异盘使用的场景。
[0173] ·忽略签名检查——使得签名检查被忽略。在仅签名的模板盘中,甚至不需要计算签名,其节省了时间。该选项可以被指定以放宽签名检查以及速度创建(特别地针对仅签名的模板)。一些实施例可以被配置为除在加密模板上之外,绝不使用该选项。
[0174] 定制数据
[0175] 每个PDK可以包含专用数据段。专用数据段是由租户用于将私有数据和指令传递到受保护工厂过程的机制。专用数据旨在描述模板-目标过程发生的方式。
[0176] 可以在受保护VM工厂内消耗专用数据中的一些专用数据,而可以在目标OS内消耗其他部分。特别地,工厂数据由工厂过程消耗,而专用数据以OS有关的方式被传递到OS。
[0177] 专用数据
[0178] 在VM工厂的专用化管理器组件内或者在专用化管理器与目标OS之间完全地消耗专用数据。责任的划分取决于目标OS和将其专用化所使用的机制。
[0179] 假定专用数据是OS相关的,格式和内容也是这样。例如,在Microsoft Windows中,存在两个数据段。每个段中的每个条目以名称开始。名称基于Windows unattend.xml应答文件的名称。
[0180] 第一段被称为受保护值段。该段包含与每个数据项的名称相对应的值。值是数据类型和兼容的数据值的复合。这是被传递到unattend.xml应答文件中的指定条目的目标操作系统的值。
[0181] 第二段被称为允许结构值段。这仅是名称的列表并且其被解译为值的“白名单”。专用化管理器和目标OS中的任何专用化代码允许在该段中指定的值的不安全的源。在受保护VM工厂的情况下,结构管理器254被允许在模板值中传递。那些模板值在要被应用的PDK的允许值列表中。
[0182] 供应操作
[0183] 如先前所描述的,供应操作可以被分离为被要求创建受保护VM的一次性操作和被要求操作该VM的再发生的操作。可以在具有基于丰富模板的提供能力但是不要求再发生的操作的环境中实现一些实施例。
[0184] 在安全VM工厂中实现供应过程。安全VM工厂在提供可扩展的安全方案的目标受保护VM内完全地运行。每个受保护VM在未提供的状态中开始,使用下面的数段中所描述的过程在该受保护VM内创建个体受保护目标OS。
[0185] 初始未提供的VM状态
[0186] 结构管理器254统筹新的受保护VM 102的创建。当新的受保护VM 102首先被创建时,其处于未提供的状态。在初始状态中,VM是不可用的并且可以甚至不引导。另外,由vTPM组成的受保护VM状态不能迁移出从当前运行虚拟化管理程序215实例,这是因为其不具有与其相关联的保护;仅保护提供新的vTPM 220在于,其完全存在于VSM 266内。
[0187] 受保护VM创建的详细步骤
[0188] 当新的受保护的VM被创建时,执行一系列步骤以使其处于初始未提供的状态。
[0189] 复制模板盘
[0190] 为了开始受保护创建,结构管理器254创建形成新VM的基础的新盘。新盘可以是例如以下各项中的任一项:
[0191] 1)模板盘的副本。任何模板盘可以包含加密或签名卷。
[0192] 2)新的空盘。新的VM的盘中的任一个可以是空盘。当所有者将创建安全环境中的新受保护VM时,OS盘可以仅是空盘。
[0193] 3)不同的盘。可以创建参考父亲的新的不同盘。在某些情况中父亲可以被共享。父亲盘可以是加密盘但非签名盘。
[0194] 下面更详细地描述了对来自加密模板的不同盘的使用的限制。
[0195] 初始VM创建
[0196] 结构管理器254选择能够托管受保护VM 102的主机106。结构管理器254使得该主机106上的管理程序215创建新的VM。新的VM具有新的vTPM 220。新的VM 102被配置有先前创建的正确的虚拟盘集。虚拟硬盘的剩余部分由结构管理器254指定并且不是VM 102的安全或受保护配置的一部分。
[0197] 当新的VM 102被创建时,虚拟化管理程序215使得新的vTPM信任程序(trustlet)被实例化以托管该VM的vTPM 220实例。该信任程序是管理针对特定vTPM实例的TPM功能的vTPM程序。新的vTPM 220的创建能够创建屏蔽位置(TPM分层子孙)中的持久伪影。这时候,VM 102和vTPM 220二者都不运行。
[0198] 当虚拟化管理程序215创建新的vTPM 220实例时,该实例不具有与其相关联的保护。例如,可能不存在传输密钥(TK)和/或可用于其的保护方案的列举。可以使用在此被称为保护描述符(PD)实现保护方案的列举。对象存在于VSM 266内,但是由于不存在保护,在一些实施例中,因而其不曾离开VSM 266。这意味着其不能被保存或被迁移到另一主机。
[0199] 供应数据的实例化
[0200] 结构管理器254取回对应于新的VM 102的供应数据116(参见图1)。供应数据116作为具有特定内部格式的受保护数据对象存在,如先前所描述的。供应数据116对于结构管理器254是完全不透明的。结构管理器254仅控制该对象的存储和移动。
[0201] 在其中新VM 102已经创建的相同主机106上,结构管理器254实例化供应信任程序实例。该信任是管理针对特定VM实例的供应数据116的VSM程序。结构管理器254将供应数据116传递到新信任程序实例。
[0202] vTPM保护的建立
[0203] 一旦结构管理器254已经取回供应数据116,结构管理器254就从包含供应数据116的PDK提取PD。结构管理器254调用到vTPM信任程序以将枚举相容的保护方案的PD设定在vTPM 220上。vTPM 220允许保护从VSM 266外部在vTPM 220上被设定一次,这是因为在适当的位置不存在电流保护。
[0204] vTPM信任程序尝试基于已经从结构管理器254(对VSM 265自身不被信任的)传递的PD,来设定对vTPM 220的保护。为了这样做,vTPM信任程序联系在现有PD中传递的正确的KDS 114。KDS 114通过从PD解开现有TK以及创建用于出口的新的TK 112和新的PD以描述新的TK 112,来对该请求作出反应。这些被返回到vTPM信任程序。解开的TK未由vTPM信任程序需要,因为其应用到PDK。新的TK 112和相关联的新PD用于新的vTPM 220。vTPM信任程序可以现在从VSM 266根据需要输出vTPM 220,因为其具有针对数据的足够的保护。重要的是,注意,新的vTPM PD 224上的所有者(拥有数据集的所有者)、保护者(可以托管或存储用于所有者的数据集的实体)和所有权的保护者(保护数据集的实体)匹配供应数据116上的PD。
[0205] 创建用于vTPM的新保护的过程具有以下特性:
[0206] ·充当供应数据116的所有权的保护者的KDS 114与借助于将一个PD从另一个PD导出的vTPM 220的所有权的保护者的那个相同。
[0207] ·虽然待设定在vTPM上的很好格式的PD可以由几乎任何实体创建,但是该实体将不能够签名为所有权的正确保护者。
[0208] ·当使用完全KDS 114时,新的VSM对象(在这种情况下,vTPM 220)的保护可能仅基于来自另一对象的保护被设定。
[0209] 虚拟机工厂
[0210] 如先前所描述的,可以使用用于OS安装的分布介质从空的VM来手动地创建新的受保护VM。然而,还如先前所述的,很少是这种情况并且这几乎是针对特殊情况预留的过程(诸如模板的创建)。模板进而被用于以更自动化的方式产生附加的VM。
[0211] 创建新的VM使用的资源、过程和工具集被称为VM工厂。VM工厂可以产生受保护或未受保护的VM,这取决于虚拟硬件和被执行的过程;一些受保护VM要求vTPM和至少FVE加密OS卷。
[0212] 为了创建受保护VM,所执行的过程具有两个输入。这些是:
[0213] 1)模板盘——包含模板盘的一个或多个虚拟硬盘驱动器文件。过程复制这些模板盘并且然后根据需要对内容进行专用化。
[0214] 2)供应数据——制造新的VM盘——初始地模板的副本——属于新的VM的不同的实例所需要的数据值。
[0215] 创建受保护VM的过程包括将专用数据注入新的VM中并且然后新的VM被引导。初始引导使得OS设置的专用化阶段运行,其消耗专用数据并且导致针对VM的唯一OS实例。
[0216] 为了完成创建受保护VM的过程,OS卷并且也许如所期望的其他卷被FVE加密以确保其在静止时被保护。一旦这已经完成,就可以在其vTPM能够被解密的任何地方将受保护VM实例化。
[0217] 安全VM工厂
[0218] 如上文所描述的VM工厂在被信任环境中是可使用的。也即,在其中VM的所有者可以信任用于执行过程的硬件和软件的环境中,还可以信任所得到的受保护VM。在非常常见的情况中,在由除了新的受保护VM的所有者之外的某个实体拥有和操作的结构内创建受保护VM。当情况是这样时,VM工厂在先前所描述的信任边界内操作。备选地,可以针对VM创建放宽该信任边界,但是重要的是,识别放宽信任边界可能妥协所得到的受保护VM的完整性。
[0219] 对于安全VM工厂而言,对过程的输入可能需要被保护。以上描述描述了对模板盘和供应数据116的创建,包括这些的受保护实例的创建。
[0220] 实施例将受保护VM 102自身用作用于安全VM工厂的主机。为了实现这一点,受保护VM 102以允许其解锁并且处理模板OS以及供应数据116的方式进行引导。所得到的目标OS信息绝不暴露在受保护VM 102自身外部。
[0221] 安全VM工厂过程
[0222] 上文描述了创建初始未提供的受保护VM的过程。在该过程的结尾处,受保护VM和供应数据116存在于以下状态中:
[0223] ·包括vTPM 220的受保护VM 102已经由虚拟化管理程序215创建但是尚未开始。
[0224] ·以PDK的形式的受保护供应数据已经被下载到主机106并且供应信任程序已经被实例化以保持该数据。
[0225] ·供应信任程序实例已经接收针对PDK的密钥并且已经解密和认证现在存在于VSM 265内的清楚文本中的供应数据。
[0226] ·结构管理器254已经使用来自PDK的PD来设定vTPM 220上的新PD。
[0227] 正常模式供应服务
[0228] 结构管理器254现在启动新的过程,被称为正常模式供应服务(NMPS)206。NMPS 206是用作参见安全供应过程的组件之间的通信桥接器的简单的服务。NMPS 206自身不是任何超过结构管理器254的被信任代码。
[0229] 在创建时,NMPS 206接收对正确vTPM信任程序的处理、对正确供应信任程序的处理、以及针对新受保护VM 102的局部端点标识符。这些允许NMPS 206促进这些实体之间的所有通信。NMPS 206使用VM端点标识符开始倾听来自新受保护VM 102自身的连接尝试。在一些实施例中,没有NMPS 206与其他对象中的任一个对象之间的通信依赖于安全连接;所有隐私性和完整性由对象自身确保。
[0230] 初始受保护VM引导
[0231] 利用在适当的位置的基本组件,结构管理器254可以信号通知虚拟化管理程序215以应用虚拟电源使得受保护VM 102启动其首次引导。在所图示的示例中,受保护VM硬件使统一可扩展固件接口(UEFI)262安全引导并且TPM 261测量引导启用。控制安全根——PK/KEK/db/dbx的UEFI 262由虚拟化管理程序控制并且允许仅授权签名引导代码执行。UEFI第一阶段加载器加载、测量并且执行引导管理器。
[0232] 在第一引导期间,引导配置数据(BCD)由引导管理器读取。BCD条目指示引导管理器执行受保护VM工厂代码路径。BCD设置驻留在引导盘的未加密的引导分区上并且因此打开以篡改。如果攻击者尝试通过禁用受保护VM工厂来阻碍过程,那么所得到的VM提供将不发生并且没有信息将被妥协。
[0233] 引导环境供应代理
[0234] 受保护VM工厂代码路径的启动开始引导环境供应代理(BEPA)。BEPA在引导环境中的受保护VM内运行。通常,上文将BEPA图示为供应代理208。BEPA代码紧接地尝试联系根分区中的NMPS端点。BEPA中的任何通信故障导致受保护VM工厂和无功能VM的整体故障。一旦BEPA与NMPS 206建立通信,就交换一系列消息以支持提供。消息交换使得一系列步骤在供应过程中发生。
[0235] PDK-请求消息
[0236] 紧接地在连接到NMPS 206之后,BEPA发送PDK请求消息以请求其供应数据116。消息包括vTPM 220的公共认可密钥(EKpub)。BEPA直接读取EKpub。
[0237] NMPS 206从BEPA接收PDK请求消息并且将消息转发给相关联的供应信任程序实例。在所图示的示例中,确切地存在与每个NMPS实例相关联的一个供应信任程序。不存在由NMPS 206所执行的PDK-Request消息的加密、认证或验证。
[0238] vTPM-保护-查询消息
[0239] 当供应信任程序实例接收到PDK-Request时,其利用vTPM-保护-查询消息进行响应。该消息初始地从供应信任程序被发送到NMPS 206。消息简单地包含从PDK-请求所接收的EKpub。NMPS 206定位与EKpub相对应的vTPM信任程序实例并且将vTPM-保护-查询消息转发给该信任程序。
[0240] vTPM-保护-说明消息
[0241] 当vTPM信任程序接收vTPM-保护-查询消息时,vTPM信任程序首先基于接收到的EKpub,来确定其是否托管具有正确EK的vTPM。如果密钥不匹配,那么创建认可密钥失配错误消息。
[0242] 如果所请求的EK匹配vTPM信任程序实例EK,那么信任程序取回vTPM的PD。这被写到vTPM保护说明消息。
[0243] vTPM信任程序使得VSM使用VSM私有密钥将vTPM-保护-说明消息签名。这允许消息被认证为在稍后的时候发生于当前VSM 265。消息经由NMPS 206被返回到供应信任程序。
[0244] 确定保护兼容性
[0245] 在接收vTPM-保护-说明消息之后,供应信任程序首先使得VSM将消息认证和/或保证为还已经发起于VSM。这可以例如通过对消息进行加密/签名来完成。在一个示例实施例中,这通过允许数据通过VSM内核在VSM内行进完成。如果这是成功的,那么供应信任程序具有针对PDK和vTPM二者的PD。为了继续供应操作,PD必须是兼容的。
[0246] 在一些实施例中,存在PD兼容性的一个概念并且那是所有者、保护者和所有权保护者的等价,其中等价意味着实体具有相同的PD身份和角色。该模型要求被设定在vTPM上的PD初始地根据PDK上的PD生成,因此除了在误差和尝试的妥协方面,该检查应当成功。如果PD兼容性不能被验证,那么供应信任程序简单地将故障消息返回到NMPS 206。NMPS 206将该故障消息传递回到BEPA。
[0247] 供应机器密钥的创建
[0248] 一旦对供应数据116和目标受保护VM的vTPM的保护被确定为相同,供应信任程序就向前移动以将供应数据116提供给受保护VM。为了这样做,供应数据116当其离开VSM 266中的供应信任程序中时被保护,直到其安全地处于受保护VM 102内。该传送期间的数据的保护继续间接地由VSM 266保证。为了这样做,目标VM的vTPM 220中的TPM密钥被用于保护数据;vTPM 220进而由VSM 266保护。
[0249] 供应信任程序使用针对目标VM的安全设备(例如,TPM)的远程命令执行以将消息发送回到BEPA。这些消息是BEPA直接地递送到其TPM的TPM穿过消息。TPM处理这样的消息并且返回对BEPA的响应,其全部通过NMPS 206返回对供应信任程序的该响应。该布置允许供应信任程序直接使用目标vTPM。
[0250] 供应信任程序与目标TPM建立有经验的授权会话。在这种情况下,供应信任程序知道目标TPM的EKpub并且基于从vTPM信任程序接收到的说明,知道这是有效的TPM。供应信任程序将目标TPM的EK用作用于知道仅该目标TPM可以直接使用所得到的消息的新会话的有经验的加密器。
[0251] 一旦建立授权会话,供应信任程序就向目标TPM发出命令以创建被封闭到特定平台控制寄存器(PCR)值的包装密钥。虽然什么进入哪些PCR主要是操作系统的选择,但是在一个示例实施例中,实现以下PCR内容:
[0252] ·PCR[7]-包含正确虚拟化管理程序215根组件的已知“魔术数字”散列。
[0253] ·PCR[11]-必须包含与被信任引导环境相对应的已知值。引导环境然后覆盖此以限制密钥使用。
[0254] 所得到的密钥团被返回到供应信任程序。该密钥被称为提供机器密钥,其被用于保护供应数据116。
[0255] 保护用于目标VM的供应数据
[0256] 供应信任程序现在写入PDK的新的版本。新的PDK包含与原始PDK相同段加上以下附加:
[0257] ·结构数据——来自结构密钥文件的密钥文件段被包含到PDK中。
[0258] 当创建新PDK时,供应信任程序然后建立对其的保护。在VSM 266内生根该保护。步骤包含创建针对新的对象的VSM标准PD。以下步骤发生:
[0259] 1)新的TK使用密钥导出函数(诸如基于密码的密钥导出函数2(PBKDF2)认证)被生成并且导出加密密钥(TK-E和TK-A)。
[0260] 2)使用TK-E对PDK进行加密。
[0261] 3)使用TK-A生成用于PDK的基于散列的消息认证码。
[0262] 4)VSM公共密钥被用于创建包装在PD内的所有者。
[0263] 5)机器密钥的公共部分被用于创建保护者TK包装并且被添加到PD。
[0264] 6)PD使用VSM私有密钥被签名,这做出所有权中的保护者的当前主机的VSM 265。
[0265] 所得到的受保护对象仅可用在VSM 265内的当前主机106上或BEPA中的目标受保护VM中。当目标VM中的引导环境退出时,其覆盖渲染在那之后不可用的数据的PCR[11]。虽然新的受保护PDK未由BEPA持续,但是其可以被持续为保存恢复操作的一部分或由实况迁移而进行迁移。注意,在最终的受保护PDK被发送到BEPA之前发生的任何这样的操作使得供应过程失败。供应过程失败要求该过程的重新引导。
[0266] 最终的PDK传送
[0267] 供应信任程序然后创建包含新的受保护PDK的消息连同包含机器密钥的TPM密钥团。该消息被返回到NMPS 206,其满足以上题为“PDK-请求消息”的章节中所描述的请求。NMPS 206将此返回到BEPA。
[0268] 当BEPA接收PDK消息时,其首先与TPM 261建立新本地会话。在该会话内,BEPA加载从具有PDK的供应服务返回的机器密钥团。该操作仅在处于正确状态(由于PCR密封)的正确TPM 261内成功。一旦机器密钥已经被加载,BEPA就使用该密钥解开来自PDK的PD的TK的正确副本。
[0269] 已经恢复TK,BEPA本地运行标准密钥导出函数并且产生TK-E和TK-A的副本。其使用这些密钥解密并且认证受保护PDK数据。一旦已经在清楚文本中恢复PDK,如下面所定义的,受保护模板管理器212就可以运行以处理模板引导盘。
[0270] 受保护模板管理器
[0271] 一旦BEPA已经完成执行,则所得到的清楚文本PDK仅存在于VM的存储器中。受保护工厂然后启动传递PDK的模板数据部分的受保护模板管理器(PTM)模块。PTM被用于处理模板引导盘,其包括检查签名、改变密钥并且建立新的FVE保护。
[0272] 卷限定符匹配
[0273] PTM首先确定模板OS卷是否可以适于与当前可用的供应数据116一起被使用。该过程通过从引导盘的引导分区读取OS卷目录文件而开始。如果目录是缺失的,则操作被标记为卷限定符失配,然而其被允许继续。如果OS卷目录被正确地读取并且解析,则过程继续以看到其是否对于当前工厂操作有效。
[0274] 匹配过程通过存在于当前供应数据116中的所有限定符进行迭代。对于每个限定符而言,执行一组步骤:
[0275] 1)确定是否存在名称匹配。如果目录中的模板的名称匹配当前限定符(包括通配符)的名称,则匹配过程继续,否则当前限定符被丢弃。
[0276] 2)确定是否存在版本匹配。使用来自限定符的版本和版本规则,确定目录版本是否匹配限定符。如果存在匹配,则匹配过程继续,否则当前限定符被丢弃。
[0277] 3)检查目录签名密钥。确定当前限定符是否具有针对目录中的签名密钥的确切匹配。如果这些是相等的,则匹配过程继续,否则当前限定符被丢弃。
[0278] 4)由于当前限定符匹配目录,因而其被添加到可能的限定符的列表。
[0279] 匹配过程继续直到PDK中所供应的列表中的所有限定符被耗尽。在匹配的结尾处,如果不存在限定符,那么操作被标记为卷限定符失配。然而,PTM处理被允许继续。
[0280] 如果一个或多个限定符匹配卷目录,则使用供应有其的公共密钥检查目录上的签名。该操作证明发布者实际上具有正确私有签名密钥。
[0281] OS卷解锁
[0282] PTM然后确定OS卷是否要求解锁密钥。对OS卷进行FVE加密,然而针对仅签名的模板暂停FVE保护。由于每个这样的限定符包含零或一个外部FVE密钥,因而PTM使用来自匹配过程的匹配的卷限定符。PTM通过尝试解锁模板OS卷的密钥的列表进行迭代。
[0283] 如果在目标上暂停FVE,那么TPM内部地将卷标记为仅签名的。如果在模板OS卷上未暂停FVE并且没有密钥将解锁该卷,那么PTM发生故障并且将错误返回给安全VM工厂。这时候,如果操作已经先前被标记为卷限定符失配,那么其是仅签名卷,因为不存在可用的密钥。
[0284] 模板处理模式确定
[0285] PTM然后确定如何处理OS卷。为了开始这个,两个变量被设定为初始值:
[0286] 1)FVEK-REKEY-设定为真。
[0287] 2)HASH-设定为真。
[0288] PTM查看来自PDK的工厂数据并且确定FVEK Re-encrypt是否被指定在该数据中。如果值存在并且值被设定为假并且当前模板未被标记为仅签名的,那么FVEK-REKEY的值被设定为假。
[0289] 然后,PTM查看管理卷签名检查的工厂数据。如果工厂数据指定签名不需要被检查并且卷不是仅签名模板,那么HASH的值被设定为假。
[0290] 模板处理
[0291] PTM然后处理模板。如果FVEK-REKEY或者HASH是真,那么PTM建立全卷扫描。全卷扫描使用非常有限的扫描器确定卷中的使用空间。过程被初始化如下:
[0292] 1)如果HASH==真→初始化卷散列计算。
[0293] 2)如果FVEK-REKEY==真→生成新FVEK。
[0294] 使用该能力,PTM在执行以下处理的盘上的每个块上迭代:
[0295] 1)读取新块。
[0296] 2)如果HASH==真→使用新块延伸卷散列。
[0297] 3)如果FVEK-REKEY==真→
[0298] a)使用现有的FVEK解密块。
[0299] b)使用新FVEK加密块。
[0300] c)更新盘上的适当的位置的块。
[0301] 在处理的结尾处(如果任何被要求),PTM使用当前VM的TPM(虚拟TPM)生成用于FVE的新TPM保护器。在OS卷上更新被添加到FVE元数据和所有三个副本的新TPM的保护器。
[0302] 签名检查
[0303] 如果HASH变量被设定为真,那么计算的OS散列现在与OS卷目录中存在并且认证的散列相比较。如果散列不匹配,那么从PTM返回错误。一旦该最后的步骤已经完成,PTM就已经断定其工作和模板盘已经完全处理。
[0304] 专用化代理
[0305] 如果安全VM工厂确定PTM已经完成执行并且尚未信号通知任何错误,则其然后启动专用化代理(SA)。SA被传递PDK的专用化部分。在工厂执行中的该阶段处,目标OS盘利用唯一TPM密钥被加密和被保护。在不关心其可能被妥协的情况下,将敏感数据写到受保护VM的OS卷现在是安全的。
[0306] SA可以执行将原始模板盘内的OS专用化到唯一目标实例所要求的任何动作。一般而言,存在所执行的两种类型的操作的组合:
[0307] 1)离线——这些是SA可以对离线OS实例自身执行的操作。SA应当执行尽可能多的目标的离线专用化。
[0308] 2)在线准备——对于不能离线执行的任何操作而言,SA可以将数据写到OS卷以允许在目标OS引导时发生在线操作。
[0309] OS首次引导
[0310] 一旦安全FV工厂已经完成,处理正常OS引导就继续。硬件、固件和TPM的引导状态与现有的OS引导环境一致,并且特别地,TPM PCR 7和11处于允许FVE将OS卷解锁的状态(注意:作为这个的捷径,实施例可以根据PTM预创建钥匙链)。
[0311] 一些实施例使得用户能够使用具有客户操作系统的多个版本的现有硬件和主机上的FVE全卷加密。为了完成这一点,实施例可以以通过下方式给租户提供使能卷上的FVE加密的工具和指令:
[0312] ·数据卷:所有数据卷利用被存储在OS卷内的自动解锁密钥进行FVE加密(例如,在从华盛顿雷德蒙德的微软公司可获得的Windows操作系统的Windows注册表中)。如果其被安装在正确OS内,则这些卷自动地解锁。
[0313] ·OS卷:每个受保护VM具有被FVE加密的OS卷。当执行FVE加密时,外部恢复密钥通过FVE被保存到文件。该文件被上载到云服务提供商内的受保护位置。
[0314] 云服务提供商将针对客户的客户FVE密钥管理为受保护数据。当被要求时,结构控制器(FC)指示特定计算节点取回并且运行客户VM。计算节点上的结构代理(FA)请求来自FC的FVE OS卷密钥。FC将具有恢复密钥的文件返回到FA。
[0315] 在一些实施例中,能够托管受保护VM的每个计算节点具有小的——在一些实施例中,近似地3GB——卷(被称为SCRATCH)。在每次引导时,当FA开始时,FA执行以下步骤:
[0316] 1)格式SCRATCH:卷被格式化为空白卷(在一些实施例中,作为NTFS卷)。
[0317] 2)FVE SCRATCH:对SCRATCH卷进行FVE保护。密钥被保存在OS卷上的文件内。
[0318] 3)密钥删除:针对SCRATCH卷的密钥密码地删除(重写)以使其不可访问。
[0319] 一旦已经采取这些步骤,主机就具有被加密但是对当前引导周期的持续时间可访问的小卷。一旦机器被关闭,则可能绝不再访问卷的内容。
[0320] 当FA接收具有针对受保护VM的恢复密钥的文件时,则其创建SCRATCH卷内的新的VHD文件。这是最小大小的动态VHD。FA将具有恢复密钥的文件写到新卷中并且访问控制文件和目录以移除所有访问。随后地,FA将新VHD从根分区卸除。
[0321] FA将新的SCRATCH VHD附接到受保护VM并且开始VM。在VM的引导环境内,固件列举包括SCRATCH的盘、包含具有恢复密钥的文件的盘。引导环境中的OS卷解锁代码定位具有恢复密钥的正确文件并且解锁OS卷,这允许OS引导。一旦客户OS已经引导,SCRATCH卷就保持附接并且在客户重新引导的任何时间被使用。具有恢复密钥的文件的内容仅对可以改变对目录和文件的保护的管理用户是可访问的。
[0322] 一旦OS已经引导,则OS能够自动地解锁已经正确地FVE保护的任何数据卷。
[0323] 供应
[0324] 受保护VM的供应被期望以两种方式之一执行:
[0325] 1)适当位置转换-在该模型中,现有的VM通过使用FVE加密OS以及可能地其他盘卷在适当的位置被保护。
[0326] 2)上载-该模型允许用户创建内部的受保护VM并且将该VM上载到云服务。所得到的VM绝不存在于未受保护的状态中的云服务内。
[0327] 一旦已经创建受保护VM,就存在解锁FVE受保护OS卷所要求的单个密钥。在任一提供方法中,创建被备份到用于恢复的文件的外部FVE密钥。所得到的文件包含可以被用于允许对驱动的访问的密钥。文件是受保护数据并且使用租户秘密管理被保护。从提供视角,外部密钥被提供为在每个VM重新引导处发生的供应过程的一部分。
[0328] 操作
[0329] 受保护VM依赖于被信任结构。在被信任结构内,供应服务驻留在每个计算节点上的结构代理(FA)内。FA能够访问FVE外部密钥并且通过包括附接到VM的VHD的信道来将其提供给VM。
[0330] 以下讨论现在指代可以被执行的若干方法和方法动作。尽管方法动作可以以某个顺序讨论或在如以特定顺序发生的流程图中图示,但是除非因为动作依赖于在正被执行的动作之前完成的另一动作而特别地陈述或要求,否则不必要求特定排序。
[0331] 虽然已经在虚拟机环境中说明许多前述内容,但是应当理解,也可以在物理机环境中实现概念。因此,除非另外指定,否则在此权利要求可以被应用到物理机、虚拟机或其组合。
[0332] 现在参考图4,图示了方法400。该方法400可以实践在计算环境中。方法包括用于在潜在地不安全的环境中以安全方式引导机器的动作。方法400包括目标机器开始引导过程(动作402)。例如,图3图示了其中目标机器是客户虚拟机102的示例。客户虚拟机102可以开始引导过程。
[0333] 方法400还包括目标机器确定其需要供应数据以继续引导(动作404)。因此,例如,客户虚拟机102可以确定其需要供应数据116以完成引导。这样的供应数据可以包括例如各种特定的数据项,诸如用户名、密码、机器设置等。
[0334] 方法400还包括目标机器联系安全基础设施以获得供应数据(动作406)。例如,安全基础设施可以包括元件(诸如虚拟机102的VSM 266和/或KDS 114)。
[0335] 方法400还包括目标机器提供能够由安全基础设施验证的身份声明(动作408)。例如,虚拟机102可以将标识虚拟机102的身份声明提供给KDS 114。
[0336] 作为安全基础设施验证身份声明的结果,方法400还包括目标机器从安全基础设施接收请求以建立被密封到目标机器的密钥(动作410)。因此,在所图示的示例中,虚拟机102可以接收对于建立密钥的请求。
[0337] 方法400还包括目标机器将所建立的密钥提供给安全基础设施(动作412)。虚拟机102可以建立密钥112并且将该密钥提供给安全基础设施。
[0338] 方法400还包括目标机器从安全基础设施接收供应数据,其中供应数据被加密到所建立的密钥(动作414)。因此,例如,供应服务206可以使用由KDS 114所提供的密钥112对供应数据116加密。
[0339] 方法400还包括目标机器对经加密的供应数据进行解密,并且使用供应数据完成引导(动作416)。因此,VM 102可以使用密钥对供应数据116解密并且使用该数据完成引导VM 102。
[0340] 虽然以上示例图示了使用供应数据引导主机上的虚拟机,但是应当理解,在其他实施例中,可以对其他机器和/或环境使用供应数据。例如,供应数据可以被用于引导各种物理机和/或引导各种联网和/或集群环境中的机器。
[0341] 例如,可以实践方法400,其中使用供应数据完成引导包括使用供应数据连接到网络存储装置以执行网络引导。备选地或者附加地,可以实践方法400,其中使用供应数据完成引导包括使用供应数据加入机器集群。备选地或者附加地,可以实践方法400,其中使用供应数据完成引导包括使用供应数据创建主机上的虚拟机(VM),其中供应数据包括用于VM的数据。
[0342] 可以实践方法400,其中目标机器基于模板开始引导过程。在一些这样的实施例中,方法还可以包括使用供应数据验证模板可接受用于在引导目标机器中使用。备选地或者附加地,在这样的实施例中,方法还可以包括将模板重新加密到目标机器作为验证模板的一部分,以防止在模板的部分已经被验证之后篡改模板。在一些实施例中,将模板重新加密到目标机器可以包括执行TPM密封。
[0343] 在一些实施例中,方法400还可以包括在验证模板可接受用于在引导目标机器中使用之后,将保密数据(例如,密码、证书、密码、加密密钥等)注入目标机器中。
[0344] 方法400的一些实施例还可以包括接收待被注入目标机器中的非保密数据(例如,从VMM(诸如结构管理器254))。方法还可以包括确定非保密数据是被允许被注入到目标机器中的非保密数据的类别中的数据。方法还可以包括作为结果将非保密数据注入到目标机器中。
[0345] 此外,可以通过包括一个或多个处理器和计算机可读介质(诸如计算机存储器)的计算机系统实践方法。特别地,计算机存储器可以存储当由一个或多个处理器执行时使得各种功能被执行(诸如实施例中记载的动作)的计算机可执行指令。
[0346] 本发明的实施例可以包括或利用包括计算机硬件的专用计算机或通用计算机,如下面更详细讨论的。本发明的范围内的实施例还包括用于携带或存储计算机可执行指令和/或数据结构的物理和其他计算机可读介质。这样的计算机可读介质可以是可以由通用计算机系统或专用计算机系统访问的任何可用介质。存储计算机可执行指令的计算机可读介质是物理存储介质。携带计算机可执行指令的计算机可读介质是传输介质。因此,以示例而非限制的方式,本发明的实施例可以包括至少两个清楚地不同种类的计算机可读介质:物理计算机可读存储介质和传输计算机可读介质。
[0347] 物理计算机可读存储介质包括RAM、ROM、EEPROM、CD-ROM或其他光盘存储装置(诸如CD、DVD等)、磁盘存储装置或其他磁性存储设备、或者可以被用于存储以计算机可执行指令或数据结构的形式的期望的程序代码装置并且可以由通用计算机或专用计算机访问的任何其他介质。
[0348] “网络”被定义为使能计算系统和/或模块和/或其他电子设备之间的电子数据的传输的一个或多个数据链路。当信息通过网络或另一通信连接(硬连线、无线、或硬连线或无线的组合)被传送或提供给计算机时,计算机适当地将连接视为传输介质。传输介质可以包括网络和/或数据链路,其可以被用于携带以计算机可执行指令或数据结构的形式的期望的程序代码装置并且可以由通用计算机或专用计算机访问。以上组合还被包括在计算机可读介质的范围内。
[0349] 进一步地,在到达各种计算机系统部件时,以计算机可执行指令或数据结构的形式的程序代码装置可以从传输计算机可读介质自动地传送给物理计算机可读存储介质(或反之亦然)。例如,通过网络或数据链路所接收的计算机可执行指令或数据结构可以被缓冲在网络接口模块(例如,“NIC”)内的RAM中,并且然后最终地被传送到计算机系统RAM和/或计算机系统处的较少的易失性计算机可读物理存储介质。因此,计算机可读物理存储介质可以被包括在还(或甚至主要地)利用传输介质的计算机系统组件中。
[0350] 计算机可执行指令包括例如使得通用计算机、专用计算机或专用处理设备执行某个功能或功能组的指令和数据。计算机可执行指令可以是例如二值化、中间格式指令(诸如汇编语言)或甚至源代码。虽然已经以特定于结构特征和/或方法动作的语言描述了主题,但是应理解到,所附的权利要求中定义的主题不必限于上文所描述的特定特征或动作。相反,所描述的特征和动作被公开为实现权利要求的示例形式。
[0351] 本领域的技术人员将理解到,本发明可以被实践在具有许多类型的计算机系统配置的网络计算环境中,包括个人计算机、台式计算机、膝上型计算机、消息处理器、手持式设备、多处理器系统、基于微处理器或可编程的消费电子产品、网络PC、小型计算机、大型计算机、移动电话、PDA、平板电脑、寻呼机、路由器、交换机等。本发明还可以实践在其中通过网络链接(由硬连线数据链路、无线数据链路、或者由硬连线和无线数据链路的组合)链接的本地计算机系统和远程计算机系统二者执行任务的分布式系统环境中。在分布式系统环境中,程序模块可以定位在本地存储器存储设备和远程存储器存储设备二者中。
[0352] 备选地或者附加地,可以至少部分通过一个或多个硬件逻辑组件执行本文所描述的功能。例如,并且非限制性地,可以使用的说明性类型的硬件逻辑组件包括现场可编程门阵列(FPGA)、专用集成电路(ASIC)、专用标准产品(ASSP)、芯片上系统(SOC)、复杂可编程逻辑设备(CPLD)等。
[0353] 在不脱离其精神或特性的情况下,可以以其他特定形式实现本发明。所描述的实施例在所有方面中将被认为是说明性而非限制性的。因此,本发明的范围由所附的权利要求而不是由前述描述指示。在权利要求的等价的意义和范围内的所有改变将被包括在其范围内。
高效检索全球专利

专利汇是专利免费检索,专利查询,专利分析-国家发明专利查询检索分析平台,是提供专利分析,专利查询,专利检索等数据服务功能的知识产权数据服务商。

我们的产品包含105个国家的1.26亿组数据,免费查、免费专利分析。

申请试用

分析报告

专利汇分析报告产品可以对行业情报数据进行梳理分析,涉及维度包括行业专利基本状况分析、地域分析、技术分析、发明人分析、申请人分析、专利权人分析、失效分析、核心专利分析、法律分析、研发重点分析、企业专利处境分析、技术处境分析、专利寿命分析、企业定位分析、引证分析等超过60个分析角度,系统通过AI智能系统对图表进行解读,只需1分钟,一键生成行业专利分析报告。

申请试用

QQ群二维码
意见反馈