基于标签的vTPM私密信息保护方案

2018-12-19 07:11陈兴蜀王伟金鑫
通信学报 2018年11期
关键词:密钥虚拟化加密

陈兴蜀,王伟,金鑫



基于标签的vTPM私密信息保护方案

陈兴蜀1,2,王伟1,3,金鑫1,3

(1. 四川大学网络空间安全研究院,四川 成都 610065; 2. 四川大学网络空间安全学院,四川 成都 610065;3. 四川大学计算机学院,四川 成都 610065)

虚拟可信平台模块是可信计算技术虚拟化的重要组件。vTPM的私密信息存在被窃取、滥用的风险,为此,提出一种基于标签的安全保护方案。首先,为每个虚拟机建立vTPM标签,标签包括签名信息、加密信息、度量信息和状态信息。然后,基于vTPM标签的状态信息设计安全增强的vTPM动态迁移协议,保障迁移前后vTPM私密信息的机密性、完整性以及虚拟机与vTPM实例关联关系的一致性。实验表明,所提方案能够有效保护vTPM的私密信息,并且给虚拟机动态迁移带来的性能开销只有19.36%。

可信计算;虚拟可信平台模块;TPM2.0;动态迁移

1 引言

虚拟化平台Xen、开源的系统虚拟化模块(KVM, kernel-based virtual machine)都有虚拟可信平台模块(vTPM, virtual trusted platform module)的实现方案,两者均涉及TPM(trusted platform module)非易失性信息的模拟。由于TPM的非易失性信息存储了背书密钥(EK, endorsement key)等非对称密钥、访问口令等私密信息,因此本文将vTPM的非易失性信息称为vTPM的私密信息。

vTPM私密信息面临的威胁主要表现在其机密性、完整性以及vTPM和虚拟机(VM, virtual machine)之间的关联关系上。文献[1]在Xen上采用设备驱动分离的方式实现vTPM,每个vTPM实例的私密信息存储于根vTPM实例中,利用根vTPM实例的存储密钥对其进行加密存储。Hypervisor维护了vTPM和虚拟机的关联列表,该vTPM-VM列表最终存放于domain0中,需要进一步的安全防护。文献[2]利用事务性同步扩展技术(TSX, transactional synchronization extension)对vTPM的私密信息进行安全防护,利用硬件CPU相关的AES主密钥进行加解密,由于该密钥不能被迁移,因此该方法不支持vTPM迁移。文献[3]借助于Intel的软件防护扩展技术(SGX, software guard extension)将vTPM的代码和数据存放到安全内存enclave中,利用基于enclave身份的密封机制加密存储vTPM私密信息,然而密封的数据不能被迁移到较新版本的应用或安全区中,不存在一种vTPM版本更新机制。文献[4]使用物理TPM2.0的可迁移密钥加密存储vTPM私密信息,基于可迁移密钥的复制机制实现了vTPM的安全迁移,但无法识别虚拟机配置为“vm_1_uuid,vm_2_镜像,vm_1_vTPM”下虚拟机1的vTPM私密信息被虚拟机2使用的情况。文献[5]建立管理中心维护vTPM和虚拟机的关联关系,建立vTPM实例文件的度量列表保证虚拟机关闭时vTPM私密信息的完整性,但无法保证虚拟机运行时vTPM私密信息的完整性。以上文献都没有提及虚拟机动态迁移中如何保护vTPM私密信息的安全。文献[6]提出一种基于KVM的vTPM动态迁移方案,但该方案只适用于配置共享存储的情况,而且没有关注迁移过程中vTPM的安全问题。文献[7]利用SGX技术的远程认证机制建立安全迁移信道,实现虚拟机(包括vTPM)的安全动态迁移,但是需要修改vTPM的源码结构,改变了原本迁移双方的信息交互方式。文献[8-9]在迁移协议中加入新的安全验证与密钥生成机制,增强vTPM动态迁移的安全。文献[10]提出一种位于TPM和vTPM之间的密钥层次来解决Xen上虚拟机迁移造成的vTPM密钥失效的问题,该方案仅适用于暂停−迁移−重启的迁移模式,这种迁移模式不是真正意义上的动态迁移。

本文针对本地存储和动态迁移两个阶段提出一种新的vTPM私密信息保护方案,主要贡献如下:1) 提出vTPM标签结构,利用物理TPM2.0保护vTPM私密信息的机密性、完整性以及vTPM和虚拟机的对应关系;2) 基于vTPM标签的状态属性,在不改变迁移双方信息交互方式的情况下,设计了安全增强的vTPM动态迁移协议;3) 实现了原型系统,并进行了功能和性能测试。

