2. TPM核心架构与设备身份根
TPM(Trusted Platform Module,可信平台模块)并不是一颗“存密码的芯片”,而是一个带有独立计算、存储和密钥管理能力的可信根。理解TPM 2.0,关键要抓住两条主线:一是它内部的规范结构——哪些部件负责度量、哪些负责密钥、哪些负责授权;二是它的身份密钥层次——设备凭什么证明“我是我”,以及不同密钥各自承担什么职责。
一、TPM 2.0的规范结构
TPM 2.0规范由TCG(Trusted Computing Group)定义,核心结构可归纳为四个部分:
- 密码引擎(Cryptographic Engine):提供RSA、ECC、SHA-1/SHA-256、HMAC、AES等算法。TPM 2.0支持算法敏捷性,同一密钥对象可声明其算法类型,而不是像TPM 1.2那样固定绑定SHA-1。
- 密钥与对象存储:TPM内部有持久化存储(NV存储、持久化句柄)和易失性存储(会话、临时对象)。密钥可以以“受保护对象”形式存放在TPM外部,使用时再加载回TPM内部,从而突破芯片存储容量限制。
- 平台配置寄存器(PCR):至少24个PCR,用于记录平台启动过程中各阶段固件、引导程序、内核的度量值。PCR不能直接写入,只能“扩展”(Extend),即 PCR_new = Hash(PCR_old || 度量值),因此任何启动链变化都会导致PCR值不可逆地改变。
- 授权与会话:TPM 2.0用HMAC会话、策略会话(Policy Session)实现授权。策略会话支持“满足某条件才允许使用密钥”,例如PCR达到某值、口令正确、时间窗口有效等。
这四部分共同构成TPM的可信能力:密码引擎保证运算可信,PCR保证平台状态可度量,密钥存储保证密钥不出芯片,授权会话保证操作受控。
二、EK / IK / AIK身份密钥层次
TPM 2.0的身份密钥不是单一密钥,而是一个有层次的体系。理解这个层次,才能明白设备身份是如何被“锚定”的。
EK(Endorsement Key,背书密钥)是TPM的根身份。它在芯片制造阶段生成或注入,私钥永远不出TPM,且不可迁移。EK通常是一对RSA 2048或ECC密钥,其公钥连同厂商证书一起构成“背书证书”(EK Certificate)。EK的作用不是日常签名,而是证明“这个TPM是真实的、由某厂商生产的”。由于EK具有唯一性,直接使用EK会带来隐私问题,因此实际身份证明往往通过EK派生或签发的其他密钥完成。
IK(Identity Key,身份密钥)在部分文档中也称“身份密钥”或“平台身份密钥”,它由EK派生或由EK签发,用于代表设备身份进行签名或加密。IK可以迁移或重新生成,但它的可信性依赖于EK的背书。在设备身份建立流程中,IK常作为设备向服务器注册时使用的公钥载体。
AIK(Attestation Identity Key,证明身份密钥)是专门用于远程证明(Remote Attestation)的密钥。AIK由TPM内部生成,其公钥由EK或隐私CA(Privacy CA)签发证书。AIK的核心用途是:对PCR值进行签名,向远程挑战方证明“我的平台启动状态是某组PCR值”。AIK与EK分离,既保护了EK的隐私,又实现了平台状态的可验证声明。
三者的关系可以概括为:EK是根,IK是设备身份的代表,AIK是平台状态的证明者。EK证明“芯片真”,AIK证明“平台状态真”,IK则连接两者,用于设备注册和身份绑定。
三、设备唯一身份建立流程
设备唯一身份的建立,本质上是把TPM内部的密钥层次与外部服务器信任体系对接起来。以下是一个典型的建立流程,适用于设备首次入网或首次注册场景。
- 读取EK公钥与证书:设备启动后,通过TPM命令读取EK公钥和厂商签发的EK证书。服务器验证EK证书链,确认该TPM来自可信厂商。
- 生成AIK:在TPM内部生成AIK密钥对,私钥不出芯片。AIK公钥连同EK签名一起发送给服务器或隐私CA,申请AIK证书。
- 签发AIK证书:服务器验证EK证书有效后,为AIK公钥签发证书。此时AIK成为该设备在信任体系中的“身份凭证”。
- 建立设备身份记录:服务器将AIK公钥、设备ID、EK指纹等信息写入设备身份数据库,完成设备唯一身份注册。
- 后续身份证明:设备每次需要证明身份时,使用AIK私钥对挑战随机数或PCR值签名,服务器用AIK证书验证签名,从而确认设备身份和平台状态。
tpm2_createak 命令生成AIK,再用 tpm2_evictcontrol 将其持久化。
整个流程的关键判断点在于:EK证书是否可验证、AIK是否由TPM内部生成、AIK证书是否由可信方签发。只要这三步成立,设备唯一身份就建立完成,后续的远程证明、密钥封装、安全启动校验才有可信基础。
需要强调的是,EK和AIK的私钥始终在TPM内部,外部只能通过TPM命令使用它们,无法直接导出。这正是TPM作为设备身份根的核心价值:身份密钥不可窃取、不可复制,设备身份因此具备硬件级唯一性和抗克隆能力。