虚拟机的可信计算技术研究

时间:2022-07-09 04:17:51

虚拟机的可信计算技术研究

【摘要】虚拟化技术作为云计算的关键技术,提高了企业计算资源的利用率。为了保证虚拟机运行环境的完整性和安全性,基于KVM虚拟机平台提出了一种可信虚拟计算架构。解决了可信虚拟平台下虚拟身份证明密钥的私密性问题,使得信任链能够从硬件TPM延伸到客户操作系统,为虚拟机的安全提供了保障。

【关键词】可信虚拟平台;身份证明密钥;信任扩展

1.引言

虚拟化技术的广泛应用,使得企业极大地提高了计算资源的利用率。由于虚拟化技术具有的隔离性,不同虚拟机可以提供不同的服务,并且不会影响到其他虚拟机的工作。此外,虚拟机具有动态特征,管理员能够动态地创建、启动、迁移或撤销虚拟机。虚拟机运行在虚拟机监控器[1](virtual machine monitor,VMM)模拟的硬件上,虚拟机监控器负责管理底层的真实硬件资源。虚拟机直接向用户提供计算服务,然而虚拟机监控器并没有对虚拟机进行度量,以确保虚拟机的完整性,因此虚拟机运行环境面临着严峻的安全问题。

自从可信计算组织TCG(TrustedComp-uting)[2]推出可信平台模块TPM(Trusted Platform Module)标准规范1.1和1.2,很快就有相应产品在市场中推广和应用,我国也相应推出了TCM(Trusted Cryptography Module)[3]标准规范与产品。TPM/TCM作为平台的信任根,目前已经配置在许多系统上。可信计算的核心是信任链的传递机制。在任何一个信任体系中都必须有一个公认的、不需要证明的起始点,这个起始点被称为是核心信任源CRTM(Core Root of Trust for Measurement),通过CRTM首先构建一个信任根,再建立一条信任链,从信任根开始到硬件平台,到操作系统,再到应用程序,一级认证一级,一级信任一级,把这种信任扩展到整个系统,从而确保整个系统的可信。

可信计算作为信息安全的一项重要技术,可以保证运行在真实硬件上的虚拟机监控器的完整性。然而信任链传递到虚拟机监控器层次就已经中止,并没有延伸到上层的虚拟机,虚拟机监控器与虚拟机之间的信任链并不存在。为了保证上层客户操作系统的完整性,需将虚拟化技术与可信计算技术结合,构建可信虚拟化平台,这也成为了目前业界的研究热点[5-10]。

构建可信虚拟化平台首要解决的问题是,在确保信任根不变的情况下,客户操作系统能够使用可信服务。为了让平台上的每一个虚拟机使用它所独有的TPM的安全存储、加密和签名功能,必须要解决虚拟机如何使用TPM的问题,即TPM的虚拟化问题[5]。TPM的虚拟化必须要确保硬件TPM的安全属性,问题难点并不在于TPM命令是如何实现的,而是在于如何支撑高层的安全概念,例如信任链的传递。

2.研究现状

基于虚拟化技术的可信计算,主要是利用虚拟化技术在一个可信物理平台上创建出多个虚拟机,并将从硬件TPM开始构建的信任链传递到每一个虚拟机,从而在一个可信物理平台上构建多个虚拟的可信计算平台。可信虚拟计算平台不仅保证了虚拟机的可信,还保证了提供不同应用服务的多个虚拟机之间的隔离。

目前虚拟化环境下TPM的虚拟化主要有3种方式:TPM的硬件扩展[6]、TPM的半虚拟化[7]和TPM的软件虚拟化[8,9,10]:

TPM硬件扩展方式通过扩展TPM上下文为每个虚拟机提供TPM环境,虚拟机监控器可能透明地为每个虚拟机提供隔离的TPM会话,每个虚拟机可以自行读取和保存TPM上下文。然而该方式需要TPM硬件支持,目前并不存在硬件虚拟化的TPM。

TPM半虚拟化在虚拟机监控器层次加入一个中间层,实现硬件TPM对虚拟机的认证以及负责对硬件TPM的调试控制。然而这种方式需要更改一些设备接口,在兼容性方面会受到一定的影响。

目前大多数应用主要采用软件来实现TPM的虚拟化,为虚拟机提供一个接近真实硬件TPM的接口。TPM_Emulator[8]是由瑞士苏黎士联合研究所开发的软件TPM模拟器,为没有提供TPM物理芯片的计算平台提供TPM的功能仿真与模拟。TPM_Emulator实现了TPM的绝大部分功能,但它仅面向单个计算平台。S.Berger[9]分析了TPM虚拟化的需求,提出了TPM虚拟化的方法,将一个硬件TPM映射成多个虚拟TPM,虚拟TPM为每一个虚拟机提供一个专用的基于软件的信任根。在此基础上,Frederic[10]提出了一种构建可信虚拟平台的方案,并实现了虚拟TPM和物理TPM的绑定,以及虚拟TPM信任链的构建。该方案利用身份证明密钥AIK(attestation identity key)对虚拟TPM的AIK、物理平台配置寄存器PCR及时间戳进行签名,从而构成虚拟AIK证书。