2 背景知识

2.1 KVM虚拟化平台的全虚拟化TPM

KVM虚拟化平台的TPM虚拟化技术主要有3类:TPM passthrough实现方式、基于libtpms[11]的全虚拟化TPM实现方式以及CUSE(character device in userspace)TPM[12]实现方式,其中,后两者属于全虚拟化TPM的实现方式。TPM passthrough实现方式允许虚拟机直接使用物理TPM,同一时刻物理TPM被单个虚拟机独占。基于libtpms的全虚拟化TPM(如图1(a)所示)在QEMU(quick emulator)内部使用libtpms函数库模拟物理TPM,可同时为每个虚拟机提供单独的vTPM设备,与物理TPM完全脱离关系。CUSE TPM(如图1(b)所示)是基于libtpms的全虚拟化TPM的变种,在QEMU外部使用libtpms函数库来模拟物理TPM,在宿主机上创建用户空间字符设备/dev/vtpm0,提供IOCTL访问接口,在QEMU内部的CUSE TPM驱动利用该IOCTL访问vTPM,与物理TPM完全脱离关系。

图1 全虚拟化TPM

KVM虚拟化平台的全虚拟化TPM有如下不足:1) 采用libtpms函数库模拟物理TPM的全部功能,与物理TPM完全脱离关系;2) 将vTPM私密信息存储在宿主机文件非易失存储器(NVRAM, non-volatile RAM)中,没有添加任何安全措施;3)通过QEMU的命令行参数加载对应的vTPM实例,vTPM和VM之间的关联关系薄弱。

2.2 TPM2.0的密钥结构

TPM2.0中包含3个持久性密钥层次[13],即背书层次(endorsement hierarchy)、存储层次(storage hierarchy)和平台层次(platform hierarchy),与一个临时性密钥,即层次−空层次(NULL hierarchy)。每个密钥层次对应一个私有种子,即大随机数。背书私有种子(EPS, endorsement primary seed)产生背书密钥(EK, endorsement keys),存储私有种子(SPS, storage primary seed)产生存储根密钥(SRK, storage root keys),平台私有种子(PPS, platform primary seed)由平台固件使用,空私有种子(NS, NULL seed)是每次系统重启时产生的随机数。

本文将TPM2.0存储根密钥的两个非对称的不可迁移子密钥——RSA_local和RSA_mig,分别用于本地存储和动态迁移过程中的vTPM私密信息保护,如图2所示。另外,RSA_mig需要被CA签名,形成对应的数字证书,用于vTPM动态迁移安全增强。

图2 TPM2.0密钥层次结构

3 方案设计

3.1 设计原则

文献[2,14-16]在vTPM与虚拟机的关联关系、vTPM与其可信计算基(TCB, trusted computing base)[17]的依赖关系、vTPM私密信息存储、基于证书的信任链扩展、vTPM的密钥管理、vTPM的迁移等6个方面对vTPM的实现提出了安全要求。

结合上述文献中的安全要求,本文认为KVM下的vTPM私密信息保护应该满足以下3点设计原则需求:1) vTPM私密信息在本地存储时的机密性、完整性由硬件TPM保证;2) vTPM和虚拟机保持一一对应的强关联关系;3) vTPM支持动态迁移,并且迁移不会破坏以上两种安全需求。

3.2 vTPM标签

vTPM标签(vTPM_label)是本文提出的一种数据结构,是vTPM私密信息本地存储保护方案和动态迁移保护方案的核心元素。vTPM标签的结构类似于数字证书,其完整性受硬件TPM2.0的签名保护。vTPM标签结构及大小如图3所示。

图3 vTPM标签结构

vTPM标签主要内容描述如下。

1) 状态(status):vTPM标签有两种存在状态,即本地状态和迁移状态;2) 有效期(time):在时间段[start,end]内vTPM标签是有效的,过期的vTPM标签需要被重新生成;3) 加密信息(secret):vTPM私密信息保护所使用key的密文,利用物理TPM的密钥RSA_local对key进行加密;4) UUID(universally unique identifier)的hash值(uuid_hash):UUID是虚拟机在云平台中的唯一标识,UUID的hash值建立了vTPM标签与虚拟机之间的一一对应关系,同时secret字段建立了vTPM标签和vTPM之间的一一对应关系,最终建立起vTPM和虚拟机之间的一一对应关系;5) QEMU度量值(qemu_ digest):在KVM虚拟化平台中,QEMU是虚拟机监控器(VMM, virtual machine monitor)的一部分,同时也是vTPM实例的访问者,该字段是对QEMU代码段进行散列运算得到的值,作为vTPM实例的访问者身份认证的证据,防止被篡改劫持的QEMU或其他恶意程序使用vTPM实例;6) 签名算法(alg):标签签名值的生成算法;7) 标签的签名值(sig):由TPM2.0的密钥RSA_local对以上字段进行签名得到的值,防止标签被恶意篡改。

