软件学报  2019, Vol. 30 Issue (8): 2287-2313   PDF    
基于Duplication Authority的TPM2.0密钥迁移协议
谭良1,2, 宋敏1     
1. 四川师范大学 计算机科学学院, 四川 成都 610101;
2. 中国科学院 计算技术研究所, 北京 100190
摘要: 《TPM-Rev-2.0-Part-1-Architecture-01.38》国际标准允许用户基于密钥复制接口设计迁移协议,此复制接口通过innerwrap和outerwrap为密钥迁移提供机密性、完整性和认证性.但研究发现,基于该复制接口来设计密钥迁移协议存在3个问题:其一是缺少交互双方TPM的相互认证,会导致密钥能够在敌手和TPM间迁移;其二是当迁移密钥的属性encryptedDuplication=0且新父密钥的句柄newParentHandle=TPM_RH_NULL时,复制接口不能实施innerwrap和outerwrap,迁移密钥将以明文传输而造成泄露;其三当新父密钥是对称密钥时,innerwrap中的对称加密密钥以及outerwrap中的密钥种子如何在源TPM与目标TPM之间安全交换,《TPM-Rev-2.0-Part-1-Architecture-01.38》并没有给出具体的解决办法.针对上述问题,提出了基于Duplication Authority的密钥迁移协议.该协议以Duplication Authority为认证和控制中心,将密钥迁移过程分为初始化阶段、认证和属性获取阶段以及控制和执行阶段.Duplication Authority通过判定密钥的复制属性和类型、新父密钥的密钥类型和句柄类型来决定迁移流程.考虑了各种合理的属性组合,共设计了12种迁移流程.最后对该协议进行了安全分析和实验验证,结果显示,该协议不仅完全满足《TPM-Rev-2.0-Part-1-Architecture-01.38》规范,而且可以保证迁移密钥的完整性、机密性和认证性.
关键词: 可信计算     可信平台模块     密钥层次结构     密钥复制     密钥迁移    
TPM2.0 Key Migration-protocol Based on Duplication Authority
TAN Liang1,2, SONG Min1     
1. School of Computer Science, Sichuan Normal University, Chengdu 610101, China;
2. Institute of Computing Technology, Chinese Academy of Sciences, Beijing 100190, China
Foundation item: National Natural Science Foundation of China (61373162); Key Research and Development Project of Science and Technology Bureau, Sichuan Province (2014GZ0007); Project of Sichuan Provincial Key Laboratory of Visual Computing and Virtual Reality (KJ201402)
Abstract: International Standard "TPM-Rev-2.0-Part-1-Architecture-01.38" allows users to design a migration protocol based on the duplication interface which provides confidentiality, integrity, and authentication for key migration by innerwrap and outerwrap. However, the researchs have found that there are three problems, one is the lack of mutual authentication between the two parties of the interaction TPM, which results in the transfer of keys between adversaries and TPM. The other is that when the property of the duplication key encryptedDuplication=0 and the new parent key handle newParentHandle=TPM_RH_NULL, the duplication interface can not implement innerwrap and outerwrap, the migration key will be transmitted in clear text. The third is that how are the symmetric encryption key in innerwrap and the seed in outerwrap exchanged securely between the source TPM and the target TPM when the new parent key is a symmetric key. "TPM-Rev-2.0-Part-1-Architecture-01.38" did not give a specific solution. In order to solve the above problems, this study proposes a transfer protocol based on Duplication Authority which uses as the authentication and control center, and the protocol is divided into three phases:initialization phase, authentication and attribute acquisition phase, and control and execution phase. Duplication Authority determines the migration process by the migration key's duplication attributes and types, the key type and handle type of the new parent key. A combination of various compliance attributes was considered and a total of 12 migration processes were designed. Finally, the protocol was analyzed by security and experiments, the results show that the protocol is not only fully compliant with the "TPM-Rev-2.0-Part-1-Architecture-01.38" specification but also meets the requirements of integrity, confidentiality, and authenticity for key migration.
Key words: trusted computing     trusted platform module     key hierarchy     key duplication     key migration    

可信计算技术的基本思想是:在通用计算平台上嵌入一个防篡改的硬件可信安全芯片, 利用芯片的安全特性保证系统按照预期的行为执行, 从根本上提高终端的安全性[1].TPM(trusted platform module)[2]是国际广泛使用的是符合可信平台模块标准的安全芯片, 具有密码学功能和受保护的存储空间, 能够为可信计算平台提供密钥管理、平台数据保护、完整性存储与报告、身份标识等功能[2-4].

密钥管理是TPM非常重要的功能, 它是TPM能够有效地提供其他各项功能的前提和基础.为了满足密钥的安全存储、分发和备份, TPM采用层次型的存储保护体系, 并提供密钥迁移(复制)接口.TPM1.1[5]规范中定义的密钥迁移接口是TPM_AuthorizeMigrationKey, TPM_CreateMigratedBlobTPM_convertMigratedBlob等; TPM1.2[6]规范定义的密钥迁移接口是TPM_AuthorizeMigratinKey(), TPM_CMK_ApproveMA(), TPM_CMK_CreateKey(), TPM_CMK_CreateTicket(), TPM_CMK_CreateBlob()和TPM_CMK_ConvertMigration()等; TPM2.0[7]规范定义的密钥复制接口是TPM2_Duplicate()和TPM2_Import().通常, 用户或上层应用可以通过以上接口设计密钥迁移协议, 将源TPM中的密钥迁移到目的TPM中, 以实现TPM芯片间密钥的共享.为了保证整个迁移过程的安全, 需要提供机密性、完整性和认证性.

然而, TPM2.0的密钥迁移协议设计会更加复杂.一方面, 由于TPM2.0已支持对称密钥对象, 使得在设计密钥迁移协议时需要考虑更多的迁移组合.因为迁移密钥既可以是对称密钥也可以是非对称密钥, 而新父密钥也可以是对称密钥或非对称密钥, 不同的迁移需求组合在协议设计过程中需要进行不同的设计.另一方面, TPM2.0是通过迁移密钥对象的复制属性(fixedTPM, fixedParen, encryptedDuplication)和新父密钥的newParentHandle类型来决定迁移方式和迁移过程.不同的组合, 其迁移方式和迁移过程是不同的, 特别是在密钥复制过程中是否进行innerwrapouterwrap, 是保证密钥迁移的机密性、完整性和认证性的关键.通过进一步研究发现, 基于密钥复制接口的密钥迁移协议至少存在3个问题:一是缺少交互双方TPM的相互认证, 会导致密钥能够在敌手和TPM间迁移; 二是当迁移密钥的属性encryptedDuplication=0且新父密钥的句柄newParentHandle= TPM_RH_NULL时, 复制接口不能实施innerwrapouterwrap, 迁移密钥将以明文传输而造成泄露; 三是当新父密钥是对称密钥时, innerwrap中的对称加密密钥以及outerwrap中的密钥种子如何在源TPM与目标TPM之间安全交换, 《TPM-Rev-2.0-Part-1-Architecture-01.38》并没有给出具体的解决办法.

为此, 本文提出了基于Duplication Authority的密钥迁移协议.该协议以Duplication Authority为认证和控制中心, 通过判定迁移密钥的复制属性、新父密钥的密钥类型和句柄类型来决定迁移流程.最后, 对该协议进行了安全分析和实验验证.

本文第1节简介TPM密钥迁移的相关背景知识.第2节介绍现有的TPM密钥迁移协议并指出其存在的问题.第3节详述本文提出的基于Duplication Authority的密钥迁移协议.第4节对提出的协议进行分析.第5节是实验验证和性能对比分析.第6节介绍可信安全芯片密钥迁移的相关研究工作.第7节总结全文.

1 背景知识

本节从TPM 2.0的密钥类型和结构、密钥对象管理保护体系、密钥迁移类接口这3个方面介绍本文的背景知识.

1.1 TPM2.0的密钥类型和结构

相比于TPM1.2, TPM2.0的密钥类型和结构发生了较大的变化.下面我们对此进行详细的介绍.

1.1.1 TPM2.0的密钥类型

1.按照密钥功能组合分类

TPM2.0中密钥对象的基本属性包括:

● Restricted Attribute:专用属性, 表明该密钥只能对特定对象进行操作.

● Sign Attribute:签名属性, 表明该密钥对象是否可以用于签名.

● Decrypt Attribute:机密属性, 表明该对象是否可以用于加解密.

根据以上3个属性, TPM2.0将密钥对象分为8类, 见表 1.

Table 1 Key classification of TPM 2.0 表 1 TPM2.0的密钥分类

这8类密钥与TPM1.2中7种类型密钥(签注密钥(endorsement key, 简称EK)、存储密钥(storage key, 简称SK)、身份认证密钥(attestation identity key, 简称AIK)、签名密钥(signing key)、绑定密钥(binding key)、继承密钥(legacy key)和验证密钥(authentication keys))的对应关系见表 2.

Table 2 Key type correspondence between TPM1.2 and TPM2.0 表 2 TPM1.2与TPM2.0的密钥类型对应关系

由此可见, TPM2.0的密钥类型更精确, 其中, 对应于TPM1.2中的TPM_KEY_SIGNING, TPM_KEY_IDENTITY这两类密钥功能略有增加.

2.按照密钥复制属性分类

TPM2.0中, 密钥对象除了基本属性外, 还包括一些其他属性, 如fixedTPMfixedParent, stclear, sensitiveDataOrigin, userWithAuth, adminWithPolicy, noDAencryptedDuplication.根据fixedTPMfixedParent的属性组合, 可以将密钥对象分为可复制密钥和不可复制密钥.如表 3所示.本文所指的可复制密钥, 就是指fixedTPM=0和fixedParent=0的密钥.

Table 3 Key classification for duplication 表 3 密钥可复制分类表

1.1.2 TPM2.0的密钥结构

TPM2.0中, 密钥对象的基本结构包括3个域:PublicArea, SensitiveArea或PrivateArea, 对TPM2.0内部的任意密钥k, 表示为k=(PublicArea, SensitiveArea); 外部的任意密钥, 通常表示为k=(PublicArea, PrivateArea), 其中,

Public Area

1) type:密钥类型.

2) nameAlg:此密钥支持的密码算法.

3) objectAttributes:密钥属性, 包括功能(Sign, DecryptRestricted)、授权(userWithAuth, adminWithPolicynoDA)、复制(fixedTPM, fixedParentencryptedDuplication)、生成方式(sensitiveDataOrigin)以及重置(stclear).