Berger与Frederic都是基于XEN虚拟机实现了可信虚拟计算平台,主要存在以下几个问题:1、XEN是一个半虚拟化的虚拟机,在没有CPU对虚拟化的支持下,运行在XEN上的操作系统必须经过修改才能运行,这就缩小了XEN的应用范围;2、XEN是运行在Linux内核(Domain0)下层的一个产品,每次升级XEN时都需要重新编译整个内核。3、Berger提出了4种构建虚拟TPM信任链的思路,但是没有进一步研究。4、Frederic用物理AIK签名虚拟AIK的方式来生成虚拟AIK证书,从而实现信任链的传递。TPM规范中规定AIK密钥只能对TPM内部产生的信息进行签名,外部数据是无法使用AIK进行签名的。虚拟TPM的AIK是由虚拟TPM产生的,不属于物理TPM的内部信息,因此Frederic的方法不符合TPM规范。

KVM虚拟机是由Ret Hat推出的一种虚拟化技术。KVM是虚拟机监控器内核的一部分,以内核可加载模块的形式存在,运行在KVM虚拟机上的客户操作系统不需要进行任何修改。虽然XEN先于KVM提出,但是上文中提到的问题却限制了XEN的应用范围,因此KVM虚拟机具备更好的应用前景。

针对目前可信设备软件虚拟化的问题,本文从物理TPM的虚拟化角度出发,以KVM虚拟机为基础平台,提出了可信虚拟计算平台的设计方案。建立物理PCR与虚拟PCR的映射关系实现虚拟TPM与底层TCB的绑定,将信任链延伸到虚拟机,使得虚拟机能够有效地利用TPM提供的平台环境证明和私密信息存储功能,从而构建可信的虚拟运行环境。

虚拟机监控器的安全性是本文论述正确性的基础。在虚拟化环境中虚拟机负责向外界提供服务,因此虚拟机监控器的安全威胁来自上层虚拟机。虚拟机监控器的启动时的安全性可以由TPM的信任链传递来保证。为了保证虚拟机监控器运行时的完整性,HyperSafe[11]通过不可绕过的内存锁和受限制的指针索引来使虚拟机监控器具有自保护能力。

3.可信虚拟计算平台的设计

本文的可信虚拟计算平台的架构如图1所示。其中,TPM芯片是整个平台的信任根,负责对KVM虚拟机监控器的引导环境、内核、TPM管理器和TPM实例的完整性进行度量,从而构建虚拟计算环境的可信计算基TCB。TPM管理器负责TPM实例的创建和管理,为虚拟机与TPM实例、TPM实例与物理TPM提供通信信道。TPM实例与虚拟机对应,为虚拟机提供硬件TPM相同的功能,包括绑定、签名、封装和密钥存储。

3.1 底层可信基的绑定

在虚拟计算环境下,可信计算基TCB包括虚拟机监控器及其底层固件、TPM管理器及TPM实例,这些组件的完整性由硬件TPM度量,度量值保存在硬件TPM的平台配置寄存器PCR中。

TPM实例用于确保其对应虚拟机的完整性,度量虚拟机操作系统及上层应用程序,度量值保存在TPM实例的PCR中。为了让虚拟机使用可信度量功能,需要建立虚拟计算环境下的可信计算基,以确保虚拟机平台的完整性和可信虚拟平台的完整性。

TPM标准规范1.2规定了静态度量方式中24个平台配置寄存器PCR的使用方式,前16个PCR用于静态度量,后8个PCR用于动态度量。当可信虚拟平台启动时,可信计算基TCB会先被度量,从而保证平台的完整性。根据TPM规范,信任根对物理硬件及BIOS进行度量,度量值存放在0~6号PCR。执行权限转交给BIOS,BIOS对可信引导程序GrubIMA进行度量,度量值放在第7号PCR。执行权限转交给GrubIMA,GrubIMA对虚拟机监控器的内核、TPM管理器及TPM实例进行度量,度量值存放在第8号PCR中。

每个TPM实例除了需要记录它对应虚拟机的完整性信息,还需要记录底层可信基TCB的完整性信息。因此将每个TPM实例的前9个PCR与物理TPM的PCR进行映射,保存底层TCB的完整性信息,后7个PCR则用来保存虚拟机内的完整性信息(系统配置文件、应用程序的度量值),如图2所示。

