文献标识码:A
文章编号: 0258-7998(2012)04-0130-04
近年来,虚拟化技术以隔离性强、易维护、节约成本和支持跨平台应用等良好特性逐渐成为了云计算、网格计算以及高性能计算等应用环境的核心技术及中坚技术力量, 与此同时,其安全问题也逐渐凸显[1]。可信计算[2]作为一种安全保障基础设施,有利于搭建终端平台之间的可信连接,构建诚实、互相信任的虚拟空间,因此被越来越多的组织和个人应用到虚拟系统中以保障安全可靠性。
虚拟化技术带来的最重要优势之一就是虚拟机的迁移(以下称VM迁移)。目前,很多监控程序,如VMware的vSphere监控程序(EAXi)以及Xen监控程序都支持VM迁移。但是目前业界对VM迁移的研究主要集中在优化其迁移性能上[3],对安全方面的考虑一直很少。
通过引入虚拟TPM(以下称为vTPM)[4]的概念,可信计算实现了对虚拟化系统的扩展。扩展后的虚拟系统上的多个VMs共享同一个物理硬件TPM,各个VM中的应用程序可以使用各自的vTPM来实现敏感信息的安全存储以及自身平台的完整性报告。在引入可信计算的虚拟系统中,为了确保VM迁移之后各VM及其应用程序能够正确地操作,必须将vTPM随其服务的VM一起迁移,本文将其称为安全VM-vTPM迁移。近年来,在软、硬件方面均出现了虚拟化TPM的体系结构,并且在vTPM的迁移协议方面也出现了诸多尝试。本文在研究现有vTPM迁移方案的基础上,首先分析了安全VM-vTPM迁移所面临的几个主要安全需求,并针对这些安全需求提出了一种新的安全VM-vTPM迁移协议,最后,基于Xen讨论了协议的具体实现,并对其性能进行了评估。
1 安全VM-vTPM迁移协议需求分析
目前涉及vTPM迁移的主要有四个协议,本文分别将其标记为协议1[4]、协议2[5]、协议3[6]和协议4[7]。协议1通过对vTPM实例的状态数据进行加密,来确保vTPM实例在迁移过程中的安全性。但是由于没有考虑目标平台的限制,迁移之后vTPM状态的安全性不能得到保证。协议2引入了一个称为TPM控制结构的数据结构来存储与TPM上下文相关的所有状态信息,通过控制这个数据结构的安全传输来实现TPM上下文在不同平台之间的安全迁移,整个过程都是在一条可信的通信信道上实施的。协议3是从Xen的源码中抽象出来的,整个迁移过程是在目标平台上的一个迁移密钥的控制下实施的,可以保证迁移内容的机密性,但是却无法应对攻击者在迁移过程中实施的破坏,例如修改vTPM状态内容。协议4为应对基于属性的TPM虚拟化而提出的,基于属性的虚拟化使用属性证书而非二进制哈希值作为度量值来扩展vPCRs,因此可以在具有相同安全保障的两个平台之间实现vTPM的迁移。
分析上述协议后,提出安全VM-vTPM迁移协议需要考虑的安全需求如下:
(1)确保VM-vTPM被迁移到了一个安全可信的目标平台。在VM-vTPM迁移之前,迁移源平台需要对目标平台进行证明,以确保源平台上的VM及其vTPM能够迁移到一个安全可信的目标平台。现有迁移协议要么假设目标平台是可信的,要么完全忽略目标平台的安全属性。
(2)确保迁移前后及迁移过程中VM及其vTPM的安全关联。在迁移过程中绑定VM及其vTPM是十分重要的,它可以阻止攻击者在迁移过程中实施对VM/vTPM的任一改变,还可以简化迁移之后目标平台上VM-vTPM的重新关联。VM-vTPM的绑定可以是隐式的,也可以是显式的。
(3)确保迁移过程中VM-vTPM的机密性和完整性保护以及抗重放攻击保证。迁移过程中,必须使用恰当的密码技术来保护VM及其vTPM的机密性和完整性,以阻止未授权的访问和修改进而避免VM或vTPM被恶意篡改。同时,还需要应用相应的机制来阻止迁移过程中的重放攻击,以避免发生VM或vTPM数据丢失的情况。
(4)确保迁移的原子性。原子性是指在没有任一中间状态的情况下,确保成功迁移或是维持现状的一种属性。为了保证迁移过程的原子性,需要提供相应的机制,确保成功迁移之后能够删除源平台上的vTPM,而一旦迁移失败则删除目标平台上的vTPM。这对于故障恢复和阻止产生重复拷贝,非常重要。
2 VM-vTPM迁移协议设计
在开始安全VM-vTPM设计之前需要注意两点:(1)本文认为协议涉及到的任一主体(源和目标平台)上都存在一个迁移控制实例,用于处理迁移请求。迁移控制器的位置与具体实现有关,它可以是VMM的一部分,也可以是vTPM管理器或者是Dom0的一部分[8]。(2)为了简化协议的设计与实现,本文认为源平台和待迁移的VM对目标平台来说都是可信的,如果协议为平台配置了动态度量机制,可以确保源平台及VM状态的任一非法改变都会被检测到并且可以得到正确处理,则这个假设就是合理的。结合动态度量机制设计安全VM-vTPM迁移协议是下一步要进行的工作。
2.1 VM-vTPM迁移协议概述
VM-vTPM迁移协议可以划分为4个阶段:(1)源平台和目标平台相互认证对方的真实性,并且协商迁移过程所使用的用于保护机密性和完整性的密码机制。然后,源平台发送证明请求给目标平台,以确保VM-vTPM被迁移到一个安全可信的平台。(2)在证实了目标平台的真实性和完整性之后,源平台锁定VM及vTPM,然后使用先前协商的密码机制安全传输VM及其vTPM。(3)目标平台首先检查接收到的VM及其vTPM的完整性,如果检查通过,则引进该VM-vTPM对(与具体的实现相关),并发送消息告知源平台已成功接收VM及其vTPM。(4)源平台删除被迁移的VM及vTPM以阻止进一步的复制或者其他操作,并且通知目标平台迁移已经成功完成,目标平台接收到DONE消息之后恢复VM及vTPM。至此,迁移过程完成。
2.2 VM-vTPM迁移协议详细设计
图1给出了将一个VM及其vTPM从一个平台(图中称之为源平台)迁移到另外一个平台(图中称之为目标平台)时进行信息交换的顺序。根据2.1节划分的4个阶段详细描述各个阶段的信息交互情况。
阶段1:安全会话建立
阶段1中,源平台和目标平台相互认证,并且协商用于保护接下来的数据交换的机密性和完整性的密码方案。密码学上保证机密性的正确实施,通常有两种方法——公钥加密和对称密钥加密。由于在保护大批量数据传输的机密性方面,对称密钥加密的有效性较高,密码学上通常使用公钥密码的方法来交换对称密钥,然后再将对称密钥用于大批量数据的加密传输。本协议也使用了此方法。另外,密码学上通常使用数字签名、经过哈希的消息认证码(HMAC)、检验和等方法来确保传输数据的完整性,本协议采用HMAC方法。
本文使用TLS握手协议为接下来待传输的数据获取密钥,以确保数据的机密性和完整性。握手协议将会产生两个对称密钥——Kenc和Kmac,这两个密钥是由源和目标平台在握手过程中使用交换的信息分别计算出来的,Kenc用于加密(使用对称密码,例如RC4、128 bit的AE3或者3DES),Kmac则用于使用SHA1创建HMACs,以确保完整性。此阶段之后每一个交换消息都将使用Kenc进行加密,而HMAC则仅在VM-vTPM传输之前与加密报文相连,源和目标平台仅接受具有有效HMACs的报文。
阶段2:对目标平台的远程证明
阶段1建立了一个安全会话通道,用于保护阶段2进行交换的所有报文的机密性和完整性。由于信任目标提供者(源平台)不会执行重放攻击,因此只需要在证明阶段确保报文的新鲜性以阻止第三方重放旧的配置。
在本阶段首先由源平台向目标平台发出远程证明请求Attest_reqs,要求获取目标平台的完整性信息,以判断目标平台的安全等级。为了确保报文的新鲜性,在阶段I之后,源平台将产生一个时间戳Ns1,并且将其与证明请求一起发送给目标平台。目标平台接收到包含证明请求的报文之后,首先验证其HMAC的有效性,然后通过vTPM管理模块与硬件TPM进行交互,得到与目标平台TCB相关联的PCRs签名值,将其与源平台时间戳Ns1一起,使用目标平台身份证明密钥AIKd对其进行签名,并创建一个新的目标平台时间戳Nd1,随此签名值一起加密发送回源平台。源平台接收到目标平台发送回来的报文之后,首先验证HMAC有效性及时间戳的新鲜性,然后验证目标平台的完整性及安全等级。如果验证通过,则锁定VM及其vTPM以确保后面要进行的工作不会被打断或者是被进一步修改。VM的锁定由虚拟机监控器实现,vTPM的锁定则需要由管理员启动vTPM管理模块来实现。例如, 在Xen中就需要由管理员通过TPM_LockInstance命令来启动vTPM管理模块实现对vTPM状态的锁定。与此同时,发送SVR_ATT_OK报文给目标平台。否则,发送SVR_ATT_FAILED给目标平台以告知迁移发生错误,并终止进一步的迁移操作。
阶段3: vTPM及VM传输
需要说明的是,在此阶段,vTPM及VM传输的具体实施要依赖于监控程序及TPM虚拟化的具体实施方案。但是,不管在哪种情况下,锁定的VM及其vTPM都是要联系在一起的,并且是使用Kenc进行加密过的(加密的结果为EncKenc(VM||vTPM))。结果报文与Nd1一起形成m4,然后再使用Kmac对m4进行相应的HMAC运算,并且将运算结果与m4一起传输给目标平台。时间戳Nd1用于阻止重放加密数据到目标平台。本协议中,限制每一次会话只能传输一个VM-vTPM,以避免追踪不同的VM-vTPM到同一个物理平台。
接收到报文之后,目标平台首先验证HMAC及时间戳,以确保在传输过程中VM及vTPM未受到任何篡改及伪造,若验证成功,则引进VM及vTPM,并为其指派需要的资源,且发送DONE报文给源平台,以告知源平台目标平台已成功引进VM及其vTPM。否则,删除接收到的报文,并且发送IMPORT_FAILED给源平台,以告知源平台迁移过程中发生了异常,需要中止此次迁移。
阶段4:在源平台上删除并且在目标平台上恢复VM及其vTPM
一旦接收到来自目标平台的DONE报文,源平台将会删除VM及其vTPM。但是,如果它接收的是一个IMPORT_FAILED报文,则不会删除VM及其vTPM。源平台在删除VM及其vTPM之后,将会通知目标平台迁移已经完成,然后再由目标平台恢复VM及其vTPM。VM的恢复由监控程序完成,而vTPM的恢复则依赖于所选择的TPM虚拟化解决方案,例外如在当前的Xen监控程序对TPM的虚拟化解决方案中,就是通过修改迁移到目标平台上的vTPM实例状态数据中的低位PCRs寄存器的值为目标平台本地TCB的配置和属性信息来恢复vTPM状态的。
2.3 迁移过程中的vTPM密钥保护
TPM规范[2]规定将TPM中的存储根密钥(SRK)作为其密钥体系的根密钥,所产生的每一个密钥的私钥都必须由其父密钥对其进行加密。在vTPM的设计过程中,需要为vTPM实例创建一套独立的密钥体系,一方面可以加快密钥的产生过程,另一方面,也可以简化vTPM实例的迁移过程。vTPM密钥层次的设计是TPM虚拟化应该考虑的问题,不是本文的重点,这里,仅对VM-vTPM迁移过程中的密钥保护进行相应地说明。
在VM-vTPM的迁移过程中,应该要确保vTPM密钥能够安全可靠地传输到目标平台,并且能够在目标平台上使用,以避免在VM-vTPM迁移过程中遭受攻击者的未授权修改,进而导致目标平台上应用程序拒绝vTPM服务。本文选择使用一个受硬件TPM保护的对称密钥对vTPM密钥体系实施保护。在迁移之前首先对这些密钥层次的哈希值进行加密/密封,而在目标平台重新获取密钥层次时,通过验证其哈希值,检测vTPM的密钥层次是否被篡改,进而确保vTPM密钥层次能够安全可靠地传输到目标平台,供目标平台上的应用程序使用。
2.4 协议评估
根据安全需求,对上面的协议进行了简单的评估:
(1)VM-vTPM迁移到一个安全可信的目标平台
协议通过TLS握手协议,在源和目标平台之间建立了一个经过认证的安全通道,并且在实际传输之前,阶段II实施了对目标平台的远程证明,可以阻止将VM-vTPM迁移到一个不安全的平台,从而确保VM-vTPM迁移到一个安全可信的目标平台。
(2)安全VM-vTPM关联
协议通过在受相同HMAC保护的同一报文中同时加密传输VM及其vTPM,实现了VM及其vTPM的隐式关联,保护了VM-vTPM迁移的机密性和完整性。
(3)VM-vTPM迁移的机密性和完整性保护
协议在阶段1建立安全通道的同时产生了一个仅对源和目标平台已知的对称加密密钥和HMACs,所有的报文在实际传输之前均需要使用这个对称加密密钥进行加密,从而保证了传输数据的机密性。同时,通过使用HMACs可以发现VM/vTPM在传输过程中的任一改变,进而确保传输数据的完整性。
(4)VM-vTPM迁移的抗重放攻击
协议中VM-vTPM是加密传输的,攻击者不能访问VM/vTPM的内容,但可以记录并在稍后重放同一VM-vTPM对到目标平台。协议的每一步都使用了时间戳来保证传输报文的新鲜性,避免了攻击者在不被检测到的情况下将一个旧的加密报文重放到目标平台,也即阻止了攻击者的重放攻击。
(5)迁移的原子性
原子性旨在阻止VM-vTPM副本的产生以及数据的丢失。协议通过在VM-vTPM成功迁移之后删除源平台上的VM-vTPM对,避免了产生VM-vTPM的多余拷贝。另外,通过在迁移失败的情况下删除目标平台上接收到的VM-vTPM对并提供相应的恢复机制,避免了数据的丢失,进而保证了迁移过程的原子性。
3 基于Xen的VM-vTPM迁移协议实现
本文选择Xen监控程序来探讨VM-vTPM迁移协议的实现,原因是:(1) Xen是开源的,它具有一个良好的支持框架,在研究项目中经常使用;(2) Xen支持VM迁移并且现有的Xen已经缺省配置了vTPM体系结构。
本文选择在VM内运行vTPM实例,这种方法比在Xen的Dom0内运行vTPM实例的安全性要高,并且可以避免VM-vTPM迁移后重新关联VM及其vTPM所引发的身份冲突问题。而且,简化了Dom0的代码复杂度,提高了Xen的执行效率。
在迁移源和目标平台之间,本文使用OpenSSL创建一个安全的连接,并且在源和目标平台上都安装了一个自我签名的CA证书,用于签名其公钥证书,以实现源和目标平台的双向认证,并且产生相应的主密钥和会话密钥。
由于目前尚不能获取由隐私CA和有效PCR值组成的远程证明框架,因此,本文选择使用一个测试隐私CA和PCR一起来实现目标平台的远程证明。
至于VM-vTPM的绑定,协议规定一次会话仅传输一个VM-vTPM对。
本文比较了Xen原有vTPM迁移协议与本文所提出的安全VM-vTPM迁移协议在源和目标平台上的性能开支,如表1所示。
相比较于Xen原有的vTPM迁移协议,本文的安全VM-vTPM迁移协议所消耗的总迁移时间比原有的Xen迁移所消耗的时间多出6 s~11 s,这个性能开支很可能是由于在迁移之前建立安全迁移通道所引发的[9]。下一步,将具体分析协议各阶段消耗的时间,并且考虑不同的密码算法以及不同的vTPM设计方案对迁移协议的性能影响,以期在确保协议安全的同时尽可能地降低时间开销。
参考文献
[1] GARFINKEL T, MENDEL R. When virtual is harder than real: security challenges in virtual machine based computing environments[C]. Proc of the 10th Workshop on Hot Topics in Operating Systems. Berkeley, CA:USENIX Association, 2005:210-217.
[2] TCG software stack specifications V1.2[DB/OL].http://www.trustedcomputing.com/.
[3] SAPUNTZAKIS C P, CHANDRA R. Optimizing the migration of virtual computers[C]. Proceedings of the 5th symposium on os security, 2002:377-390.
[4] BERGER S, KENNETH. vTPM: virtualizing the trusted platform module[C]. Proceedings of the 15th conference onUSENIX Security Symposium, 2006:305-320.
[5] STUMPF F, ECKERT C. Enhancing trusted platform modules with hardware-based virtualization techniques[C]. Proceedings of the 2008 Second International Conference on Emerging Security Information, p1-9, 2008.
[6] Xen的源码[OB/OL]. http://xenbits.xensource.com/.
[7] SADEGHI A R, STUBLE C. Property-based tpm virtualization[C]. Proceedings of the 11th international conference on Information Security, 2008:1-16.
[8] Chen Liqun, LANDFERMANN R, STUBLE C. A protocol for property-based attestation[C]. Proceedings of the first ACM workshop on Scable trusted computing, 2006:7-16.
[9] STUMPF F, BENZ M, ECKERT C. An approach to a Trustworthy System Architecture Using Virtualization[C]. ATC 2007, 2007:191-202.