vTPM标签存在两种状态:本地状态和迁移状态。其中,迁移状态是一种临时状态,只出现在迁移的过程中。

本地状态是指该vTPM标签的sig字段由本地TPM2.0的密钥RSA_local生成,标签中的secret字段由本地TPM2.0密钥RSA_local加密,即vTPM_label.sig=RSA_local.privsign(vTPM_label),vTPM_label.secret= RSA_local.pubencrypt(key)。

迁移状态是指该vTPM标签的sig字段由迁移源主机TPM2.0的密钥RSA_mig生成,标签中的secret字段由迁移目的主机TPM2.0的密钥RSA _mig加密,即vTPM_label.sig=src.RSA_mig.privsign(vTPM_label),vTPM_label.secret=dst.RSA_mig. pubencrypt(key)。

其中,src、dst分别代表迁移源主机和迁移目的主机,pub和priv分别表示公钥和私钥。由于vTPM标签两种状态之间可以转换,此处给出vTPM标签状态的转换函数exchange(vTPM_label)的伪代码,如算法1所示。

算法1 vTPM标签状态的转换函数exchange (vTPM_label)

输入 vTPM_label

输出 succ或者fail

if vTPM_label.status==本地状态 then:

if RSA_ local. pubverify(vTPM_label.sig) == succ then:

KEY = RSA_local. Pubdecrypt(vTPM_label. secret)

vTPM_label.secret = dst.RSA_mig.pubencrypt(KEY)

vTPM_label.sig = local.RSA_mig.privsign(vTPM _label)

vTPM_label.status = 迁移状态

return succ

else if vTPM_label.status = 迁移状态 then

if src.RSA_mig. pubverify(vTPM_label.sig)== succ then

KEY = local RSA_mig.privdecrypt(vTPM_ label. secret)

vTPM_label.secret= RSA_local.pubencrypt(KEY)

vTPM_label.sig = RSA_local. privsign(vTPM _label)

vTPM_label.status = 本地状态

return succ

return fail

由于一台物理机可以运行多个虚拟机,如果每个虚拟机对应一个vTPM实例,便会有多个vTPM标签需要管理。为了减小由vTPM标签存储与管理带来的复杂性和攻击面,本文方案将vTPM标签存储于对应的虚拟机镜像中,在减小管理复杂度的同时也增加了vTPM和VM之间的关联强度。

QCOW2(QEMU copy on write version 2)[18]是QEMU模拟器官方支持的虚拟机镜像文件格式。一个QCOW2文件被划分为固定大小的块,这些固定大小的块被称为cluster,每个cluster的大小必须在512 B~2 MB之间,而且必须是512 B的整数倍,默认的cluster大小为64 kB。其中,QCOW2文件的第一个cluster用于存储头部信息和头部扩展信息,如图4所示。QCOW2的头部信息占据72 B,紧随其后的是头部扩展信息。每个头部拓展包含3个字段:type、length、data,其中,type字段和length字段各占据4 B,data字段的长度由length字段指定,type=0x00000000是头部扩展的结束标志。本文构造一个QCOW2的头部扩展{0x12345678, 368, vTPM标签+padding},用来存储vTPM标签,因为头部扩展是8 B对齐的,于是通过填充0x00扩展vTPM标签为8 B的整数倍。

图4 QCOW2的第一个cluster

3.3 本地存储保护方案

3.3.1 总体设计

针对vTPM在本地存储上的安全问题,本文设计了vTPM私密信息本地存储保护方案。方案包括3个组件:本地存储保护代理、vTPM标签、本地存储保护内核部分,如图5所示。

本地存储保护代理位于QEMU进程空间内部,针对vTPM私密信息的机密性、完整性进行实时的保护,最终将vTPM私密信息加密存储在非易失性随机访问存储(NVRAM, non-volatile RAM)文件中,所需要的key在虚拟机启动时向本地存储保护内核部分请求。

vTPM标签是上文所述的一种数据结构,受控于内核中的vTPM标签管理子模块。

