提供可信平台模块的安全虚拟化的方法和装置转让专利

申请号 : CN200580020738.3

文献号 : CN1997955B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : V·斯卡拉塔C·罗扎斯

申请人 : 英特尔公司

摘要 :

一种方法和相关装置提供一虚拟可信平台模块(TPM)。在一个示例实施例中,虚拟TPM服务创建一在含有物理TPM的处理系统内使用的虚拟TPM。该虚拟TPM服务可以存储用于物理TPM内的虚拟TPM的密钥。该虚拟TPM服务随后可以使用虚拟TPM以提供仿真的物理TPM特征。在一个实施例中,该虚拟TPM服务可以在处理系统中使用虚拟TPM来仿真用于虚拟机的物理TPM。对其他实施例也进行了描述和声明。

权利要求 :

1.一种用于创建可信的虚拟可信平台模块的方法,包括:

创建在包含物理可信平台模块的处理系统中的虚拟机所使用的虚拟可信平台模块;

生成用于所述虚拟可信平台模块的虚拟保证密钥,其中所述虚拟保证密钥至少部分基于所述物理可信平台模块的保证密钥,并且所述虚拟保证密钥被绑定到用于所述虚拟机的环境;

生成用于所述虚拟可信平台模块的虚拟存储根密钥;

在所述物理可信平台模块内存储所述虚拟保证密钥和所述虚拟存储根密钥中的至少一个;

使用用于证实密钥的凭证以及由所述证实密钥签署的用于虚拟保证密钥的认证信息从虚拟化认证授权机构获取用于所述虚拟保证密钥的经签署的保证凭证;

生成用于所述虚拟可信平台模块的虚拟证明书身份密钥;

使用所述虚拟证明书身份密钥以及用于所述虚拟保证密钥的经签署的保证凭证从保密认证授权机构获取用于所述虚拟证明书身份密钥的身份凭证;

在所述虚拟可信平台模块的存储器空间中创建用于所述虚拟可信平台模块的虚拟平台配置寄存器;

使用所述虚拟可信平台模块来提供用于所述虚拟机的仿真的物理可信平台模块特征;

其中使用所述虚拟可信平台模块来提供用于所述虚拟机的仿真的物理可信平台模块特征的操作包括使用所述虚拟可信平台模块来仿真用于虚拟机的物理可信平台模块;以及其中使用所述虚拟可信平台模块来提供用于所述虚拟机的仿真的物理可信平台模块特征的操作包括:使用来自所述虚拟可信平台模块的存储器空间的所述虚拟平台配置寄存器来仿真标准的平台配置寄存器操作。

2.如权利要求1所述的方法,其特征在于,所述虚拟可信平台模块包括第一虚拟可信平台模块,而所述虚拟机包括第一虚拟机,所述方法还包括:在所述处理系统中创建第二虚拟可信平台模块,所述虚拟机还包括第二虚拟机;

在所述物理可信平台模块内存储用于所述第二虚拟可信平台模块的密钥;

使用所述第二虚拟可信平台模块仿真用于所述第二虚拟机的物理可信平台模块。

3.如权利要求1所述的方法,其特征在于,使用所述虚拟可信平台模块以提供仿真的物理可信平台模块特征的操作包括:从保密认证授权机构中获取用于与虚拟机相关联的虚拟证明书身份密钥的身份凭证;

以及

将所述身份凭证发送给质询器。

4.如权利要求1所述的方法,其特征在于:

所述虚拟化认证授权机构提供用于所述虚拟保证密钥的保证凭证,并能够区分经批准的虚拟可信平台模块环境与未经批准的虚拟可信平台模块环境;以及当所述虚拟保证密钥被绑定到经批准的虚拟可信平台模块环境时,所述保密认证授权机构信赖所述虚拟化认证授权机构,所述虚拟化认证授权机构提供用于虚拟保证密钥的保证凭证。

5.一种用于提供可信平台模块的安全虚拟化的方法,包括:创建在包含物理可信平台模块的处理系统中的虚拟机所使用的虚拟可信平台模块;

由虚拟机生成用于处理系统中的虚拟机的虚拟保证密钥,所述虚拟保证密钥至少部分基于所述处理系统内用于物理可信平台模块的保证密钥;

在所述物理可信平台模块中存储所述虚拟保证密钥;

使用用于证实密钥的凭证以及由所述证实密钥签署的用于虚拟保证密钥的认证信息从虚拟化认证授权机构获取用于所述虚拟保证密钥的经签署的保证凭证;

由虚拟机生成用于所述虚拟机的虚拟证明书身份密钥;以及

使用所述虚拟证明书身份密钥以及用于所述虚拟保证密钥的经签署的保证凭证从保密认证授权机构来获取用于所述虚拟证明书身份密钥的身份凭证。

6.一种用于提供可信平台模块的安全虚拟化的装置,包括:用于创建在包含物理可信平台模块的处理系统中的虚拟机所使用的虚拟可信平台模块的装置;

用于生成用于所述虚拟可信平台模块的虚拟保证密钥的装置,其中所述虚拟保证密钥至少部分基于所述物理可信平台模块的保证密钥,并且所述虚拟保证密钥被绑定到用于所述虚拟机的环境;

用于生成用于所述虚拟可信平台模块的虚拟存储根密钥的装置;

用于在所述物理可信平台模块内存储所述虚拟保证密钥和所述虚拟存储根密钥中的至少一个的装置;

用于使用用于证实密钥的凭证以及由所述证实密钥签署的用于虚拟保证密钥的认证信息从虚拟化认证授权机构获取用于所述虚拟保证密钥的经签署的保证凭证的装置;

用于生成用于所述虚拟可信平台模块的虚拟证明书身份密钥的装置;

用于使用所述虚拟证明书身份密钥以及用于所述虚拟保证密钥的经签署的保证凭证从保密认证授权机构获取用于所述虚拟证明书身份密钥的身份凭证的装置;

用于在所述虚拟可信平台模块的存储器空间中创建用于所述虚拟可信平台模块的虚拟平台配置寄存器的装置;

用于使用所述虚拟可信平台模块来提供用于所述虚拟机的仿真的物理可信平台模块特征的装置;

