软件学报  2017, Vol. 28 Issue (10): 2782-2796   PDF    
虚拟可信平台模块动态信任扩展方法
余发江1,2, 陈列1, 张焕国1,2     
1. 武汉大学 计算机学院, 湖北 武汉 430072;
2. 软件工程国家重点实验室(武汉大学), 湖北 武汉 430072
摘要: 将可信计算技术应用到虚拟计算系统中,可以在云计算、网络功能虚拟化(network function virtualization,简称NFV)等场景下,提供基于硬件的可信保护功能.软件实现的虚拟可信平台模块(virtual trused platform module,简称vTPM)基于一个物理TPM(physical TPM,简称pTPM),可让每个虚拟机拥有自己专属的TPM,但需要将对pTPM的信任扩展到vTPM上.现有方法主要采用证书链来进行扩展,但在虚拟机及其vTPM被迁移后,需要重新申请vTPM的身份密钥证书,可能会存在大量的短命证书,成本较高,且不能及时撤销旧pTPM对vTPM的信任扩展,也不能提供前向安全保证.提出了一种vTPM动态信任扩展(dynamic trust extension,简称DTE)方法,以满足虚拟机频繁迁移的需求.DTE将vTPM看作是pTPM的一个代理,vTPM每次进行远程证明时,需从一个认证服务器(authenticaiton server,简称AS)处获得一个有效的时间令牌.DTE在vTPM和pTPM之间建立了紧密的安全绑定关系,同时又能明显区分两种不同安全强度的TPM.在DTE里,vTPM被迁移后,无需重新获取身份秘钥证书,旧pTPM可及时撤销对vTPM的信任扩展,而且DTE可提供前向安全性.从原型系统及其性能测试与分析来看,DTE是可行的.
关键词: 可信计算     可信平台模块(TPM)     虚拟可信平台模块(vTPM)     信任扩展    
Virtual Trusted Platform Module Dynamic Trust Extension
YU Fa-Jiang1,2, CHEN Lie1, ZHANG Huan-Guo1,2     
1. School of Computer, Wuhan University, Wuhan 430072, China;
2. State Key Laboratory of Software Engineering (Wuhan University), Wuhan 430072, China
Foundation item: Foundation item: National Basic Research Program of China (973) (2014CB340600); National Natural Science Foundation of China (61772384)
Abstract: The integration of trusted computing into virtual computing system can enable the hardware-based protection of trustworthiness in application areas such as cloud computing and network function virtualization (NFV).In a physical trusted platform module (pTPM) based virtual trusted platform module (vTPM), each virtual machine (VM) can be viewed as having its own private TPM.However, it is necessary to extend the trustworthiness of pTPM to vTPM so that a challenger can believe the vTPM is the root of trust of the VM.The existing techniques mainly use a certificate chain to build a trust link from pTPM to vTPM.But if these techniques were deployed in the scenario with frequent vTPM migrations, there would be very high cost of reacquiring new certificates for the migrated vTPM, moreover, pTPM couldn't revoke its trust extension in real time, and they couldn't provide forward security.This paper presents an approach of vTPM dynamic trust extension (DTE) to satisfy the requirements of frequent migrations.With DTE, vTPM is a delegation of the capability of signing attestation data from the underlying pTPM, with one valid time token issued by an authentication server (AS).DTE maintains a strong association between vTPM and its underlying pTPM, and has clear distinguishability between vTPM and pTPM because of the different security strength of the two types of TPM.In DTE, there is no need for vTPM to re-acquire identity key (IK) certificate(s) after migration, and pTPM can have a trust revocation in real time.Furthermore, DTE can provide forward security.Performance measurements and analysis of its prototype demonstrate that DTE is feasible.
Key words: trusted computing     trusted platform module (TPM)     virtual trusted platform module (vTPM)     trust extension    
1 引言

可信计算以一个硬件安全模块——可信平台模块(trusted platform module, 简称TPM)作为可信根, 为宿主计算机提供平台身份认证、完整性保护和安全存储功能.除个人计算机外, TPM被集成到服务器上, 正变得越来越普遍, 如DELL PowerEdge R530机架式服务器和Cisco UCS B200 M4刀片式服务器.将可信计算技术应用到基于服务器的虚拟计算系统中, 可以在云计算、网络功能虚拟化(network function virtualization, 简称NFV)等场景下, 提供基于硬件的可信保护功能.

在非虚拟化环境中, TPM与宿主算机的比例是一比一[1].虚拟化技术允许多个虚拟计算机相互独立地运行在同一个物理平台上, 由于资源有限, 一个物理TPM(physical TPM, 简称pTPM)不能同时供多个虚拟机使用.一种解决方案就是, 为每个虚拟机提供一个软件实现的虚拟TPM(virtual TPM, 简称vTPM)[2, 3].对每个虚拟机而言, 它们会觉得自己拥有一个专属的TPM.pTPM是整个平台的可信根, 用户对pTPM的信任来源于对可信计算技术的认可, 权威机构也对pTPM产品进行认证, 确保其具体实现与技术规范相一致.软件实现的vTPM会被动态地创建和销毁, 权威机构不可能对每个运行的vTPM实例进行一致性测评与认证, 他们能做的只是对某个vTPM软件实现进行测评.对具体运行的vTPM实例的测评, 可由配置有pTPM的宿主计算机来完成, 一旦测评过, 就需要将用户对pTPM的信任扩展到vTPM实例上, 用户才会认可vTPM是虚拟机的可信根.

现有扩展方法主要是运用证书链来构建pTPM对vTPM的信任担保.如果将现有方法应用在vTPM频繁迁移的情景中, 被迁移后的vTPM需重新获取证书, 可能存在大量的短命证书, 成本高昂.旧平台上的pTPM不能及时撤销它对vTPM的信任扩展, 现有方法也不能提供前向安全保证.我们提出一种vTPM动态可信扩展(dynamic trust extension, 简称DTE)方法, 以消除现有方法的弊端.

本文的主要贡献如下:

(1) 提出了一种适用于频繁迁移情况的vTPM动态可信拓展方法DTE.DTE在vTPM和pTPM之间建立了紧密的安全关联, DTE将vTPM看作是pTPM进行虚拟机远程证明的代理, 该代理权限的执行基于一个有效的时间令牌, 令牌则需从一个认证服务器(authenticaiton server, 简称AS)处获取.DTE能够明显地区分两种不同的TPM, vTPM和pTPM拥有不同的安全强度.当迁移发生时, 旧pTPM可及时撤销对vTPM的信任授权, vTPM无需重新获取身份秘钥(identity key, 简称IK)证书.同时, DTE能够提供前向安全性.

(2) 基于OpenStack实现了针对TPM 1.2和TPM 2.0的DTE原型系统, 从性能测试及分析结果来看, DTE方法是可行的.

本文第2节介绍现有的vTPM信任扩展方法, 分析其缺陷, 提出DTE要达到的目标.第3节描述基于信任关系和可信测评的信任扩展模型.第4节描述DTE的详细过程和算法.第5节分析DTE的安全性.第6节介绍DTE原型系统的建立和性能测试与分析.第7节介绍相关工作.最后, 第8节总结全文.

2 现有方法和DTE的目标

现有方法主要是运用证书链来对vTPM进行信任扩展.Berger等人[2]用证书链将vTPM与pTPM相关联.他们提出的第1种机制, 是在vTPM申请背书秘钥(endorsement key, 简称EK)证书时, 用pTPM的身份秘钥IK证书进行担保.第2种机制, 是使用pTPM IK证书担保vTPM IK证书.在一些场景里, 为平衡计算资源, 虚拟机可能会在不同的物理宿主机上进行迁移.当一个虚拟机被迁移到新的宿主机时, 与之相关联的vTPM也被迁移.同时, 也必须建立新pTPM到vTPM的信任扩展, 而旧pTPM与vTPM之间的信任扩展需被撤销.若采用Berger等人提出的第1种机制, 迁移后的vTPM须基于新pTPM的IK证书重新申请vTPM EK证书, 然后再申请vTPM IK证书.若使用第2种机制, 迁移后的vTPM须基于新pTPM的IK证书, 重新申请vTPM IK证书.目前还没有(certificate authority, 简称CA)专业提供平台EK和IK证书, 我们假设平台证书的价格等同于(secure socket layer, 简称SSL)证书.在本文准备期间, 我们查询了几个主要提供商的SSL证书价格, 见表 1.若虚拟机频繁迁移, vTPM也将频繁地获取IK证书, 成本高昂.迁移之后, 之前的证书将被遗弃, 可能还远未到其过期时间, 会有很多短命证书存在, 是一种很大的浪费.另外, 为了保护隐私, 一个vTPM可能存在多个IK证书, 这会带来更高的代价.

Table 1 The SSL certificate price comparison 表 1 SSL证书价格对比