通过上述方式,构建了可信虚拟平台的可信计算基TCB,可以同时反映硬件平台与虚拟机内部的完整性信息。

可信计算基TCB需要向虚拟机提供身份证明,即TPM实例与TPM管理器向虚拟机证明他们是可信的。这个过程需要使用虚拟AIK密钥对TPM实例中的数据进行签名。在进行平整性认证时,TPM实例通过TPM_Quote操作使用TPM实例产生的虚拟AIK对TPM实例中的PCR值进行签名,然后将签名后的值与度量列表一起发送给虚拟机中的用户。

3.2 信任扩展

生成平整性证据时,最重要的就是用TPM管理器产生的虚拟AIK密钥对TPM实例的PCR值签名。虚拟AIK密钥的私密性直接关系到签名后度量结果的真实性。在非虚拟化环境下,AIK密钥只能在物理TPM中使用,代表了TPM的身份,一旦移出TPM就会被加密保存。此外AIK密钥只能对TPM内部产生的数据进行签名,外部数据无法使用AIK签名。

为了确保AIK密钥的私密性以及虚拟平台与硬件平台的绑定关系,需要利用硬件TPM来构造虚拟TPM平台的AIK证书,从而确保可信平台信任的扩展。我们可以使用与硬件TPM中AIK证书生成方式相同的方法,来生成虚拟AIK证书。硬件TPM中AIK证书是由背书密钥EK产生的,而EK由信任第三方CA颁发给硬件TPM。EK与AIK是一一对应的,EK代表了平台的真实身份,AIK用于向外界证明平台的身份。在可信虚拟化环境下,为了生成虚拟AIK证书,可以通过EK-虚拟EK-虚拟AIK的证书链来为TPM实例颁发该证书。TPM管理器向CA证明TPM实例的可信性,由CA向TPM管理器颁发虚拟EK证书,由虚拟EK来生成虚拟AIK证书。由于虚拟机的数量会很多,这就增加了CA的负载。

另外一种方法就是用物理AIK密钥来生成虚拟AIK证书。TPM实例生成虚拟AIK密钥,并向TPM管理器请求虚拟AIK证书,TPM管理器发硬件TPM发送命令,让硬件TPM用物理AIK密钥对物理PCR、虚拟AIK、随机数和时间戳进行签名,然后与虚拟AIK密钥一同构成虚拟AIK证书。这样就不依赖于可信第三方,通过物理AIK证书构成虚拟AIK证书,并且绕过了虚拟EK证书。然而TPM规范中规定AIK密钥只能对TPM内部产生的信息(包括TPM产生的其他密钥、PCR的值)进行签名,因此这种方法不符合TPM规范。

接着上述思路,我们可以引入签名密钥SK来实现物理AIK对虚拟AIK的间接签名认证。签名密钥SK是由TPM产生,属于TPM的信息,可以利用AIK通过TPM_CertifyKey对SK进行签名,并由SK通过TPM_Quote命令对物理PCR、虚拟AIK、随机数和时间戳进行签名,最后与AIK证书一同构成虚拟AIK证书。虚拟AIK证书包括:物理AIK签名的SK;物理SK签名的虚拟AIK、PCR[0-15]、随机数和时间戳;物理AIK证书。SK与AIK是一一对应的,因此体现了AIK向外证明身份的能力。具体的过程如图3所示。

(1)TPM实例产生一个虚拟AIK密钥

(2)TPM实例向TPM管理器请求虚拟AIK证书,请求中包含虚拟AIK公钥和随机数

(3)TPM管理器使用物理AIK密钥对物理PCR及TPM实例发来的随机数进行签名,用于证明物理平台的完整性

(4)TPM管理器发物理TPM发送命令,让其产生一个签名密钥SK

(5)TPM管理器用物理AIK密钥对签名密钥SK进行签名,证明SK与AIK属于同一个物理平台

(6)TPM管理器用签名密钥SK对虚拟AIK的公钥、物理PCR、随机数和时间戳进行签名,并附上物理AIK证书,从而构成虚拟AIK证书。

3.3 可信设备的虚拟化

在KVM虚拟化平台中,硬件设备的虚拟化都是由Qemu完成的。通过修改KVM源代码,就可以方便地实现TPM设备的虚拟化。

3.3.1 TPM驱动设计

TPM驱动运行在客户操作系统中,主要负责识别虚拟TPM设备,并与TPM实例进行通信。TPM驱动的设计与正常的Windows设备驱动类似,唯一的区别在于TPM驱动访问的不是硬件设备,而是通过TPM实例注册的端口与TPM实例完成数据交互。当客户操作系统中的程序访问虚拟TPM设备时,会调用TPM驱动注册的读写函数,实现与TPM实例的通信。从虚拟域来看,也就是实现了对虚拟TPM设备的访问。TPM驱动与TPM实例的调用关系如图4所示。