4) authPolicy:授权策略.

5) parameters:此类密码算法的参数.

6) unique:非对称密钥此项代表公钥; 对称密钥此项代表其SensitiveArea的摘要值.

Sensitive Area

1) sensitiveType:敏感数据类型.

2) authValue:授权值.

3) seedValue:对于对称的和非对称的存储密钥, 由该值产生保护child对象的密钥.对于非对称密钥的非存储密钥当前无用.对于其他对象, 该值与sensitive一起HASH产生unique摘要值.

4) sensitive:敏感参数值.对于非对称密钥, 此值表示私钥:对于对称密钥, 此值就是key; 对于消息码, 此值就是key; 对于数据对象, 此值就是敏感数据.

Private Area

1) encypted sensitive area:此密文是由父密钥的seedValue产生的keysensitive area加密的值.

2) HMAC消息码:此消息码是由父密钥的seedValue产生的keysensitive area进行HMAC的值.

在创建不同类型的对象时, 可以调用3个接口:TPM2_CreatePrimary(), TPM2_Create()和TPM2_ CreateLoaded().创建的对象类型依赖于输入参数ParentHandle的类型.函数执行成功会返回PublicAreaSensitiveArea, 前两个接口还会返回TPMS_CREATION_DATA类的creationData.

1.2 TPM2.0密钥对象管理存储保护体系

TPM2.0可通过TPM2_CreatePrimary, TPM2_CreateTPM2_CreateLoaded生成种子密钥对象、普通密钥对象和派生密钥对象, 所有的密钥对象形成一棵密钥树, 其中, 种子密钥对象一般作为根密钥保护所在层次的子密钥, 如图 1所示.在此密钥树中, TPM2.0将密钥对象分为可复制密钥对象、可跟随父密钥复制密钥对象以及不可复制密钥对象.不可复制密钥对象只能与原TPM芯片绑定, 不能被复制; 而可复制密钥对象可以复制到其他TPM中使用, 而可跟随父密钥复制密钥对象的存在使得在密钥树中一次能复制一棵子树, 比TPM1.2中的密钥迁移更灵活, 效率更高.

Fig. 1 TPM2.0 key protect tree 图 1 TPM2.0的密钥树

在TPM2.0密钥树中, 存储父密钥采用对称加密方法保护孩子密钥, 加密密钥由父密钥的密钥种子seedValue产生, 加密算法由父密钥的nameAlg指定.这一点与TPM1.2中用非对称密钥的私钥对孩子的私钥进行加密保护不同, 因此在TPM2.0的密钥树中, 无论是对称密钥还是非对称密钥, 只要是存储密钥, 都可以作为父节点.如图 2所示.

Fig. 2 Key hierarchy protection model of TPM2.0 图 2 TPM2.0的密钥层次保护模型

1.3 TPM2.0密钥对象复制接口

TPM2.0完整的密钥复制流程是将源TPM的密钥对象复制到目标TPM, 因此, 密钥复制应该包括两个接口:其一是复制数据的生成; 其二是复制数据的加载.

●接口1:复制数据生成接口:

TPM2_Duplication(objectHandle, newParentHandle, encrptionKeyIn, symmetricAlg).

其中, objectHandle为复制密钥的句柄; newParentHandle是新父密钥句柄; encryptionKeyIninnerwrap加密密钥, 该密钥或由caller传入, 或是由TPM产生; symmetricAlg是对称加密算法.该函数执行后返回3个值:其一是encryptionKeyOut, encryptionKeyOut返回的是由TPM产生的内部加密密钥, 如果TPM没产生内部加密密钥, 该值返回null; 其二是duplicate, duplicate是复制数据, 封装了被复制密钥的Sensitive Area; 最后是outSymSeed, outSymSeedouterwrap的密钥种子, 由它可以产生外部对称加密的密钥.

该接口的执行过程如下.

(1) 检查迁移密钥的属性fixedTPMfixedParent:如果设置不是(0, 0), 就结束复制过程.

(2) 检查迁移密钥的属性encryptedDuplication:

➢ 如果设置为1, 则判断newParentHandle是否为TPM_RH_NULL:如果为TPM_RH_NULL, 则结束复制过程; 否则, 转到步骤(3);

➢ 如果设置为0, 则转到步骤(4).

(3) 执行innerwrap, 用encrptionKeyIn对复制密钥的sensitiveArea进行加密, 生成encSensitive.

(4) 执行outerwrap, 用密钥种子seed生成加密密钥和HMAC密钥, 对encSensitive进行加密和HAMC运算, 得到dupSensitiveouterHMAC.

●接口2:复制数据导入接口:

TPM2_Import(newparentHandle, encryptionKey, duplicate, inSymSeed).

其中, newparentHandle是新父密钥句柄; encryptionKey是源TPM内的innerwrap密钥, 其值由TPM2_Duplicate的返回值encryptionKeyOut提供; duplicate是复制数据, 此值由TPM2_Duplicate的返回值duplicate提供; inSymSeed是源TPM内的outerwrap密钥种子, 此值由TPM2_Duplicate的返回值outSymSeed提供.

该接口的执行过程如下:

(1) 检查复制密钥的属性fixedTPMfixedParent:如果设置不是(0, 0), 就结束导入过程.

(2) 检查新父密钥是否为存储密钥:如不是, 结束导入过程.

(3) 检查innerwrap的加密密钥encryptionKey是否正确:如果不正确, 结束导入过程.

(4) 检查outerwrap的密钥种子inSymSeed是否正确:如果不正确, 结束导入过程.

(5) 由inSymSeednewparentHandle恢复出源TPM的outerwrap的HAMC密钥, 通过outerHAMC验证dupsensitive及其name的真实性和完整性; 然后再恢复出outerwrap的对称密钥, 对dupsensitive解密得到encsensitive.

(6) 用encryptionKeyencsensitive进行解密, 得到被复制密钥的sensitive; 并对sensitive及其name进行完整性校验.

通过对TPM2_Duplication接口和TPM2_Import接口的分析可知:采用TPM2.0的密钥复制接口来设计密钥迁移协议, 需要将新父密钥从目标TPM传递到源TPM, 源TPM调用TPM2_Duplication接口得到被迁移密钥的复制数据, 目标TPM调用TPM2_Import将复制数据载入.基本的流程如下.

(1) 目标TPM将新父密钥传递给源TPM.

(2) 源TPM调用TPM2_Duplication接口, 根据迁移密钥的复制属性(fixedTPM, fixedParen, encryptedDuplication)和新父密钥的newParentHandle类型实施innerwrapouterwrap, 得复制数据.

(3) 将复制数据传递给目标TPM, 目标TPM调用TPM2_Import将被迁移密钥加载到新父密钥下.

1.4 innerwrap和outerwrap过程

由第1.3节可以看出, 在利用TPM2_Duplication接口和TPM2_Import接口进行密钥迁移时, 复制过程的安全性不仅依赖innnerwrap, 而且依赖outerwrap.下面我们对innnerwrapouterwrap进行分析.

1.4.1 innerwrap过程

通过对《TPM-Rev-2.0-Part-1-Architecture-01.38》和《TPM-Rev-2.0-Part-3-Commands-01.38-code》分析发现, 密钥复制过程中是否进行innerwrap是由迁移密钥的属性encryptedDuplication和新父密钥的密钥句柄类型决定, 只有当encryptedDuplication=1且newParentHandle!=TPM_RH_NULL时, innerwrap才能发生. innerwrap过程中需要的对称加密密钥由caller决定, caller可以选择输入, 也可以选择由TPM自行产生.

innerwrap可以在复制过程中为迁移密钥提供完整性和机密性, 包括两个步骤:首先是用复制密钥的Hash算法计算复制密钥sensitivename的哈希值innerIntegrity, 保证复制密钥的完整性; 然后, 用某对称加密算法的CBF模式对innerIntegrity||sensitive进行加密, 得到encSensitive, 其中, 需要的对称加密算法和密钥由caller将其作为参数传入TPM2_Duplication.

从以上过程可以看出, 源TPM要完成innerwrap, 需要确保加密密钥安全地传递到目的TPM.因此, 如何将此加密密钥安全地传递到目的TPM, 是需要考虑的重要问题.需要考虑如下3种情况.

(1) 如果新父密钥是非对称密钥, 无论迁移密钥是对称密钥还是非对称密钥, innerwrap中需要的对称加密密钥可以由源TPM产生或由caller输入, 且可以采用《TPM-Rev-2.0-Part-1-Architecture-01.38》中B.10.3或C.6.3中规定的算法进行保护交换.

(2) 如果新父密钥是对称密钥, 而复制密钥是非对称密钥, 则innerwrap中需要的对称加密密钥可以由目的TPM产生, 且可以采用《TPM-Rev-2.0-Part-1-Architec-ture-01.38》中B.10.3或C.6.3中规定的算法进行保护交换.

(3) 如果新父密钥是对称密钥, 而迁移密钥也是对称密钥, 则innerwrap中需要的密钥无论是由源TPM产生或目的TPM产生或caller输入, 《TPM-Rev-2.0-Part-1-Architecture-01.38》中还未给出此密钥的保护交换办法.

1.4.2 outerwrap过程

通过对《TPM-Rev-2.0-Part-1-Architecture-01.38》和《TPM-Rev-2.0-Part-3-Commands-01.38-code》的分析发现, 密钥复制过程中是否进行outerwrap是由新父密钥的密钥句柄类型决定, 当newParentHandle!=TPM_ RH_NULL时, outerwrap就会发生; 当newParentHandle=TPM_RH_NULL时, outerwrap不会发生.究其原因是: outerwrap过程主要由新父密钥控制, 如果新父密钥的句柄为TPM_RH_NULL, 则新父密钥不能为outerwrap提供需要的算法及参数.

outerwrap可以在复制过程中为迁移密钥提供机密性、完整性以及对新父密钥的认证性, 包括两个步骤.

● 一是对encSensitive进行加密, 具体过程为:首先, 获得一个密钥种子seed; 然后, 将此密钥种子、新父密钥的npNameAlg和迁移密钥的Name作为KDFa()的参数, 产生对称加密密钥; 最后, 采用新父密钥的对称加密算法对encSensitive进行加密, 得到dupSensitive.

● 二是对dupSensitiveName进行HAMC运算, 产生消息码outerHMAC.具体过程为:首先, 用Seed和新父密钥的npNameAlg作为KDFa()的参数, 产生HAMC密钥; 然后, 采用新父密钥的HMAC算法进行运算, 获得消息码outerHMAC.