Danev等人[4]提出了一种vTPM密钥层次结构, 该结构有一个pTPM和vTPM之间的中间层, 由一组pTPM的签名密钥(signing key, 简称SK)构成, 用以连接pTPM IK和vTPM IK.该方法也在vTPM和pTPM之间建立了绑定关系, 但pTPM SK不能被迁移, 故vTPM迁移之后, 新的pTPM须重新生成SK, vTPM同样须重新获取IK证书.

在虚拟可信平台架构规范[3]中, 可信计算组织(trusted computing group, 简称TCG)并没有明确定义如何创建pTPM和vTPM之间的连接关系, 但TCG提出了一个“深度认证(deep attestation)”的概念.在远程实体完成对虚拟机的认证后,可能会继续认证其下层的虚拟机监控器(virtual machine monitor, 简称VMM)和虚拟机宿主平台, 以确定它们是否足够可信, 不会去破坏运行在其上的虚拟机.为了实现深度认证, 远程实体需从vTPM IK证书扩展项中获取底层平台的信息, 如IP地址或者统一资源标识符(uniform resource identifier, 简称URI).当虚拟机迁移发生时, vTPM也需要获取新的IK证书, 以包含新的宿主平台信息.

在前述的几种vTPM信任扩展方法中, vTPM迁移后, 它原来的EK/IK证书需被废除.废除证书最常用的方法就是证书撤销列表(certificate revocation list, 简称CRL).当vTPM被迁移时, 与之关联的原pTPM便通知CA, CA将vTPM原有证书信息添加到CRL中, 并对更新之后的CRL重新进行签名.在远程实体验证vTPM的远程证明报告时, 先下载CRL, 检查vTPM当前使用的证书是否在CRL中.CRL通常相当冗长, 不会被频繁地下载.例如, 1周或者1个月被下载1次.因此, vTPM的原有证书可能在迁移发生1个月之后才会被真正废除.在此期间, 迁移后的vTPM仍然可以代表原pTPM, 生成虚拟机的证明报告, 这是现有信任扩展方法的又一明显缺陷, pTPM不能及时撤销它对vTPM的信任扩展.另外, 一旦vTPM原有证书被加入到CRL中, 即使在迁移之前由vTPM所生成的签名都将无效, 故现有方法也不能提供前向安全性.

如果将现有扩展方法应用到虚拟机频繁迁移的场景中:(1) 将会造成大量的短命证书存在, 成本高昂, 浪费巨大; (2) pTPM不能及时撤销它对vTPM的信任扩展; (3) 不能提供前向安全保证.我们提出的新方法——vTPM动态信任扩展(DTE), 应消除现有方法的这些弊端.DTE的主要目标如下:(1) 在vTPM和pTPM之间建立紧密的安全关联; (2) 严格区分vTPM和pTPM, 这两种类型的TPM具有不同的安全强度; (3) 迁移后的vTPM无需重新获取EK/IK证书; (4) pTPM可及时撤销对vTPM的信任扩展; (5) 提供前向安全性; (6) 是可行的.

3 基于可信测评的信任扩展模型 3.1 信任关系与可信测评

定义1(信任关系).实体E1信任E2, 记作E1 Tru E2.信任关系具有如下性质.

(1) 自信任.E1 Tru E1.

(2) 传递性.若E1 Tru E2, 且E2 Tru E3, 则有E1 Tru E3.

定义2(可信测评). $ {\rm{Ev}}{{\rm{i}}_{{\rm{E2}}}}\;\;{\rm{Con}}\;\;{\rm{Cr}}{{\rm{i}}_{{\rm{E1, E2}}}} \Rightarrow {\rm{E1}}\;\;{\rm{Tru}}\;\;{\rm{E2, }}$其中, CriE1, E2表示E1判断E2是否可信的标准, EviE2表示与E2相关的证据, Con表示证据与标准相符.

3.2 基于证书链的vTPM信任扩展模型

基于证书链的机制里所涉及的实体有权威机构$ {\cal I}$, 认证中心$ {\cal C}{\cal A}, $旧pTPM $ {\cal O}{\cal M}, $新pTPM $ {\cal N}{\cal M}$和vTPM $ {\cal V}{\cal M}$以及验证者$ {\cal C}$, 初始时, $ {\cal C}{\cal A}\;\;{\rm{Tru}}\;\;{\cal I}, {\cal C}\;\;{\rm{Tru}}\;\;{\cal C}{\cal A}.$

首先, 权威机构$ {\cal I}$对旧/新pTPM $ {\cal O}{\cal M}/{\cal N}{\cal M}$进行可信测评.标准为可信计算相关技术规范$ {\rm{Spec}}\;{\rm{Cr}}{{\rm{i}}_{{\cal I}, {\cal O}{\cal M}}}{\rm{ = \{ Spec\} /Cr}}{{\rm{i}}_{{\cal I}, {\cal N}{\cal M}}}{\rm{ = \{ Spec\} }}, $ $ {\rm{Ev}}{{\rm{i}}_{{\cal O}{\cal M}}}/{\rm{Ev}}{{\rm{i}}_{{\cal N}{\cal M}}}$则由$ {\cal I}$$ {\cal O}{\cal M}/{\cal N}{\cal M}$分析和测试得到.若有$ {\rm{Ev}}{{\rm{i}}_{{\cal O}{\cal M}}}\;\;{\rm{Con}}$ $ {\rm{\{ Spec\} }} \Rightarrow {\cal I}\;\;{\rm{Tru}}\;\;{\cal O}{\cal M}$ $ {\rm{/Ev}}{{\rm{i}}_{{\cal N}{\cal M}}}\;\;{\rm{Con}}\;\;{\rm{\{ Spec\} }} \Rightarrow {\cal I}\;\;{\rm{Tru}}\;\;{\cal N}{\cal M}$, $ {\cal I}$$ {\cal O}{\cal M}/{\cal N}{\cal M}$颁发符合性证书$ {\rm{Cer}}{{\rm{t}}_{{\cal I}, {\cal O}{\cal M}}}/{\rm{Cer}}{{\rm{t}}_{{\cal I}, {\cal N}{\cal M}}}$.权威机构$ {\cal I}$对vTPM $ {\cal V}{\cal M}$进行可信测评, 标准为技术规范$ {\rm{Spec}}\;{\rm{Cr}}{{\rm{i}}_{{\cal I}, {\cal V}{\cal M}}}{\rm{ = \{ Spec\}, Ev}}{{\rm{i}}_{{\cal V}{\cal M}}}$则由$ {\cal I}$$ {\cal V}{\cal M}$分析和测试得到.若有$ {\rm{Ev}}{{\rm{i}}_{{\cal V}{\cal M}}}\;\;{\rm{Con}}\;\;{\rm{\{ Spec\} }} \Rightarrow {\cal I}\;\;{\rm{Tru}}\;\;{\cal V}{\cal M}, $$ {\cal I}$颁发$ {\cal V}{\cal M}$参考值$ {\rm{Re}}{{\rm{f}}_{{\cal I}, {\cal V}{\cal M}}}$.

旧/新pTPM在宿主机上开始运行后, 向认证中心$ {\cal C}{\cal A}$申请IK证书, $ {\cal C}{\cal A}$对旧/新pTPM进行可信测评.因为$ {\cal C}{\cal A}$ Tru $ {\cal I}$, 根据旧/新pTPM所提供的符合性证书$ {\rm{Cer}}{{\rm{t}}_{{\cal I}, {\cal O}{\cal M}}}/{\rm{Cer}}{{\rm{t}}_{{\cal I}, {\cal N}{\cal M}}}$, 可得$ {\cal C}{\cal A}\;\;{\rm{Tru}}\;\;{\cal O}{\cal M}{\rm{/}}{\cal C}{\cal A}\;\;{\rm{Tru}}\;\;{\cal N}{\cal M}, $颁发IK证书.