其中用于使用所述虚拟可信平台模块来提供用于所述虚拟机的仿真的物理可信平台模块特征的装置使用所述虚拟可信平台模块来仿真用于虚拟机的物理可信平台模块;以及其中用于使用所述虚拟可信平台模块来提供用于所述虚拟机的仿真的物理可信平台模块特征的装置使用来自所述虚拟可信平台模块的存储器空间的所述虚拟平台配置寄存器来仿真标准的平台配置寄存器操作。

7.如权利要求6所述的装置,其特征在于,所述虚拟可信平台模块包括第一虚拟可信平台模块,而所述虚拟机包括第一虚拟机,并且所述装置还包括:用于在所述处理系统中创建第二虚拟可信平台模块的装置,所述虚拟机还包括第二虚拟机;

用于在所述物理可信平台模块内存储用于所述第二虚拟可信平台模块的密钥的装置;

用于使用所述第二虚拟可信平台模块仿真用于所述第二虚拟机的物理可信平台模块的装置。

8.一种用于提供可信平台模块的安全虚拟化的处理系统,包括:处理器,执行虚拟机,并执行虚拟可信平台模块服务以生成用于所述虚拟机的虚拟证明书身份密钥;

物理可信平台模块,与所述处理器通信耦合,用于存储保证密钥;

其中所述虚拟可信平台模块服务使用所述物理可信平台模块来创建用于所述虚拟机的虚拟可信平台模块,所述虚拟可信平台模块用于基于存储在所述物理可信平台模块内的所述保证密钥来生成与所述虚拟机相关联的虚拟保证密钥;以及其中所述处理器与一虚拟化认证授权机构通信,所述虚拟化认证授权机构使用用于证实密钥的凭证以及由所述证实密钥签署的用于虚拟保证密钥的认证信息来生成用于所述虚拟保证密钥的经签署的保证凭证;

其中所述处理器与一保密认证授权机构通信,所述保密认证授权机构使用所述虚拟证明书身份密钥以及用于所述虚拟保证密钥的经签署的保证凭证来生成用于所述虚拟证明书身份密钥的身份凭证。

9.一种用于提供可信平台模块的安全虚拟化的处理系统,包括:用于创建在包含物理可信平台模块的处理系统中的虚拟机所使用的虚拟可信平台模块的装置;

用于由虚拟机生成用于处理系统中的虚拟机的虚拟保证密钥的装置,其中所述虚拟保证密钥至少部分基于所述处理系统内用于物理可信平台模块的保证密钥;

用于在所述物理可信平台模块内存储所述虚拟保证密钥的装置;

用于使用用于证实密钥的凭证以及由所述证实密钥签署的用于虚拟保证密钥的认证信息从虚拟化认证授权机构获取用于所述虚拟保证密钥的经签署的保证凭证的装置;

用于由虚拟机生成用于所述虚拟机的虚拟证明书身份密钥的装置;

用于使用所述虚拟证明书身份密钥以及用于所述虚拟保证密钥的经签署的保证凭证从保密认证授权机构获取用于所述虚拟证明书身份密钥的身份凭证的装置。

10.一种用于提供可信平台模块的安全虚拟化的装置,包括:物理可信平台模块,用于存储保证密钥;以及

其中一虚拟可信平台模块服务使用所述物理可信平台模块来创建用于一虚拟机的虚拟可信平台模块,所述虚拟可信平台模块,用于为虚拟机生成虚拟保证密钥,所述虚拟保证密钥至少部分基于所述保证密钥,并且使用用于证实密钥的凭证以及由所述证实密钥签署的用于虚拟保证密钥的认证信息从虚拟化认证授权机构获取用于所述虚拟保证密钥的经签署的保证凭证,生成用于所述虚拟机的虚拟证明书身份密钥,并且使用所述虚拟证明书身份密钥以及用于所述虚拟保证密钥的经签署的保证凭证从保密认证授权机构获取用于所述虚拟证明书身份密钥的身份凭证。

11.如权利要求10所述的装置,其特征在于,所述虚拟保证密钥被存储在所述物理可信平台模块中。

说明书 :

提供可信平台模块的安全虚拟化的方法和装置

技术领域

[0001] 本公开一般涉及数据处理领域,尤其涉及用于提供可信平台模块的安全虚拟化的方法和装置。

背景技术

[0002] 传统的处理系统可以包括硬件资源,诸如中央处理单元(CPU)和随机存取存储器(RAM),以及软件资源,诸如操作系统(OS)和一个或多个最终用户程序或应用程序。应用程序通常被开发成只能在某一特定的OS上运行。当启动一典型的传统计算系统时,该系统在装载最终用户程序或应用程序之前载入OS。OS在一处理系统中通常用作软件应用程序和硬件之间的中介。
[0003] 除了RAM和一个或多个CPU之外,处理系统还可以包括可信平台模块(TPM)。TPM是位于处理系统内的硬件组件,并提供了用于增强处理系统的安全性的各种机制和服务。例如,TPM可用于保护数据并证明一平台的配置。TPM的子组件可以包括执行引擎和安全非易失性(NV)存储器或存储。安全NV存储器可用于存储诸如密钥之类的敏感信息,而执行引擎则根据将由TPM实现的安全策略来保护这些敏感信息。
[0004] TPM可以依照含有诸如设计原则、TPM结构和TPM命令等部分的规范,诸如于2003年10月2日发布的Trusted Computing Group(可信计算小组,TCG)TPMSpecification(TPM规范)1.2版(下称“TPM规范”)来实现。该TPM规范由TCG公布并可从网址www.trustedcomputinqqroup.org/home处获取。
[0005] 一般而言,遵从TCG的TPM基于平台特性提供诸如证明身份和/或平台完整性等安全服务。TPM通常考虑的平台特性包括平台的硬件组件,诸如处理器和芯片组,以及位于平台内的软件,诸如固件和OS。TPM还可以支持软件进程的审查和日志记录,平台引导完整性、文件完整性的验证,以及软件许可。因此就可认为TPM提供针对平台的信任根。因此,第三方可以实现需要请求系统提供基于TPM的平台证明书的安全策略。例如,第三方可以将服务器配置成拒绝客户机的请求,除非这些请求附有来自客户机系统的基于TPM的有效平台证明书。
[0006] 但是,当传统处理系统使用TPM时,该处理系统一次仅能支持一个软件环境。
[0007] 最近,Intel公司开始研发用于在单个处理系统内提供多个独立的软件环境的技术。例如,由Intel公司研发的技术包含以允许多个OS在同一机器上并发执行的方式划分并管理处理系统的硬件资源的特征,其中每个OS实质上都能像在自己的独立物理机器上那样运行。在这一处理系统中,每个OS都在实质上独立的软件环境中运行。这些独立的环境被称为分区或虚拟机(VM)。