本地存储保护内核部分包括4个子模块:vTPM标签管理模块、vTPM访问控制模块、对应关系检测模块和TPM命令管理模块。vTPM标签管理子模块提供vTPM标签的生成、完整性和有效期验证、更新和销毁等功能。vTPM访问控制子模块根据vTPM标签的qemu_digest字段检测访问者是否合法,因此,当本地存储保护代理请求key时,它是第一个接收访问请求的子模块。对应关系检测子模块根据vTPM标签中的“UUID”字段检测访问者是否为该标签对应的虚拟机。TPM命令管理子模块向vTPM标签管理子模块提供TPM2.0的各种服务,尤其是密钥RSA_local和RSA_mig的加解密、签名、验证等功能。

另外,tpm_crb(TPM2.0 command response buffer)[19]是TPM2.0在内核中的驱动程序。用户层TCG软件栈(TSS, TCG software stack)通过该驱动操作TPM2.0,使TPM命令管理子模块对tpm_crb驱动向上层TSS提供的IOCTL接口进行挂钩,截取TSS发送给tpm_crb的TPM命令,按照一定的规则对部分TPM命令进行过滤,防止管理员的误操作,保护本文方案所使用的物理TPM密钥的安全。

图5 本地存储保护方案

3.3.2 本地存储保护代理

本地存储保护代理包括两个部分:完整性保护引擎和机密性保护引擎,如图6所示。

完整性保护引擎可以有效地识别出虚拟机加载的vTPM私密信息是否被恶意篡改。该引擎扩展vTPM私密信息的存储结构,新添加一个hash[]数组,用于存储对vTPM私密信息进行散列计算得到的值,然后使用物理TPM的密钥RSA_local对该数组进行加密,防止其被恶意篡改。

机密性保护引擎将vTPM私密信息加密存储在NVRAM中,防止信息泄露。因为vTPM私密信息是vTPM的非易失性信息,所以长度是有限的(本实验平台上,其最大长度为0x4 000 B),再加上引擎使用AES加密算法,因此加解密过程带来的性能消耗较小,实验证明平均一次加密耗时为0.1 ms左右。

在虚拟机整个生命周期内,vTPM对NVRAM的读写是有规律的。虚拟机启动时初始化vTPM,此时会读取NVRAM一次,vTPM私密信息成功加载后,vTPM便不再读取NVRAM,然而当vTPM执行TPM命令导致加载的vTPM私密信息发生变化时,vTPM私密信息便会被覆盖式地写入NVRAM。结合对以上两种引擎的分析可知,在虚拟机运行中,频繁的操作是添加hash和加密,如图6所示,对于系统的性能影响较小。

图6 本地存储保护代理

3.3.3 vTPM访问控制

vTPM访问控制子模块对访问者身份进行验证,如图7所示。假设访问者为进程V,则主要步骤为:1) 获取V的启动参数args,按照QEMU的参数格式解析V.args,找到镜像文件路径image_path;2) 获取V打开的文件列表open_f_list,检查image_path是否在open_f_list中,通过检查则表示找到了镜像文件image_path;3) 调用vTPM标签管理子模块的功能,对image_path中的vTPM标签进行完整性和有效期验证,然后提取qemu_digest字段;4) 度量V的代码段得到V.hash;5) 对比V.hash和vTPM_label.qemu_digest,验证通过则交给子模块对应关系检测,否则返回错误值。

图7 vTPM访问控制

3.3.4 vTPM和虚拟机的一一对应关系

对应关系检测子模块验证vTPM和虚拟机的一一对应关系,如图8所示,该检测的前提是访问者通过了vTPM访问控制子模块的验证。假设访问者为V,则主要步骤为:1) 获取V的启动参数args,按照QEMU的参数格式解析V.args,找到虚拟机唯一标识符——UUID;2) 调用vTPM标签管理子模块的功能,对镜像文件中的vTPM标签进行完整性和有效期验证,然后提取uuid_hash字段;3) 对比hash(UUID)和vTPM_label.uuid_hash,验证通过则认为对应关系正确,否则返回错误值。

图8 对应关系检测

3.4 动态迁移保护方案

3.4.1 迁移流程

动态迁移是虚拟化平台的一项基本功能。为了保证动态迁移不会破坏vTPM私密信息和易失性信息的安全需求,即机密性、完整性、vTPM和虚拟机的一一对应关系,本文利用vTPM标签的状态信息设计了动态迁移保护方案,如图9所示。相比本地存储保护方案,本方案新增了动态迁移保护代理子模块和迁移管理子模块。

迁移管理子模块与本地存储保护内核部分进行交互,利用算法1转换vTPM标签的状态。

图9 vTPM动态迁移框架