vTPM $ {\cal V}{\cal M}$在旧pTPM $ {\cal O}{\cal M}$宿主机上运行, $ {\cal O}{\cal M}$通过代理对$ {\cal V}{\cal M}$进行度量, 度量值为$ \text{Me}{{\text{a}}_{\mathcal{O}\mathcal{M}, \mathcal{V}\mathcal{M}}}.$$ {\cal V}{\cal M}$$ {\cal C}{\cal A}$申请IK证书, $ {\cal C}{\cal A}$$ {\cal V}{\cal M}$进行可信测评.因为有$ {\cal C}{\cal A}$ Tru $ {\cal I}, {\cal C}{\cal A}$ 认可$ \text{Re}{{\text{f}}_{\mathcal{I}, \mathcal{V}\mathcal{M}}}$作为$ {\cal V}{\cal M}$的可信标准.因为有$ {\cal C}{\cal A}$ Tru $ {\cal O}{\cal M}$, $ {\cal C}{\cal A}$认可$ \text{Me}{{\text{a}}_{\mathcal{O}\mathcal{M}, \mathcal{V}\mathcal{M}}}$作为$ {\cal V}{\cal M}$的证据.故若有$ \{\text{Me}{{\text{a}}_{\mathcal{O}\mathcal{M}, \mathcal{V}\mathcal{M}}}\}\ \ \text{Con}\ \ \text{ }\!\!\{\!\!\text{ Re}{{\text{f}}_{\mathcal{I}, \mathcal{V}\mathcal{M}}}\}\Rightarrow \mathcal{C}\mathcal{A}\ \ \text{Tru}\ \ \mathcal{V}\mathcal{M}, $则颁发IK证书.$ {\cal V}{\cal M}$进行远程证明时, 使用IK签名, 可得$ {\cal C}$ Tru $ {\cal C}{\cal A}$ Tru $ {\cal V}{\cal M}$, 验证者$ {\cal C}$认可$ {\cal V}{\cal M}$为可信报告根.vTPM $ {\cal V}{\cal M}$被迁移到新pTPM $ {\cal N}{\cal M}$宿主机后, 通知$ {\cal C}{\cal A}$取消旧IK证书, $ {\cal V}{\cal M}$$ {\cal C}{\cal A}$新申请IK证书, 同样可得$ {\cal C}$ Tru $ {\cal C}{\cal A}$ Tru $ {\cal V}{\cal M}$, $ {\cal C}$认可迁移后的$ {\cal V}{\cal M}$为可信报告根.

3.3 vTPM动态信任扩展模型

与基于证书链的机制相比, vTPM动态信任扩展DTE增加了一个新实体——认证服务器$ {\cal A}{\cal S}$.初始时, $ {\cal C}{\cal A}$ Tru $ {\cal I}$, $ {\cal O}{\cal M}$ Tru $ {\cal I}$, $ {\cal A}{\cal S}$ Tru $ {\cal I}$, $ {\cal C}$ Tru $ {\cal C}{\cal A}$, $ {\cal C}$ Tru $ {\cal A}{\cal S}$.

权威机构$ {\cal I}$对旧/新pTPM $ {\cal O}{\cal M}$/$ {\cal N}{\cal M}$/$ {\cal V}{\cal M}$进行可信测评, 与基于证书链的机制相同.$ {\cal O}{\cal M}$/$ {\cal N}{\cal M}$$ {\cal C}{\cal A}$申请IK证书, $ {\cal C}{\cal A}$对旧/新pTPM进行可信测评, 与基于证书链的机制相同.vTPM $ {\cal V}{\cal M}$第1次向$ {\cal C}{\cal A}$申请IK证书, $ {\cal C}{\cal A}$$ {\cal V}{\cal M}$进行可信测评, 与基于证书链的机制相同.

vTPM $ {\cal V}{\cal M}$在旧pTPM $ {\cal O}{\cal M}$宿主机上运行, $ {\cal O}{\cal M}$通过代理对$ {\cal V}{\cal M}$进行度量, 度量值为$ \text{Me}{{\text{a}}_{\mathcal{O}\mathcal{M}, \mathcal{V}\mathcal{M}}}.$$ {\cal O}{\cal M}$$ {\cal V}{\cal M}$进行可信测评.因为有$ {\cal O}{\cal M}$ Tru $ {\cal I}$, $ {\cal O}{\cal M}$认可$ \text{Re}{{\text{f}}_{\mathcal{I}, \mathcal{V}\mathcal{M}}}$作为$ {\cal V}{\cal M}$的可信标准.故若有$ \text{ }\!\!\{\!\!\text{ Me}{{\text{a}}_{\mathcal{O}\mathcal{M}, \mathcal{V}\mathcal{M}}}\text{ }\!\!\}\!\!\text{ Con}$ $ \text{ }\!\!\{\!\!\text{ Re}{{\text{f}}_{\mathcal{I}, \mathcal{V}\mathcal{M}}}\}\Rightarrow \mathcal{O}\mathcal{M}\ \ \text{Tru}\ \ \mathcal{V}\mathcal{M}, $$ {\cal O}{\cal M}$$ {\cal V}{\cal M}$颁发授权书$ {{w}_{\mathcal{O}\mathcal{M}, \mathcal{V}\mathcal{M}}}.$$ {\cal V}{\cal M}$进行远程证明时, 向$ {\cal A}{\cal S}$申请时间令牌$ {{t}_{\mathcal{A}\mathcal{S}, \mathcal{V}\mathcal{M}}}$, $ {\cal A}{\cal S}$$ {\cal V}{\cal M}$进行可信测评.因为$ {\cal A}{\cal S}$ Tru $ {\cal I}$, $ {\cal I}$ Tru $ {\cal O}{\cal M}$, 根据授权书$ {{w}_{\mathcal{O}\mathcal{M}, \mathcal{V}\mathcal{M}}}.$可得$ {\cal A}{\cal S}$ Tru $ {\cal V}{\cal M}$, 颁发$ {{t}_{\mathcal{A}\mathcal{S}, \mathcal{V}\mathcal{M}}}$.因为$ {\cal C}$ Tru $ {\cal C}{\cal A}$ Tru $ {\cal O}{\cal M}$, $ {\cal C}$ Tru $ {\cal A}{\cal S}$ Tru $ {\cal O}{\cal M}$, 验证者$ {\cal C}$根据正确的$ {\cal V}{\cal M}$ IK签名, $ {{w}_{\mathcal{O}\mathcal{M}, \mathcal{V}\mathcal{M}}}$$ {{t}_{\mathcal{A}\mathcal{S}, \mathcal{V}\mathcal{M}}}, $可得$ {\cal C}$ Tru $ {\cal C}{\cal A}$ Tru $ {\cal O}{\cal M}$ Tru $ {\cal V}{\cal M}$, $ {\cal C}$ Tru $ {\cal A}{\cal S}$ Tru $ {\cal O}{\cal M}$ Tru $ {\cal V}{\cal M}$, 只有两条路径同时存在, $ {\cal C}$才认可$ {\cal V}{\cal M}$为可信报告根.$ {\cal V}{\cal M}$被迁移时, $ {\cal O}{\cal M}$通知$ {\cal A}{\cal S}$取消对$ {\cal V}{\cal M}$的授权, $ {\cal N}{\cal M}$重新对$ {\cal V}{\cal M}$授权, 同样可得$ {\cal C}$ Tru $ {\cal C}{\cal A}$ Tru $ {\cal N}{\cal M}$ Tru $ {\cal V}{\cal M}$, $ {\cal C}$ Tru $ {\cal A}{\cal S}$ Tru $ {\cal N}{\cal M}$ Tru $ {\cal V}{\cal M}$, $ {\cal C} $认可$ {\cal V}{\cal M}$为可信报告根.

4 vTPM动态信任扩展DTE

DTE的基本思想如下:引入一个新实体——认证服务器AS, 在DTE的整体架构里包含CA、AS、pTPM、vTPM和远程验证者Challenger这5个实体.为了签署完整性报告, vTPM须先从AS那里获取一个时间令牌, 该令牌与Challenger发送的随机nonce相关.只有在pTPM签署授权给vTPM后, vTPM才能获得有效的令牌.当vTPM发生迁移时, 旧宿主机上的pTPM就通知AS停止颁发令牌给迁走的vTPM.AS维护着一个pTPM给vTPM签署的授权书列表.

为便于系统可扩展, 一个CA可对应多个AS, 每个AS又为多个pTPM和vTPM提供服务.每个vTPM实例所在虚拟机上还可能有多个用户, 针对不同的应用场景, 使用vTPM来进行远程证明.时间令牌与每一个远程证明相关, 将时间令牌的发放设定为一个原子操作, 确保其不被干扰.在vTPM频繁迁移时, DTE里会出现大量的短命pTPM授权书, 但授权书并不是CA证书, 成本较低.AS采用授权书白名单机制, 大量撤销的短命授权书不会增加AS的负担, 且能保证实时撤销和前向安全特性.

DTE包含如下5个过程:(1) 参数设置; (2) 信任授权; (3) 令牌获取; (4) 远程证明; (5) 撤销授权.DTE的总体过程及消息序列如图 1所示, 将在后续小节中描述其更多细节.

Fig. 1 The procedures and message sequences of vTPM dynamic trust extension 图 1 DTE的总体过程及消息序列

4.1 参数设置

系统参数主要包括pTPM、vTPM以及AS的参数.就非对称密码算法而言, TPM 1.2支持RSA, 中国的可信密码模块(trusted cryptography module, 简称TCM)支持SM2(一种椭圆曲线密码算法ECC, elliptic curve cryptography), TPM 2.0可灵活支持不同的算法.考虑到RSA和ECC的广泛应用, DTE主要支持这两种算法.在模块同时支持RSA和ECC的情况下, 具体使用哪种算法, 视具体的部署环境而定.为了描述方便, 除可能会导致混淆的特殊情况外, 后文将TPM 1.2、TPM 2.0和TCM统称为TPM.

