[0033] 在随后的描述中,参考由一个或多个计算系统执行的动作描述了各实施例。如果 这样的动作是以软件实现的,则执行动作的相关联计算系统的一个或多个处理器响应于已 经执行了计算机可执行指令来引导计算系统的操作。这样的操作的示例涉及对数据的操 纵。计算机可执行指令(以及被操纵的数据)可被存储在计算系统的存储器中。
[0034] 图1示出了计算系统100的示例。计算系统100表示包括可信执行环境的物理机。 本文描述的原理提供虚拟机的环境中的可信执行环境。然而,因为可信执行环境传统上被 用于物理机,所以图1被包括以描述可信执行环境的原理。
[0035] 计算系统100包括管理域110(即"管理级")和本地可信执行环境域120(即"本 地可信执行环境级")。管理域110包括处理器111和主存储器112。主存储器112经由处 理器111的使用可供计算系统100的管理员访问。主存储器112可以是物理系统存储器, 该物理系统存储器可以是易失性、非易失性、或两者的某种组合。术语"存储器"在此也可 用来指诸如物理存储介质等非易失性大容量存储。
[0036] 本地可信执行环境域120甚至无法直接由人类管理员访问。本地可信执行环境域 120包括可信平台模块(TPM) 121,可信平台模块(TPM) 121包括密码功能122和受保护区域 123。如果存在直接访问TPM内容的任何可能的方法,则该方法将会涉及实际上物理地将 TPM分片或以其它方式将TPM分解并且使用复杂设备来物理地检查内容。因而,本地可信 执行环境域120的内容是安全的。受保护区域123包括在TPM外部无法读取的至少一些内 容。然而,密码功能122能够使用受保护区域123的内容来操作。受保护区域包括不可改 变数据123A和可改变数据123B。这两种类型的数据都能够由密码功能122读取。然而,仅 可改变数据123B能够被密码功能122写入。
[0037] 不可改变数据的一个示例是背书密钥,其充当TPM的通行证,从而提供TPM身份的 制造商级安全性。此外,由于常规TPM物理地附连于计算系统,背书密钥还安全地标识了计 算系统100,并且因而可以充当计算系统100的信任基础。
[0038] 可改变数据的示例包括其它密钥、单调计数器、以及非易失性存储器。其它密钥可 以应处理器111的请求来构造。单调计数器在被处理器111请求时或者响应于某些事件 (诸如使系统上电)而递增。密钥可以是可迀移的或者不可迀移的。可迀移密钥可以在具 有正确授权的任何TPM中使用,而不可迀移密钥仅可在TPM 121中使用。
[0039] 计算系统100包括用于在处理器111与TPM 121中间进行通信的接口 130。常规 接口 130的一个示例是基于TPM的服务模块(TBS),基于TPM的服务模块(TBS)将来自处 理器111的TPM命令提供给TPM 121,并且如果合适,将密码处理的结果(当然不包括TPM 121的内容)返回给处理器111。
[0040] 计算系统100表示具有可信执行环境的物理机。另一方面,图2示出了运行多个虚 拟机的主机计算系统200 (此后简称为"主机"),该多个虚拟机中的一些具有它们自己的可 信执行环境。主机200被示为操作三个虚拟机210,包括虚拟机210A、210B以及210C。然 而,省略号210D表示本文描述的原理不受主机200上运行的虚拟机的数量的限制。
[0041] 虚拟机2IOA和2IOB中的一些具有它们自己的可信执行环境。例如,虚拟机2IOA 具有相关联的可信执行环境211A,且虚拟机210B具有相关联的可信执行环境211B。虚拟机 210C不具有可信执行环境,以示出本文所描述的原理不限于所有虚拟机各自具有它们自己 的可信执行环境的环境,只要至少一个虚拟机具有其自己的可信执行环境即可。
[0042] 可信执行环境211A和211B各自由管理程序220以可信执行环境不可由相应虚拟 机直接可读的方式以软件实现。或者,如前面参考图8到10所述,可信执行环境可由管理 程序220外部的云服务来实现。比较图1和2,虚拟机210A和可信执行环境211A的组合仿 真了图1的计算系统100,其中管理域110由虚拟机210A来仿真,并且其中可信执行环境域 120由受管理程序220管理的基于软件的可信执行环境211A来仿真。同样地,虚拟机210B 和可信执行环境211B的组合也仿真了图1的计算系统100,其中管理域110由虚拟机210B 来仿真,并且其中可信执行环境域120由受管理程序220管理的基于软件的可信执行环境 2 IlB来仿真。
[0043] 在操作期间,虚拟机210各自仿真完全可操作的计算系统,该计算系统包括至少 一个操作系统并且也许还包括一个或多个其他应用。每个虚拟机被分派特定的客户端,并 且负责支持该客户端的桌面环境。在一些情况下,诸如在虚拟机是虚拟服务器时,虚拟机可 被分派给一个或多个客户端。虚拟机生成桌面镜像或其他表示桌面的当前状态的呈现指 令,并接着将该镜像或指令传送到客户端以供桌面的呈现。
[0044] 在用户与客户端处的桌面进行交互时,用户输入从客户端被传送到虚拟机。虚拟 机处理用户输入,并且如果合适,则改变桌面状态。如果桌面状态中这样的改变将导致在所 呈现的桌面中的改变,则虚拟机更镜像或呈现指令(如果合适的话),并将经更改的图像或 呈现的指令传送到客户端计算系统以供合适的呈现。从用户的角度而言,就好像客户端计 算系统自身在执行桌面处理。
[0045] 除了管理可信执行环境211A和211B之外,管理程序220使用从虚拟机210的角 度来看被抽象的物理资源230来仿真虚拟机210的虚拟资源。管理程序220还提供虚拟机 210之间的适当的隔离。因此,从任何给定的虚拟机的角度来看,管理程序220提供该虚拟 机正与物理资源对接的错觉,即便该虚拟机仅仅与物理资源的表象(例如,虚拟资源)对 接,而不是直接与物理资源对接。因而,管理程序220在虚拟机210和物理资源230之间起 调解作用。在图2中,物理资源230被抽象地表示为包括资源230A到230F。物理资源230 的示例包括处理容量、存储器、盘空间、网络带宽、媒体驱动器等等。
[0046] 图3示出用于在具有可信执行环境的那些虚拟机的环境中克隆源虚拟机以形成 目标虚拟机的方法300的流程图;方法300可由例如图2的主机计算系统200来执行。例 如,假定主机200要克隆虚拟机210A。方法300可以在关于图4A到4C示出的情形(或状 态)序列的环境中执行,并且因而将频繁参考图4A到4C以及图2来描述图3。
[0047] 访问源虚拟机的源虚拟机状态(动作301)。例如,在图4A的情形400A中,访问源 虚拟机410的源虚拟机状态411。源虚拟机状态411包括至少具有背书分层结构414但还 可具有存储分层结构413的可信执行环境412。存储分层结构413可由虚拟机用来访问存 储(例如,所存储的数据和/或代码)。背书分层结构414具有签署部分415,这允许源虚 拟机或其经认证的用户签署声明。背书分层结构414基于源虚拟机410的身份。在一个实 施例中,背书分层结构414的签署部分415只在源虚拟机410的可信执行环境412中存在 背书分层结构的情况下被启用。在其中图2的虚拟机210A要被克隆的示例中,虚拟机410 是虚拟机210A的示例,且可信执行环境412是可信执行环境21IA的示例。
[0048] 接着,源虚拟机状态被复制以制定目标虚拟机状态(动作302)。例如,参考图4B 的情形400B,源虚拟机状态411被复制(如箭头401所表示的),以制定目标虚拟机状态 421。目标虚拟机状态421包括目标可信执行环境422,这可以是源可信执行环境412的副 本。目标可信执行环境422包括存储分层结构423和背书分层结构424,存储分层结构423 可以是源可信执行环境412中的存储分层结构413的副本,背书分层结构424可以是源可 信执行环境412中的背书分层结构414的副本。
[0049] 然而,目标背书分层结构中的签署部分425作为所述复制的结果而被禁用(如表 示签署部分的框425的左下角中的"x"所表示的)。这是因为目标背书分层结构425是源 背书分层结构415的副本,源背书分层结构415基于源虚拟机410的身份而非基于目标虚 拟机420。
[0050] 方法300随后包括修改目标虚拟机状态,使得目标虚拟机状态的背书分层结构基 于目标虚拟机的身份而非源虚拟机(动作303)。例如,状态4C的情形400C中,注意,签署 部分425已被更改为部分425'。然而,该框左下角中的"X"已被移除以反映背书分层结构 424现在基于目标虚拟机420的身份而非源虚拟机410。因此,签署部分425'现在被启用 以代表目标虚拟机420和/或其经认证的用户来签署。注意,因为签署部分425'被改变, 所以包含签署部分425'的那些部分也被示为已改变。例如,背书分层结构424变成背书分 层结构424',目标可信执行环境422变成目标可信执行环境422',且目标虚拟机状态421 变成目标虚拟机状态421'。
[0051] 这一克隆操作可被用来回滚虚拟机410的状态,或复制虚拟机410,使得副本410 和420两者初始地基于相同的虚拟机状态(尽管这些状态将可能由于在每一虚拟机410和 420上执行