动态迁移保护代理子模块为虚拟机动态迁移增加了3个新的阶段,分别负责安全迁移vTPM的易失性信息、私密信息(NVRAM)和vTPM标签。1) 同步vTPM设备状态(即vTPM易失性信息)阶段,动态迁移保护代理子模块注册vTPM设备为可迁移设备,从QEMU进程空间中收集vTPM的易失性信息,封装到数据结构vTPM_status中,作为虚拟机设备状态的一部分进行迁移;2) vTPM标签拷贝阶段,动态迁移保护代理子模块从虚拟机镜像中收集vTPM标签,与迁移管理子模块交互进行vTPM标签状态的转换,然后封装vTPM标签到数据结构vTPM_label中,作为虚拟机镜像的一部分进行迁移;3) NVRAM拷贝阶段,块设备的迁移由QEMU的init_ blk_migration函数进行初始化,该函数会检查虚拟机所有的块设备文件,包括vTPM的块设备文件NVRAM,一旦vTPM被注册为可迁移设备,NVRAM便和虚拟机镜像文件采用相同的脏页重传机制进行动态迁移。

图10 vTPM动态迁移协议

3.4.2 迁移协议

利用vTPM标签的状态信息,本文设计了安全的vTPM动态迁移协议,如图10所示。该协议借助于普通虚拟机动态迁移的通道传输vTPM相关信息,不改变迁移源平台和迁移目的平台之间的信息交互方式。

本文对协议中涉及的操作原语定义如下。

update(secret, vTPM_label):更新vTPM标签的secret字段。

update(time,vTPM_label):更新vTPM标签的time字段,更新后的time.start为当前时间。

request_cert(ip):向CA查询某个IP对应的数字证书,迁移源平台IP为src.ip,迁移目的平台IP为dst.ip。

exchange(vTPM_label):转换vTPM标签的状态,伪代码如算法1所示。

transfer(content):普通虚拟机动态迁移使用的传输函数,传输内容为content。

encrypt(content,key):使用key加密内容content。

decrypt(package,key):使用key解密内容package。

store(vTPM_status):收集vTPM的易失性信息,存储到数据结构vTPM_status中。

load(vTPM_status):从数据结构vTPM_status中提取vTPM的易失性信息,并加载到vTPM设备状态中。

hash(content):生成content的hash值。

validate(vTPM_status, package):验证package中vTPM_status的hash值。

reload(NVRAM):重新加载NVRAM。

该协议运行的前提是:1) 迁移源平台和目的平台分别向CA申请生成密钥RSA_mig对应的数字证书,以便在迁移过程中,迁移源平台和目的平台能够向CA查询对方的数字证书,进行双方身份的认证;2) 迁移源平台和目的平台保持时间同步,用于防止旧的vTPM标签被重放。

协议运行过程主要步骤如下。

1) 目的平台启动空壳虚拟机和空壳vTPM,然后暂停虚拟机运行,等待源端虚拟机的迁入,此时记录当前时间为1。

2) 源平台向目的平台发起迁移请求,双方初始化迁移,建立连接。

3) 源平台更新vTPM标签中的secret域,保证每次迁移过程中,加密使用的key值都是不同的,由于该key值被用于加密迁移过程中传输的vTPM相关信息,因此该操作可以防止旧的vTPM相关信息的重放。

4) 源平台更新vTPM标签中的time域,保证每次迁移过程中都有time.start,这样在目的平台对vTPM标签的time.start进行检查,便可以防止旧的vTPM标签的重放。

5) 源平台使用RSA_local.priv解密vTPM标签的secret域,得到key值。

6) 源平台向CA查询目的平台的数字证书,CA返回目的平台的数字证书,提取对应目的平台RSA_mig的公钥dst.RSA_mig.pub。

7) 源平台利用dst.RSA_mig.pub转换vTPM标签为迁移状态。

8) 源平台利用脏页重传的机制,开始传输虚拟机的内存、镜像文件以及NVRAM,此时NVRAM中的信息处于加密状态。

9) 源平台向目的平台传输vTPM标签。

10) 目的平台检查vTPM标签的time.start,防止旧的vTPM标签的重放。

11) 目的平台向CA查询源平台的数字证书,CA返回源平台的数字证书,提取对应源平台RSA_mig的公钥src.RSA_mig.pub。

12) 目的平台利用src.RSA_mig.pub转换vTPM标签为本地状态。

13) 目的平台使用RSA_local.priv解密vTPM标签的secret域,得到key值。

14) 源平台暂停虚拟机运行,并开始传输虚拟机的设备状态VM_device_status。

15) 源平台收集vTPM的设备状态(即vTPM易失性信息),存储在数据结构vTPM_status中,计算vTPM _ status的hash值,然后将vTPM _ status ||hash (vTPM_status)打包成package,使用key对其进行加密。

16) 源平台传输加密后的package。