1) pTPM生成IK, 〈seclkpm, publkpm〉, 从CA处获取对应的证书ikCertpm.

2) vTPM生成IK, 〈seclkvm, publkvm〉, 向CA申请对应的证书ikCertvm.CA在颁发证书之前, 首先验证其底层pTPM所签署的远程证明报告, 判断vTPM实例与标准的一致性.

3) AS生成IK, 〈seclkas, publkas〉, 从CA获取对应的证书ikCertas我们假定AS也是一个可信计算平台(trusted computing platform, 简称TCP), AS生成IK及获取证书的操作都和pTPM相同.

IK的格式见公式(1).为了保护隐私, pTPM和vTPM可能有多个IK及与之对应的证书.每个证书含有一个与之绑定的身份id.

$ \begin{matrix} \langle \rm{secl}{{\rm{k}}_\mathit{x}}, \rm{publ}{{\rm{k}}_\mathit{x}}\rangle \\ (x=\rm{pm}, \rm{vm}, \rm{as}) \\ \end{matrix}=\left\{ \begin{array}{*{35}{l}} \langle \langle {{e}_{x}}, {{n}_{x}}\rangle, \langle {{d}_{x}}, {{n}_{x}}\rangle \rangle & \rm{RSA} \\ \langle {{d}_{x}}, {{Q}_{x}}={{d}_{x}}G\rangle & \rm{ECC} \\ \end{array} \right. $ (1)
4.2 信任授权

为了将信任扩展到vTPM上,

1) pTPM对vTPM实例进行一致性检测, 获取vTPM的IK证书ikCertvm.

2) pTPM创建授权书w, 包含vTPM的身份信息idvm、pTPM的身份信息idpm、授权的有效期T以及其他限制性条件res, 表示为$ w=\langle \text{i}{{\text{d}}_{\text{pm}}}, \text{i}{{\text{d}}_{\text{vm}}}, T, \text{res}\rangle, $其中, idpm来自于ikCertpm, idvm来自于ikCertvm.

3) pTPM获取AS的IK证书ikCertas.

4) pTPM用其IK私钥对授权书w签名, $ {{\sigma }_{w}}=\text{Sign}(\text{ H}(\mathit{w}\|\text{publ}{{\text{k}}_{\text{vm}}}\|\text{publ}{{\text{k}}_{\text{as}}}), \text{secl}{{\text{k}}_{\text{pm}}}), $函数Sign的定义见公式(2).publkvm来自于ikCertvm, publkas来自于ikCertas.若seclkpm是ECC私钥, 则σw是ECC Schnorr签名, 表示为σw=〈rw, sw〉.

5) pTPM发送消息delMsgVm给vTPM, $ \text{delMsgVm}=\langle w, {{\sigma }_{w}}, \text{ikCer}{{\text{t}}_{\text{pm}}}, \text{ikCer}{{\text{t}}_{\text{as}}}\rangle $; pTPM发送消息delMsgAs给AS, $ \text{delMsgAs}=\langle w, {{\sigma }_{w}}, \text{ikCer}{{\text{t}}_{\text{pm}}}, \text{ikCer}{{\text{t}}_{\text{vm}}}\rangle .$

$ \rm{Sign=}\left\{ \begin{array}{*{35}{l}} \rm{RSASign} & \rm{secl}{{\rm{k}}_{\mathit{x}}}\text{是}\rm{RSA}\text{私钥} \\ \rm{ECCSchSign} & \rm{secl}{{\rm{k}}_{\mathit{x}}}\text{是}\rm{ECC}\text{私钥} \\ \end{array} \right. $ (2)

接收到消息delMsgVm后,

1) vTPM检查ikCertpm和ikCertas, 从ikCertpm中提取publkpm, 从ikCertas中提取publkas.

2) vTPM检查授权书签名, $ \rm{Y/N=Verify(H(}\mathit{w}\|\rm{publ}{{\rm{k}}_{\rm{vm}}}\|\rm{publ}{{\rm{k}}_{\rm{as}}}\rm{), }$ $ {{\mathit{\sigma }}_{\mathit{w}}}\rm{, publ}{{\rm{k}}_{\rm{pm}}}\rm{), }$ Verify的定义见公式(3).

$ \rm{Verify=}\left\{ \begin{array}{*{35}{l}} \rm{RSAVerify} & \rm{publ}{{\rm{k}}_{\mathit{x}}}\text{是}\rm{RSA}\text{公钥} \\ \rm{ECCSchVerify} & \rm{publ}{{\rm{k}}_{\mathit{x}}}\text{是}\rm{ECC}\text{公钥} \\ \end{array} \right. $ (3)

接收到消息delMsgAs后,

1) AS检查ikCertpm和ikCertvm, 从ikCertpm中提取publkpm, 从ikCertvm中提取publkvm.

2) vTPM检查授权书签名, $ \text{Y/N=Verify(H(}\mathit{w}\|\text{publ}{{\text{k}}_{\text{vm}}}\|\text{publ}{{\text{k}}_{\text{as}}}\text{), }$ $ {{\mathsf{\sigma }}_{\mathit{w}}}\text{, publ}{{\text{k}}_{\text{pm}}}\text{);}$σw是正确的, 则AS就存储授权书w.一旦授权到期, AS可删除其列表中的授权书, 故DTE中AS授权书列表不会无限增加, 这有别于其他普通的白名单或者黑名单方法.

4.3 令牌获取

如果远程验证者无法确定vTPM签名的准确时间, 那么授权书的有效期也没有用处.DTE用时间令牌来解决这个问题,并且使pTPM能够及时撤销其对vTPM的信任扩展.若vTPM收到一个来自于远程验证者带随机数nonce N的证明请求, 在其对报告数据进行签名之前, 须先从AS处获取一个针对该nonce的特定时间令牌.

1) vTPM生成一个与随机数nonce相关的签名, $ {{\mathit{\sigma }}_{\mathit{N}}}\text{=Sign(H(}\mathit{N}\|\mathit{w}\|\text{publ}{{\text{k}}_{\text{pm}}}\|\text{publ}{{\text{k}}_{\text{vm}}}\text{), secl}{{\text{k}}_{\text{vm}}}\text{)}\text{.}$

2) vTPM向AS发送令牌请求消息, $ \text{ReqTkMsg}=\langle N, {{\sigma }_{N}}, \text{i}{{\text{d}}_{\text{pm}}}\text{, i}{{\text{d}}_{\text{vm}}}\rangle, $其中, idpm从ikCertpm中提取.

接收到消息ReqTkMsg后,

1) AS查询是否存在与〈idpm, idvm〉相匹配的授权书, 如果找到授权书w, 则AS确定它是否在有效期内.

2) AS找到与idpm对应的ikCertpm, 从中提取出publkpm; 找到与idvm对应的ikCertvm, 从中提取出publkvm.

3) AS验证令牌请求消息的签名σN, $ \text{Y/N=Verify(H(}\mathit{N}\|\mathit{w}\|\text{publ}{{\text{k}}_{\text{pm}}}\|\text{publ}{{\text{k}}_{\text{vm}}}\text{), }$ $ {{\mathit{\sigma }}_{\mathit{N}}}\text{, publ}{{\text{k}}_{\text{vm}}}\text{)}\text{.}$

4) AS计算$ {{\mathit{\sigma }}_{\mathit{t}}}\text{=Sign(H(}\mathit{N}\|\mathit{w}\|\text{publ}{{\text{k}}_{\text{pm}}}\|\text{publ}{{\text{k}}_{\text{vm}}}\|\mathit{t}\text{), publ}{{\text{k}}_{\text{as}}}\text{), }$其中, t是当前时间.

5) AS发送令牌响应消息给vTPM, RspTkMsg=〈t, σt〉.

接收到消息RspTkMsg后,

vTPM验证σt, $ \text{Y/N=Verify(H(}\mathit{N}\|\mathit{w}\|\text{publ}{{\text{k}}_{\text{pm}}}\|\text{publ}{{\text{k}}_{\text{vm}}}\|\mathit{t}\text{), }$ $ {{\mathit{\sigma }}_{\mathit{t}}}\text{, publ}{{\text{k}}_{\text{as}}}\text{);}$σt是正确的, vTPM就可代表pTPM对虚拟机报告数据签名, 进行远程证明.

4.4 远程证明

接收到正确的时间令牌后,

1) vTPM计算$ {{\sigma }_{Nt}}=\mathsf{AttSign}(w, {{\sigma }_{w}}, N, t, \mathsf{publ}{{\mathsf{k}}_{\text{pm}}}, $ $ \mathsf{publ}{{\mathsf{k}}_{\text{vm}}}, \mathsf{pcrV}, \mathsf{secl}{{\mathsf{k}}_{\text{vm}}}), $函数AttSign的定义见算法1, 其中, pcrV为所选定的vTPM中平台配置寄存器(platform configuraion register, 简称PCR)的当前值.