发明内容

[0008] 本发明的一个方面提供了一种用于创建可信的虚拟可信平台模块的方法,包括:创建在包含物理可信平台模块的处理系统中的虚拟机所使用的虚拟可信平台模块;生成用于所述虚拟可信平台模块的虚拟保证密钥,其中所述虚拟保证密钥至少部分基于所述物理可信平台模块的保证密钥,并且所述虚拟保证密钥被绑定到用于所述虚拟机的环境;生成用于所述虚拟可信平台模块的虚拟存储根密钥;在所述物理可信平台模块内存储所述虚拟保证密钥和所述虚拟存储根密钥中的至少一个;使用用于证实密钥的凭证以及由所述证实密钥签署的用于虚拟保证密钥的认证信息从虚拟化认证授权机构获取用于所述虚拟保证密钥的经签署的保证凭证;生成用于所述虚拟可信平台模块的虚拟证明书身份密钥;使用所述虚拟证明书身份密钥以及用于所述虚拟保证密钥的经签署的保证凭证从保密认证授权机构获取用于所述虚拟证明书身份密钥的身份凭证;在所述虚拟可信平台模块的存储器空间中创建用于所述虚拟可信平台模块的虚拟平台配置寄存器;使用所述虚拟可信平台模块来提供用于所述虚拟机的仿真的物理可信平台模块特征;其中使用所述虚拟可信平台模块来提供用于所述虚拟机的仿真的物理可信平台模块特征的操作包括使用所述虚拟可信平台模块来仿真用于虚拟机的物理可信平台模块;以及其中使用所述虚拟可信平台模块来提供用于所述虚拟机的仿真的物理可信平台模块特征的操作包括:使用来自所述虚拟可信平台模块的存储器空间的所述虚拟平台配置寄存器来仿真标准的平台配置寄存器操作。
[0009] 本发明的另一个方面提供了一种用于提供可信平台模块的安全虚拟化的方法,包括:创建在包含物理可信平台模块的处理系统中的虚拟机所使用的虚拟可信平台模块;由虚拟机生成用于处理系统中的虚拟机的虚拟保证密钥,所述虚拟保证密钥至少部分基于所述处理系统内用于物理可信平台模块的保证密钥;在所述物理可信平台模块中存储所述虚拟保证密钥;使用用于证实密钥的凭证以及由所述证实密钥签署的用于虚拟保证密钥的认证信息从虚拟化认证授权机构获取用于所述虚拟保证密钥的经签署的保证凭证;由虚拟机生成用于所述虚拟机的虚拟证明书身份密钥;以及使用所述虚拟证明书身份密钥以及用于所述虚拟保证密钥的经签署的保证凭证从保密认证授权机构来获取用于所述虚拟证明书身份密钥的身份凭证。
[0010] 本发明的另一个方面提供了一种用于提供可信平台模块的安全虚拟化的装置,包括:用于创建在包含物理可信平台模块的处理系统中的虚拟机所使用的虚拟可信平台模块的装置;用于生成用于所述虚拟可信平台模块的虚拟保证密钥的装置,其中所述虚拟保证密钥至少部分基于所述物理可信平台模块的保证密钥,并且所述虚拟保证密钥被绑定到用于所述虚拟机的环境;用于生成用于所述虚拟可信平台模块的虚拟存储根密钥的装置;用于在所述物理可信平台模块内存储所述虚拟保证密钥和所述虚拟存储根密钥中的至少一个的装置;用于使用用于证实密钥的凭证以及由所述证实密钥签署的用于虚拟保证密钥的认证信息从虚拟化认证授权机构获取用于所述虚拟保证密钥的经签署的保证凭证的装置;用于生成用于所述虚拟可信平台模块的虚拟证明书身份密钥的装置;用于使用所述虚拟证明书身份密钥以及用于所述虚拟保证密钥的经签署的保证凭证从保密认证授权机构获取用于所述虚拟证明书身份密钥的身份凭证的装置;用于在所述虚拟可信平台模块的存储器空间中创建用于所述虚拟可信平台模块的虚拟平台配置寄存器的装置;用于使用所述虚拟可信平台模块来提供用于所述虚拟机的仿真的物理可信平台模块特征的装置;其中用于使用所述虚拟可信平台模块来提供用于所述虚拟机的仿真的物理可信平台模块特征的装置使用所述虚拟可信平台模块来仿真用于虚拟机的物理可信平台模块;以及其中用于使用所述虚拟可信平台模块来提供用于所述虚拟机的仿真的物理可信平台模块特征的装置使用来自所述虚拟可信平台模块的存储器空间的所述虚拟平台配置寄存器来仿真标准的平台配置寄存器操作。
[0011] 本发明的还有一个方面提供了一种用于提供可信平台模块的安全虚拟化的处理系统,包括:处理器,执行虚拟机,并执行虚拟可信平台模块服务以生成用于所述虚拟机的虚拟证明书身份密钥;物理可信平台模块,与所述处理器通信耦合,用于存储保证密钥;其中所述虚拟可信平台模块服务使用所述物理可信平台模块来创建用于所述虚拟机的虚拟可信平台模块,所述虚拟可信平台模块用于基于存储在所述物理可信平台模块内的所述保证密钥来生成与所述虚拟机相关联的虚拟保证密钥;以及其中所述处理器与一虚拟化认证授权机构通信,所述虚拟化认证授权机构使用用于证实密钥的凭证以及由所述证实密钥签署的用于虚拟保证密钥的认证信息来生成用于所述虚拟保证密钥的经签署的保证凭证;其中所述处理器与一保密认证授权机构通信,所述保密认证授权机构使用所述虚拟证明书身份密钥以及用于所述虚拟保证密钥的经签署的保证凭证来生成用于所述虚拟证明书身份密钥的身份凭证。
[0012] 本发明的还有一个方面提供了一种用于提供可信平台模块的安全虚拟化的处理系统,包括:用于创建在包含物理可信平台模块的处理系统中的虚拟机所使用的虚拟可信平台模块的装置;用于由虚拟机生成用于处理系统中的虚拟机的虚拟保证密钥的装置,其中所述虚拟保证密钥至少部分基于所述处理系统内用于物理可信平台模块的保证密钥;用于在所述物理可信平台模块内存储所述虚拟保证密钥的装置;用于使用用于证实密钥的凭证以及由所述证实密钥签署的用于虚拟保证密钥的认证信息从虚拟化认证授权机构获取用于所述虚拟保证密钥的经签署的保证凭证的装置;用于由虚拟机生成用于所述虚拟机的虚拟证明书身份密钥的装置;用于使用所述虚拟证明书身份密钥以及用于所述虚拟保证密钥的经签署的保证凭证从保密认证授权机构获取用于所述虚拟证明书身份密钥的身份凭证的装置。
[0013] 本发明的还有一个方面提供了一种用于提供可信平台模块的安全虚拟化的装置,包括:物理可信平台模块,用于存储保证密钥;其中一虚拟可信平台模块服务使用所述物理可信平台模块来创建用于一虚拟机的虚拟可信平台模块,所述虚拟可信平台模块用于为虚拟机生成虚拟保证密钥,所述虚拟保证密钥至少部分基于所述保证密钥,并且使用用于证实密钥的凭证以及由所述证实密钥签署的用于虚拟保证密钥的认证信息从虚拟化认证授权机构获取用于所述虚拟保证密钥的经签署的保证凭证,生成用于所述虚拟机的虚拟证明书身份密钥,并且使用所述虚拟证明书身份密钥以及用于所述虚拟保证密钥的经签署的保证凭证从保密认证授权机构获取用于所述虚拟证明书身份密钥的身份凭证。

