对TCG的概要分析和对TPM的学习-可信存储根RTS(三)

时间:2021-07-26 05:47:58

(YOUXIANG:lichunwen1987ATqq。com)

参考TCG Specification Architecture Overview 1.4 。http://www.trustedcomputinggroup.org/ 检索TCG Specification Architecture Overview

   

 RTS是一个准确的记录完整度量的摘要值和顺序计算引擎,它将完整性度量保存在日志中,将它们的散列值保存在PCR中。RTR是一个可靠报告RTS的计算引擎。RTS保存委托给TPM的密钥和数据,并管理少量的内存,其中存放的密钥用于完成解密和签名的操作。

 

对TCG的概要分析和对TPM的学习-可信存储根RTS(三)

 

TPM中的密钥管理架构

    上图为TPM的密钥管理架构。TPM定位于一个造价低廉的组件,可以供普通消费者使用。所以TPM内部只有有限的易失性和非易失性存储以减少成本,那么TPM之外就需要无限的外部存储扩展。所以需要有外部存储(External Storage)和密钥缓存管理(Key Cache Management:KCM)模块。EK和SRK是仅有的两个只存在于TPM中的密钥。密钥属性,可以分为可迁移密钥和不可迁移密钥,表明key是否可以由一个TPM迁移到另外一个TPM。AIK是一个典型的不可迁移密钥。可迁移的密钥可以用来在两个TPM平台间交换信息。

先介绍TPM中的密钥类型,TPM中有7中Key类型:

l  EndorsementKey

EK是一个至少2048-bit的RSA不可迁移密钥,由TPM的生产商生成的,EK证书与之对应;EK证书是为了确保key是EK,是由TPM中保存的EK。

EK私钥不会离开TPM,只存在与TPM的保护区中。

它通常只用来做两件事情:创建Owner(解密SRK)和生成AIK证书(解密CA发送过来的AIK证书)。

EK与TPM是一一对应关系,一个TPM只有一个EK。

EK不能被用来加密或者签名。

l  IdentityKeys

1)  如果直接使用EK签名,则可能会带来隐私问题,所有EK的签名都能够具体找到是哪个TPM。 所以不能直接使用EK签名。

2)  EK需要一直保存在TPM中,不能被暴露,所以不能直接使用EK对PCR进行签名。使用AIK(Attestation Identity Keys)作为EK密钥的别名(代理)。

3)  又称之为 AIK,不可迁移的签名密钥,但是仅对TPM产生的数据进行签名,例如TPM的配置和PCR值。这种操作是Quote,区别于一般的签名。

4)  AIK作为一种特殊的密钥,它存储在一个通用的存储设备中,当它离开TPM时,必须提供完整性保护。而且它是不可迁移的。(以AIK证书形式发送)

5)  AIK是一个2048位的RSA密钥

6)  AIK可以确保是与TPM进行通信,但不具体到哪一个TPM

7)  签名的key仅对TPM中的信息进行签名(所以不能使用AIK对外部数据进行其签名)。

8)  可以有多个AIK。

l  StorageRoot Key (SRK)

Storage Root Key (SRK) and the Endorsement Key (EK) 这两个Key是永久保存在TPM中的,下图为TPM中RTS存储的Key的关系。SRK是由TPM产生的,SRK的密码在创建一个TPM账户时由EK进行了加密。SRK用来保护其他存储在TPM之外的密钥。

l  Signingkeys:

签名密钥是用来对应用数据或消息进行签名的非对称密钥,可以是可迁移的或不可迁移的。

l  Storagekeys

存储密钥一般是用来加密数据或其他密钥的非对称密钥,用来产生存在于TPM之外的密钥和数据。

l  Bindkeys

May be used to encryptsmall amounts of data (such as a symmetric key) on one platform and decrypt iton another. 用来加密一个平台的少量数据(例如对称密钥),然后在另一个平台解密。

– happens outside of the TPM

– encrypt data with the public part of aTPM key

– only the TPM the key pair belongs tocan decrypt the data

与Seal的区别:

– without using PCRs: bind/unbind

– with using PCRs: seal/unseal

l  LegacyKeys

在TPM外创建的密钥。在进行签名或者加密操作之后再导入到TPM中,可迁移密钥。

l  AuthenticationKeys

用来保护涉及到TPM的传输会话的对称密钥。Authentication Keys are symmetric keys used to protect transportsessions involving the TPM

 

几个小知识点:

Ø  只有EK和SRK是永久存储在TPM中的

Ø  TPM的key都是在TPM中产生的

Ø  使用TPM的key,需要先将key加载到TPM中

Ø  TPM中的key的slot是有数量限制的

Ø  对TPM中的key slot的管理由TSS完成

对TCG的概要分析和对TPM的学习-可信存储根RTS(三)

 

TPM中的key的产生方式:

指定一个父key,由RSA Engine创建一个新的RSA对, 由于key slot数量是一定的,需要一定安全机制将TPM中的key换出来。、

如果一个key离开TPM,需要使用父key的公钥进行加密。

因为父key是在TPM中的,所以TPM的key的私钥只能在TPM中解密和使用

SRK,是最顶层的key,永远驻留在TPM中

SK组成了key的层次,签名key经常在TPM之外

 

下图为TPM的key层次结构,顶层root密钥为SRK,其他key都为通过SRK生成。产生一个key或者在keyslot中已有的key私钥离开TPM,应该使用其父key的公钥进行加密。而key的使用都在TPM中(因为经过层层加密,只有在TPM中的SRK才能最终将其解开),所以TPM的外部key需要通过key的树结构返回到SRK,经解密后使用。

 

对TCG的概要分析和对TPM的学习-可信存储根RTS(三)

TPM Key Hierarchy

对TCG的概要分析和对TPM的学习-可信存储根RTS(三) 

Unloading TPM Keys

 

下面为一个使用红圈标示的signing key的例子。

对TCG的概要分析和对TPM的学习-可信存储根RTS(三)

 

Loading TPM Keys

 

1、首先将SR key1load到TPM中,使用SRK解密,放入key slot中,

对TCG的概要分析和对TPM的学习-可信存储根RTS(三)

Loading TPM Keys

 

2、然后再将SK key2 load到TPM中,使用SRkey 1将key 2解密,放入到key slot中。

对TCG的概要分析和对TPM的学习-可信存储根RTS(三)

 

Loading TPM Keys

 

3、最后将signing key load到TPM中,使用SR key 2解密。然后将其放在key slot中,再在TPM中使用其进行一些签名操作。

对TCG的概要分析和对TPM的学习-可信存储根RTS(三)

 

Loading TPM Keys