2) vTPM将证明消息发送给远程验证者, $ \text{AttMsg}=\langle w, {{\sigma }_{w}}, t, {{\sigma }_{t}}, {{\sigma }_{Nt}}, \text{ikCer}{{\text{t}}_{\text{pm}}}, $ $ \text{ikCer}{{\text{t}}_{\text{vm}}}\text{, ikCer}{{\text{t}}_{\text{as}}}\text{, pcrV}\left. {} \right\rangle \text{.}$

接收到证明消息AttMsg后,

1) 远程验证者首先检查ikCertpm、ikCertvm和ikCertas, 从ikCertpm中提取publkpm, 从ikCertvm中提取publkvm, 从ikCertas中提取publkas.

2) 验证者检查σt的正确性, $ \text{Y/N=Verify(H(}\mathit{N}\|\mathit{w}\|\text{publ}{{\text{k}}_{\text{pm}}}$ $ \|\text{publ}{{\text{k}}_{\text{vm}}}\|\mathit{t}\text{), }{{\mathit{\sigma }}_{\mathit{t}}}\text{, publ}{{\text{k}}_{\text{as}}}\text{)}\text{.}$

3) 验证者检查σNt的正确性, $ \text{Y/N}=\text{AttVerify}(w, {{\sigma }_{w}}, N, t, {{\sigma }_{Nt}}, $ $ \text{publ}{{\text{k}}_{\text{pm}}}, \text{publ}{{\text{k}}_{\text{vm}}}\text{, publ}{{\text{k}}_{\text{as}}}, \text{pcrV}), $函数AttVerify的定义见算法2.

算法1. $ {{\sigma }_{Nt}}=\mathsf{AttSign}(w, {{\sigma }_{w}}, N, t, \text{publ}{{\text{k}}_{\text{pm}}}, $ $ \text{publ}{{\text{k}}_{\text{vm}}}, \text{pcrV}, \text{secl}{{\text{k}}_{\text{vm}}}).$

1: if seclkvm是一个RSA私钥

    & σw是一个RSA签名then

2:   $ {{\sigma }_{Nt}}\leftarrow \text{ RSAPrivateEnc}({{\sigma }_{w}}\oplus \text{ }$$ \text{Encode(H(}N\|w\|\text{publ}{{\text{k}}_{\text{pm}}}\|\text{publ}{{\text{k}}_{\text{vm}}}\|t\|\text{pcrV)), secl}{{\text{k}}_{\text{vm}}}\text{)}$

3: else

4:   if seclkvm是一个ECC私钥

     & σw是一个ECC Schnorr签名then

5:     $ \text{secl}{{\text{k}}_{\text{vm}}}\leftarrow {{s}_{w}}+{{r}_{w}}\text{secl}{{\text{k}}_{\text{vm}}}\bmod \, \, n$

6:     $ \text{publ}{{\text{k}}_{\text{vm'}}}\leftarrow \text{secl}{{\text{k}}_{\text{vm'}}}G$

      G是所选定椭圆曲线上的一个加法循环子群的生成元, n是该子群的阶

7:     $ \langle {{r}_{Nt}}, {{s}_{Nt}}\rangle \leftarrow \text{ECCSchSign(H}(N\|w\|\text{publ}{{\text{k}}_{\text{pm}}}\|$ $ \text{publ}{{\text{k}}_{\text{vm}}}\|t\|\text{pcrV}\|\text{publ}{{\text{k}}_{\text{vm}}}\text{), secl}{{\text{k}}_{\text{vm}}}\text{)}$

8:     $ {{\sigma }_{Nt}}=\langle {{r}_{Nt}}, {{s}_{Nt}}, \text{publ}{{\text{k}}_{\text{vm}}}\rangle $

9:   end if

10: end if

算法2.$ \text{Y/N}=\text{AttVerify}(w, {{\sigma }_{w}}, N, t, {{\sigma }_{Nt}}, \text{publ}{{\text{k}}_{\text{pm}}}\text{, publ}{{\text{k}}_{\text{vm}}}\text{, publ}{{\text{k}}_{\text{as}}}\text{, pcrV)}.$

1: if publkvm是一个RSA公钥

    & publkpm是一个RSA公钥then

2:    $ {{\sigma }_{{{w}'}}}\leftarrow \text{ RSAPublicDe}\mathit{c}({{\sigma }_{Nt}}, \text{publ}{{\text{k}}_{\text{vm}}})\oplus $ $ \text{Encode(H}(N\|w\|\text{publ}{{\text{k}}_{\text{pm}}}\|\text{publ}{{\text{k}}_{\text{vm}}}\|t\|\text{pcrV)}$

3:   $ \text{R }\leftarrow\text{ RSAVerify(H}(w\|\text{publ}{{\text{k}}_{\text{vm}}}\|\text{publ}{{\text{k}}_{\text{as}}}), {{\sigma }_{{{w}'}}}, \text{publ}{{\text{k}}_{\text{pm}}}\text{)}$

4:   return R

5: else

6:   if publkvm是一个ECC公钥

     & publkpm是一个ECC公钥then

7:     $ ({{x}_{r}}, {{y}_{r}})\leftarrow \text{publ}{{\text{k}}_{\text{vm}}}-{{r}_{w}}(\text{publ}{{\text{k}}_{\text{pm}}}\text{+publ}{{\text{k}}_{\text{vm}}}\text{)}$

8:    if $ \text{H(H}(w\|\text{publ}{{\text{k}}_{\text{vm}}}\|\text{publ}{{\text{k}}_{\text{as}}}\text{)}\|{{x}_{r}})!={{r}_{w}}$

9:     return R

10:    end if

11:    $ \text{R}\leftarrow \text{ECCSchVerify(H}(N\|w\|\text{publ}{{\text{k}}_{\text{pm}}}\|$ $ \text{publ}{{\text{k}}_{\text{vm}}}\|t\|\text{pcrV}\|\text{publ}{{\text{k}}_{\text{vm}}}\text{)}, \langle {{r}_{Nt}}, {{s}_{Nt}}\rangle, \text{publ}{{\text{k}}_{\text{vm}}}\text{)}$

12:    return R

13:   end if

14: end if

4.5 撤销授权

当vTPM及其对应的虚拟机被迁移到新的宿主机之后, 旧主机上的pTPM即可撤销对vTPM的信任授权.

1) pTPM计算$ {{\sigma }_{\text{rw}}}=\text{Sign(H(publ}{{\text{k}}_{\text{pm}}}\|\text{publ}{{\text{k}}_{\text{vm}}}\text{), secl}{{\text{k}}_{\text{pm}}}\text{)}.$

2) pTPM发送消息RevMsg给AS, 请求删除相应的授权书, $ \rm{RevMsg}=\langle {{\sigma }_{\rm{rw}}}, \rm{i}{{\rm{d}}_{\rm{pm}}}\rm{, i}{{\rm{d}}_{\rm{vm}}}\rangle .$

接收到消息RevMsg后,

1) AS查询其列表中是否存在与〈idpm, idvm〉相匹配的授权书, 若存在, 则有

2) AS找到与idpm对应的ikCertpm, 从中提取出publkpm; 找到与idvm对应的ikCertvm, 从中提取出publkvm.

3) AS验证σrw的正确性, $ \text{Y/N}=\text{Verify(H(publ}{{\text{k}}_{\text{pm}}}\|\text{publ}{{\text{k}}_{\text{vm}}}\text{), }{{\sigma }_{\text{rw}}}, \text{publ}{{\text{k}}_{\text{pm}}}\text{)}.$

4) AS删除找到的授权书.

当AS收到一个vTPM的时间令牌请求时, 若没有可匹配的授权书, 则该vTPM没有被授权、授权已过期或已经被撤销, AS会拒绝该请求.没有时间令牌, vTPM就不能对报告数据进行签名, 故pTPM可及时撤销对vTPM的信任扩展.

5 安全性分析

本节我们将分析DTE可以确保正确性和满足如下安全特征:秘密依赖、不可伪造、可验证、可识别、不可否认、可撤销、严格区分vTPM和pTPM这两种不同安全强度的TPM和前向安全.

5.1 正确性

DTE的正确性定义:若CA、AS、pTPM、vTPM和远程验证者Challenger都是诚实的, 那么, 对于vTPM签名的完整性报告, Challenger会以百分百的概率通过验证.

DTE除使用了AttSign、AttVerify两个特殊函数外, 其余都是普通的RSA和ECC签名、验证算法.普通RSA、ECC算法的正确性可以得到保证, 我们着重分析AttSign、AttVerify的正确性.

若选用RSA算法, 验证者在执行AttVerify函数时, 首先会计算RSAPublicDec(σnt, publkvm).其中, σnt是由vTPM在执行AttSign时所计算出来的, $ {{\sigma }_{nt}}=\text{RSAPrivateEnc}({{\sigma }_{w}}\oplus \text{Encode}$ $ (\text{H}(n\|w\|\text{publ}{{\text{k}}_{\text{pm}}}\|\text{publ}{{\text{k}}_{\text{vm}}}\|t\|\text{pcrV)), secl}{{\text{k}}_{\text{vm}}}\text{), }$故有

$ \begin{array}{*{35}{l}} \rm{RSAPublicDec(}{{\mathit{\sigma }}_{\mathit{nt}}}, \rm{publ}{{\rm{k}}_{\rm{vm}}})={{\mathit{\sigma }}_{\mathit{w}}}\oplus \rm{Encode}(\mathit{H}(\mathit{n}\|\mathit{w}\|\rm{publ}{{\rm{k}}_{\rm{pm}}}\|\rm{publ}{{\rm{k}}_{\rm{vm}}}\|\mathit{t}\|\rm{pcrV})), \\ \rm{RSAPublicDec}({{\mathit{\sigma }}_{\mathit{nt}}}, \rm{publ}{{\rm{k}}_{\rm{vm}}})\oplus \rm{Encode(}\mathit{H}(\mathit{n}\|\mathit{w}\|\rm{publ}{{\rm{k}}_{\rm{pm}}}\|\rm{publ}{{\rm{k}}_{\rm{vm}}}\|\mathit{t}\|\rm{pcrV})={{\sigma }_\mathit{w}}. \\ \end{array} $

因而等式σw'=σw成立, $ \rm{RSAVerify(H}(\mathit{w}\|p\rm{ubl}{{\rm{k}}_{\rm{vm}}}\|\rm{publ}{{\rm{k}}_{\rm{as}}}), {{\mathit{\sigma }}_{{\mathit{{w}'}}}}, \rm{publ}{{\rm{k}}_{\rm{pm}}}\rm{)}$的返回值应为Y.