17) 目的平台使用key值解密package,得到vTPM_status,然后校验vTPM_status的hash值。

18) 目的平台重新加载NVRAM,同步源平台虚拟机暂停前对vTPM私密信息的所有修改。

19) 目的平台加载vTPM_status,恢复vTPM的设备状态。

20) 迁移结束,源平台销毁虚拟机,目的平台运行虚拟机。

3.4.3 RSA_mig数字证书的生成

密钥RSA_mig是TPM2.0的不可迁移密钥,其工作原理和AIK密钥类似。因此,本文借助AIK数字证书的生成协议[20]来生成密钥RSA_mig的数字证书。

密钥RSA_mig的数字证书只需要生成一次即可,因此,在部署整个系统之前便可以完成所有硬件TPM2.0芯片的RSA_mig数字证书的生成工作。

如图11所示,CA指证书颁发机构,owner指硬件TPM2.0的授权者,RSA_mig证书的生成协议过程如下。

图11 RSA_mig数字证书的生成

1) 使用TPM2_Create创建RSA_mig密钥,使用TPM2_EvictControl将RSA_mig密钥持久化存储到TPM2.0芯片中。

2) 返回成功信息。

3) 使用TPM2_ReadPublic提取RSA_mig的公钥。

4) TPM2.0芯片返回RSA_mig的公钥。

5) 利用RSA_mig的公钥信息,生成证书签名请求文件RSA_mig.csr。

6) 使用TPM2_Sign生成RSA_mig.csr的签名值,SRSA_mig=signRSA_mig(RSA_mig.csr)。

7) 返回签名值SRSA_mig。

8) 填充RSA_mig.csr中的签名值SRSA_mig,收集背书证书cred,生成对称密钥K和随机数nonce。利用K加密需要发送给CA的信息,而K则由CA的公钥pkCA进行加密,即msg=(encK(RSA_ mig.csr,cred,Nonce),encpkCA(K))。

9) 发送msg。

10) 用CA私钥解密并验证RSA_mig.csr和cred,签发RSA_mig证书,生成对称密钥K′,使用K′加密传输的信息,而K′则由EK的公钥pkEK进行加密,respCA=(encpkEK(K′), encK′(nonce, RSA _mig.cert));然后,CA将密钥RSA_mig的数字证书加入自己的证书列表中。

11) 发送respCA。

12) 执行TPM2_RSA_Decrypt,使用EK私钥解密respCA得到K′。

13) 返回K′。

14) Owner利用K′解密验证Nonce,得到证书RSA_mig.cert。

表1 系统配置

4 实现与测试

4.1 系统实现

本文基于KVM虚拟化平台,通过qemu2.3.0、模拟TPM2.0功能的开源libtpms、支持libtpms的qemu-patch实现了基于libtpms的全虚拟化TPM2.0。以表1所列组件作为基础的实验环境,设计并实现了vTPM私密信息保护方案,同时在控制节点上部署CA,并对本文方案进行功能测试和性能测试。另外,动态迁移是在没有部署共享存储系统的环境下进行的。

4.2 功能测试

针对vTPM私密信息完整性保护引擎、机密性保护引擎、vTPM和VM之间的一一对应关系进行功能测试。

在虚拟机内执行TPM命令“tpm2_ takeownership- oAAA-l BBB-e CCC”,如图12(a)所示。在没有vTPM私密信息机密性保护引擎的情况下,由于vTPM私密信息的明文存储,通过分析NVRAM可以得到vTPM2.0的tpm owner授权信息。而图12(b)显示机密性保护引擎可以有效防止vTPM2.0私密信息泄露。

首先建立两个虚拟机VM_1和VM_2以及对应的vTPM_1和vTPM_2,VM_1和VM_2的UUID分别是UUID_1和UUID_2。然后,分别使用“VM_1的镜像、vTPM_2、UUID_1”“VM_1的镜像、vTPM_1、UUID_2”“VM_2的镜像、vTPM_1、UUID_1”这3种组合来启动虚拟机,结果如图12(c)~图12(e)所示。实验结果证明该方案可以有效保证vTPM、VM之间的一一对应关系,同时图12(c)也证明了完整性保护引擎可以有效识别出vTPM私密信息的不同。

图12 功能测试

4.3 性能测试

针对虚拟机的动态迁移进行性能测试,实验环境建立在没有配置共享存储的情况下。为了减小虚拟机镜像传输带来的影响,性能测试使用大小固定为4 GB的虚拟机镜像。测试的虚拟机有3种:VM、vTPM-VM、添加vTPM私密信息保护方案的vTPM-VM(即图13中SvTPM-VM),分别记录动态迁移的总用时、用户可感知的停机时间的变化。本文设置5组不同的虚拟机内存,在每组设置中对以上3种虚拟机分别执行10次动态迁移,计算每种虚拟机动态迁移用时的平均值,结果如图13所示。

