system: [SYSTEM]

user: 4. 基于tEK证书的虚拟可信证书生成方法 4.1. vTPM虚拟证书链扩展 由于vTPM中没有受硬件保护的CRTM，因此虚拟环境下也就不会有EK证书。当客户虚拟机进行远程证明时，vTPM所产生的vAIK无法证明自己与一个可信的vEK绑定，也无法证明自身的可信性。因此，必须建立从物理TPM到vTPM的证书链，将TPM的信任关系传递到vTPM上。 本文针对上文提出的可信系统架构引入Domain T域身份密钥tEK，建立起tEK-vEK-vAIK形式的证书链。在介绍证书链扩展方案前，首先对信任关系和可信证明的性质定义进行介绍： 定义1 信任关系：实体A信任B，记做 A T r u s t B 。信任关系具有以下性质： 1) 自信任性： A T r u s t A 。 2) 传递性： A T r u s t B ， B T r u s t C ⇒ A T r u s t C 。 定义2 可信证明：当实体B向挑战者提供的证明实体A信任B的证据 E v i B ，能够满足A信任B的标准要求 T r u s t S A ， b 时，可得 A T r u s t B ，记做 E v i B   E q u   T r u s t S A ， b ⇒ A T r u s t B 。 对于证书链的构建方法，目前已有一些研究成果。文献 [ 10 ] 提出 A I K − v A I K 形式的证书链方案，绕过 v E K 直接由 C e r t A I K 签发 C e r t v A I K 。该方案首先利用 A I K 对 v A I K 公钥、物理TPM的PCR值、随机数 n o n c e 及时间戳进行签名，在此本文用 S i g n { v A I K p u b ， P C R ， n o n c e ， t i m e } A I K p r i 表示，然后将签名数据与 C e r t A I K 一同构成 C e r t v A I K 。由于 C e r t v A I K 是由 C e r t A I K 签发，因此实现了 C A T r u s t C e r t A I K ， C e r t A I K T r u s t C e r t v A I K ⇒ C A T r u s t C e r t v A I K 的信任传递。然而根据TCG规范， A I K p r i 不能用于对TPM外部数据签名。此外由于 C e r t A I K 生命周期短，每次验证后都应当重新生成 C e r t A I K ，导致 C e r t v A I K 随 C e r t A I K 的失效而失效。 针对 A I K 不能对外部数据签名的规定，文献 [ 16 ] 提出一种新密钥 S K ( S i g n a t u r e k e y ) ，通过 S i g n S K p u b A I K p u b ， S i g n v A I K p u b S K p u b 的方式形成 A I K 与 v A I K 的间接签名。然而，该方案依然存在 时效性差的问题。 为解决 C e r t A I K 时效性问题，文献 [ 17 ] 引入私钥生成中心(Private Key Generation， PKG)，提出利用环签名证明VM的可信性。首先云平台利用隐私认证中心(Privacy Certification Authority， CA)向PKG证明可信性，PKG产生部分环签名密钥发给云平台，云平台再将部分环签名发给vTPM manager，最后vTPM manager将签名分发给vTPM。然而该方案的问题在于vTPM中的vPCR不完全等同于TPM中的PCR，当挑战者发起验证时会因为PKG中存储的是云平台PCR值，与vPCR值不匹配而导致验证失败。 因此，为了规避 C e r t A I K 时生命周期短的特性，同时满足 A I K p r i 对TPM内部数据签名的合规性要求，本文引入Domain T域身份密钥 t E K 。CA首先通过验证Domain T的完整性向Domain T签发 C e r t t E K ，之后由Domain T签发 C e r t v E K ，进而保证 C e r t v A I K 的合法性。 CA签发 C e r t t E K 必须建立在 C A   T r u s t   D o m T 的基础上。根据定义1的信任传递性特点，需要先证明 C A T r u s t T P M ， T P M T r u s t D o m T 。 E v i T P M   E q u   T r u s t S C A ， T P M ⇒ C A T r u s t T P M 的过程是标准的 签发过程，在此不再赘述。接下来证明 T P M   T r u s t D o m T 成立的条件是 T r u s t S T P M ， D o m T = { D o m T ∈ X e n ， P C R [ 13 ] = S H A 1 ( D o m T ) } 。由于Domain T运行在Xen Hypervisor之上，本文将Domain T的度量包含在Xen的启动过程内，并将其摘要值扩展地写入PCR [ 13 ] 中，因此 E v i D o m T   E q u T   r u s t S T P M ， D o m T 。 至此， C A T r u s t T P M ， T P M T   r u s t D o m T 的信任传递建立成立。 vTPM中 C e r t v E K ， C e r t v A I K 生成的具体流程如下： 1) Domain T生成tEK密钥对，并向CA发送 C e r t t E K 请求。 2) CA向Domain T发送 C A p u b 以及一个随机数 n o n c e 。 3) Domain T利用该随机数 n o n c e 向平台TPM发起远程挑战。 4) TPM使用 A I K p r i 对物理PCR值、 n o n c e 进行签名，将签名结果 S i g n { P C R ， n o n c e } A I K p r i 和 C e r t A I K 、度量日志一起返回给Domain T。 5) Domain T使用 C A p u b 对 t E K p u b 以及TPM发来的签名结果、 C e r t A I K 、度量日志进行签名，一起发给CA。 6) CA通过解密并比对TPM中PCR [ 13 ] 的值判断Domain T是否完整。若比对通过，则 C A 向Domain T签发 C e r t t E K 。 7) 当Domain T产生新的vTPM时，vTPM 随机生成vEK密钥对，Domain T通过 t E K p u b 签名 v E K p u b ，配合 C e r t t E K 一起形成 C e r t v E K 。 8) 当vTPM申请 C e r t v A I K 时首先向Domain T发送 C e r t v A I K 请求，由Domain T返回一个 t E K p u b 以及一个随机数 n o n c e 。 9) vTPM随机生成vAIK密钥对，然后将 v A I K p u b 、 C e r t v E K 和 n o n c e 经 t E K p u b 签名后发送给Domain T。 10) Domain T通过解密比对确认 C e r t v E K 有效后签发 C e r t v A I K 。 CA通过验证平台完整性即可验证Domain T的完整性，通过挑战平台完整性即可挑战 C e r t t E K 的有效性。这一过程不涉及AIK密钥对TPM外部数据的签名。 C e r t v E K 与 C e r t v A I K 由Domain T直接颁发，解决了 C e r t v A I K 与某一个 C e r t A I K 强绑定所导致的时效性差的问题。围绕 C e r t v A I K 的生成与签发，本文所提虚拟证书链构建方案与其他现有方法的优缺点对比如表1所示。 4.2. vTPM虚拟证书链实现 本文在Domain T的tEK证书申请过程中，采用Intel的OpenAttestation开源框架作为CA，通过在Domain T中新增GetCert命令人工地触发tEK证书申请流程。当Xen获得nonce随机数后，利用Tspi_Context_CreateObject函数构建一个PCR对象，利用Tspi_PcrComposite_SelectPcrIndex函数获取PCR [ 13 ] 的值，并利用Tspi_TPM_Quote (AIK， PCRIndex， nonce)函数生成平台状态信息，最后将平台信息发送给Domain T。同时，OpenAttestation通过修改源码实现了PCR值比对和tEK证书签发的功能。 此外，本文对vTPM实例中TPM Emulator的工作流程进行了修改，在TPM Emulator创建完成vEK公钥后，改为向Domain T中的CertListener进程发送vEK证书申请，vAIK证书申请也被重定向到CertListener中。CertListener向vTPM返回vAIK证书后，vTPM利用Tspi_Key_LoadKey函数加载vAIK证书进入vTPM，并利用Tspi_TPM_ActivateIdentity函数激活vAIK证书。