从以上过程可以看出, 源TPM要完成outerwrap不仅需要获得新父密钥的相关参数, 而且需要确保密钥种子seed能在源TPM和目的TPM之间安全地交换.需要考虑的3种情况与innerwrap要考虑的3种情况一致.

2 问题分析

本节先基于TPM2.0的密钥复制接口设计最初的密钥迁移协议, 然后详细分析其存在的问题[8].

该初始迁移协议包括6个参与实体:源TPM、源TPM的所有者、目标TPM、目标TPM的所有者、源TPM所在的主机、目标TPM所在的主机, 其中, 前4个实体是可信的, 而源和目标TPM所在的主机被认为是不可信的.为了叙述方便, 我们定义如下符号及函数, 见表 4.

Table 4 Symbols and functions 表 4 符号及函数

2.1 基于密钥复制接口的密钥迁移协议

基于第1节介绍的背景知识, 并根据《TPM-Rev-2.0-Part-1-Architecture-01.38》和《TPM-Rev-2.0-Part-3- Commands-01.38-code》规范的要求, 我们设计出基于复制接口的密钥迁移协议, 其流程如下.

1. HDHS:newParent.publicAera, newparentHandle, symmetrical.

2. OS:

(1) 获得objectHandle, newparentHandle.

(2) 决定encryptionKeyin的产生方式, 可以输入, 也可以由TPM内部产生.

(3) 调用接口TPM2_Duplication(objectHandle, newParentHandle, encrptionKeyIn, symmetricAlg).

3. TS:执行复制过程:

(1) 检查迁移密钥的属性fixedTPMfixedParent:如果设置不是(0, 0), 就结束复制过程, 转到步骤10.

(2) 检查迁移密钥的属性encryptedDuplication:

➢ 如果设置为1, 则判断newParentHandle是否为TPM_RH_NULL:如果为TPM_RH_NULL, 则结束复制过程, 转到步骤10;否则转到步骤3中的(3);

➢ 如果设置为0:newParentHandle不为TPM_RH_NULL, 则转到步骤3.(5);否则, 转向步骤3.(7).

(3) 执行innerwrap, 由caller输入或TPM产生encrptionKeyIn, 并用encrptionKeyIn对迁移密钥的sensitiveArea进行加密, 生成encSensitive.

(4) 对encrptionKeyIn进行保护, 分为两种情况:

➢ 如果新父密钥是非对称密钥, 如RSA或ECC密钥, 则用新父密钥的公钥加密encrptionKeyIn, 即

CencrptionKeyIn=RSA_OAEP(newParentHandle, encrptionKeyIn)或ECC_ECDH(newParentHandle, encrptionKeyIn), 并将sysmetrickey=CencrptionKeyIn;

➢ 如果新父密钥是对称密钥, 则直接sysmetrickey=encrptionKeyIn.

(5) 执行outerwrap, 由TPM产生密钥种子seed, 用密钥种子seed生成加密密钥和HMAC密钥, 对encSensitive进行加密和HAMC运算, 得到dupSensitiveouterHMAC.

(6) 对Seed进行保护, 分两种情况:

➢ 如果新父密钥是非对称密钥, 如RSA或ECC密钥, 则用新父密钥的公钥加密Seed, 即CSeed= RSA_OAEP(newParentHandle, Seed)或ECC_ECDH(newParentHandle, Seed), 并将sysmetricSeed=Cseed;

➢ 如果新父密钥是对称密钥, 则直接sysmetricSeed=Seed.

结束复制过程, 转到步骤4.

(7) 对复制密钥既不进行innerwrap, 也不进行outerwrap, 将dupSensitive=sensitiveArea, sysmetrickey= NULL, sysmetricSeed=NULL.

4. TSOS:dupSensitive, outerHMAC, sysmetrickey, sysmetricSeed.

5. OSHS:dupSensitive, outerHMAC, sysmetrickey, sysmetricSeed.

6. HSHD:dupSensitive, outerHMAC, sysmetrickey, sysmetricSeed.

7. HDOD:dupSensitive, outerHMAC, sysmetrickey, sysmetricSeed.

8. ODTD:dupSensitive, outerHMAC, sysmetrickey, sysmetricSeed.

9. TD:执行导入过程:

(1) 检查迁移密钥的属性fixedTPMfixedParent:如果设置不是(0, 0), 就结束导入过程, 转到步骤10.

(2) 检查新父密钥是否为存储密钥:如不是, 结束导入过程, 转到步骤10.

(3) 根据sysmetricSeed参数是否为NULL来判断是否进行了outerwrap.

➢ 如果为NULL, 则转到下一步;

➢ 否则, 直接得到seed或用私钥解密sysmetricSeed得到seed, 按照symmetricAlg算法生成HMAC密钥HMACkey, 并对dupSensitive||name进行HAMC运算, 将得到的值与outerHMAC比较:如果不相等, 终止导入过程, 转到步骤10;如果相等, 则用seed生成对称加密密钥symkey并解密dupSensitive, 得到encSensitive.

(4) 根据sysmetrickey参数是否为NULL来判断是否进行了innerwrap.

➢ 如果为NULL, 则转到步骤10;

➢ 否则, 直接得到encrptionKeyIn或用新父密钥的私钥解密sysmetrickey得到encrptionKeyIn, 用symmetricAlg算法对encSensitive进行解密, 得到Sensitivename, 用Hash算法对Sensitive||name进行完整性验证:验证通过, 则表明迁移成功, 转到步骤10;验证不通过, 则表明迁移不成功, 转到步骤10;

10.结束迁移过程.

2.2 存在问题

从第2.1节可以看出, 基于TPM2.0密钥复制接口设计的密钥迁移协议存在如下安全问题.

● 问题1:该协议缺少源TPM和目标TPM间的身份认证, 导致密钥能够在敌手和TPM间迁移.存在着如下两种情况:(1)源TPM不能认证newParent是否是目标TPM的密钥, 导致敌手可以用其控制的密钥迁移源TPM的密钥, 并获得密钥明文; (2)目标TPM不能认证迁移数据是否来自源TPM, 使敌手可以将其控制的密钥迁移到目标TPM中.

● 问题2:当复制密钥的属性encryptedDuplication=0且新父密钥的句柄newParentHandle=TPM_RH_ NULL时, 复制接口不能实施innerwrapouterwrap, 迁移密钥将以明文传输而造成泄露.

● 问题3:当新父密钥是对称密钥时, innerwrap中的对称加密密钥以及outerwrap中的密钥种子如何在源TPM与目标TPM之间安全交换, 《TPM-Rev-2.0-Part-1-Architecture-01.38》并没有给出具体的解决办法.

另外, 第2.1节的密钥迁移协议中复制流程比较复杂, 其中有几个关键的因素决定复制流程:首先, 密钥能否复制是由复制密钥的属性(fixedTPM, fixedParent)决定; 其次, 复制过程中是否实施innerwrap由复制密钥的encryptedDuplication属性决定; 第三, 复制过程中是否实施outerwrap由新父密钥的句柄类型决定; 第四, innerwrap中对称密钥和outerwrap中密钥种子的保护交换还依赖新父密钥的密钥类型.不同的属性值决定了不同的复制流程, 在所有的流程中, 部分流程的输出结果是存在安全隐患的.由于所有的判断均在TPM内部进行, 在执行完成之前, 外界无法知道TPM2_Duplication()的输出结果.为了保证复制过程的安全, 需要提前掌握复制流程.因此, 外界需要一个控制中心, 提前获知迁移密钥属性(fixedTPM, fixedParent, encryptedDuplication)、新父密钥类型和新父密钥句柄类型, 从而提前掌握复制流程, 并对复制过程的输出结果采取合理的保护措施.

3 基于Duplication Authority的密钥迁移协议

根据第2节的分析, 我们提出基于Duplication Authority的密钥迁移协议, 该协议以Duplication Authority为控制和认证中心, 负责对源TPM和目标TPM进行认证并控制复制流程.该协议包括3个阶段:初始化阶段、认证和属性获取阶段以及控制和执行阶段.鉴于篇幅和突出重点, 在该协议描述过程中, 我们仅考虑TPM与Duplication Authority以及源TPM与目标TPM之间的直接信息交互.

3.1 初始化阶段

初始化阶段的主要任务是源和目的TPM到Duplication Authority注册并对TPM进行认证, 流程如图 3所示.我们用DA代表Duplication Authority, (Kpub_DA, Kpri_DA)是Duplication Authority的一对非对称密钥, CertDA表示该公钥的证书.注册过程是TPM将自己的身份标识(IDTPM)注册到DA的数据库中, E(·)为加密函数, Sign(·)为签名函数, Verify(·)为验证函数, RA为注册标志位, CertEK为TPM的背书证书, Ntpm为TPM产生的随机数, NDA0为DA产生的随机数.具体的交互过程如下.

Fig. 3 Initialization phase 图 3 初始化阶段

1. TPMDA:E(ks, [CertEK||IDTPM||Signpri_EK(IDTPM)||Ntpm]), E(CertDA, ks).

2. DATPM:E(ks, RA||Ntpm||NDA0).

3. TPMDA:E(ks, NDA0).

下面我们对上述每一步进行详细解释, 具体如下.

● 步骤1:TPM向DA发送注册信息, 发送的具体内容:E(ks, [CertEK||IDTPM||Signpri_EK(IDTPM)||Ntpm])||E(CertDA, ks).DA接收到TPM发来的注册信息后, 首先用Kpri_DA解密得ks, 并用ks解密得CertEK||IDTPM|| Signpri_EK(IDTPM)||Ntpm; 然后, Verify(CertEK)和Verify(Signpri_EK(IDTPM)), 验证通过置RA=1, 否则置RA=0.

● 步骤2:TPM接收到DA的返回密文E(ks, RA||Ntpm||NDA0), 用ks解密, 读取RA的值, 验证Ntpm, 如果验证通过, 返回E(ks, NDA0).

● 步骤3:DA解密得到NDA0, 验证NDA0, 如果通过, 表明TPM已经知道注册成功, 则将CertEK||IDTPM存入注册数据库.

3.2 认证和属性获取阶段