若选用ECC算法, 验证者在执行AttVerify函数时, 首先会计算publkvm-rw(publkpm+publkvm), publkvm是由vTPM在执行AttSign时所计算出来的, publkvm=seclkvmG=swG+rwseclkvmG=swG+rwpublkvm, 故有

$ \begin{align} &\text{publ}{{\text{k}}_{\text{vm}}}\text{-}{{\mathit{r}}_{\mathit{w}}}\text{(publ}{{\text{k}}_{\text{pm}}}\text{+publ}{{\text{k}}_{\text{vm}}}\text{)=}{{\mathit{s}}_{\mathit{w}}}\mathit{G}\text{+}{{\mathit{r}}_{\mathit{w}}}\text{publ}{{\text{k}}_{\text{vm}}} \\ &\text{-}{{\mathit{r}}_{\mathit{w}}}\text{(publ}{{\text{k}}_{\text{pm}}}\text{+publ}{{\text{k}}_{\text{vm}}}\text{)=}{{\mathit{s}}_{\mathit{w}}}\mathit{G}\text{-}{{\mathit{r}}_{\mathit{w}}}\text{publ}{{\text{k}}_{\text{pm}}}\text{.} \\ \end{align} $

从ECC Schnorr签名算法可以得知, 授权书签名σw=〈rw, sw〉, $ {{\mathit{r}}_{\mathit{w}}}\text{=H(H(}\mathit{w}\|\text{publ}{{\text{k}}_{\text{vm}}}\|\text{publ}{{\text{k}}_{\text{as}}}\text{)}\|{{\mathit{x}}_{\mathit{w}}}\text{), }$sw=kw+rwseclkpmmod n故有

$ \text{publ}{{\text{k}}_{\text{vm}}}\text{-}{{\mathit{r}}_{\mathit{w}}}\text{(publ}{{\text{k}}_{\text{pm}}}\text{+publ}{{\text{k}}_{\text{vm}}}\text{)=}{{\mathit{k}}_{\mathit{w}}}\mathit{G}\text{+}{{\mathit{r}}_{\mathit{w}}}\text{secl}{{\text{k}}_{\text{pm}}}\mathit{G}\text{-}{{\mathit{r}}_{\mathit{w}}}\text{publ}{{\text{k}}_{\text{pm}}}\text{=}{{\mathit{k}}_{\mathit{w}}}\mathit{G}\text{.} $

因而(xr, yr)=(xw, yw)等式$ \rm{H(H(}\mathit{w}\|\rm{publ}{{\rm{k}}_{\rm{vm}}}\|\rm{publ}{{\rm{k}}_{\rm{as}}}\rm{)}\|{{\mathit{x}}_{\mathit{r}}}\rm{)=}{{\mathit{r}}_{\mathit{w}}}$成立, AttVerify的返回值应为Y.

5.2 安全性

秘密依赖.基于pTPM的IK私钥, 生成一个新秘密, 再生成远程证明签名σNt.从计算远程证明签名σNt的算法1AttSign中可见, 若DTE采用RSA, 在计算RsaPrivateEnc时, 会用到授权书签名σw; 若DTE采用ECC, 在计算临时私钥seclk'vm时, 会用到授权书签名σw=〈rw, sw〉.σw的生成都需要用到pTPM的IK私钥seclkpm.

不可伪造.一个vTPM只有在获得一个pTPM授权经过信任扩展之后, 才可生成一个合法的远程证明签名σNt.从计算远程证明签名σNt的算法1AttSign中可见, 若DTE采用RSA, 在计算RsaPrivateEnc时, 会用到授权书签名σw和vTPM IK私钥seclkvm; 若DTE采用ECC, 在计算临时私钥seclk'vm时, 会用到授权书签名σw=〈rw, sw〉和vTPM IK私钥seclkvm.σw的生成都需要用到pTPM的IK私钥seclkpm.任何实体, 包括pTPM, 在不知道seclkvm和seclkpm的情况下, 不能伪造一个有效的认证签名σNt.无论RSA还是ECC, 从公钥计算出私钥, 都是困难问题.

可验证.验证者收到一个vTPM发送的远程证明消息AttMsg, AttMsg中含有签名σNt, 若验证其合法, 可确信远程证明经过了一个pTPM的同意.DTE远程证明消息AttMsg含有授权书w和pTPM对其的签名σw, w中有pTPM的身份标识idpm, σw的生成都需要用到pTPM的IK私钥seclkpm.验证者在执行AttVerify时, 会用到pTPM的IK公钥publkpm这些都可让验证者确信vTPM所发起的远程证明经过了pTPM的授权同意.

可识别.验证者依据一个合法的DTE远程证明消息, 可确定一个vTPM身份.DTE远程证明消息AAttMsg含有授权书w和vTPM IK公钥证书ikCertvm, w和ikCertvm中都含有vTPM的身份标识idvm.在算法1 AttSign中计算远程证明签名σNt时, 会用到vTPM IK私钥seclkvm.验证者在执行AttVerify时, 需使用ikCertvm中的vTPM IK公钥publkvm这些都可让验证者确定vTPM的身份.

不可否认.在pTPM授权后, 一旦vTPM创建了一个合法的远程证明签名σNt, pTPM和vTPM都不可否认.在算法1 AttSign中计算远程证明签名σNt时, 会用到授权书签名σw和vTPM IK私钥seclkvm, σw的生成需要用到pTPM IK私钥seclkpm.验证者在执行AttVerify时, 需使用ikCertpm中的vTPM IK公钥publkpm和ikCertvm中的vTPM IK公钥publkvm.pTPM和vTPM皆无法否认一个合法的远程证明签名σNt.

可撤销.pTPM可实时撤销对vTPM的信任扩展, 在撤销之后, vTPM不能再进行合法的远程证明.DTE远程证明消息AttMsg含有时间令牌t和AS对其的签名σt, 在算法1AttSign中计算远程证明签名σNt时, 会用到时间令牌t.只有在pTPM对vTPM的授权书w未过期、未被撤销的情况下, AS才会向vTPM发送时间令牌, 且σt与远程证明请求nonce N相关.pTPM可通知AS撤销对vTPM的授权, 即pTPM可实时撤销对vTPM的信任扩展.

区分.在DTE中, vTPM所提交的远程证明信息包括授权书及其签名、时间令牌及其签名、平台配置完整性值、DTE认证签名以及pTPM、vTPM和AS的IK证书.TCG pTPM所提交的远程证明信息包括平台配置完整性值、引用签名以及pTPM IK证书.验证这两种不同类型的报告, 需要使用不同的方法.验证vTPM的报告, 需要vTPM的IK公钥publkvm、pTPM的IK公钥publkpm和授权书w; 而验证pTPM的报告, 只需要它的IK公钥publkpm根据报告的不同格式和验证的不同程序, 远程验证者就可区分出vTPM和pTPM.CA在给vTPM颁发IK证书时, 可加注其是vTPM的说明.