附图说明

[0014] 本发明的特征和优点从所附权利要求书、以下对一个或多个示例实施例的详细描述以及相应的附图中将变得显而易见,附图中:
[0015] 图1是描绘了在其中可以实现本发明一个示例实施例的某些方面的合适数据处理环境的框图;
[0016] 图2是描绘了根据本发明一个示例实施例的合适虚拟机体系结构的框图;
[0017] 图3是示出根据本发明一个示例实施例的用于提供虚拟TPM的过程的流程图;以及
[0018] 图4是示出根据本发明一个示例实施例的用于利用虚拟TPM的过程的流程图。

具体实施方式

[0019] 虚拟TPM(vTPM)是提供类似TPM功能的逻辑设备。本公开描述了用于提供虚拟TPM的系统、方法和装置的一个或多个示例实施例。
[0020] 图1是描绘了在其中可以实现本发明一个示例实施例的某些方面的合适数据处理环境12的框图。数据处理环境12包括处理系统20,处理系统20包括经由一个或多个系统总线24或其他通信路径或介质与各种其他组件通信耦合的一个或多个处理器和中央处理单元(CPU)22。
[0021] 在此使用的术语“处理系统”和“数据处理系统”旨在广泛地包含单个机器,或者共同操作的通信上耦合的机器或设备的系统。示例性处理系统包括但不限于:分布式计算系统、超级计算机、高性能计算系统、计算机集群、大型计算机、小型计算机、客户机—服务器系统、个人计算机、工作站、服务器、便携式计算机、膝上型计算机、图形输入板、电话机、个人数字助理(PDA)、手持式设备、诸如音频和/或视频设备等娱乐设备、以及用于处理或传输信息的其他设备。
[0022] 处理系统20可至少部分地通过来自诸如键盘、鼠标等的常规输入设备的输入,和/或通过接收自另一台机器的指示、与虚拟现实(VR)环境的交互、生物测定反馈、或其他输入源或信号来控制。处理系统20可以利用诸如通过网络控制器、调制解调器或其他的通信耦合与一个或多个远程数据处理系统,例如保密认证授权机构(CA)76、虚拟化认证授权机构(CA)78的一个或多个连接。处理系统可以通过诸如局域网(LAN)、广域网(WAN)、内联网、因特网之类的物理和/或逻辑网络80的方式互连。涉及网络80的通信可以利用各种有线和/或无线近程或远程载体和协议,包括射频(RF)、卫星、微波、电气和电子工程师协会(IEEE)802.11、蓝牙、光学、红外线、电缆、激光等等。
[0023] 在处理系统20中,CPU 22可以通信耦合至一个或多个易失性或非易失性数据存储设备,诸如随机存取存储器(RAM)26、只读存储器(ROM)、诸如集成驱动器电子电路(IDE)硬盘驱动器等大容量存储设备、和/或诸如软盘、光学存储、磁带、闪存、记忆棒、数字视频盘、生物学存储等的其他设备或介质。为了本发明的目的,术语“ROM”通常用于指代诸如可擦除可编程ROM(EPROM)、电可擦除可编程ROM(EEPROM)、闪速ROM、闪存等的非易失性存储器设备。CPU22还可以通信耦合至其它组件,诸如视频控制器、小型计算机系统接口(SCSI)控制器、网络控制器、通用串行总线(USB)控制器、诸如键盘和鼠标等输入设备等等。处理系统20还可以包括用于与各种系统组件通信耦合的一个或多个桥接器或集线器27,诸如存储器控制器集线器、输入/输出(I/O)控制器集线器、PCI根桥接器等等。
[0024] 诸如网络控制器等某些组件可以被实现为用来与PCI总线通信的带接口适配器卡,诸如PCI连接器。在一个实施例中,一个或多个设备可以被实现为使用诸如可编程或不可编程逻辑器件或阵列、专用集成电路(ASIC)、嵌入式计算机、智能卡等等的嵌入式控制器。
[0025] 如图所示,处理系统20还包括通信耦合至CPU 22的TPM 30。TPM 30也可被称为物理TPM或硬件TPM(hwTPM)30。在一个实施例中,TPM 30被实现为位于处理系统20的系统主板或底板上的嵌入式设备。TPM 30包括若干存储机制,包括易失性平台配置寄存器(PCR)32和授权会话,以及持久数据完整性寄存器(DIR)36、授权摘要以及通用持久存储。这些机制的每一种都可具有相应的存储器内数据结构。
[0026] 本发明可以参考或结合包括指令、函数、过程、数据结构、应用程序等在内的相关联数据来描述,当这些数据被机器访问时,会使该机器执行任务或定义抽象数据类型或低级硬件上下文。该数据可以被存储在易失性和/或非易失性数据存储中。
[0027] 例如,RAM 26可以包括用于提供TPM的安全虚拟化的一个或多个指令集。在该示例实施例中,这些指令可以实现部分或全部位于虚拟机监控程序(VMM)106(参见图2)内的虚拟TPM服务104。处理系统20可以在引导时将VMM 106载入RAM 26中以支持处理系统20内的一个或多个虚拟机。处理系统20例如可以从ROM和/或从一个或多个本地或远程大容量存储设备中载入实现VMM 106的指令。如果有任何附加的指令用于支持TPM的安全虚拟化,那么这些指令也从例如ROM和/或从一个或多个本地或远程大容量存储设备中载入。
[0028] 图2是描绘了涉及处理系统20内的VMM 106的一个示例虚拟机体系结构的框图。在最底层的是TPM 30以及其他硬件组件,诸如处理器24、集线器27等(共同被标识为处理器和芯片组23)。在操作中,处理系统20还包括通过诸如微内核100和服务OS 102之类的软件或固件组件的执行而实现的VMM 106。微内核100可以包括用于诸如指令调度等系统管理任务的小型指令核心程序。服务OS 102可以包括用于创建和维护虚拟机的设备驱动程序和环境虚拟化软件。
[0029] 在该示例实施例中,VMM 106还包括用于创建和维护vTPM的虚拟TPM服务104。虚拟TPM服务104还可以为虚拟机提供对各自的vTPM的访问。虽然诸如虚拟TPM服务104之类的软件模块在该典型实施例中位于VMM 106之内,但是这些模块在替换实施例中可以位于固件或任何其他受保护的环境内。
[0030] 可以为各种各样的VMM体系结构提供虚拟TPM服务。在某些实施例中,无需将虚拟TPM服务嵌入到VMM中。此外,在某些实施例中,虚拟TPM服务可以根本无需是VMM的一部分。
[0031] 在该示例实施例中,虚拟TPM服务104位于受保护的主机存储器内。例如,处理系统20可以使用诸如在美国专利第6,507,904号、第6,633,963号以及第6,678,825号中描述的技术将虚拟TPM服务104从受硬件保护的存储器的孤立区中载入并执行TPM服务104。在该示例实施例中,受保护的存储器可以确保软件/指令在不受干扰或观察的情况下运行。在替换实施例中,可以使用其他技术来提供受保护的存储器。例如,一种环境可以包括提供受保护的存储器的系统管理模式(SMM),或者可以使用防篡改软件编译器来创建受保护的执行环境。其他组件(例如,VMM 106、微内核100、虚拟TPM 120A和120B等等)也可以位于受保护的存储器内。
[0032] 在该示例实施例中,VMM 106支持多个虚拟机110A和110B,它们都运行它们自己的独立客OS以及它们自己的独立可信软件栈或TCG软件栈(TSS)108A、108B上。在该示例实施例中,TSS 108A和108B符合TCG标准。
[0033] 如下将更详细地描述的,虚拟TPM服务104可以使用TPM 30来提供分别用于虚拟机110A和110B的不同的虚拟TPM 120A和120B。
[0034] 图2中的粗箭头表示虚拟化事件(VE)。例如,左上箭头表示涉及从VM 110A至服务OS 102的控制转移的VE。右上箭头表示当VM 110A试图访问TPM时所触发的VE。如图所示,虚拟TPM服务104截取该VE,以便如最下箭头所示地通过参考vTPM 120A来处理该事件。在该示例实施例中,虽然VM 110A除了vTPM120A之外不知道任何TPM,但是虚拟TPM服务104可以使用hwTPM 30来支持vTPM 120A。
[0035] 在该示例实施例中,每个vTPM都有其自己的TPM结构,包括保证密钥(EK)、存储根密钥(SRK)、保证凭证(EK凭证)、用户密钥层级、平台配置寄存器(PCR)、单调计数器、内部持久存储、数据完整性寄存器(DIR)等等。再次参见图1,如右下角的图例所示,存储密钥被示为空心椭圆,证明书身份密钥(AIK)被示为内部填充水平线的椭圆、签署密钥被示为内部填充点图案的椭圆。此外,粗线椭圆表示被绑定到TPM 30的PCR 32的密钥。各密钥之间的线指示各密钥之间的父/子关系。例如,这些线指示SRK 50是TPM 30内某些硬件密钥以及每个vTPM内某些虚拟密钥的父密钥。各凭证由平行四边形表示。
[0036] vTPM内的虚拟密钥以及其他结构或对象可以具有与硬件TPM密钥或对象相同的结构,但是虚拟TPM内的虚拟对象并不仅仅参考TPM 30内诸如EK 52、SRK50和PCR 32等标准对象。而是将如以下详述的那样,每个虚拟TPM获取其自己的不同对象,诸如虚拟EK(vEK)64、虚拟SRK(vSRK)66、虚拟PCR(vPCR)92、以及虚拟DIR(vDIR)94。这些虚拟对象是以硬件TPM的对象为基础或从中导出的。例如,在该示例实施例中,虚拟SRK和虚拟EK是硬件SRK的子密钥,或者在嵌套vTPM的情况下,虚拟SRK最终以硬件SRK为基础。通过允许vTPM密钥作为vSRK中的根,该模型就允许vTPM嵌套。
[0037] 诸如vEK 64、vSRK 66、和vPCR 92等虚拟TPM对象进而可以用作vTPM 120A内诸如虚拟签署密钥(vSig)68、虚拟AIK(vAIK)70、以及虚拟存储/加密密钥(vEnc)72等附加虚拟对象的基础。在该示例实施例中,每个vTPM都用相同的应用程序接口(API)提供由硬件TPM(hwTPM)提供的全部功能。例如,vTPM 120A可以包括其自己的vDIR 94、vPCR 92、vAIK 70等等。因此,每个VM内的客OS都可能完全不知道相应的vTPM不是hwTPM。于是,VM可使用传统的OS码。此外,根据该示例实施例,带常规hwTPM的处理系统可被配置成提供vTPM而无需对hwTPM的任何修改。
[0038] 诸如vPCR 92等虚拟PCR没有hwTPM的资源约束,而是可能具有数目可配置的PCR供其使用。在该示例实施例中,vPCR 92被存储在vTPM 120A的存储器空间内,而vTPM 120A则在vPCR 92上仿真标准PCR操作。
[0039] 在该示例实施例中,vTPM 120A使用软件来提供模拟的、持久的单调计数器。计数器的数目基本不受限制。在该示例实施例中,vTPM 120A至少提供hwTPM期望的四个计数器。这些vTPM计数器不要求与硬件TPM计数器的任何直接链接。
[0040] 虚拟机体系结构可以充分利用硬件TPM来保护虚拟密钥和相关数据。在一个实施例中,vTPM密钥层级和相关数据可以在标准hwTPM内受到保护。例如,虚拟TPM可以被存储在硬件TPM中并且从不从中释放,除非该数据如下所述首先由vTPM 120A加密。因此,如果虚拟TPM被泄密,则相关联的vTPM密钥的公共部分则很可能遭受未经授权的使用,但也仅限于泄密期间。在该示例实施例中,所有的密钥都将保留在硬件TPM之内,因此一旦泄密终止就无法偷取或使用私钥。
[0041] 根据本发明的处理系统还可提供允许vTPM提供传统TPM证明书服务的证明书协议体系结构。不知道虚拟TPM的远程质询器可以完全地参与到证明书进程中。此外,知道vTPM的远程质询器能在无需附加协议的情况下将hwTPM与vTPM进行区分,并在随后决定是否信任主存vTPM的平台。
[0042] 在该示例实施例中,当虚拟TPM(vTPM)不可操作时,用于该vTPM的持久数据结构被存储在磁盘上并用父SRK密封到vTPM服务的PCR。于是,即使在vTPM未运行时,TPM 30仍保护着vTPM。
[0043] 在此示例实施例中,vTPM 120A能够在单用户授权会话下透明地提供来自它本身和来自hwTPM双方的TPM功能。vTPM 120A通过维护与用户和hwTPM双方的分开的授权会话来实现这一目标。即,用户将如同vTPM是hwTPM那样用vTPM 120A来创建授权会话。vTPM120A可以基于hwTPM会进行的这一会话来实现所有相同的授权检查。如果vTPM 120A可以直接提供所请求的功能,则vTPM120A就可以简单地更新会话现时值并做出回复。如果vTPM
120A需要硬件TPM提供该服务,则vTPM 120A将用该hwTPM创建授权会话或重新使用现有的授权会话来做出该请求。一旦vTPM 120A使用完hwTPM,vTPM 120A就可更新用户会话的现时值并做出回复。
[0044] 图3是示出了根据本发明一个实施例用于提供虚拟TPM的过程的流程图。图3的过程在处理系统20内激活了TPM 30之后开始,使得如同常规的TPM一样,TPM 30包括如图1所示的SRK 50、EK 52以及诸如EK凭证54等标准凭证。在框210至214处,VMM 106执行几个操作以初始化虚拟TPM服务104来为支持虚拟TPM做准备。例如,在框210处,VMM
106创建被称为证实密钥(CK)56的AIK。VMM 106可以使用用于创建AIK的标准过程来创建CK 56。虚拟TPM服务104随后可以在证实诸如vEK64等虚拟保证密钥时使用CK 56。在框412处,虚拟TPM服务104从诸如保密认证授权机构(CA)76之类的第三方或可信第三方(TTP)获取针对CK 56的CK凭证58。CK凭证58由保密CA 76签署并且通过指示CK 56受到有效TPM的保护来担保CK 56。
[0045] 在框214处,VMM 106创建被称为绑定密钥(BK)57的AIK。BK 57在随后vTPM数据从vTPM服务104中释放时用于保护这些数据。例如,在该示例实施例中,vTPM 120A用与hwTPM存储持久密钥和寄存器相类似的方式保存持久数据。然而,为保护释放的数据,vTPM120A将以下各项与BK 57绑定:由vEK 64包装的密钥块(blob)、由vSRK 66包装的密钥块、用于vEK 64的授权数据、用于vSRK 66的授权数据、vDIR 94以及用于装载的持久密钥的包装的密钥块。
[0046] 对于vTPM 120A,用来实现局部性的总线控制器的逻辑等效物是VMM 106。于是,vTPM 120A将在VMM 106指示它操作的任何局部进行操作。若有需要,VMM 106可以使用任何合适的技术来改变vTPM 120A的当前局部性。
[0047] 一旦VMM 106已经初始化了虚拟TPM服务104,虚拟TPM服务104就能在需要时创建虚拟TPM。
[0048] 在该示例实施例中,每个虚拟TPM一旦被初始化就能够操作并支持诸如证明书等传统功能,如同该虚拟TPM就是硬件TPM一样。为允许虚拟TPM以这一方式操作,向虚拟TPM提供硬件TPM期望拥有的相同种类的凭证。例如,如随后将详述的那样,在一个实施例中,虚拟TPM服务104针对每个新的vTPM创建或获取新的vEK、新的虚拟SRK(vSRK)以及用于该vEK的凭证。这一vEK凭证指示该vEK是依据TPM规范安全存储的。此外,平台凭证和一致性凭证可由虚拟TPM软件厂商提供。
[0049] 在该示例实施例中,框216至222表示用于为虚拟机初始化虚拟TPM的操作。例如,虚拟TPM服务104响应于创建虚拟机110A的请求,可如在框216处所示的使用TPM 30来创建被称为vEK 64的存储密钥。此外,虚拟TPM服务104可使用TPM 30将vEK 64绑定至用于虚拟TPM服务104和虚拟TPM服务104所在的引导环境的PCR值。还可以在vTPM120A内创建并存储用于vEK 64的初始授权数据。
[0050] 在框218处,虚拟TPM服务104使用CK 56来证实vEK 64。例如,虚拟TPM服务104可使用TPM 30的TPM_CertifyKey函数来证实vEK 64并为vEK 64获取诸如TPM_CERTIFY_INFO结构等认证信息。在该示例实施例中,用于vEK 64的这一认证信息由CK 56签署,并且包含vEK 64所绑定到的PCR信息(例如,用于PCR 32的信息)。该过程可以保证vEK 64被存储在经保密CA 76批准的硬件TPM中。在此示例实施例中,因为保密CA 76已签署了CK凭证58,所以CK 56对vEK 64的PCR绑定的认证会受到信任,如同保密CA 76已经指示vEK 64处于依据TCG标准可认为良好的hwTPM中那样。
[0051] 在框220处,虚拟TPM服务104可以将vTPM的EK凭证请求发送给被称为虚拟化CA 78的第三方或TTP。该凭证请求可以包括CK凭证58以及由CK 56签署的用于vEK 64的认证信息。
[0052] 虚拟化CA 78可以是受到保密CA信任的认证授权机构。通常可以将虚拟化CA 78示为TPM的另一个生产商。在该示例实施例中,虚拟化CA 78是知道vTPM的,并且能够将经批准的或“安全”的虚拟TPM环境与未经批准的或“不安全”的虚拟TPM环境区分。在一个实施例中,虚拟化CA 78是处理系统20外为进行有效的TPM虚拟化而必须知道TPM虚拟化的存在的唯一实体。
[0053] 在虚拟化CA 78评价了CK凭证58以及针对vEK 64的包括PCR绑定在内的认证信息之后,如果请求被批准,则虚拟化CA 78将经签署的vEK凭证返还给处理系统20。在此示例实施例中,vEK凭证60包括带有指示vEK 64与在可标识环境内运行的虚拟TPM相关联的数据的模型字段。在框222处,虚拟TPM服务104可接收经签署的vEK凭证60。
[0054] 上述过程于是就可以建立下列信任链:CK凭证58是由保密CA 76签署的凭证以指示CK 56是合法TPM内的合法AIK。用于vEK 64的认证信息指示根据CK56,vEK 64是绑定到一组特定PCR并位于同一合法TPM内的密钥。因为保密CA76创建了CK凭证58,所以虚拟化CA 78就信任由CK 56创建的用于vEK 64的认证信息。如果虚拟化CA 78批准了EK所绑定到的vTPM环境,则因而乐于产生用于vEK 64的保证凭证以指示vEK 64表示一个有效TPM。此外,在vEK凭证60中,虚拟化CA 78可以包括指示该TPM是虚拟的并且在证明期间能被远程质询器自行信任的模型信息。
[0055] 框224至226表示用于初始化vTPM的附加操作。在一个实施例中,虚拟TPM服务104为执行这些操作,使用标准函数来初始化vTPM 120A,如同vTPM 120A是hwTPM那样。例如,虚拟TPM服务104可以分别如框224和226处所描绘的那样,调用TPM_Get_PUBEK以获取vEK 64的公共部分,并且可以调用TPM_TakeOwnership以创建vSRK 66。在该示例实施例中,虚拟TPM服务104将vSRK绑定到与vEK 64相同的PCR(例如,PCR 32)上。虚拟TPM服务104能以用vEK 64的公共部分加密的形式为vTPM 120A提供授权。这些授权随后由vTPM 120A用vEK 64解密。在该示例实施例中,因为这些授权不是TPM_BOUND_DATA,所以使用传统的密钥vEK 64来解密这些授权。
[0056] 在该示例实施例中,用于vEK 64的授权数据从vEK 64创建期间被存储在vTPM120A内的数据改为在TPM_TakeOwnership调用中提供的数据。
[0057] 如在框228处所述以及如下将参考图4详述的,VM 110A随后使用vTPM120A,如同vTPM 120A是hwTPM一样。如框240处所示,虚拟TPM服务104随后确定是否正在创建要求新vTPM的新VM。如果是,则该过程返回到框216,其中执行操作以用例如为该新VM创建的新vEK等来实例化上述新vTPM。如果没有创建新的VM,则虚拟TPM服务104可以继续使用TPM 30来为VM 110A提供vTPM 120A。
[0058] 图4是示出利用诸如vTPM 120A之类的虚拟TPM的一过程的示例实施例的流程图。示出的过程提供了关于图3中框228处概括的某些操作的更多细节。例如,框310至314描述了用于为VM 110A创建vAIK的操作,其中VM 110A如同vTPM120A是hwTPM一样来使用vTPM 120A。虚拟vTPM 120A可以在TPM 30中创建vAIK 70,并且可以创建硬件TPM通常会为AIK创建的常规文档。
[0059] 例如,在框310处,VM 110A通过调用TPM MakeIdentity在vTPM 120A内创建vAIK。vTPM 120A响应该调用,指示TPM 30在TPM 30内创建新的TCG-SIGNING_KEY密钥。这一将用作新的虚拟证明书身份密钥的签署密钥在图1中被描述为vAIK 70。这样,从hwTPM的观点来看,虚拟AIK不是“AIK”类型的密钥,而可以是签署密钥。但在hwTPM外的其他地方,该虚拟AIK仍然用作并看似“AIK”类型的密钥。
[0060] 用于vAIK 70的TCG_IDENTITY_CONTENTS随后由vTPM 120A和TSS108A创建。TSS108A随后可以执行TSS_CollateIdentityRequest来创建TCG_IDENTITY_REQ。除非使用的EK凭证是vEK凭证60而非针对hwTPM的EK凭证,否则就可以照常做出上述调用。
[0061] 如框312处所描述的那样,在VM 110A内运行的TSS 108A随后将包括诸如vAIK70和vEK凭证60等文档在内的请求发送给保密CA 76。保密CA 76随后检验这些文档。此外,保密CA 76可能不知道TPM的虚拟化,并且信任来自虚拟化CA 78的vEK保证凭证60就如同它是任何其他TPM厂商的凭证那样。在验证了这些文档之后,保密CA 76将为vAIK
70创建一新的身份凭证62,签署该凭证,并将其发送到处理系统20。因此,TSS 108A可如框314中所示地接收来自保密CA 76的vAIK身份凭证62。
[0062] 接着,框320至324描述用于处理证明书请求的操作。在框320处,vTPM 120A确定接收到的命令是否要求关于VM 110A的可信赖性的证明书。当接收到这一请求时,TSS108A可以使用vTPM 120A来引证vPCR 92,并且可以如框322处所示使用vAIK 70来签署PCR的引证。如框324处示出的那样,当VM 110A受到远程实体的质询时,TSS 108A可以如同vAIK 70在hwTPM内一样将vAIK凭证62发送给该远程实体。
[0063] 根据一个实施例,如果质询器知道vTPM,则它就能够考虑模型信息,发现由VM110A使用的TPM是vTPM,并且决定是否应该信任该底层平台。上述模型信息可以唯一地标识该底层平台配置。
[0064] 如果质询器信任该底层平台,质询器就会获知保密CA 76做出了如下声明:vTPM是硬件TPM中的根,vTPM仅在该硬件TPM中可用。如果质询器不信任该vTPM的这一特定配置,则质询器能够选择拒绝该事务。此外,如果质询器是不知道vTPM的传统应用程序,则质询器就能够仅仅基于对保密CA 76的签名的信任确定,使用标准TPM协议来推断证明书。
[0065] 用类似的方式,vTPM 120A可以为VM提供常规硬件TPM能够为单片系统提供的全部其他功能。
[0066] 所公开的一个或多个实施例因而允许多个VM使用TPM功能,而无需多个专用硬件TPM,无需修改VM内的软件,并且无需修改与目标系统交互的远程实体。根据本公开内容,虚拟TPM可以度量VM内的OS和应用程序以向远程实体提供证明书。此外,即使硬件TPM和质询器仅能利用在当前TPM规范(诸如,以上参考的TPM1.2版设计规范)中描述的功能,虚拟TPM仍可以为硬件TPM质询器证明虚拟机的状态。虚拟机内的客OS可以保持不知道硬件TPM被共享,并且在一系统内的VM之间不需要信任关系。
[0067] 如图1所示,可以为每个vTPM创建零个或更多的vSig 68、零个或更多的vAIK70和零个或更多的vEnc 72。如上所述,在一个实施例中,诸如vSig 68和vEnc 72之类的虚拟密钥可以被创建并存储在hwTPM中。因此,vTPM能够以使对虚拟TPM的泄密无法永久性地泄密存储在vTPM内的密钥的方式存储并创建它的密钥。
[0068] 可选地,为增加灵活性和/或性能,虚拟密钥可由vTPM软件创建并使用。例如,这些虚拟密钥可以不由hwTPM储存或者直接保护。属于虚拟TPM或由其生成的私钥可以不由硬件TPM操作,因为该硬件TPM可以不使用这些私钥来执行密码操作。相反,虚拟TPM可以使用主机处理器和密码软件来以其私钥执行密码操作。为此,虚拟TPM服务可以在受保护的主机存储器内存储其私钥。尽管如此,虽然没有使用该私钥,但是虚拟TPM服务可以使用硬件TPM特征来将该密钥包装到其软件配置中。
[0069] 这些选项可以允许vTPM以比硬件TPM所提供的性能的更为优越的性能来对vTPM软件内的对象进行加密、解密、签署和验证。于是,这些选项对于例如批量加密或性能敏感服务器环境中的使用是首选。然而,为添加性能仍需权衡的是如果vTPM被泄密,则泄密密钥也会被永久地泄密。
[0070] 鉴于在此描述并示出的原理和示例实施例,应该认识到,可以在不背离上述原则的情况下对所示的实施例的安排和细节做出修改。例如,虚拟TPM是结合虚拟机来描述的,但是替换实施例也可包括与其他类型的系统细分,诸如与一个服务器或与共享硬件TPM的一组服务器内的分区结合使用的vTPM。例如,虚拟TPM可以在被划分成两个逻辑双处理器系统的四处理器系统内使用。此处的教示还可用于将逻辑TPM提供给一个或多个服务协处理器,或者提供给硬件平台上一个或多个其他类型的独立处理元件。
[0071] 此外,替换实施例包括不对硬件TPM进行仿真,但会(例如,通过提供更多的PCR、更多的存储等)扩展和/或放大硬件TPM的能力的vTPM服务。替换实施例还包括在安全OS之上、受管运行时环境(MRTE)之上、服务处理器或协处理器内、平台的系统管理模式(SMM)内等运行的虚拟TPM服务。
[0072] 同样,虽然前述讨论关注了某些特定实施例,但是仍然可以构想其他配置。更具体地,即使在此使用了诸如“在一个实施例中”、“在另一个实施例中”之类的表达,但这些短语一般仅意味着参考实施例的可能性,而不旨在将本发明限于某些特定的实施例配置。如此处所使用的,这些术语可以参考可并入其他实施例的相同或不同的实施例。
[0073] 类似地,虽然已关于以特定顺序执行的特定操作描述了示例过程,但是可以对这些国车杠应用各种修改以导出本发明的多个替换实施例。例如,替换实施例可以包括使用少于全部公开的操作的过程、使用附加操作的过程、使用顺序不同的相同操作的过程以及其中组合、细分或改变了在此公开的各个操作的过程。
[0074] 本发明的替换实施例还包括用于执行本发明的各操作的机器可访问介质编码指令。这些实施例还可被称为程序产品。这些机器可访问介质包括但不限于存储介质,诸如软盘、硬盘、CD-ROM、ROM和RAM;以及通信介质,诸如天线、电线、光纤、微波、无线电波和其他的电磁或光载波。因此,指令和其他数据能以分组、串行数据、并行数据、传播信号等的形式经由传输环境或网络传播,并能在分布式环境中使用并被本地和/或远程存储以供单或多处理器机器访问。
[0075] 应该理解,在此描述的硬件和软件组件表示合理自持以便各自都能被充分彼此独立地设计、构造或更新的功能元件。在替换实施例中,许多组件都可被实现为硬件、软件或硬件和软件的组合以提供在此描述并示出的功能。
[0076] 考虑到能从在此描述的示例实施例中轻易导出的各种有用的变化,该详细描述仅出于示意性的目的,而不应被理解为限制本发明的范围。因此,本发明所要求保护的是落入所附权利要求书的范围和精神内的全部实现以及这些实现的所有等效技术方案。