3.3.2 TPM实例设计

TPM实例,也就是虚拟机感知到的虚拟TPM设备。在KVM为虚拟机进行硬件初始化的代码中增加虚拟TPM的初始化代码,就可以向虚拟机添加虚拟TPM设备。图7展示了TPM实例的注册过程。

如图5所示,TPM实例的注册包括以下几个步骤:

1)创建虚拟PCI设备,作为TPM实例的载体;

2)TPM实例配置空间的填充,包括设备号等信息;

3)注册I/O端口函数,TPM驱动发出的读写操作就是调用TPM实例注册的I/O函数;

4)向虚拟机注册TPM实例,完成设备的注册操作。

3.3.3 TPM管理器设计

TPM管理器负责提供虚拟TPM服务,并与TPM实例进行通信。

图6展示了TPM管理器的结构,主要包括以下功能:

1)从TPM实例接收数据。这些数据由TPM驱动发送,TPM实例接收到数据立即转交给TPM管理器。

2)解析收到的数据,分析出合法的TPM命令。

3)管理虚拟TPM存储器,包括PCR和其他非易失性存储器。

4)向TPM实例返回数据。TPM管理器执行TPM实例发来的命令或请求后,产生相应的反馈数据,将这些信息发给TPM实例,等待TPM驱动的读取。

4.结束语

本文在分析了当前虚拟计算环境下可信计算技术不足的基础上,基于KVM虚拟化平台,提出了一种虚拟化环境下的可信平台架构,详细阐述了虚拟化环境可信计算基TCB的绑定、信任的扩展以及可信设备的虚拟化,为虚拟客户系统的安全提供了保障。

参考文献

[1]Adams K,Agesen 0.A Comparison of Software and Hardware Techniques for x86 Virtualization[C].In:Proceedings of the 12th International Conference on Architectural Support for Programming Languages and Operating Systems(ASPLOS 2006),New York,NY,USA,2006,2-13.

[2]Trusted Computing Group:Trusted Platform Module(TPM)specifications.Technical Report.2006.https:///specsTPM.

[3]国家密码管理局可信计算密码支撑平台功能与接口规范[S].2007.

[4]谭良,棣志伟.基于可信计算甲台的信任链传递研究进展[J].计算机科学,2008.35(10):15-16.

[5]Anbang Ruan,Qingni shen,Yuanyou Yin.A Generalized Trusted Virtualized Platform Architecture.In Proc.of the Young Computer Scientists,2008(1CYCS 2008).P:2340-2346,Zhangjiajie,China,Nov.18-21,2008.

[6]GOLDMANKA,BERGER S.TPM main part 3 IBM commands[EB/OL].http:///secure_systems_department/projects/vtpm/mainP3IBMCommandsrev 10.pdf,2005-4.

[7]PAUL E,JORK L.Para-virtualized TPM sharing[A].Proceedings of the 1st International Conference on Trusted Computing and Trust in Information Technologies:Trusted Computing-Challenges and Applications(TRUST 200g)[C].Villach,Austria,2008.119-13.

[8]STRASSER M,STAMER H.A software-based trusted platform module emulator[A].Proceedings of the 1st International Conference on Trusted Computing and Trust in Information Technologies:Trusted Computing-Challenges and Applications(TRUST 2008)[C].Villach,Austria,200.

[9]BERGER S,CACERES R,GOLDMAN K A,et al.vTPM:virtualizing the trusted platform module[A].Proceedings of the 15th USENIX Security Symposium (USENIX Security 2006)[C].Canada,2006.305-320.

[10]FREDERIC S,MICHAEL B,MARTIN H,et al.An approach to a trustworthy system architecture using virtualization[A].Proceedings of the 4th International Conference on Autonomic and Trusted Computing (ATC-2007)[C].Hong Kong,China,2007.4610:191.

[11]Wang Z,Jiang X.HyperSafe,A Lightweight Approach lo Provide Lifetime Hypervisor Control-Flow Integrity.In:Proceedings of the 31st IEEE Symposiumon Security and Privacy(SP 2010),Oakland,USA,2010,380-395.

作者简介:

黄永生(1989-),男,安徽和县人,硕士,现供职于中国航天科工集团第二研究院706所,研究方向:计算机应用技术。

蒋志翔(1969-),男,四川遂宁人,硕士,研究员,现供职于中国航天科工集团第二研究院706所,研究方向:嵌入式计算机体系结构及应用技术。

上一篇:加强财经专业数据处理教学,提高学生素质 下一篇:以“能力为重”的《hotosho图形处理技术》实践...