2. TPM基础概念

TPM(Trusted Platform Module,可信平台模块)是一枚独立的安全微控制器,通常以焊接在主板上的芯片形式存在,也可能以固件(fTPM)或虚拟化(vTPM)形式实现。它的核心使命不是"杀毒"或"防火墙",而是为平台提供可信根:通过硬件级密钥生成、安全存储、平台状态度量与密码学运算,让上层系统能够回答两个关键问题——"这台机器的身份是否可信"以及"这台机器当前运行状态是否可信"。

理解 TPM 的关键在于:它是一枚被动的安全协处理器。TPM 不会主动阻止任何操作,它只负责在受控边界内执行命令并返回结果。真正的安全策略由操作系统、引导固件和应用软件调用 TPM 来实现。因此,TPM 是"可信计算"的基石,而非完整的安全解决方案。

一、发展历史:从 TCG 到 TPM 2.0

TPM 的标准化历程由可信计算组织(TCG,Trusted Computing Group)主导。2003 年 TPM 1.1 规范发布,2005 年 TPM 1.2 成为主流并大规模商用,广泛用于 BitLocker、可信引导等场景。2014 年 TPM 2.0 规范正式发布,2016 年后成为新设备的默认选择。TPM 2.0 并非简单版本升级,而是一次架构重构:它引入了算法敏捷性、更灵活的授权模型和更丰富的密钥层级,同时向下兼容部分 1.2 的使用模式。

二、TPM 1.2 与 TPM 2.0 的核心差异

两者最本质的区别在于算法绑定方式与授权模型。TPM 1.2 强制使用 SHA-1 和 RSA,算法被写死在规范中;TPM 2.0 则支持 SHA-1/SHA-256/SM3 等多种哈希、RSA/ECC/SM2 等多种非对称算法,并允许厂商按需裁剪。授权方面,1.2 使用 20 字节的 AuthData 和复杂的授权会话;2.0 改用 HMAC 或策略会话(Policy Session),支持基于 PCR 状态、时间、命令参数等条件的灵活授权。

对比维度 TPM 1.2 TPM 2.0
哈希算法 仅 SHA-1 SHA-1 / SHA-256 / SM3 等
非对称算法 仅 RSA RSA / ECC / SM2
授权模型 AuthData + OIAP/OSAP HMAC / Policy 会话
密钥层级 SRK 单一根 Owner / Platform / Endorsement 多层级
NV 存储 有限,结构固定 灵活索引,支持多种属性
典型应用 BitLocker、可信引导 Windows 11、TPM 密钥、远程证明

三、核心术语与结构

要读懂 TPM 的命令与日志,必须先掌握以下术语:

  • PCR(Platform Configuration Register):平台配置寄存器,用于记录引导链各阶段的度量值。PCR 采用扩展(Extend)操作,即新值 = Hash(旧值 || 新度量),不可逆,因此能反映平台状态的累积变化。
  • EK(Endorsement Key):背书密钥,由厂商在制造时注入,是 TPM 的"身份证",用于证明 TPM 的真实性。
  • SRK(Storage Root Key):存储根密钥,位于密钥层级顶端,用于保护下层密钥。
  • AIK / AK(Attestation Identity Key):证明身份密钥,用于对 PCR 值签名,实现远程证明。
  • Hierarchy(层级):TPM 2.0 的密钥树根,包括 Owner、Platform、Endorsement、Null 四个层级,各自有独立的授权和种子。
  • Sealed Data(密封数据):将密钥或机密绑定到特定 PCR 状态,只有平台状态匹配时才能解封。

关键理解:PCR 不是"存储"度量值,而是"累积"度量值。任何一次引导阶段的改变都会导致 PCR 值变化,从而让密封数据无法解封——这正是可信引导与 BitLocker 防篡改的底层机制。

四、典型应用场景

TPM 在实际工程中主要承担四类任务:

  1. 可信引导与度量:从 CRTM 开始,逐级度量 BIOS、Bootloader、内核,将结果扩展进 PCR,形成可验证的引导链。
  2. 密钥保护与密封:将磁盘加密密钥、证书私钥密封到 PCR 状态,防止离线窃取。
  3. 远程证明:通过 AK 对 PCR 签名,向远程服务器证明平台完整性,常用于零信任接入。
  4. 平台身份与设备认证:利用 EK 和 AK 实现设备唯一身份,用于设备注册、许可证绑定等。

五、常见误区与复盘

误区一:TPM 能防止所有攻击。TPM 只保护密钥和度量值,无法阻止内存抓取、侧信道或物理拆解后的总线嗅探。它提升的是攻击成本,而非绝对安全。

误区二:TPM 1.2 和 2.0 可以混用同一套密钥。两者密钥格式和授权模型不同,迁移需要重新封装,不能直接复制。

误区三:PCR 值固定不变。固件更新、驱动加载、引导配置修改都会改变 PCR,必须同步更新密封策略,否则会导致解封失败。

下面用一张结构图梳理 TPM 2.0 的层级、密钥与 PCR 之间的关系,帮助建立整体认知:

TPM 2.0 层级 · 密钥 · PCR 关系结构 Hierarchy 层级(密钥树根) Owner 层级 Platform 层级 Endorsement 层级 Null 层级 密钥对象(Key Objects) SRK 存储根密钥 保护下层密钥 EK 背书密钥 厂商注入身份 AK 证明身份密钥 对 PCR 签名 Sealed Key 密封密钥 绑定 PCR 状态 PCR 平台配置寄存器(度量累积) PCR[0] CRTM PCR[1] BIOS PCR[2] 固件 PCR[4] Bootloader PCR[7] 安全策略 应用层:BitLocker · 可信引导 · 远程证明 · 设备认证 通过 TPM 命令接口调用密钥与 PCR 能力 层级 密钥 PCR 应用