前向安全.假设vTPM在迁移之前, 已生成有一个远程证明签名Nt, 经过了旧宿主机pTPM的授权.出于某种原因, 远程验证者在vTPM迁移完成之后, 才收到了其提交的证明信息, $ \mathit{O}\rm{AttMsg}=\langle \mathit{Ow}, \mathit{O}{{\mathit{\sigma }}_{\mathit{w}}}, \mathit{Ot}, \mathit{O}{{\mathit{\sigma }}_{\mathit{t}}}, \mathit{O}{{\mathit{\sigma }}_{\mathit{Nt}}}, $ $ \rm{ikCer}{{\rm{t}}_{\mathit{O}\rm{pm}}}\rm{, ikCer}{{\rm{t}}_{\rm{vm}}}\rm{, ikCer}{{\rm{t}}_{\rm{as}}}\rangle .$由于在DTE中, 无需旧的pTPM通知CA将ikCertvm加入到CRL中, 以撤销信任扩展, 故ikCertvm不在CA的CRL中, 验证者仍然可以从ikCertvm中提取出publkvm.验证者也可以获取publkpm和publkas可以正常完成对tNt的验证.因此, DTE可提供前向安全保证.

6 原型系统与性能测试

为了测试DTE的性能, 我们在OpenStack基础上建立了一个DTE原型系统, 包含一个控制节点和两个计算节点.控制节点和计算节点的系统都是Ubuntu 14.04.2 LTS Server (64位).在控制节点上安装了网络时间协议(network time protocol, 简称NTP)服务、MySQL数据库、RabbitMQ消息代理服务、身份服务、镜像服务、计算服务和传统nova网络模块.在计算节点上安装了NTP服务、计算服务、传统nova网络模块、QEMU-KVM虚拟机管理程序(支持KVM全虚拟化的QEMU).NTP服务用来在AS、pTPM、vTPM和验证者之间同步时间.

6.1 原型系统

计算节点被配置为一个可信虚拟平台(trusted virtualized platform, 简称TVP), 包含一个pTPM代理和vTPM代理.AS被部署在控制节点上, 为了方便使用TPM的签名和验签功能, 控制节点被配置为一个可信计算平台TCP.为了简单起见, 计算节点的物理平台充当验证者的角色.另外, 在原型系统中没有CA, 不存在证书操作, 我们假设公钥不会被篡改.

为了测试对不同非对称密码算法的兼容性, 我们分别建立了针对TPM 1.2和TPM 2.0两个不同版本的原型系统, 其中, 基于TPM 1.2的原型系统如图 2所示.

Fig. 2 The architecture of the DTE prototype for TPM 1.2 图 2 针对TPM 1.2的DTE原型系统

在控制节点和计算节点上, 都配置有TPM 1.2模拟器[5]、设备驱动和TSS 1.2软件栈TrouSerS[6].在计算节点上还配置有libtpms[7]、基于软件的TPM模拟器(software-based TPM emulator, 简称SWTPM)[8]和SeaBIOS, 设定QEMU-KVM, 以支持vTPM 1.2.我们创建了一个集成有TPM 1.2设备驱动和TSS 1.2软件栈TrouSerS的虚拟机镜像, 系统为Ubuntu 12.04.5 LTS Server(64位).在构建针对TPM 2.0的原型系统时, 我们遇到了一些困难.

(1) TSS 2.0[9]的实现尚不完整, 只包含资源管理器层(resource manager, 简称RM)、TPM访问代理层(TPM access broker, 简称TAB)、TPM命令传输接口层(TPM command transmission interface, 简称TCTI)和系统API(system application program interface, 简称SysAPI), 缺少特征API(feature API).

(2) 没有用以创建QEMU TPM实例的TPM 2.0软件实现.

(3) QEMU-KVM不支持TPM 2.0设备.

(4) 虚拟机中的SeaBIOS不支持TPM 2.0扩展.

考虑到这些困难, 我们直接在控制节点、计算节点物理平台和虚拟机上运行Linux版的TPM 2.0模拟器[10].AS程序、pTPM代理和vTPM代理都使用TSS 2.0 SysAPI接口, 通过套接字驱动访问各自对应的TPM 2.0模拟器.针对TPM 2.0的原型系统如图 3所示.

Fig. 3 The architecture of the DTE prototype for TPM 2.0 图 3 针对TPM 2.0的DTE原型系统

6.2 功能接口调用性能测试

AS、pTPM代理、vTPM代理和验证者的大多数功能, 都可通过调用TSS1.2 TSPI或TSS2.0 SysAPI来实现, 但有些功能没有现成的TSS API可用, 我们转而调用OpenSSL接口, 例如RSA_Verify或者直接在代理程序中用代码实现, 例如SchnorrEcc.DTE的性能测试, 可以通过这些调用接口或函数所花费的时间来衡量, 测试结果见表 2.表中的时间是10次测试结果的平均值.在我们的实验中, 控制节点和计算节点都是运行在VMWare上的虚拟机, 每个虚拟机都被分配一个处理器和1GB(giga bytes)内存空间.运行VMWar的计算机, 处理器是Intel Core i3-4020Y@1.50GHZ, 内存是4GB, 系统是Windows 8.1.计算节点上的虚拟机所分配的内存大小为768MB(mega bytes).

Table 2 The performance of AS, pTPM, vTPM and Challenger 表 2 AS、pTPM、vTPM和验证者Challenger的性能测试结果

表 2可见, 调用TSS 2.0 SysAPI所用时间大约是TSS 1.2 TSPI的10倍, 主要原因是TSS 2.0有一个中间层RM, RM管理着上下文, 负责TPM对象、会话和一些队列的现场缓存与恢复, 以扩展TPM非常有限的内存, 花费了额外时间.RM也几乎消除了TPM 2.0中RSA和ECC的效率差异.另外, 由于swtpm 1.2实例直接运行在宿主机上, vTPM代理和swtpm 1.2之间的交互必须经过QEMU-KVM, 故vTPM代理调用Tspi_Conext_LoadKeyByUUID及Tspi_TPM_Quote的时间是pTPM和AS所用时间的20倍左右.另外, 还可以看到, 调用OpenSSL接口和在代理程序中直接编程实现的函数, 所用时间比TSS API要少.

6.3 与TCG可信虚拟平台两层深度认证的性能对比

在DTE中, pTPM对vTPM进行一次信任扩展, vTPM即可签署多次远程证明, 故我们主要考虑令牌获取和远程证明的时间, 以此来衡量DTE的性能, 并与TCG TVP的两层深度认证作对比, 结果见表 3.TCG TVP进行一次深度认证, 验证者可确定虚拟机及其宿主机的安全状况.在DTE里, 若将pTPM的平台配置寄存器(platform configure register, 简称PCR)映射到vTPM中, vTPM进行一次远程证明, 则验证者也可确定虚拟机及其宿主平台的安全状况.

Table 3 The comparison of DTE performance with TCG two layers deep attestation 表 3 DTE和TCG可信虚拟平台两层深度认证性能对比

表 3可见, 针对TPM 1.2 RSA, DTE生成完整性报告所用时间与TCG TVP深度认证大约相同.针对TPM 2.0 RSA和ECC, DTE生成完整性报告所用时间约是TCG TVP深度认证的2倍.若vTPM对完整性报告的签名由vTPM实例自己完成, 而非像原型系统由vTPM代理程序完成, 那么生成报告需要使用更多的时间.但在AS验签时间令牌请求消息和vTPM验签时间令牌的操作, 可不调用TSS API, 而是由代理程序直接使用公钥在外部完成, 以加速操作.针对TPM 1.2和2.0 RSA, DTE验证完整性报告所用时间与TCG TVP深度认证大约相同.针对TPM 2.0 ECC, DTE验证完整性报告所用时间甚至比TCG TVP还少, 这主要是因为在DTE原型系统中, 代理程序直接使用公钥在外部完成验签操作.

6.4 vTPM频繁迁移时的性能分析

增加vTPM状态管理模块和迁移模块, 在基于KVM的两个计算节点之间, 实现vTPM与虚拟机相绑定的动态迁移, 保证迁移后vTPM的可用性和安全状态的一致性.为了分析DTE在vTPM频繁迁移时的性能状况, 我们假设vTPM在两个计算节点之间迁移了m次, 每次迁移完成后, vTPM进行p次远程证明, 并与基于传统证书链的信任扩展进行对比分析, 结果见表 4.

Table 4 The DTE performance with frequent vTPM migrations 表 4 vTPM频繁迁移时DTE的性能表现