认证和属性获取阶段包括两个主要任务:其一是源TPM与目标TPM交互双方基于Duplication Authority进行认证; 其二是为控制后期复制过程, DuplicationAuthority通过和目标TPM与源TPM的交互, 获得复制密钥和新父密钥的属性.为了叙述方便, 我们假设具体的应用场景是:TSTD均是在DA中注册的TPM, 当前要将TSobjectHandle所指向的密钥对象迁移到TDnewParentHandle所指向的新父密钥对象下.我们用标志位S表示对称密钥、非对称密钥或非密钥对象, S=0表示对称密钥, S=1表示非对称密钥, S=-1为非密钥对象; 用AlgParameter表示密钥对象支持的算法及相关参数, 流程如图 4所示.具体的交互过程如下.

Fig. 4 Authentication and attribute acquisition process 图 4 认证和属性获取阶段

1. TDDA:E(ks1, [IDTD||newParentHandle||newParentHandleS||newParentHandleAlgParameter||IDTS||objectHandle||NTD]), E(CertDA, ks1).

2. DATS:DRequest, Sign(Kpri_DA, DRequest||NDA1).

3. TSDA:E(ks2, [IDTS||NDA||NTS]), E(CertDA, ks2).

4. DATS:E(ks2, [IDTD||objectHandle||newParentHandleAlgParameter||NTD||NDA1||NTS]).

5. TSDA:E(ks2, [fixedTPM||fixedParent||encryptedDuplication||objectHandleS||NTD||NDA1||NTS]).

6. DATD:E(ks1, [NTD||NDA1||NTS]).

下面, 我们对上述每一步进行详细解释.具体如下.

● 步骤1:TD向DA发送迁移请求秘密信息.DA用私钥解密E(CertDA, ks1)得ks1, 并用ks1解密TD发送的具体内容, 得到目标TPM的ID、新父密钥的句柄newParentHandle、新父密钥标志位S、新父密钥的算法及相关参数AlgParameter、源TPM的ID以及现时NTD等.DA验证TDIDTDTsIDTS, 确认是否均为合法的TPM, 如果不合法则终止.

● 步骤2:DA根据IDTS向源TPM发送复制请求DRequest, 并对DRequestNDA1进行了签名.签名的目的是为了保证复制请求的真实性和认证性.

● 步骤3:TSCertDA验证复制请求后, 确认此信息来自DA, 并向DA发送共享密钥ks2和现时NTS

● 步骤4:DA解密获得ks2, 用ks2加密目的TPM的ID、复制密钥的句柄objectHandle、新父密钥的算法以及现时NTD, NDA1NTS并发送给TS.

● 步骤5:TS解密后, 获知有TD要迁移objectHandle所指向的密钥对象到其newParentHandle所指向的新父密钥对象下.由于目标TPM的ID来自DA, 因此TS认为TD是合法可信的TPM, 于是在确认自己支持新父密钥的算法及参数后, 向DA发送了objectHandle所指向的密钥对象的复制属性fixedTPM, fixedParent, encryptedDuplication以及密钥类型和现时NTD, NDA1NTS

● 步骤6:DA向TD发回现时NTD, NDA1NTS, 表明迁移准备就绪.

至此, 不仅DA获得了在复制过程中需要的复制密钥和新父密钥的相关属性, 而且TSTD得到相互认证.

3.3 控制和执行阶段

控制和执行阶段包括两个主要任务:其一是DA根据复制密钥和新父密钥的相关属性控制和选择具体的复制流程; 其二是迁移过程的具体执行.

上一阶段结束后, DA已经获得了复制密钥和新父密钥的相关属性, 包括fixedTPM, fixedParent, encryptedDuplication, newParentHandle, objecthandleS, newParentHandleS等, 这些属性的取值一共有96种组合, 但大部分组合是无效组合, DA可以根据这些属性组合对执行过程进行控制.我们经过分析, 有效组合一共有12种.为了方便叙述, 我们用EndEcho表示复制过程终止.限于篇幅, 各种情况的密钥迁移流程图略.具体的12种情况如下.

情况1:当fixedTPM!=0或fixedParent!=0时, 具体流程如下.

(1) DATD:E(ks1, [EndEcho||NTD||NDA1||NTS]).

(2) DATS:E(ks2, [EndEcho||NTD||NDA1||NTS]).

下面, 我们对上述每一步进行详细解释.具体如下.

● 步骤1:DA向TD发送EndEcho, 结束密钥迁移过程.

● 步骤2:DA向TS发送EndEcho, 结束密钥迁移过程.

本属性组合表明:只有当迁移密钥的fixedTPMfixedParent属性都置0时, 复制及迁移过程才可继续进行.

情况2:当fixedTPM=0, fixedParent=0, encryptedDuplication=1, newParentHandle=TPM_RH_NULL时, 具体流程如下.

(1) DATD:E(ks1, [EndEcho||NTD||NDA1||NTS]).

(2) DATS:E(ks2, [EndEcho||NTD||NDA1||NTS]).

下面, 我们对上述每一步进行详细解释.具体如下.

● 步骤1:DA向TD发送EndEcho, 结束密钥迁移过程.

● 步骤2:DA向TS发送EndEcho, 结束密钥迁移过程.

本属性组合表明:在密钥复制过程中, 如果只进行innerwrap是不行的, 复制及迁移过程会终止.

情况3:当fixedTPM=0, fixedParent=0, encryptedDuplication=1, newParentHandle!=TPM_RH_NULL, object thandleS=1, newParentHandleS=1时, 具体流程如下.

(1) DATS:Sign(Kpri_DA, [IDTD||newParentHandle||newParentHandleS||newParentHandleAlgParameter||NTD||NDA1||NTS]), E(ks2, [IDTD||newParentHandle||newParentHandleS||newParentHandleAlgParameter||NTD||NDA1||NTS]).

(2) TSTD:dupSensitive, outerHMAC, CencryptionKeyout, CSeed, encRng.

(3) TDTS:encRng.

(4) TSDA:encRng.

下面, 我们对上述每一步进行详细解释.具体如下.

● 步骤1:TS接收到DA的消息, 解密得到目标TPM的ID、新父密钥的句柄newParentHandle、新父密钥标志位S的值、新父密钥的算法及相关参数AlgParameter以及现时NTD, NDA1NTS.然后用CertDA验证签名, 再验证现时NTD, NDA1NTS.所有的验证通过, TS将进行如下计算.

1) 产生innerwrap需要的对称加密密钥encryptionKeyIn(可由TSOS输入).

2) 计算innerIntegrity=Hobject.nameAlg(object.sensitive||object.name).

3) 计算encSensitive=CFBobject.symAlg(encryptionKeyIn, 0, innerIntegrity||object.sensitive).

4) 根据AlgParameter, 计算CencryptionKeyIn=RSA_OAEP(newParentHandlePubliceArea, encrypt-tionKeyIn)或CencryptionKeyIn=ECC_ECDH(newParent HandlePubliceArea, encryptionKeyIn).

5) 产生outerwrap需要的密钥种子seed.

6) 计算symKey=KDFa(AlgParameter, seed, “STORAGE”, Name, NULL, bits).

7) 计算dupSensitive=CFBAlgParameter(symKey, 0, encSensitive).

8) 计算encRng=CFBAlgParameter(symKey, 0, [NTD||NDA||NTS]).

9) 计算HMACkey=KDFa(AlgParameter, seed, “INTEGRITY”, NULL, NULL, bits).

10) 计算outerHMAC=HMACnpNameAlg(HMACkey, dupSensitive||objecthandleName).

以上过程实际上是调用TPM2_Duplicate(objectHandle, newParentHandle, encryptionKeyIn, symmetric Alg)进行密钥复制, 对复制密钥实施innerwrapouterwrap.

● 步骤2:TD收到TS传来的dupSensitive, outerHMAC, CencryptionKeyout, CSeedencRng, 进行如下计算.

1) 用新父密钥的私钥解密CSeed, 得到Seed.

2) 用同样的算法生成HMACkeysymKey.

3) 用symKey解密encRng, 验证随机数NTD, NDA1NTS; 然后, 用HMACkey验证outerHMAC.如果验证都通过, 用symKeydupSensitive进行解密, 得到encSensitive.

4) 用新父密钥的私钥解密CencryptionKeyout得到encryptionKeyout, 用encryption-Keyout解密encSensitive得到innerIntegritySensitive, 用同样的H算法验证object.sensitive||object.name的完整性.如果验证通过, 则复制成功.

以上过程实际上是调用TPM2_Import(newparentHandle, CencryptionKeyout, dupSenstive, CSeed)进行复制密钥导入.

● 步骤3:TDTS返回encRng, TS解密验证随机数.如果相同, 表明迁移成功.

● 步骤4:TS给DA返回encRng, DA解密验证随机数.如果相同, 表明迁移成功, 结束迁移过程.

情况4:当fixedTPM=0, fixedParent=0, encryptedDuplication=1, newParentHandle!=TPM_RH_NULL, object handleS=1, newParentHandleS=0时, 其具体流程与情况3唯一的不同是新父密钥为对称密钥, innerwrap所需的encryptionKeyinouterwrap所需的Seed只能在TD中产生, 才能利用《TPM-Rev-2.0-Part-1- Architecture-01.38》中规定的RSA_OAEPECC_ECDH算法对encryptionKeyinSeed进行保护交换.我们用标志位Migrate_object.publicArea_to_TD表示DA要求TS将复制密钥的publicArea传递给TD.具体流程如下.

(1) DATS:Sign(Kpri_DA, [IDTD||newParentHandle||newParentHandleS||newParentHandleAlgParameter||Migrate_object.publicArea_to_TD||NTD||NDA||NTS]), E(ks2, [IDTD||newParentHandle||newParentHandleS||newParentHandleAlgParameter||Migrate_object.publicArea_to_TD||NTD||NDA1||NTS]).

(2) TSDA:E(ks2, [object.publicArea||NTD||NDA1||NTS]).

(3) DATD:E(ks1, [object.publicArea||NTD||NDA1||NTS]).

(4) TDTS:CencryptionKeyout, Cseed.

(5) TSTD:dupSensitive, outerHMAC, encRng.

(6) TDTS:encRng.

(7) TSDA:encRng.

下面, 我们对上述每一步进行详细解释.具体如下.

● 步骤1:与情况3基本相同的步骤一基本相同, 不同的是在步骤一中, DA发送给TS消息增加了标志位Migrate_object.publicArea_to_TD.

● 步骤2、步骤3:TS将复制密钥的公钥部分通过DA传给TD.

● 步骤4:由TD产生encryptionKeyinSeed, 用复制密钥的公钥加密得到CencryptionKeyinCSeed并传递给TS.

