可信计算之虚拟可信平台模块

一. 背景

随着虚拟化技术的普及,单台物理机上运行多个虚拟机逐渐成为主流,但是,单台物理机上的TPM芯片只有一个。为了让物理机上的多个虚拟机都能使用可信计算,2006年,IBM在USENIX论文《vTPM: Virtualizing the Trusted Platform Module》中首次提出了虚拟可信平台模块技术(vTPM)。vTPM是TPM的软件实现,让虚拟机也能够使用安全存储、密码操作等功能,而不需要专属的TPM芯片。

二. vTPM介绍

vTPM使用软件模拟TPM的功能。虚拟机引入vTPM后,能够生成和存储私钥,实现安全加密。与TPM类似,vTPM创建的密钥与操作系统隔离,降低了系统被攻击时密钥泄露的风险。

2.1

TPM虚拟化面临的挑战

为了达成与TPM一致的安全性,vTPM在实现上面临一些挑战。

一方面,vTPM除了要支持TPM相关的底层命令,还要实现信任链建立等高级功能。为了将信任链从物理TPM扩展到每一个虚拟TPM,vTPM在实现时,需要仔细管理签名密钥和证书。一些使用了相关功能的应用需要了解物理和虚拟TPM之间的语义差异,才能正确的构建、评估证书链,确保信任的传递。

另一方面,要确保虚拟机和vTPM实例在迁移时的一致性。挂起、迁移和恢复是硬件虚拟化的重要优势,对于vTPM而言,迁移时需要保护实例中数据的机密性和完整性,并且能够在新平台上重建信任链。

vTPM提供TPM服务给每个虚拟机,需要满足以下条件:

1. vTPM为虚拟机操作系统提供的使用模型和指令集,必须与TPM提供给物理机操作系统的一致。原先使用了TPM的软件,应当能够在不做修改的情况下,实现与vTPM的交互,且应该对正在与虚拟TPM通信无感知。

2. 必须确保虚拟机与vTPM在整个生命周期内的强关联性,例如将虚拟机从一台物理机迁移到另一台。现代虚拟化技术的一大优势就是能够提供挂起和恢复功能,用户能够主动冻结操作系统状态,并且能够在之后的某个时间点,甚至是在不同的物理机器上进行恢复。因此,vTPM需要支持自身状态的挂起及恢复,以及在不同物理机之间的迁移,并且要保证在虚拟机生命周期的各种状态期间,不会被未经授权方以及其他虚拟机窃取vTPM中存储的密钥。

3. 必须维护vTPM与其底层可信基(TCB)之间的强关联。物理TPM有数字签名功能,可用于验证TPM可信。而在虚拟环境中,vTPM作为一个用户进程运行,与硬件平台的关联可能发生变化,例如虚拟机迁移后,物理机器变了,可信基也跟着变化。跟踪并正确处理可信基的变化是实现TPM虚拟化面临的主要难题,各方不仅要具有在初始环境建立信任的能力,也要能够在之后的时间点及时建立vTPM环境的信任。

4. 基于虚拟TPM与物理TPM不同的安全特性,这二者需要做区分。vTPM证书用于向相关方提供足够的信息,以得出TPM正常运行所依赖的软件、固件和硬件环境的相关信息。

2.2

架构

论文提出了一种vTPM架构,如图1所示。

图1 vTPM架构

图1说明了vTPM的构成及其关系。整个vTPM由一个vTPM管理器和若干vTPM实例组成。

vTPM实例需要满足TCG TPM标准的规定。每个虚拟机会被分配专属的vTPM实例。vTPM管理器的功能包括创建vTPM实例,以及将虚拟机的请求分发到与之关联的vTPM实例。虚拟机通过客户端驱动和服务端驱动与vTPM通信,其中客户端驱动运行在想要访问vTPM实例的虚拟机中,服务端驱动则运行在托管vTPM的虚拟机中。

为了实现虚拟化TPM,论文基于TPM 指令集做了一定扩展。

Virtual TPM Management commands:管理vTPM实例的生命周期,提供创建、初始化和删除实例的功能。

Virtual TPM Migration commands:用于vTPM实例迁移。实现了安全的vTPM迁移协议,基于这个协议,可以安全地打包实例状态,迁移到新平台。该扩展命令要求保护vTPM实例内容。为了防止实例重复,单个vTPM实例每次只能迁移到一个目标平台,且迁移后需要确保正确恢复状态。

Virtual TPM Utility commands:一些额外功能,包括将一部分TPM命令从父实例路由到它的子实例。

2.3

vTPM的迁移

论文中设计的迁移过程如图2:

图2 vTPM迁移协议

为了实现vTPM的迁移,使用非对称加密与对称加密结合的方式,对源vTPM状态进行加密和打包,并在目标vTPM上进行解密。vTPM迁移基于TPM存储密钥的迁移,这是TPM标准支持的过程。

第一步,在目标机器上创建一个空的vTPM实例,称为目标vTPM,从目标vTPM生成并导出唯一标识符。将源vTPM锁定到同一个标识符,防止迁移到多个目标。导入新的唯一标识符前需要做验证,之后所有的vTPM状态都基于该唯一标识符导出。

第二步,对源vTPM的状态进行加密封装和传输。首先向源vTPM发送创建对称密钥的命令,该密钥被TPM父实例的存储密钥加密。然后收集源vTPM的各种状态加密并传输,收集时该vTPM被锁定且不可使用。将状态序列化后,还要生成迁移摘要,用于在目标vTPM验证。

第三步,为了在目标平台上重建vTPM的状态,需要将源vTPM父实例的存储密钥迁移到目标vTPM父实例,在对称密钥解密后,重建vTPM状态,并重新计算摘要。为了防止迁移过程中涉及的不受信软件更改或删除状态,仅在计算出的摘要与传输的摘要一致时,vTPM实例才会恢复运行。

三. 现状

目前很多使用虚拟化技术的主流厂商都引入了vTPM的能力。

VMWare支持在其虚拟机中添加TPM2.0虚拟加密处理器。

Google Cloud VMWare Engine提供vTPM支持。并且该技术作为其安全强化型虚拟机的一部分,让虚拟机实例的完整性可验证,帮助确认实例启动过程中未受到恶意软件的危害。

微软提供的Azure机密VM都配备了专属的vTPM模块,提供度量、报告等功能。

阿里云在服务器硬件可信的基础上,额外为虚拟机实例提供虚拟可信根(vTPM/vTCM),将信任体系扩展到ECS(弹性云服务器)虚拟化层面,构建了基于硬件和虚拟信任根的完善安全体系。

华为云在2023年6月的更新中新增了安全启动和vTPM支持。

四. 总结

vTPM技术是在虚拟化环境中建立信任的关键技术,可以为硬件平台上每个虚拟机提供可信计算功能。与TPM硬件相比,成本更低,同时更加灵活。在当前主流单机多实例的技术架构中,一定程度上更有竞争力。

参考文献

Berger, Stefan & Cáceres, Ramón & Goldman, Kenneth & Perez, Ronald & Sailer, Reiner & van Doorn, Leendert. (2006). VTPM: Virtualizing the trusted platform module.

https://trustedcomputinggroup.org/about/what-is-a-virtual-trusted-platform-module-vtpm/

内容编辑:创新研究院 杨博杰 责任编辑:创新研究院 陈佛忠

本公众号原创文章仅代表作者观点,不代表绿盟科技立场。所有原创内容版权均属绿盟科技研究通讯。未经授权,严禁任何媒体以及微信公众号复制、转载、摘编或以其他方式使用,转载须注明来自绿盟科技研究通讯并附上本文链接。