每次迁移发生时, 在DTE里, 有vTPM获取新pTPM授权书的过程, 尽管基于证书链的信任扩展机制没有这一过程, 但需要重新向CA获取IK证书.获取CA证书所用时间受到CA服务器性能、网络等诸多因素的影响, 在此, 我们假设CA签署IK证书所用时间与pTPM对授权书签名相同, vTPM验证IK证书所用时间与验证授权书相同.故获取新pTPM授权, 并不会增加DTE的时间负担.此外, 在迁移时, 若旧的授权书未过期, 则DTE需要旧pTPM告知AS撤销授权, 但基于证书链的信任扩展机制也需要告知CA将旧的IK证书加入到CRL中.故撤销旧pTPM授权, 也不会增加DTE的时间负担.

在迁移完成后, vTPM每次进行远程证明时, DTE需要向AS获取时间令牌, 而基于证书链的信任扩展机制没有这一过程.DTE获取令牌与vTPM签署证明报告所用时间之和, 与基于证书链的信任扩展机制里签署两层完整性报告所用时间的对比, 以及两种机制里验证报告所用时间的对比, 在第6.3节中已有分析.从功能接口调用性能测试结果、与TCG TVP深度认证的对比以及对vTPM进行频繁迁移时的性能分析来看, DTE是可行的.另外, 还可通过简化TPM上下文缓存管理来提高DTE的性能.

7 相关工作

Berger等人[2]还提出了第3种机制, 建立一个本地CA, 用以给vTPM颁发证书.TCG在可信虚拟平台TVP规范[3]里也提出了一种类似的机制, 在特权虚拟机或者虚拟机监控程序里建立本地CA, 用以给vTPM颁发证书.但是, 这两种机制都没有描述本地CA与全局CA和pTPM之间的关系, vTPM和pTPM之间并没有建立可信关联.

IBM公司定义过一些TPM虚拟化命令[11], 使用这些命令以基于pTPM创建、删除、挂起、还原、迁移vTPM实例.England等人[12]和Stumpf等人[13]都提出了相似的方法, 让多个虚拟机通过一个控制结构体安全地共享一个pTPM.Sadeghi等人[14]提出了一种基于属性设计的vTPM, 以提高其可维护性和适用性.Aziz等人[15]提出通过一个远程服务器, 为虚拟机提供TPM功能.Liu等人[16]提出了一种vTPM云架构, 没有TPM模块的平台可以访问TPM云, 以获得TPM功能.这些工作都主要集中在如何为虚拟机提供TPM功能上, 并没有考虑如何将pTPM的信任扩展到vTPM或者在没有pTPM的情况下如何构建可信根.

8 总结

本文提出了一种适用于vTPM频繁迁移的动态可信拓展方法DTE.DTE将vTPM看作是pTPM的一个代理, 利用从AS处获得的时间令牌, 进行虚拟机的远程证明.DTE在vTPM和pTPM之间建立了紧密的安全关联, 但又能明显区分这两种不同安全强度的TPM.当vTPM发生迁移时, 旧宿主机上的pTPM通知AS, 停止授予令牌给vTPM, 可及时撤销信任扩展.迁移完成之后, 新宿主机上的pTPM会对vTPM进行新的信任授权, vTPM无需生成新的IK、申请新的IK证书, 而且在旧宿主机上生成的完整性报告签名依然有效.从原型系统的性能测试结果来看, DTE远程证明的签名与验签操作均可在可接受的时间内完成.

在DTE中, vTPM是pTPM对认证数据进行签名的一个代理.DTE是代理签名的一种实际应用, 代理签名最早由Masahiro等人[17, 18]在1996年提出.尽管DTE的过程和算法已在本文中有详细的阐述, 但仍有一些问题值得探讨.例如:(1) 若vTPM已被迁移到新的宿主机上, 该主机与旧主机对应不同的AS, 那么DTE在这种跨AS的情况下应如何工作; (2) 如何将DTE与PCR扩展事件日志传输、验证者检查平台部件完整性与标准值符合性相结合; (3) DTE如何支持直接匿名验证DAA(direct anonymous attestation).这些都是我们后续的工作.

参考文献
[1]
Trusted Computing Group (TCG).TCG Specification Architecture Overview pecification Revision 1.4.2007.https://www.trusted computinggroup.org/wp-content/uploads/TCG_1_4_Architecture_Overview.pdf
[2]
Berger S, Cáceres R, Goldman KA, Perez R, Sailer R, van Doorn L.VTPM: Virtualizing the trusted platform module.In: Proc.of the 15th USENIX Security Symp., Security 2006.Berkeley: USENIX Association, 2006.305-320.https://www.usenix.org/legacy/event/sec06/tech/full_papers/berger/berger.pdf
[3]
Trusted Computing Group (TCG).Virtualized trusted platform architecture specification version 1.0 revision 0.26.2011.http://www.trustedcomputinggroup.org/wp-content/uploads/TCG_VPWG_Architecture_V1-0_R0-26_FINAL.pdf
[4]
Danev B, Masti RJ, Karame GO, Capkun S.Enabling secure VM-VTPM migration in private clouds.In: Proc.of the 27th Annual Computer Security Applications Conf., ACSAC 2011.New York: ACM, 2011.187-196.[doi: 10.1145/2076732.2076759]
[5]
Strasser M.PeterHuewe tpm-emulator v0.7.4.The famous TPM-emulator.2014.https://github.com/PeterHuewe/tpm-emulator
[6]
Int'l Business Machines Corp (IBM).TrouSerS 0.3.13.An open-source TCG software stack implementation.2014.https://sourceforge.net/projects/trousers/
[7]
Int'l Business Machines Corp (IBM).LibTPMs v0.5.2.1.A library that targets the integration of TPM functionality into hypervisors, primarily into qemu.2015.https://github.com/stefanberger/libtpms
[8]
Int'l Business Machines Corp (IBM).Software-Based TPM Emulator (SWTPM) 0.7.4.The package provides socket interfaces and the Linux cuse interface to LibTPMs for the creation of mulitple native/dev/vtpm* devices.2011.https://sourceforge.net/projects/tpm-emulator.berlios/
[9]
Intel.TPM2.0-TSS 0.97.Trusted platform module 2.0 software stack.2015.https://github.com/01org/TPM2.0-TSS
[10]
Int'l Business Machines Corp (IBM).IBM's Software TPM 2.0 477.It is based on the TPM specification parts 3 and 4 source code donated by microsoft, with additional files to complete the implementation.2015.https://sourceforge.net/projects/ibmswtpm2/
[11]
International Business Machines Corporation (IBM).TPM main part 3 IBM commands specification version 1.2 revision 36.2008.http://researcher.watson.ibm.com/researcher/files/us-kgoldman/mainP3IBMCommandsrev36.pdf
[12]
England P, Loeser J.Para-Virtualized TPM sharing.In: Lipp P, Sadeghi AR, Koch KM, eds.Trusted Computing-Challenges and Applications, the Proc.of the 1st Int'l Conf.on Trusted Computing and Trust in Information Technologies, Trust 2008.LNCS 4968, Berlin, Heidelberg: Springer-Verlag, 2008.119-132.[doi:10.1007/978-3-540-68979-9_9]
[13]
Stumpf F, Eckert C.Enhancing trusted platform modules with hardware-based virtualization techniques.In: Proc.of the 2nd Int'l Conf.on Emerging Security Information, Systems and Technologies (SECUWARE 2008).IEEE Computer Society, 2008.1-9.[doi: 10.1109/SECURWARE.2008.23]
[14]
Sadeghi AR, Stüble C, Winandy M.Property-Based TPM virtualization.In: Wu TC, Lei CL, Rijmen V, Lee DT, eds.Proc.of the 11th Int'l Conf., ISC 2008.LNCS 5222, Berlin, Heidelberg: Springer-Verlag, 2008.1-16.[doi: 10.1007/978-3-540-85886-7_1]
[15]
Aziz NA, Khalid PS.Utilizing TPM functionalities on remote server.In: Yeo SS, Pan Y, Lee YS, Chang HB, eds.Computer Science and its Applications, CSA 2012.LNEE 203, Springer Netherlands, 2012.3-12.[doi: 10.1007/978-94-007-5699-1_1]
[16]
Liu D, Lee J, Jang J, Nepal S, Zic J.A cloud architecture of virtual trusted platform modules.In: Proc.of the 8th IEEE/IFIP Int'l Conf.on Embedded and Ubiquitous Computing (EUC).Washington: IEEE Computer Society, 2010.804-811.[doi: 10.1109/EUC.2010.125]
[17]
Masahiro M, Usuda K, Okamoto E. Proxy signatures: Delegation of the power to sign messages. IEICE Trans.on Fundamentals of Electronics Communications and Computer Sciences, 1996, E79-A(9): 1338–1354.
[18]
Masahiro M, Usuda K, Okamoto E.Proxy signatures for delegating signing operation.In: Proc.of the 3rd ACM Conf.on Computer and Communications Security, CCS'96.New York: ACM, 1996.48-57.[doi: 10.1145/238168.238185]