● 步骤5:与情况3的步骤2基本一致, TS调用TPM2_Duplicate(objectHandle, newParentHandle, encryptionKeyIn, symmetricAlg)进行密钥复制, 对复制密钥实施innerwrapouterwrap.由于encryptionKeyinSeed已经在TD, 因此发送给TD的数据就只有dupSensitive, outerHMACencRng.

● 步骤6:与情况3的步骤3一致.

● 步骤7:与情况3的步骤4一致.

情况5:当fixedTPM=0, fixedParent=0, encryptedDuplication=1, newParentHandle!=TPM_RH_NULL, object handleS=0, newParentHandleS=1时, 其具体流程与情况3一致, 略.

情况6:当fixedTPM=0, fixedParent=0, encryptedDuplication=1, newParentHandle!=TPM_RH_NULL, object handleS=0, newParentHandleS=0时, 其具体流程与前面所有的情况均不相同.本情况的复制密钥和新父密钥都是对称密钥, encryptionKeyinSeed无论在TSTD产生, 都无法用《TPM-Rev-2.0-Part-1-Architecture- 01.38》中规定的RSA_OAEPECC_ECDH算法进行保护交换.为了防止encryptionKeyinSeed泄露, 我们设计在DA的控制下用DH算法在TSTD之间交换共享密钥作为encryptionKeyinSeed.因此, 我们用标志位Pro_DH_encryptionKeyin_and_Seed表明此需求, 且TSTD双方已选择一共同的素数q以及q的一个原根a.具体流程如下.

(1) DATS:Sign(Kpri_DA, [IDTD||newParentHandle||newParentHandleS||newParentHandleAlgParameter||Pro_DH_encryptionKeyin_and_Seed||NTD||NDA1||NTS]), E(ks2, [IDTD||newParentHandle||newParentHandleS||newParentHandleAlgParameter||Pro_DH_encryptionKeyin_and_Seed||NTD||NDA1||NTS]).

(2) TSDA:E(Ks2, [IDS||Ys||NTD||NDA1||NTS]).

(3) DATD:E(Ks1, [IDS||Ys||NTD||NDA1||NTS||Sign(pri_DA, [IDS||Ys||NTD||NDA1||NTS])]).

(4) TDDA:E(Ks1, [IDD||YD||NTD||NDA1||NTS]).

(5) DATS:E(KS2, [IDD||YD||NTD||NDA1||NTS||Sign(pri_DA, [IDD||YD||NTD||NDA1||NTS])]).

(6) TSTD:dupSensitive, outerHMAC, encRng.

(7) TDTS:encRng.

(8) TSDA:encRng.

下面, 我们对上述每一步进行详细解释.具体如下.

● 步骤1:与情况3的步骤一基本相同, 不同的是DA发送给TS消息增加了标志位Pro_DH_ encryptionKeyin_and_Seed.

以下步骤2~步骤5就是防中间人攻击的DH算法.

● 步骤2:TS计算Ys=aXs mod q, 其中, XsTS的任选素数, Xs < q.然后, 把IDS||Ys发送给DA.

● 步骤3:DA对IDS||Ys进行签名Sign(pri_DA, [IDS||YS]), 并一起发送给TD.

● 步骤4:TD验证DA对TS的签名Verify(pub_DA, Sign (pri_DA, [IDS||YS])), 然后任选素数XD, 且XD < q, 并计算K0=YSXD mod q, 接下来在计算YD=aXD mod q, 然后将IDD||YD发送给DA.

● 步骤5:DA对IDD||YD进行Sign(pri_DA, [IDD||YD]), 并一起发送给TS, TS接收到YD后, 计算:

$ {K_0} = Y_S^{{X_D}}{\rm{ }}\bmod {\rm{ }}q{\rm{.}} $

● 步骤6:与情况3的步骤2基本一致, TS调用TPM2_Duplicate(objectHandle, newParentHandle, encryptionKeyIn, symmetricAlg)进行密钥复制, 对复制密钥实施innerwrapouterwrap, K0既作为innerwrapencryptionKeyin, 又作为outerwrapSeed.由于K0TSTD双方都存在, 因此发送给TD的数据就只有dupSensitive, outerHMACencRng.

● 步骤7:与情况3的步骤3一致.

● 步骤8:与情况3的步骤4一致.

情况7:当fixedTPM=0, fixedParent=0, encryptedDuplication=0, newParentHandle!=TPM_RH_NULL, object handleS=1, newParentHandleS=1时, 与情况3的流程基本一致, 只是在步骤1中不进行innerwrap, 即没有情况3步骤1中的步骤2)~步骤4), 在步骤2中也就不进行innerwrap密钥encryptionKeyin的保护交换.具体流程如下.

(1) DATS:Sign(Kpri_DA, [IDTD||newParentHandle||newParentHandleS||newParentHandleAlgParameter||NTD||NDA1||NTS]), E(ks2, [IDTD||newParentHandle||newParentHandleS||newParentHandleAlgParameter||NTD||NDA1||NTS]).

(2) TSTD:dupSensitive, outerHMAC, CSeed, encRng.

(3) TDTS:encRng.

(4) TSDA:encRng.

情况8:当fixedTPM=0, fixedParent=0, encryptedDuplication=0, newParentHandle!=TPM_RH_NULL, object handleS=1, newParentHandleS=0时, 与情况4基本一致.只是在步骤4中只传输CSeed, 这是因为本情况不进行innerwrap, 也就不进行innerwrap密钥encryptionKeyin的保护交换.具体流程如下.

(1) DATS:Sign(Kpri_DA, [IDTD||newParentHandle||newParentHandleS||newParentHandleAlgParameter||Migrate_object.publicArea_to_TD||NTD||NDA1||NTS]), E(ks2, [IDTD||newParentHandle||newParentHandleS||newParentHandleAlgParameter||Migrate_object.publicArea_to_TD||NTD||NDA1||NTS]).

(2) TSDA:E(ks2, [object.publicArea||NTD||NDA1||NTS]).

(3) DATD:E(ks1, [object.publicArea||NTD||NDA1||NTS]).

(4) TDTS:Cseed.

(5) TSTD:dupSensitive, outerHMAC, encRng.

(6) TDTS:encRng.

(7) TSDA:encRng.

情况9:当fixedTPM=0, fixedParent=0, encryptedDuplication=0, newParentHandle!=TPM_RH_NULL, object handleS=0, newParentHandleS=1时, 与情况7一致, 略.

情况10:当fixedTPM=0, fixedParent=0, encryptedDuplication=0, newParentHandle!=TPM_RH_NULL, object handleS=0, newParentHandleS=0时, 与情况6基本相同, 都面对的是复制密钥和新父密钥是对称密钥的情况.不同的是, 本情况不需进行innerwrap.因此在步骤1中, 原请求TS产生innerwarp密钥和outerwrap密钥种子的标志Pro_DH_encryptionKeyin_and_Seed变为了只产生outerwrap密钥种子的标志Pro_DH_Seed, 相应地, 用DH算法使得TSTD共享会话密钥K0只作为Seed进行outerwarp.具体流程如下.

(1) DATS:Sign(Kpri_DA, [IDTD||newParentHandle||newParentHandleS||newParentHandleAlgParameter||Pro_DH_Seed||NTD||NDA1||NTS]), E(ks2, [IDTD||newParentHandle||newParentHandleS||newParentHandleAlgParameter||Pro_DH_Seed||NTD||NDA1||NTS]).

(2) TSDA:E(Ks2, [IDS||Ys||NTD||NDA1||NTS]).

(3) DATD:E(Ks1, [IDS||Ys||NTD||NDA1||NTS||Sign(pri_DA, [IDS||Ys||NTD||NDA1||NTS])]).

(4) TDDA:E(Ks1, [IDD||YD||NTD||NDA1||NTS]).

(5) DATS:E(KS2, [IDD||YD||NTD||NDA1||NTS||Sign(pri_DA, [IDD||YD||NTD||NDA1||NTS])]).

(6) TSTD:dupSensitive, outerHMAC, encRng.

(7) TDTS:encRng.

情况11:当fixedTPM=0, fixedParent=0, encryptedDuplication=0, newParentHandle=TPM_RH_NULL, object handleS=1, newParentHandleS=-1时.本情况面对的是复制密钥是非对称密钥而新父密钥是非层次结构的非密钥对象, 如密钥种子、空授权对象等.显然, 这种情况密钥在复制过程中既不进行innerwrap, 也不进行outerwrap, 复制密钥将以明文在TDTS之间传输, 存在泄露的可能.为了防止泄露, 在DA的控制下, TDTS通过DH算法而共享会话密钥, 用该密钥对复制密钥加密.具体流程如下.

(1) DATS:Sign(Kpri_DA, [IDTD||newParentHandle||newParentHandleS||newParentHandleAlgParameter||Pro_DH_KEY||NTD||NDA1||NTS]), E(ks2, [IDTD||newParentHandle||newParentHandleS||newParentHandleAlgParameter||Pro_DH_KEY||NTD||NDA1||NTS]).

(2) TSDA:E(Ks2, [IDS||Ys||NTD||NDA1||NTS]).

(3) DATD:E(Ks1, [IDS||Ys||NTD||NDA1||NTS||Sign(pri_DA, [IDS||Ys||NTD||NDA1||NTS])]).

(4) TDDA:E(Ks1, [IDD||YD||NTD||NDA1||NTS]).

(5) DATS:E(KS2, [IDD||YD||NTD||NDA1||NTS||Sign(pri_DA, [IDD||YD||NTD||NDA1||NTS])]).

(6) TSTD:E(K0, object.sensitiveArea), E(K0, [NTD||NDA1||NTS]).