本文提出的vTPM私密信息保护方案在VM动态迁移过程中添加了3个新阶段:NVRAM拷贝、vTPM标签拷贝、同步vTPM设备状态(即vTPM易失性信息)。其中,NVRAM拷贝和vTPM标签拷贝这两个阶段处于虚拟机运行阶段,不会对用户可感知的停机时间造成影响,但是会增加动态迁移的总体用时。由图13(a)可知,SvTPM-VM比vTPM-VM平均增加耗时2 373.67 ms,平均增长率为1.65%,该差异是新增vTPM标签拷贝阶段的平均耗时;vTPM-VM比VM平均增加耗时379.80 ms,平均增长率为0.27%,两者总体用时非常接近,该差异是新增NVRAM拷贝阶段的平均耗时。另外,同步vTPM设备状态(即vTPM易失性信息)阶段会增加用户可感知的停机时间。由图13(b)可知,SvTPM-VM比vTPM-VM平均增加耗时27.22 ms,平均增长率为19.36%,增加的耗时不会影响正常虚拟机用户使用;vTPM-VM比VM平均增加耗时0.116 ms,平均增加率为0.41%,两者非常接近。

图13 性能测试

5 结束语

本文设计了一种数据结构——vTPM标签,借助于物理TPM2.0的密码算法,提出一种新的vTPM私密信息保护方案。该方案分为本地保护和动态迁移保护两个部分。本地保护方案使用vTPM标签的各个字段加密存储vTPM的私密信息、校验其完整性、绑定虚拟机和vTPM的对应关系,有效实现了3.1节提出的设计原则1)和设计原则2);动态迁移保护方案使用vTPM标签的状态属性,在不影响正常虚拟机动态迁移过程的情况下实现了vTPM的安全动态迁移,实现了3.1节提出的设计原则3)。通过实验证明了所提方案能够有效保护vTPM私密信息在本地存储和动态迁移过程中的安全属性,同时不会带来较大的性能消耗。

[1] BERGER S, CÁCERES R, GOLDMAN K A, et al. vTPM: virtualizing the trusted platform module[C]//The 15th Conference on USENIX Security Symposium. 2006: 305-320.

[2] 严飞, 龚玉凤, 于钊. 基于硬件事务内存的vTPM安全保护方法: CN105678173[P]. 2016-06-15.

YAN F, GONG Y F, YU Z. vTPM security protection method based on hardware transaction memory[P]. CN105678173A, 2016-06-15.

[3] 严飞, 于钊, 张立强, 等. vTSE:一种基于SGX的vTPM安全增强方案[J]. 工程科学与技术, 2017, 49(2): 133-139.

YAN F, YU Z, ZHANG L Q, et al. vTSE: a solution of SGX-based vTPM secure enhancement[J]. Advanced Engineering Sciences, 2017, 49(2): 133-139.

[4] SHI Y, ZHAO B, YU Z, et al. A Security-improved scheme for virtual TPM based on KVM[J]. Wuhan University Journal of Natural Sciences, 2015, 20(6): 505-511.

[5] JIN X, CHEN X S, ZHAO C, et al. Trusted attestation architecture on an infrastructure-as-a-service[J]. Tsinghua Science and Technology, 2017, 22(5): 469-477.

[6] 黄宇晴, 赵波, 肖钰, 等. 一种基于KVM的vTPM虚拟机动态迁移方案[J]. 山东大学学报(理学版), 2017, 52(6): 69-75.

HUANG Y Q, ZHAO B, XIAO Y, et al. A vTPM-VM live migration scheme based on KVM[J]. Journal of Shandong University (Natural Science), 2017, 52(6): 69-75.

[7] 石源, 张焕国, 赵波, 等. 基于SGX的虚拟机动态迁移安全增强方法[J]. 通信学报, 2017, 38(9): 65-75.

SHI Y, ZHANG H G, ZHAO B, et al. Security-enhanced live migration based on SGX for virtual machine[J]. Journal on Communications, 2017, 38(9): 65-75.

[8] FAN P R, ZHAO B, SHI Y, et al. An improved vTPM-VM live migration protocol[J]. Wuhan University Journal of Natural Sciences, 2015, 20(6): 512-520.

[9] WAN X, ZHANG X F, CHEN L, et al. An improved vTPM migration protocol based trusted channel[C]//International Conference on Systems and Informatics. 2012: 871-875.

