《最新TPM命令.doc》由会员分享,可在线阅读,更多相关《最新TPM命令.doc(123页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、Four short words sum up what has lifted most successful individuals above the crowd: a little bit more.-author-dateTPM命令TPM命令3. 启动和状态管理3.1. TPM-InitTPM-Init是一种初始化TPM的物理方法。在可信计算平台内部,当一则平台消息被发送到TPM时,无TPM-Init序数。在PC机中这个命令通过LPC总线连接到TPM,告知TPM平台正在运行启动程序。TPM-Init使TPM处于等待TPM-Startup命令的状态。3.2. TPM-StartupTPM
2、-Init之后执行TPM-Startup命令,该命令是TPM初始化所需的物理声明。在可信计算平台中经常有许多请求需要重启,在TPM上对这些请求的响应需要进行不同的操作。重启声明不包含足够的信息去通知TPM需要哪种类型的重启。平台初始化代码将已知的额外信息传送至TPM。TPM-Startup命令提供发送信息机制。TPM有三种不同的启动方式:(1) “清除”启动:所有变量被设为默认值或者稳定状态。(2) “保存”启动:TPM在原来TPM-SaveState的基础上恢复一些信息和各种取值,这种恢复的前提是TPM-Init运行成功。如果“保存”启动失败,则必须先关闭TPM。CRTM不能使TPM处于此种
3、状态,即不可信的上层软件层发布“清除”操作,然后扩充PCR的状态,以防CRTM冒充。(3) “无效”启动:TPM自动关闭,在TPM处于完全运行状态之前要求再次执行TPM-Init命令。3.3. TPM-SaveState这个命令用于提示TPM保存某个状态信息。如果与之相关的隐藏存储是非易失的,则表示TPM-SaveState命令无效。如果与之相关的隐藏存储是易失的,而且TPM本身不能及时发现外部掉电从而转移数据到非易失存储器的话,在TPM进入低电平或无电状态之前,应执行TPM-SaveState命令。4测试管理4. 1 TPM-SelfTestFullTPM-SelfTestFull命令测试T
4、PM的所有性能。与TPM-ContinueSelfTest不同,TPM-ContinueSelfTest也许在任意时刻立即返回,然后再继续测试,而TPM-SelfTestFul总是不断地执行测试,然后返回成功或失败。4.2 TPM-ContinueSelfTestTPM-ContinueSelfTest命令告知TPM,它应该完成所有TPM自身功能的自我检测。TPM或许立即返回成功,然后执行自我检测;或者运行自我检测,然会返回成功或失败。4.3 TPM-GetTestResultTPM-GetTestResult命令提供生产商关于自我检测结果的信息。当TPM处于自我检测失败模式时,执行此命令,这
5、是因为允许TPM生产商获得诊断信息。5.Opt-in管理5.1 TPM-SetOwnerInstall当激活但是没有拥有者时,TPM-SetOwnerInstall命令设置永久标志位来标记允许或不允许插入所有者。5.2 TPM-OwnerSetDisableTPM所有者设置永久的不可执行标志位。5.3 TPM-PhysicalEnable使用物理存在作为授权将永久的不可执行标志位设为FALSE。5.4 TPM-PhysicalDisable使用物理存在作为授权将永久的不可执行标志位设为TRUE。5.5 TPM-PhysicalSetDeactivated使用物理存在作为授权来激活TPM。当TP
6、M未被激活时,不能执行此命令。5.6 TPM-SetTempDeactivated在下一个平台启动之前,TPM-SetTempDeactivated命令允许可信计算平台的操作者使TPM处于无效状态。这个命令要求操作人证明。操作者通过物理存在声明或者提供操作者AuthData值来进行证明。5.7 TPM-SetOperatorAuthTPM-SetOperatorAuth命令用来设置操作者AuthData值。假设AuthData值在本地被发送至可信计算平台,则操作者的认证无需保密。如果TPM和键盘之间的路径存在关联,除非键盘使用加密算法和一个安全的通道,否则攻击者可以读取这个值。6.所有权管理6
7、.1 TPM-TakeOwnership这个命令把TPM所有权值插入到TPM中。6.2 TPM-OwnerClearTPM-OwnerClear命令在所有者证明的基础上进行清除操作。直到所有者执行TPM-DisableOwnerClear命令之前,这个命令均有效。在所有者执行TPM-DisableOwnerClear命令的任意时刻,此命令的下一步操作均返回TPM-Clear_DISABLED。当调用TPM-OwnerClear 命令时,TPM中的所有状态应该被清除。6.3 TPM-ForceClear要求物理存取TPM-ForceClear命令才能执行清除操作。TPM-DisableForce
8、Clear命令使TPM-ForceClear在启动周期中无效。在执行TPM-DisableForceClear命令的任意时刻,此命令的下一步操作均返回TPM-Clear_DISABLED。6.4 TPM-DisableOwnerClear如果拥有者希望使这个清除命令失效,要求物理存取才能执行清除,所有者可以执行TPM-DisableOwnerClear命令。执行TPM-ForceClea之后,拥有者清除命令再次有效;新TPM拥有者再次必须再次将其置为无效。6.5 TPM-DisableForceClear要求下一个启动周期TPM-ForceClear命令才能执行清除操作。TPM-Disable
9、ForceClear命令使TPM-ForceClear在启动周期中无效。6.6 TPM-PhysicalPresence在平台中,一些TPM操作要求指出用户是物理存在的。用户的存在或者提供另一个平台拥有者声明,或者提供一个机制来确保该命令不是执行了一个远程软件程序。TPM-PhysicalPresence命令允许平台中的程序声明物理存在的插入。当软件执行该命令时,必须采取保护措施。PhysicalPresence HWEnable和PhysicalPresenceCMDEnable为SW或HW声明物理存在的能力。直到设置PhysicalPresenceLifetimeLock时,这些标志位才能
10、够重新设置。平台生产商应设置这些标志位去声明TPM绑定的平台的性能。该命令提供两种功能设置。一种是永久地使HW或者SW为物理存在;另一种是允许SW为物理存在。6.7 TSC_ResetEstablishmentBitPC TIS规定在执行HASH_START的基础上,将tpmEstablished设置为TRUE,这个设置意味着在平台上创建了一个可信的操作系统。平台将利用tpmEstablished值决定是否有必要维持安全的操作周期。tpmEstablished比特提供了一个非易失的、安全的,而且在平台上事先运行HASH_START操作的报告。当平台使用tpmEstablished比特时,它会重
11、新设置tpmEstablished值。 例如,如果已经运行了HASH_START,平台可以用tpmEstablished来调用专门的进程。一旦这个进程执行完,平台将希望重新设置tpmEstablished,防止再次调用该进程。在TPM规范中,TPM_PERMANENT_FLAGS-tpmEstablished比特使用正逻辑;TPM_ACCESS寄存器使用负逻辑,因而用0来表示TRUE。7.性能命令7.1 TPM-GetCapablilty此命令返回TPM的当前信息。当capArea显示TPM_CAP_MFR时,失败模式下返回的局限性将限制返回生产商信息。7.2 TPM-SetCapablilt
12、y在TPM中该命令用于置值。如果setValue与capArea和subCap值设置的不一致,那么认为setValue是一个不良参数。7.3 TPM-GetCapabliltyOwner该命令为TPM-GetCapabliltySigned提供信息。TPM拥有者使用TPM-GetCapabliltyOwner命令,通过一个简单的操作就可以得到所有的非易失标志和易失标志。此命令属强制性命令。标志位概括了许多TPM的操作信息。一些标志位表示的消息属于TPM拥有者的个人信息。因此,简单来说,必须重新获取设置的标志位来证明TPM所有权。用户可以通过其他方式推断出非拥有者个人信息的标志位。正规的TPM认
13、证机制可以充分地检验响应的完整性,无需其他的完整性校验。8.审计8.3 TPM-GetAuditDigest返回当前的审计分类。外部的审计日志负责跟踪审计类别的组成参数。对于一个单独的TPM而言,该值是唯一的。然而这个值会根据TPM拥有者设置的速率而变动。该值描述了跟踪唯一性的少部分来源。8.4 TPM-GetAuditDigestSigned审计日志签名返回全部的分类值和当前的审计命令列表。审计命令列表把当前的分类值和正在被审计的命令列表绑定起来。当TPM在执行审计操作,同时在一个签名传送会话中运用TPM-GetAuditDigestSigned命令进行签名时,该命令会改变当前序数的活动设置
14、。为真时,此命令也产生一个次要的影响,即重新设置审计日志分类,这时要求TPM拥有者进行认证。该命令包含某种方法可以反映TPM拥有者的请求。由于规定TPM的身份密钥是用于签名和重置的唯一密钥,因此在执行该命令时,TPM拥有者的认证是固定的(仅仅TPM拥有者能生成和控制自己的TPM身份密钥)。因此,执行审计操作时,不能轻易去改变序数。8.5 TPM-SetOrdinalAuditStatus用一个给定的序数来设置审计标志位。同时要求PM拥有者进行认证。9.管理功能管理9.1 TPM-FieldUpGrade一旦TPM开始运行时,就需要一个用于更新保护性能的机制。当给定TPM各种执行的性质,将有多种
15、方法来更新其保护性能。当执行TPM-FieldUpGrade命令时,它会提供一个生产商规定好的更新方法。在给出的要求范围内,生产商决定如何执行该命令。此命令或许仅仅是一个命令,或者是一系列的命令。IDL规定:为命令创建一个顺序,可是剩下的参数是生产商事先规定的。当运行TPM-RevokeTrust命令时,决定如何执行TPM-FieldUpGrade命令不是由TPM规定的,而是由其他TCG规定的。9.2 TPM-SetRedirection变向命令把一个密钥放在一个变向接收器里。当它连接GPIO信道时,在建立连接的同时重置认证限制。9.3 TPM-ResetLockValue重新设置TPM字典攻
16、击缓解值。允许TPM拥有者删去许多继承授权失败。字典攻击缓解是制造者特定的,这种攻击很可能发生。TPM或许把一个缓解时间外的授权失败视为一中正常情况的失败。 如果这个命令本身存在授权失败,由于周期之外锁定的剩余,该命令也会被锁定。这将防止利用该命令依附拥有者授权产生字典攻击。 这个命令允许TPM拥有者通过改变试验和命令,并且依附其他授权值运行一个字典攻击。10存储功能101TPM_SealSEAL(封装)操作允许软件明确平台必须所处的未来“可信”配置状态,这样秘密才不会泄漏。该操作被执行的时候与相关平台配置(PCR值)关联。SEAL操作通过tpmProof值来对个人TPM的blob进行绑定(B
17、IND)如果UNSEAL操作成功,平台配置校验有效,SEAL操作执行时转向请求者,并传送保密数据。这种校验可能不引起注意。如果经过SEALed的秘密用作向第三方的鉴别平台,请求者通常不关心平台所处的状态。秘密封装完成,校验则可以忽略。另外如果经过sealed的秘密用于平台鉴别第三方,当秘密封装的时候,请求者需要考虑平台的状态。这就与校验相关。例如,如果SEAL用存储一个将要实行的配置的密钥(可能是要证明平台是一个处于特殊配置的特殊平台),唯一的必要条件就是只有平台在该种配置下才可以使用该密钥。当密钥被SEALed的时候对平台配置没有影响。相应的实际例子就是seal用作存储一个网络鉴别密钥!另一
18、方面,假如操作系统包含一个允许登陆平台的用户加密数据库。系统使用一个SEALED的块为用户数据库存储加密密钥。可是,SEAL的特性是任何SW的堆栈可以为任何其他软件堆栈封装(SEAL)数据块。因此操作系统可能受到攻击,被另外的操作系统替换已封装数据块中的加密密钥和用户数据库本身,让不可信的部分介入操作系统级服务。因此,如果操作系统考虑到这样的攻击,则需要检测以判别以往配置是否可信。TPM_Seal 需要一个加密的参数(“秘密”secret)。与其他命令一样,需要加密多个参数,用作异或加密的字符串,由连接nonce(在OSAP会话中创建)和会话共享密钥的方式产生,然后对结果进行哈希。102TPM
19、_UnsealTPM_Unseal操作展现TPM_Seal命令处理过的数据,但是加密过程必须在同一平台的当前配置(由特定的PCR内容定义)下才可以解密。内部来说,TPM_Unseal接受由TPM_Seal操作产生的数据块。TPM_Unseal解密其内在结构,检验结果数据的完整性以及TPM_seal操作过程中指定的PCR值。另外请求者必须提供适当的授权数据,即封装(seal)数据时候用到的密钥和数据块。如果完整性、平台配置和授权检验成功,解封装的数据就会返回给请求者,否则产生错误。103 TPM_UnBindTPM_UnBind对Tspi_Data_Bind命令处理过的数据块进行解密并输出给用户
20、。请求者需要批准该命令使用解密所需的密钥。TPM_UnBind操作以数据块形式进行,数据块之间没有联系。104 TPM_CreateWrapKeyTPM_CreateWrapKey命令为不对称密钥产生并创建安全存储包(bundle)通过一套特殊的PCR注册步骤,最新产生的密钥可以与某个PCR值锁定。105 TPM_LoadKey2在TPM使用一个密钥进行(wrap bind seal)加解密、捆绑、封装、签名或者其他功能前,需要把key送到TPM中去。TPM_LoadKey2命令就是把key装载到TPM里面以待使用。TPM指派key的句柄。TPM就是通过句柄来定位需要装载的key的。假定的情况
21、是句柄可以根据密钥管理的操作更改。上层的软件负责保持句柄与外部软件所使用的标签间的映射。这个命令负责对key的使用添加强制的约束。例如,当想要装载一个存储的可以时,需要检验该存储的key的限制(2048大小等)。装载命令需要保持这样一个记录:此前使用的key是否通过父级的PCR与一个PCR绑定起来。父级PCR(parentPCRStatus)标签在平台状态转换或者完成当前状态时发起一个可能的检验。例如子级key关联到状态3,父级key关联状态2,曾父级(父级的父级)key关联状态1。这个例子中使用的子级key表明了平台时从状态1转向状态2最终当前状态为状态3。TPM_Startup使参数stT
22、ype等于TPM_ST_CLEAR的情况表明此平台被重启,所以平台没有上一级状态。因此如果TPM_Startup运行造成是标志stTypeTPM_ST_CLEAR,那么 parentPCRStatusTRUE标识的key就不能装载(清空?)。如果TPM_KEY结构被解析、使用“pubDataDigest”的完整性检测通过并且key是不可移动的,那么key一定是由TPM创建的。所以有足够的理由相信key本身对于TPM不构成安全威胁。目前还没有发现假冒可移动key所造成的攻击,但有检验所装载的可移动key是否真实的需求,这是因为对任意数据可以作为key被执行感到的不安与日俱增。理想的一致性检测应该
23、加入到加解密循环中,但是这样的开销会非常大。对于RSA的key,一致性检测的加入相当于根据RSA素数拆分RSA产品,并对其进行检验。106 TPM_GetPubKeyKey的所有者希望从装载的key中得到公钥。此信息涉及到秘密,所以该命令必须得到key所有者的授权。10.7 TPM_SealxTPM_Sealx命令类似于SEAL命令,其附加要求是有效期参数。该命令也是对信息块进行封装,解封装也需要编码。Sealx要求使用1.2数据结构。就像没有检测情况下SEAL要求的1.1数据结构用法一样。11移植从一个TPM上移植key到另外一个TPM对于TPM的用户模式是一个重要的方面。移植的相关命令允许
24、这种操作的发生。有两类可移植的key,1.1版本可移植key和1.2版本可证明的移植key。11.1 TPM_CreateMigrationBlobTPM_CreateMigrationBlob命令实现移动可移植key到新平台或者其父级层操作过程的第一步。执行此命令需要了解所要移植key的移植授权区(migrationAuth field)。可移植模式被用作从一个TPM移植key到另一个TPM以作升级或者备份。这样TPM需要创建别的TPM能够处理的数据块。装载入备份的公钥,TPM会为可移植的key创建新的数据块。在执行TPM_CreateMigrationBlob之前,TPM的所有者需要通过T
25、PM_AuthorizeMigrationKey命令来选择和授权要移植的公钥。IReWrap模式用来直接移动key到新的父级层(不管是不是在同一个平台内)。TPM简单地使用一个新的父级标签对key作再加密,输出标准的已加密元素供随后的TPM_LoadKey命令使用。TPM_CreateMigrationBlob不能够移动不可移植的key。不需要外在的测试。只有TPM知道tpmProof标识。因此请求者不能提交一个等同于tpmProof的授权数据(AuthData)并移动一个不可移动的key。11.2 TPM_ConvertMigrationBlob该命令接受一个可移植数据块并创建一个标准的包装
26、(wrapped)数据块。可移植数据块必须通过标准的TPM_LoadKey功能装载倒TPM里面。只要命令移动了私钥就需要记录。移动相应的公钥TPM无法指定,因为这不是敏感的安全数据。移动关联的公钥需要平台特定规范的指定。在目标TPM通过TPM_LoadKey命令使用移动的key之前,必须重建一个TPM_KEY结构。11.3 TPM_AuthorizeMigrationKey该命令创建一个授权数据块,允许TPM所有者指定那种移动更方便他们使用,并允许用户移动与TPM所有者无进一步关联的信息。TPM所有者负责确定要移植的key是否适合移植。TPM的检测仅限于要移植的key的加密强度。11.4 TP
27、M_MigrateKey该命令的功能是移植的授权。命令比较简单。只是解析输入的数据包(来自TPM_CreateMigrationBlob或者TMP_CMK_CreateBlob)然后用输入的公钥对其进行再加密。该命令的输出是发送TPM_CreateMigrationBlob或者TPM_CMK_ConvertMigration给目标TPM。该命令并没有承担加密数据块的更多内容。因其不含有异或字符串,实际上不能对要移动的key决定过多。这个命令的存在在于准许TPM成为移植的授权者。如果使用这种方式,是希望系统的物理安全包含TPM和授权移动key的数据值受到强力的约束。为防止这个命令使用其他的key
28、作为父级key,命令只有在上级密钥句柄(maKeyHandle)keyUsage是TPM_KEY_MIGRATE的时候才能够工作。11.5 TPM_CMK_SetRestrictions该命令用作所有者指定key的使用方法,该key是认证过的可移植key,并通过了授权(实际所有者的授权或者其他的授权)。处于不受干扰的原因,命令本身不能作为一个代表,因为被鉴别的可移植key可能包含所有者与外部实体间的约定关系。因为限制在DSAP会话中有效,所以限制改变的时候无需中止DSAP会话。11.6 TPM_CMK_ApproveMA该命令创建一个授权的凭证,允许TPM所有者指定那一种移植授权是他们所认可的
29、,也允许用户创建与TPM所有者无关连的 被鉴别可移植key。TPM所有者负责指明一个特定的移植授权是否对控制移植适用。11.7 TPM_CMK_CreateKey该命令发起并创建一个不对称密钥的安全存储句柄,该密钥的移植控制通过移植授权来实现。该命令类似与TPM_CMK_WrapKey,但是(1)合成的key必须是可移植的,并只可以通过TPM_CMK_CreatBlob移植。(2)命令是所有者通过凭证标识授权的。TPM_CMK_CreateKey命令创建一个其他的标准可移植key,以下情况除外(1)移植授权是一个移植授权的HMAC,并且新key的公钥由tpmProof签名(而不是tpmProo
30、f本身);(2)migrationAuthority比特位被置为TRUE;(3)payload的类型为TPM_PT_MIGRATE_RESTRICTED.移植的选择和授权通过传入的公钥指定。(实际上可以处理多个公钥,所以多个移植授权可以被指定)。11.8 TPM_CMK_CreateTicket该命令用公钥检验摘要的签名。TPM_CMK_CreateTicket返回一个凭证,可以证明同样的TPM用特定的公钥验签成功。11.9 TPM_CMK_CreatBlob该命令非常类似于TPM_CreateMigrationBlob命令,不同在于:(1)使用一个额外的凭证(restrictedKeyAut
31、h)代替移植授权会话;(2)使用移植选项TPM_MS_RESTRICT_MIGRATE 或者TPM_MS_RESTRICT_APPROVE_DOUBLE;(3)产生一个预包装的key数据块,其移植授权不受tpmProof约束。如果目标(父级)公钥是MA,移植是默许的。如果MA不是目标(父级)公钥,则进一步的检测是必须的,而且只能选择一个移植的目标:(1)sigTicket必须证明restrictTicket是MA签名的。(2)restrictTicket必须担保目标公钥是经过核准批准移植目标(父级)公钥的。(显然这种复杂的方法也用于一个MA向MA批准移植。)上述两种情况,MA必须在默认的允许移
32、动key的MAs列表中,11.10 TPM_CMK_ConvertMigrationTPM_CMK_ConvertMigration完成被鉴定的移植数据块的移植过程。该命令接受一个被鉴定的移植数据块并创建一个标准的预包装数据块其payload类型为TPM_PT_MIGRATE_EXTERNAL。被移植的数据块必须通过常规的TPM_LoadKey功能装载到TPM里面。注意命令只移动私钥。移动相应的公钥TPM并没有指定,因为他们是不敏感的安全数据。移动相应的公钥需要以平台特定的规范指定。在移动的key能被目标TPM以TPM_LoadKey命令使用之前,创建一个TPM_KEY结构。TPM_CMK_C
33、onvertMigration检验目标key的默认可移植授权MA列表,以证明从目标key移动到目的地(父级)key是经过核准的,并检验目标key里的设置(标志等)是CMK。12保持功能(可选)(描述略)12.1 TPM_CreateMaintenanceArchive该命令创建保持档案。它只可以由所有者执行,可以随着TPM_KillMaintenanceFeature命令关闭12.2 TPM_LoadMaintenanceArchive该命令装载一个由厂商修改以装载到其他TPM的保持档案。如果保持档案的创建使用所有者的授权进行异或加密,解密的时候必须也使用到当前所有者的授权。所有者的授权不变。
34、如果保持档案的创建使用随机数据来异或加密,出售者的详细说明应该包含该随机数据。所有者的授权可能改变。12.3 TPM_KillMaintencanceFeature该命令是一个持久的动作,用以防止任何人创建保持档案。一旦执行则持续到新TPM所有者的设定。这个动作是为不使用保持特性的用户设计的。在所有者的判断上,可以以这样一种方式消除保持特性:唯一恢复平台可保持性的操作将是移除根证书(root key)。这种特性在所有贯彻保持特性的TPM中都强制存在。12.4 TPM_LoadManuMaintPub该命令装载厂商的公钥以保持过程中使用。命令安装manuMaintPub到TPM内部的永久数据存储
35、区。保持特性可以复制受保护存储中的非可移动数据。所以在保持特性的公钥被安装到TPM之前,移动平台则存在着安全漏洞。该命令希望在安装一个TPM所有者或者任意key到TPM受保护存储区之前就能被使用。所以不用授权。12.5 TPM_ReadManuMaintPub该命令用来检测TPM里的厂商保持公钥是否为期望值。这在制造过程中会有用。命令返回一个安装key的摘要,而不是key本身。这阻碍了保持key的发现,这些key可能对厂商的秘密有用。该命令希望在安装一个TPM所有者或者任意key到TPM受保护存储区之前就能被使用。所以不用授权。13 密码功能13.1 TPM_SHA1Start其能力是开启一个
36、计算SHA-1摘要的过程。SHA-1处理过程的公开对平台来说处于一个方便的模式,不用需要太多的存储器来完成SHA-1本身。因此,SHA1的使用受到TPM的限制。TPM不允许在执行SHA1会话其间有任何其他类型的处理。所以一个TPM上只能激活一个SHA1会话。该命令结束之后, TPM_SHA1Complete或者TPM_SHA1CompleteExtend命令之前,接收到任何其他命令如TPM_SHA1Update等,将导致SHA1会话的失效。13.2 TPM_SHA1Update其能力是输入完成的数据块到未完成的SHA1摘要中。处理结尾,摘要保持未决(pending)状态。13.3 TPM_SH
37、A1Complete能力为终结一个未决的SHA-1计算。13.4 TPM_SHA1CompleteExtend能力是终结一个未决的SHA-1计算并通过SHA-1哈希处理提交结果给平台配置寄存器(PCR)。该命令原本完成一个哈希序列并在较少存储的环境下提供给PCR。13.5 TPM_Sign签名命令对数据签名并返回最终数字签名值。13.6 TPM_GetRandom该命令返回随机数字发生器中的下一个bytesRequested比特给请求者。它推荐TPM实行RNG方式,以便允许它返回RNG比特,这样bytesRequested频率多于可用比特数量的情况就会发生得少。13.7 TPM_StirRan
38、dom该命令增加平均信息量到RNG状态。13.8 TPM_CertifyKey该操作允许一个key去证明另外一个key的公开部分。一个TPM身份key可能用于证明非可以移植key,但是不允许证明可移植的key或者已经被证明过的可移植key。这样它允许TPM作出声明:“key属于TPM保护区域,不可能被透露。”为使这声明更加精确,挑战者必须相信发放身份key实体所用策略和TPM厂商的保持策略。签名和继承key可能被用于证明可移植key和非可移植key。证书的有效性取决于证书容器对证书key的信任。要验证的证书必须在调用TPM_CertifyKey之前被装载。在输出是否使用TPM_CERTIFY_
39、INFO 或者 TPM_CERTIFY_INFO2取决于被鉴别的key受限于那个PCR和什么位置。没有位置限制并使用不大于PCR#15的PCR的key鉴定时将导致本命令返回并签名一个TPM_CERTIFY_INFO结构,该结构于V1.1TPM兼容。当该命令运行来证明其他的key(使用PCR#16或者更高PCR的key或者有任何位置限制的key),它会返回并签名一个TPM_CERTIFY_INFO2结构。TPM_CertifyKey不支持一下情况:所证明的key需要使用授权但是已经被鉴别过的key(key-to-be-certified)却不需要。这时就需要用到TPM_CertifyKey2。如
40、果命令标签(参数队列中)指定只能有一个授权会话,TPM惯例会忽略监听到的第一个会话(这个key将永远得不到数据使用授权)并且输入会话数据将用于列表中的第二个授权会话。在TPM_CertifyKey中第一个会话是证明的key,第二个会话是已经被鉴别的key。在TPM_CertifyKey2中,第一个会话是已经被鉴别的key,第二个会话才是要证明的key。13.9 TPM_CertifyKey2该命令是基于TPM_CertifyKey的,但包含可以证明可证明移植key(CMK)的能力,这就需要额外的参数输入。TPM_CertifyKey2命令总是产生TPM_CERTIFY_INFO2结构。TPM_
41、CertifyKey2不支持以下情况:所证明的key需要使用授权但是已经被鉴别过的key(key-to-be-certified)却不需要。这时就需要用到TPM_CertifyKey2。如果命令标签(参数队列中)指定只能有一个授权会话,TPM惯例会忽略监听到的第一个会话(这个key将永远得不到数据使用授权)并且输入会话数据将用于列表中的第二个授权会话。在TPM_CertifyKey中第一个会话是证明的key,第二个会话是已经被鉴别的key。在TPM_CertifyKey2中,第一个会话是已经被鉴别的key,第二个会话才是要证明的key。14背书密钥处理(说明暂略)14.1 TPM_Create
42、EndorsementKeyPair该命令创建TPM背书密钥。如果背书key已经存在则返回错误码。14.2 TPM_CreateRevocableEK该命令创建TPM背书密钥。如果背书key已经存在则返回错误码。TPM销售者应该有一个单独的装置产生EK(背书密钥),然后注入TPM中。输入参数指定EK是否可以被重置,使EK重置的授权数据能否由TPM产生。输出参数是重置EK时所必须用到的授权数据。(如果可以重置的话)TPM_RevokeTrust命令必须用来重置一个EK(如果可以重置的话)。所有者授权不适用于批准重置一个EK:物理检测(Physical Presence)者可以移除一个真实的所有者
43、,安装新的所有者并撤回EK。真实的所有者能被重新设置,但是平台将丢失最初的证明这样就不会被挑战者所信任。所以如果一个口令就能够撤销一个EK,那它必须是一个分给真是所有者的单独口令。在V1.2版本一个OEM(原始设备制造商)在创建EK时由额外的选择。a)OEM可以制造它所有的TPM时设置标识enableRevokeEK=TRUE.如果OEM对这些TPM保留了EK重置的口令,就可以把其分发给消费者。客户可以使用该口令去修改口令,清除EK创建新的EK和新的口令。如果EK重置口令是一个随机值,OEM可以丢弃这些值并不分发给客户。通过猜测口令的本地DOS(拒绝服务?)攻击来重置EK的可能非常小(零统计)
44、。但消除DOS攻击的几率也是零,因为物理检测宣称要使用TPM_RevokeTrust命令。B)OEM可以置其TPM标识:enableRevokeEK=FALSE。那么EK将不能撤销,这样本地DOS对EK的攻击可能就消除了。14.3TPM_RevokeTrust该命令清除EK并设置TPM回到最初默认状态。在产生EK的过程中产生授权数据值。EK产生器负责保护和发布撤销信任授权数据(RevokeTrust AuthData.)。14.4 TPM_ReadPubek返回背书密钥的公开部分。这个值可以控制接入的放置,是一个单独敏感的数值。readPubek标识通过TPM_TakeOwnership命令设
45、置为FALSE,由TPM_OwnerClear命令设置为TRUE,这样就可以反应TPM所有者是否在线。14.5 TPM_OwnerReadInternalPub一个TPM所有者授权的命令,返回EK或者SRK的公开部分。Key处理(keyHandle)参数包括在引入的会话授权防止变更的值中,导致读一个不同的key。不像大部分能被更高层软件映射的key处理,这个key处理只有两个固定的值。15 身份创建与激活15.1 TPM_MakeIdentity产生一个新的证明身份密钥(AIK)15.2 TPM_ActivateIdentity该命令的目的有两部分。首先是确认TPM_SYM_CA_ATTEST
46、ATION中的信任状是本TPM的。其次是获得用以加密TPM_IDENTITY_CREDENTIAL的会话密钥。相对1.1版的TPM_ActivateIdentity有一项功能上的扩展。发送来自CA的数据块可以是1.1版格式也可以是1.2版格式。TPM从数据块的大小或者版本信息确定到底是那一种类型。TPM_ActivateIdentity在释放会话key之前检验对称会话密钥是否与TPM身份一致。只有TPM的所有者有权利激活一个TPM身份。所有者必须授权给TPM_ActivateIdentity命令。所有者通过TPM_OIAP或者TPM_OSAP授权协议对该命令授权。如果在释放会话密钥前任何PCR
47、值需要检验的话,身份激活包(ActivateIdentity package)的创建者需要指明。16 完整性采集和报告该部分介绍直接访问PCR的命令16.1 TPM_Extend增加一个对PCR的新度量。16.2 TPM_PCRRead该操作提供对一个指定PCR的不加密报告。16.3 TPM_Quote该操作提供对PCR值的加密报告。操作需要装入key。TPM_Quote用一个key去签名一个表明所选PCR当前值的声明和外部供给数据(可能是挑战者提供的一个nonce)使用“外部数据”的术语是因为TPM_Quote的一个重要使用是提供对任意数据的数字签名,这种签名包含了平台的PCR值在签名时间戳中。因此“外部数据”并不是出于反对重放的目的,虽然在完整性挑战被用作此目的。16.4 TPM_PCR_Reset因为PCR的pcrReset特性被置为TRUE,该命令重置PCR回到默认值,这模仿了TPM_Init的动作。PCR可能被限制于可以执行重置操作的位置。发送一个空的pcrSel