(7) TDTS:E(K0, E(K0, [NTD||NDA1||NTS]).

下面, 我们对上述每一步进行详细解释.具体如下.

● 步骤1:DA向TS发出Pro_DH_KEY标志, 要求TDTS交换共享密钥.

● 步骤2~步骤5:用防止中间人攻击的DH算法使得TSTD共享密钥K0.

● 步骤6:TSK0加密复制密钥和现时, 然后传递给TD.

● 步骤7:TD验证现时并回复TS, 表明复制成功.

情况12:当fixedTPM=0, fixedParent=0, encryptedDuplication=0, newParentHandle=TPM_RH_NULL, object handleS=0, newParentHandleS=-1时, 本情况与情况11一致, 略.

从以上分析可以看出, 由于情况2与情况1一致、情况5与情况3一致、情况9与情况7一致、情况12与情况11也一致, 因此, 原本12种迁移流程实际为8种.

4 协议分析 4.1 特点分析

(1) 一致性

在《TPM-Rev-2.0-Part-1-Architecture-01.38》中规定了密钥复制的过程的基本要求, 即如何根据复制密钥的复制属性(fixedTPM, fixedParent, encryptedDuplication)以及新父密钥的密钥句柄类型对复制密钥进行innerwrapouterwrap, 也建议采用Duplication Authority对复制过程进行控制、认证等, 但并没有给出具体的方案.本文提出的基于Duplication Authority的TPM2.0密钥迁移协议方案不仅给出了具体的方案, 而且和《TPM-Rev-2.0-Part-1-Architecture-01.38》中的要求完全一致.具有一致性.

(2) 完备性

本文考虑了(fixedTPM, fixedParent, encryptedDuplication, newParentHandle, objecthandleS, newParent HandleS)各种合法的组合, 并设计了这些组合的密钥迁移方案.在这些方案中, 我们不仅考虑了Duplication Authority的认证和控制方法, 而且还考虑了innerwarp密钥和outerwrap密钥种子的保护交换方法, 特别是当被复制密钥和新父密钥都是对称密钥时innerwarp密钥和outerwrap密钥种子的保护交换方法.另外, 我们还考虑了密钥复制过程中既不innerwarp又不outerwrap时密钥迁移的安全问题, 以及DA根据objecthandleSnewParentHandleS的类型控制由源TPM方或目的TPM方产生innerwarp的加密密钥和outerwrap所需要的密钥种子.因此, 本文的TPM2.0密钥迁移协议方案是完备的.

4.2 安全分析

本文提出的基于Duplication Authority的TPM2.0密钥迁移协议方案具有认证性、机密性、抗中间人攻击和抗重放攻击, 因而具有较高的安全性.下面我们对本文提出的方法进行安全性分析, 具有以下4个特点.

(1) 具有认证性

一方面, 所有合法的TPM均需用其EK和名字ID在Duplication Authority注册, 这就确保了密钥一定是在两个具有合法身份的TPM之间进行迁移, 注册过程保证了源TPM与目标TPM之间的认证性; 另一方面, 当被复制密钥和新父密钥都是对称密钥时, innerwarp密钥和outerwrap密钥种子的保护交换方法是具有认证功能、防止中间人攻击的DH算法.当新父密钥是非层次结构的非密钥对象, 如密钥种子、空授权对象等, 我们也采用的是具有认证功能、防止中间人攻击的DH算法交换保护复制密钥的共享密钥.最后, outerwrap的消息认证码outerHAMC也具有认证功能.因此, 该协议通过各层次保证信息交互的各方均具有合法的身份, 故具有认证性.

(2) 具有机密性

在初始化阶段, 各TPM与DA之间的信息交互都是用对称密钥ks加密, 因此, 如果信息被截取, 攻击者会由于没有对称秘密密钥ks而无法获得信息的具体内容, 因此确保了各TPM与DA之间的机密性; 在认证和属性获取阶段, DA, TSTD之间的信息交换也用对称密钥ks1ks2加密, 因此, 如果信息被截取, 攻击者会由于没有对称秘密密钥ks1ks2而无法获得信息的具体内容, 因此确保了DA, TSTD之间的机密性; 而在控制和执行阶段, DA, TSTD之间的信息交换也用对称密钥ks1ks2加密, 因此, 如果信息被截取, 攻击者会由于没有对称秘密密钥ks1ks2而无法获得信息的具体内容, 因此确保了DA, TSTD之间的机密性.由此可见, 无论是在初始化阶段、认证和属性控制阶段还是控制和执行阶段, 都保证了交互信息的密文传送, 因而具有机密性.

(3) 具有抗中间人攻击

中间人攻击是一种通过修改或者伪装发送消息而达到攻击目的的手段.首先, 在初始化阶段, 各TPM与DA之间的信息交互采用的是DA证书对会话密钥进行加密, 只有拥有证书的私钥才能解密会话密钥, 即只有DA才能解密会话密钥, 因此, 即使敌手获得了该消息, 由于它无法解密该消息, 因此无法伪装和修改该消息进行中间人攻击; 在认证和属性获取阶段, DA和TS, TD之间的信息交换采用的是DA的证书对会话密钥进行加密, 只有拥有证书的私钥才能解密会话密钥, 即只有DA才能解密会话密钥, 因此, 即使敌手获得了该消息, 由于它无法解密该消息, 因此无法伪装和修改该消息进行中间人攻击; 在控制与执行阶段, DA和TS, TD之间的信息交换仍采用的是DA证书对会话密钥进行加密, 只有拥有证书的私钥才能解密会话密钥, 即只有DA才能解密会话密钥, 因此, 即使敌手获得了该消息, 由于它无法解密该消息, 因此无法伪装和修改该消息进行中间人攻击; 而TSTD之间的密钥交换, 我们采用的是抗中间人攻击的DH算法, 即采用DA的证书对交互的信息进行签名, 证书具有身份认证功能, 中间人无法伪造.因此, 具有抗中间人攻击.

(4) 具有抗重放攻击

首先, 在初始化阶段, 各TPM与DA之间的信息交互采用了现时NtpmNDA, 所以各TPM与DA可以通过NtpmNDA0来确保不是重放消息; 在认证和属性获取阶段, DA和TS, TD之间的信息交换采用了现时NTD, NDA1NTS, DA和TS, TD可以通过NTD, NDA1NTS来确保不是重放消息; 在控制与执行阶段, DA和TS, TD之间的信息交换仍然采用了同一现时NTD, NDA1NTS, DA和TS, TD之间以及TSTD均可以通过NTD, NDA1NTS来确保不是重放消息.因此, 具有抗重放攻击.

值得注意的是, 本协议中的DA具有重要作用.在初始化阶段, 源和目的TPM的身份信息均注册到DA; 在认证和属性获取阶段, DA会获得复制密钥和新父密钥的相关属性; 在控制和执行阶段, DA需要根据复制密钥和新父密钥的相关属性控制复制流程.因此, DA是整个协议的控制中心, 不仅需要保护好所有注册TPM的身份信息, 而且还要保证自身不受攻击.一旦DA遭受攻击, 攻击者不仅可以窃取注册到DA中的TPM身份信息, 而且还能控制复制流程; 攻击者不仅可以获得复制密钥, 而且可以将自己控制的密钥复制到目标TPM中.这不仅严重威胁到用户的隐私, 而且还会造成TPM密钥的泄露和加密数据的失窃.因此, 本文的DA必须是一个可信第三方, 对其安全要求必须和PKI中的CA一样.

4.3 对比分析

实际上, TPM1.2规范在《TPM-main-1.2-Rev94-part-3》中有关于Migration部分, 并已定义了与密钥迁移相关的接口, 包括TPM_CMK_ApproveMA(), TPM_CMK_CreateKey(), TPM_CMK_CreateTicket(), TPM_CMK_CreateBlob()和TPM_CMK_ConvertMigration()等.通过这些接口设计密钥迁移协议时, 也需要TPM的所有者指定一个可信的第三方(migration authority, 简称MA)参与, 在这一点上与本文的Duplication Authority有些相似.为了清楚说明它们之间的异同, 我们用TPM1.2密钥迁移接口简要设计一个密钥迁移流程框架, 忽略细节部分.

为了表述方便, 首先假定一个场景:密钥Kmigration需要从源平台Psrc迁移到平台Pdes, 在Psrc端保护Kmigration的父密钥是Kparent, 而Pdes端选定的将要保护Kmigration的父密钥是Kstorage.因此, KparentKstorage必须都是存储密钥.在此假定的场景下, 首先需要TPM的所有者用接口TPM_CMK_ ApproveMA()授权一个可信的第三方(migration authority, 简称MA), 并由MA通过接口TPM_CMK_CreateTicket()来指定迁移目标Pdes并对迁移目标Pdes进行认证.具体的协议流程如图 5所示.

Fig. 5 Key migration procedure for TPM1.2 图 5 TPM1.2密钥迁移流程

图 5中, 第1步是Psrc调用TPM_CMK_ApproveMA()授权一个可信的第三方MA; 第2步和第3步是MA调用TPM_CMK_CreateTicket()来指定迁移目标Pdes, 并对迁移目标Pdes进行认证; 第4步和第5步是Psrc调用TPM_CMK_CreateKey()产生待迁移的密钥Kmigration; 第6步是Psrc调用TPM_CMK_CreateBlob()生成迁移数据encData; 第7步是PsrcencData传递给Pdes; 第8步是Pdes调用TPM_CMK_ConvertMigration()对迁移数据进行转换.至此, Pdes就可以用Kstorage为父密钥加载Kmigration.

显然, 图 5与本文第3节提出的协议是有区别的.下面, 我们在安全性、复杂性、可信第三方的作用等方面对这两个协议进行比较.具体如下.

(1) 在安全性方面, 无论是利用TPM1.2的迁移接口设计的迁移协议还是本文利用TPM2.0密钥复制接口设计的迁移协议, 均能具有认证性、机密性、抗中间人攻击和抗重放攻击等特点.因此, 只要通过精心设计, 这两个协议均能达到同等的安全.

(2) 在复杂性方面, 显然, 本文的协议要比利用TPM1.2的迁移接口设计的迁移协议复杂得多.这是因为TPM2.0与密钥相关的功能均扩大了, 密钥类型不仅支持非对称密钥, 而且还支持对称密钥; 密码算法不仅支持RSA, 而且还支持ECC.在设计密钥迁移协议时, 除了需要考虑迁移密钥和目标密钥的复制属性以外, 还需要考虑迁移密钥、目标密钥是对称密钥还是非对称密钥的情况, 因此, 涉及的迁移情况多、控制迁移流程复杂.

(3) 在可信第三方方面, 无论是TPM1.2中的密钥迁移还是本文设计的密钥复制, 均需要可信第三方.利用TPM1.2的迁移接口设计的迁移协议需要可信第三方MA, 本文协议中涉及到可信第三方是DA.但DA远比MA复杂:MA只需指定迁移目标并对迁移目标进行认证; 而DA不仅需要管理各TPM的身份信息, 而且还要根据迁移密钥、目标密钥的复制属性确定和控制迁移流程.

5 实验验证与性能对比分析

本节将对第3节提出的密钥迁移协议进行验证, 并与TPM1.2的密钥迁移协议进行性能对比分析.

5.1 实验验证

要将迁移密钥迁移到新父密钥下, 首先, 源TPM和目标TPM应在DA中注册; 然后, 目标TPM向DA发起迁移请求, DA对源TPM和目标TPM进行认证, 并分别获得新父密钥的类型和句柄类型以及迁移密钥的复制属性(fixedTPM, fixedParent, encryptedDuplication); 最后, DA根据收集到的所有属性, 判断此流程属于12种流程中的哪一种流程, 并控制复制流程, 即可完成迁移.

5.1.1 实验环境

目前, 市面上已出现TPM2.0芯片, 经过深入的咨询我们发现, 在国内使用TPM2.0芯片受到一定的限制.因此, 这里我们使用微软的TPM2.0模拟器以及TSS.net进行实验.本实验共使用2台计算机, 其中一台既做target TPM又充当DA, 剩下一台充当source TPM.这里我们用OpenSSL的CA机关模拟DA, 作为注册和控制中心.具体环境配置见表 5, 其中, target TPM与DA所在主机的配置完全一致.

Table 5 Experimental environment related configuration 表 5 实验环境相关配置

以情况3为例, 具体实验流程原型如图 6所示, 其中, S, DA, D分别表示源TPM、复制权威和目的TPM.主要分为初始化、认证和属性获取以及控制迁移这3个阶段.

Fig. 6 Experimental whole process prototype 图 6 实验流程原型

5.1.2 实验结果

实验主要基于openssl和Microsoft的TPM2.0 simulator实现.

1.初始化阶段的执行过程.

初始化过程主要完成源TPM和目的TPM向DA注册自己的信息.由于目的TPM的初始化与源TPM初始化过程完全相同, 这里以目的TPM的初始化为例.目的TPM与DA间的初始化阶段流程如图 7图 8所示.

Fig. 7 Targe TPM initialization process 图 7 目的TPM初始化阶段流程

Fig. 8 DA initialization process 图 8 DA初始化阶段流程

2.认证和属性获取阶段.

认证和属性获取过程主要完成源TPM和目的TPM间的认证以及向DA发送新父密钥和复制密钥的相关属性等.源TPM、目的TPM、DA的认证和属性获取阶段流程如图 9~图 11所示.

Fig. 9 Source TPM authentication and attribute acquisition process 图 9 源TPM认证和属性获取阶段流程

Fig. 10 Targe TPM authentication and attribute acquisition process 图 10 目的TPM认证和属性获取阶段流程

Fig. 11 DA authentication and attribute acquisition process 图 11 DA认证和属性获取阶段流程

3.控制和执行阶段.

该阶段共有12种情况, 由于情况1和情况2的实现过程基本相似, 情况3和情况4、情况5、情况7、情况8的实现过程基本相似, 情况6和情况9的实现过程基本相似, 情况11和情况12的实现过程基本相似, 为了减少篇幅, 我们仅列出情况3和情况6的实验结果.这里, 我们基于微软TPM2.0模拟器提供的复制接口和导入接口来实现.

情况3:When fixedTPM=0, fixedParent=0, encryptedDuplication=1, newParentHandle!=TPM_RH_NULL, object handleS=1, newParentHandleS=1.执行过程如图 12~图 14所示.

Fig. 12 Case 3: Source TPM execution process 图 12 情况3:源TPM执行流程

Fig. 13 Case 3: Targe TPM execution process 图 13 情况3:目的TPM执行流程

Fig. 14 Case 3: DA execution process 图 14 情况3:DA执行流程

情况6:fixedTPM=0, fixedParent=0, encryptedDuplication=1, newParentHandle!=TPM_RH_NULL, objecthandleS=0, newParentHandleS=0.执行过程如图 15~图 17所示.

Fig. 15 Case 6: Source TPM execution process 图 15 情况6:源TPM执行流程

Fig. 16 Case 6: Targe TPM execution process 图 16 情况6:目的TPM执行流程

Fig. 17 Case 6: DA execution process 图 17 情况6:DA执行流程

5.2 性能分析 5.2.1 本协议的性能分析

1.初始化阶段的执行时间见表 6.

Table 6 Initialization execution time 表 6 初始化阶段执行时间

2.认证和属性获取阶段的执行时间见表 7.

Table 7 Authentication and attribute acquisition phase execution time 表 7 认证和属性获取阶段执行时间

3.控制和执行阶段的执行时间.

由于情况1和情况2的实验过程相同, 情况3和情况5的实验过程相同, 情况7和情况9的实验过程相同, 情况11和情况12的实验过程相同, 我们将实验过程相同的情况的执行时间视为一致.各情况的执行时间如下表 8所示, 其时间性能如图 18所示.

Table 8 Initialization execution time       (s) 表 8 初始化阶段执行时间     (s)

Fig. 18 Execution time for each situation in the control and execution phases 图 18 控制和执行阶段各情况执行时间

图 18可以看出, 情况4的执行时间最长.这是因为情况4既执行了innerwrap又执行了outerwrap, 同时, 由于innerwrapouterwrap的加密密钥和密钥种子在目的TPM方产生, 在保护传输过程中增加了TS与DA, TSTD之间的交互.情况3/5与情况4唯一的不同就是innerwrapouterwrap的加密密钥和密钥种子在源TPM方产生, 因此执行时间也就稍少于情况4.而情况6中的加密密钥和密钥种子是同一个, 所以执行时间应少于情况3/5.情况7~情况10由于未进行outerwrap因此执行时间应少于情况6.由于情况11/12既不进行innerwrap也不进行outerwrap因此执行时间少于情况10.而情况1/2基本不能进行密钥复制迁移操作, 因此时间是最短的.

5.2.2 与TPM1.2密钥迁移的性能对比分析

本节主要将本协议的性能与TPM1.2密钥迁移性能进行对比分析.由于TPM1.2不支持对称密钥, 且本文协议的情况较多, 为此, 我们仅在如下场景下进行对比分析.

具体场景:非对称密钥Kmigration需要从源平台Psrc迁移到平台Pdes, 在Psrc端保护Kmigration的父密钥是Kparent, 而Pdes端选定的将要保护Kmigration的父密钥是非对称密钥是Kstorage.

对于TPM1.2, 要求Kmigration是可认证迁移密钥CMK(certifiable-migration key).本实验需要两台机器, 这两台机器的硬件配置与表 5相同, 不同的是软件环境, 这两台机器的OS是Ubuntu 16.04, TPM模拟器为TPM_ emulator_0.7.4模拟器, TSS.net的版本为TSS.MSR-master.Source TPM与MA在同一台机器, 授权口令以默认的方式在内部产生.这里, 我们选用耗时最长的TPM_MS_RESTRICT_APPROVE_DOUBLE迁移模式.对于TPM2.0, 此场景对应着第3.3节中的情况3, 具体的时间开销见表 9.

Table 9 TPM1.2 execution time       (s) 表 9 TPM1.2执行时间     (s)

可以看出, 本文协议的时间开销要比TPM1.2的大一些.我们认为, 主要原因包括两个方面.

(1) 在情况3中, 源TPM既执行了innerwrap, 又执行了outerwrap, 其复杂性比TPM1.2大.

(2) DA通过与源TPM与目的TPM交互, 获得迁移密钥与新父密钥的属性并控制协议流程, 其时间开销要比MA仅仅是对目标密钥(新父密钥)进行认证的时间开销大.

性能对比如图 19所示.

Fig. 19 Performance comparison 图 19 性能对比

6 相关工作

在TPM密钥迁移方面, 到现在为止取得了较多研究成果.TCG组织一直是这一工作积极的主导者和推动者, TCG最初在TPM1.1规范的密钥迁移模块中提供了TPM_AuthorizeMigratinKey(), TPM_Create MigrationBlob()和TPM_ConvertMigrationBlob()等3个API接口用于迁移密钥.TPM1.1的密钥迁移模块优点是简单, 但弱点是迁移源和目标之间缺少认证, 敌手很容易冒充目标TPM而获得迁移密钥的敏感信息.TPM1.2对迁移模块作了重大改进, 引进了认证迁移概念.在认证迁移下, 用户可以指定可信第三方迁移权威(migration authority, 简称MA), 并保证如果没有MA的允许, 不可以把密钥迁移到特定的平台.TPM1.2关于认证迁移密钥(certifiable-migration key, 简称CMK)的API包括TPM_AuthorizeMigratinKey(), TPM_CMK_ApproveMA(), TPM_CMK_CreateKey(), TPM_CMK_CreateTicket(), TPM_CMK_CreateBlob()和TPM_CMK_ConvertMigration()等.TPM1.2的密钥迁移模块优点是安全, 缺点是复杂, 每次迁移均需要可信第三方MA参与, 效率低.TPM2.0取消了TPM1.2的密钥迁移接口, 并使用新的迁移接口, 即TPM2_Duplicate()和TPM2_Import().由于TPM2.0改变了密钥属性的表示方式, 一个密钥对象是否可以被复制, 由fixedTPMfixedParent两个属性组合来决定, 当(fixedTPM=0, fixedParent=0)时, 该密钥对象可以被复制实现迁移; 当(fixedTPM=0, fixedParent=1), 该密钥对象可以跟随父密钥一起被复制实现迁移.TPM2.0使用TPM2_Duplicate()进行密钥复制时, 需要对被复制密钥进行innerwrapouterwrap或既进行innerwrap又进行outerwrap, 来保证被复制密钥的机密性、完整性以及认证性.TPM2.0的密钥迁移模块优点是简单、高效、灵活而且基本安全, 可不需要可信第三方参与; 但缺点是容易出现配置错误, 导致不安全.

在TPM1.1和TPM1.2密钥迁移机制的分析方面, 文献[9]用一阶逻辑语言建立TPM API的形式化模型, 并对TPMAPI进行了全面的逻辑推理分析, 其中, 对密钥迁移API的分析指出, TPM1.1的弱点在于迁移目标由源TPM的owner指定, 目标TPM并不参与迁移, 目标TPM在接收可迁移密钥时, 可迁移密钥有可能已经泄漏, 因此具有较大的安全隐患.文献[10]应用π演算对TPM进行形式化建模, 并使用自动定理证明工具ProVerif验证其安全属性.作者分析了TPM CMK(certifiable migratable key)的TPM_MS_RESTRICT_MIGRATE迁移模式, 分析结果表明:若作为第三方的迁移权威(migration authority, 简称MA)用软件处理迁移数据, 则敌手能获得被迁移密钥的私钥.作者建议TPM规范强制要求MA使用TPM代替软件处理迁移数据.文献[11]对TPM可迁移密钥的安全性进行了分析, 指出, TPM提供密钥迁移机制的同时, 降低了可迁移密钥的安全保护强度, 敌手能够利用TPM的密钥迁移类接口和密钥加载接口破坏TPM可迁移密钥的安全性.

在TPM2.0密钥迁移机制的分析方面, 文献[12]建立了TPM2.0保护存储API的抽象模型, 并利用类型系统证明了TPM2.0保护存储的安全性.证明结果表明, TPM2.0保护存储中的密钥复制类接口是安全的.文献[13]对TPM2.0密钥管理API的安全性进行了形式化分析, 证明了密钥存储和使用类接口能够保证TPM不可迁移密钥的安全性, 并发现了针对密钥复制类接口的两种攻击.作者提出了该类接口的改进方案, 并证明了利用改进的接口实施密钥复制能够保证被复制密钥的安全性.文献[14]分析了TPM2.0密钥复制相关流程, 对于其中存在的密钥隐私泄露问题进行了改进.在用户不安全复制传输情形下, 从TPM管理者的角度出发, 提出了一套基于TPM自身的加密传输协议.通过利用TPM自身产生安全密钥, 对未受保护的用户敏感数据进行加密, 并通过签名的方式保障传输的可靠性.

另外, 对于我国TCM芯片, 文献[15]指出, 由该芯片的密钥迁移模块实现的密钥迁移协议存在两个问题.

● 对称密钥不能作为被迁移密钥的新父密钥, 违背了TCM的初始设计思想;

● 缺少交互双方TCM的相互认证, 导致源TCM的被迁移密钥可以被外部敌手获得, 并且敌手可以将其控制的密钥迁移到目标TCM中.

针对上述问题, 作者提出两个新的密钥迁移协议.

● 协议1遵循TCM目前的接口规范, 以目标TCM的PEK(platform encryption key)作为迁移保护密钥, 能够认证目标TCM, 并允许对称密钥作为新父密钥.

● 协议2简单改动了TCM接口, 源TCM和目标TCM进行SM2密钥协商, 得到的会话密钥作为迁移保护密钥, 解决了上述两个问题, 并且获得了前向安全属性.

最后, 使用形式化分析方法对上述协议进行安全性分析, 结果显示, 协议满足正确性和预期的安全属性.

7 结束语

本文分析了《TPM-Rev-2.0-Part-1-Architecture-01.38》国际标准, 并总结出使用该标准中的密钥复制接口来实施密钥迁移存在的3个问题.

● 其一是缺少交互双方TPM的相互认证, 会导致密钥能够在敌手和TPM间迁移;

● 其二是当迁移密钥的属性encryptedDuplication=0且新父密钥的句柄newParentHandle=TPM_RH_ NULL时, 复制接口不能实施innerwrapouterwrap, 迁移密钥将以明文传输而造成泄露;

● 其三是当新父密钥是对称密钥时, innerwrap中的对称加密密钥以及outerwrap中的密钥种子如何在源TPM与目标TPM之间安全交换, 《TPM-Rev-2.0-Part-1-Architecture-01.38》并没有给出具体的解决办法.

针对这些问题, 提出了基于Duplication Authority的密钥迁移协议.该协议以Duplication Authority为认证和控制中心, 将密钥迁移过程分为初始化阶段、认证和属性获取阶段以及控制和执行阶段.Duplication Authority通过判定密钥的复制属性和类型、新父密钥的密钥类型和句柄类型来决定迁移流程.我们考虑了各种合规的属性组合, 共设计了12种迁移流程.最后, 对该协议进行了安全分析和模拟实验验证, 结果显示, 该协议不仅完全满足《TPM-Rev-2.0-Part-1-Architecture-01.38》规范, 而且满足完整性、机密性和认证性.

参考文献
[1]
Feng DG, Qin Y, Wang D, Chu XB. Research on trusted computing technology. Journal of Computer Research and Development, 2011, 48(8): 1332-1349(in Chinese with English abstract). http://d.old.wanfangdata.com.cn/Periodical/jsjyjyfz201108003
[2]
Yu FJ, Zhang HG, Zhao B, Wang J, Zhang LQ, Yan F, Chen ZL. A formal analysis of trusted platform module 2.0 Hash-based message authentication code authorization under digital rights management scenario. Security & Communication Networks, 2016, 9(15): 2802-2815. http://www.wanfangdata.com.cn/details/detail.do?_type=perio&id=cf50c07910f71d2d2ce4ae9505516f59
[3]
Zhang HG, Han WB, Lai XJ, Lin DD, Ma JF, Li JH. Cyberspace security review. SCIENCE CHINA Information Sciences, 2016, 46(2): 125-164(in Chinese with English abstract). http://d.old.wanfangdata.com.cn/Periodical/sdgyjs201722108
[4]
Arthur W, Challener D, Wrote; Wang J, et al., Trans. A Practical Guide to TPM 2.0: Using the Trusted Platform Module in the New Age of Security. Beijing: Machinery Industry Press, 2017(in Chinese).
[5]
Tan L, Chen J. Remote attestation project of the running environment of the trusted terminal. Ruan Jian Xue Bao/Journal of Software, 2014, 25(6): 1273-1290(in Chinese with English abstract). http://www.jos.org.cn/1000-9825/4414.htm [doi:10.13328/j.cnki.jos.004414]
[6]
Hu LB, Tan L. Research on the trusted virtual platform remote attestation method in cloudcomputing. Ruan Jian Xue Bao/Journal of Software, 2018, 29(9): 2874-2895(in Chinese with English abstract). http://www.jos.org.cn/1000-9825/5264.htm [doi:10.13328/j.cnki.jos.005264]
[7]
Feng DG. Trusted Computing-Theory and Practice. Beijing: Tsinghua University Press, 2013: 5-20.
[8]
Song M, Tan L. Research of key migration protocol which is based on TPM 2. 0 key duplication interface. Journal of Chinese Computer Systems, 2018, 39(9): 1962-1969(in Chinese with English abstract). [doi:10.3969/j.issn.1000-1220.2018.09.013]
[9]
Chen J. Security analysis of trusted platform module and application[Ph.D. Thesis]. Beijing: Institute of Computing Technology Chinese Academy of Sciences, 2006(in Chinese with English abstract).
[10]
Xu SW, Zhang HG. Formal security analysison trusted platform module based on applied π calculus. Journal of Computer Research and Development, 2011, 48(8): 1421-1429(in Chinese with English abstract). http://d.old.wanfangdata.com.cn/Periodical/jsjyjyfz201108013
[11]
Zhang QY, Zhao SJ, Feng DG. Security analysis and research on TPM migratable key. Journal of Chinese Mini-Micro Computer Systems, 2012, 33(10): 2188-2193(in Chinese with English abstract). [doi:10.3969/j.issn.1000-1220.2012.10.013]
[12]
Shao JX, Feng DG, Qin Y. Type-based analysis of protected storage in the TPM. In: Proc. of the Information and Communications Security. Springer Int'l Publishing, 2013. 135-150.
[13]
Zhang QY, Zhao SJ, Qin Y, Feng DG. Formal analysis of TPM2.0 key management APIs. Chinese Science Bulletin, 2014, 59(32): 4210-4224. [doi:10.1007/s11434-014-0575-0]
[14]
Xu Y, Zhao B, ·Heinayati M, Yu FJ. Security enhancement of key duplication in TPM2.0. Journal of Wuhan University (Natural Science Edition), 2014, 60(6): 471-477(in Chinese with English abstract). http://d.old.wanfangdata.com.cn/Conference/8861242
[15]
Zhang QY, Feng DG, Zhao SJ. Design and formal analysis of TCM key migration protocols. Ruan Jian Xue Bao/Journal of Software, 2015, 26(9): 2396-2417(in Chinese with English abstract). http://www.jos.org.cn/1000-9825/4719.htm [doi:10.13328/j.cnki.jos.004719]
[1]
冯登国, 秦宇, 汪丹, 初晓博. 可信计算技术研究. 计算机研究与发展, 2011, 48(8): 1332-1349. http://d.old.wanfangdata.com.cn/Periodical/jsjyjyfz201108003
[3]
张焕国, 韩文报, 来学嘉, 林东岱, 马建峰, 李建华. 网络空间安全综述. 中国科学:信息科学, 2016, 46(2): 125-164. http://d.old.wanfangdata.com.cn/Periodical/sdgyjs201722108
[4]
Arthur W, Challener D, 著; 王鹃, 等, 译.TPM2.0原理及应用指南: 新安全时代的可信平台模块.北京: 机械工业出版社, 2017.
[5]
谭良, 陈菊. 一种可信终端运行环境远程证明方案. 软件学报, 2014, 25(6): 1273-1290. http://www.jos.org.cn/1000-9825/4414.htm [doi:10.13328/j.cnki.jos.004414]
[6]
胡玲碧, 谭良. 云计算中可信虚拟平台的远程证明方案研究. 软件学报, 2018, 29(9): 2874-2895. http://www.jos.org.cn/1000-9825/5264.htm [doi:10.13328/j.cnki.jos.005264]
[7]
冯登国. 可信计算——理论与实践. 北京: 清华大学出版社, 2013.
[8]
宋敏, 谭良. TPM2.0密钥迁移协议研究. 小型微型计算机系统, 2018, 39(9): 1962-1969. [doi:10.3969/j.issn.1000-1220.2018.09.013]
[9]
陈军.可信平台模块安全性分析与应用[博士学位论文].北京: 中国科学院计算技术研究所, 2006.
[10]
徐士伟, 张焕国. 基于应用π演算的可信平台模块的安全性形式化分析. 计算机研究与发展, 2011, 48(8): 1421-1429. http://d.old.wanfangdata.com.cn/Periodical/jsjyjyfz201108013
[11]
张倩颖, 赵世军, 冯登国. TPM可迁移密钥安全性分析与研究. 小型微型计算机系统, 2012, 33(10): 2188-2193. [doi:10.3969/j.issn.1000-1220.2012.10.013]
[14]
徐扬, 赵波, 米兰·黑娜亚提, 余发江. TPM2.0密钥复制安全性增强方案. 武汉大学学报(理学版), 2014, 60(6): 471-477. http://d.old.wanfangdata.com.cn/Conference/8861242
[15]
张倩颖, 冯登国, 赵世军. TCM密钥迁移协议设计及形式化分析. 软件学报, 2015, 26(9): 2396-2417. http://www.jos.org.cn/1000-9825/4719.htm [doi:10.13328/j.cnki.jos.004719]