TPM中的密钥
TPM2.0,是一个安全芯片标准,它大致上规定了这么一回事:
首先要有一个芯片,芯片里面要能够做加密,并且储存密钥;对外采用TPM2.0里面规定好的方式,与操作系统沟通联络。
每个可信平台都有一个EK (Endorsement Key)密钥对,是在生产安全芯片的时候产生的。EK是平台的永久身份表示,利用它来得到AIK。TPM中的背书密钥EK是一个模长为2048比特的RSA公私钥对,私钥保存在TPM内部,永远不会暴露在TPM之外。对一个TPM或者一个安全平台来说,EK是唯一的,EK的证书用来保证平台的可信性。通常,EK在生产过程中产生,并由生产厂商把EK证书存储在TPM中。
EK是TPM中最核心的密钥,处于安全和隐私保护方面的考虑,并不能直接使用EK来进行数据的加密和签名。EK的主要功能是生成身份证明密钥AIK(Attestation Identity Key)和建立TPM owner,由TPM的owner来生成存储根密钥SRK(Storagr Root Key),使用SRK来加密、存储其他的密钥。SRK处于密钥保护树形结构的顶层,是TPM直接保护的唯一密钥。
AIK用来在不泄露平台身份的情况下向另一方证明平台的状态和配置,AIK虽然由EK生成,但是不包含任何关于平台或者EK的隐私信息,使用 AIK来对其内部的信息数据进行签名,这些信息可以包括 PCR、其它的密钥以及 TPM的状态信息,表明这些信息是经过 TPM处理的。在 TPM完整性报告和测量中 AIK发挥着巨大的作用。
首先,TPM owner生成一对AIK公私密钥对 (长度至少是2048bits),使用AIK的私钥部分对 AIK的公钥部分、请求产生AIK证书的TPM的一些标识信息(包括EK证书和平台证书 )进行签名,然后将这个签名值和AIK的公钥等信息一起发送给一个 Private CA,等待CA接受请求后生成AIK证书;而AIK的私钥部分则通过SRK加密保存在TPM内部。Private CA接收到申请请求信息之后,首先检验签名信息是否正确,若正确则根据AIK公钥部分生成一个AIK证书。随后CA产生一个session key(对称密钥 ),并使用这个密钥对刚生成的AIK证书进行加密,再将session key加密后连同被加密的证书,以及一些加密算法参数等信息由CA发送给TPM。TPM接收到这些内容后,使用自己的 PRIVEK(EK的私钥部分)解密加密证书的session key,然后再使用该session key解密证书。到此, 一个完整的 AIK的产生过程就完成了,这个AIK就可以开始使用了。