[10] DANEV B, MASTI R J, KARAME G O, et al. Enabling secure VM-VTPM migration in private clouds[C]//The 27th Annual Computer Security Applications Conference. 2011: 187-196.

[11] CHALLENER D, YODER K, CATHERMAN R, et al. A practical guide to trusted computing[M]. Beijing: China Machine Press, 2008.

[12] BERGER S, GOLDMAN K, PENDARAKIS D, et al. Scalable attestation: a step toward secure and trusted clouds[C]//IEEE International Conference on Cloud Engineering. 2015: 185-194.

[13] ARTHUR W, CHALLENER D, GOLDMAN K. A practical guide to TPM 2.0: using the trusted platform module in the new age of security[M]. Berkeley: Apress, 2015.

[14] CUCURULL J, GUASCH S. Virtual TPM for a secure cloud: fallacy or reality?[C]//The 13th Spanish Meeting on Cryptology and Information Security. Alicante. 2014: 197-202.

[15] 杨永娇, 严飞, 毛军鹏, 等. Ng-vTPM: 新一代TPM虚拟化框架设计[J]. 武汉大学学报(理学版), 2015, 61(2): 103-111.

YANG Y J, YAN F, MAO J P, et al. Ng-vTPM: a next generation virtualized TPM architecture[J]. Wuhan University Journal of Natural Sciences, 2015, 61(2): 103-111.

[16] 王丽娜, 高汉军, 余荣威. 基于信任扩展的可信虚拟执行环境构建方法研究[J]. 通信学报, 2011, 32(9): 1-8.

WANG L N, GAO H J, YU R W. Research of constructing trusted virtual execution environment based on trust extension[J]. Journal on Communications, 2011, 32(9): 1-8.

[17] HOHMUTH M, PETER M, H¨ARTIG H, et al. Reducing TCB size by using untrusted components—small kernels versus virtual-machine monitors[C]//The 11th workshop on ACM SIGOPS European Workshop. 2004: 22.

[18] RAZAVI K, KIELMANN T. Scalable virtual machine deployment using VM image caches[C]//The International Conference on High Performance Computing, Networking, Storage and Analysis. 2013: 65.

[19] MAYES K, MARKANTONAKIS K. Smart cards, tokens, security and applications[M]. New York: Springer Publishing, 2010.

[20] TCG Infrastructure Working Group. A CMC profile for AIK certificate enrollment[M]. Beaverton, Oregon: TCG, 2011.

Label-based protection scheme of vTPM secret

CHEN Xingshu1,2, WANG Wei1,3, JIN Xin1,3

1. Cybersecurity Research Institute, Sichuan University, Chengdu 610065, China 2. College of Cybersecurity, Sichuan University, Chengdu 610065, China 3. College of Computer Science, Sichuan University, Chengdu 610065, China

The virtual trusted platform module (vTPM) played an important role in virtualization of trusted computing. According to security problems of existed vTPM, a protection scheme based on vTPM label was proposed. Firstly, a vTPM label was created for each virtual machine. This label had four main components, signature information, encryption information, measurement information and status information. Then, the security-enhanced vTPM dynamic migration protocol based on vTPM label status information was designed, to ensure the security of vTPM during live migration based on status information of vTPM label. Experiments show that the proposed scheme can protect vTPM secrets effectively and the increased performance cost during live migration is only 19.36%.

trusted computing, virtual trusted platform module, TPM2.0, live migration

TP309.2

A

10.11959/j.issn.1000-436x.2018242

陈兴蜀(1968–),女,贵州六枝人,博士,四川大学教授、博士生导师,主要研究方向为云计算与大数据安全、可信计算与信息保障。

王伟(1992–),男,山东聊城人,四川大学硕士生,主要研究方向为可信计算、虚拟化安全。

金鑫(1976–),男,辽宁营口人,四川大学博士生,主要研究方向为可信计算、虚拟化安全。

2018−03−13;

2018−05−17

陈兴蜀,chenxsh@scu.edu.cn

国家自然科学基金资助项目(No.61802270, No.61802271)

The National Natural Science Foundation of China (No.61802270, No.61802271)

猜你喜欢
密钥虚拟化加密
一种新型离散忆阻混沌系统及其图像加密应用
幻中邂逅之金色密钥
幻中邂逅之金色密钥
密码系统中密钥的状态与保护*
一种基于熵的混沌加密小波变换水印算法
基于OpenStack虚拟化网络管理平台的设计与实现
TPM 2.0密钥迁移协议研究
对基于Docker的虚拟化技术的几点探讨
加密与解密
浅析虚拟化技术的安全保障