2. TPM基础
TPM(Trusted Platform Module,可信平台模块)是可信计算体系中的核心安全芯片或固件模块,用于完成密钥管理、平台度量、身份证明和安全存储等基础能力。理解TPM 1.2与TPM 2.0的差异,是后续进行故障诊断、调试和生态适配的前提。TPM 1.2诞生较早,规范相对封闭,主要面向PC平台;TPM 2.0则从移动、服务器、嵌入式到虚拟化全面覆盖,成为当前可信计算生态的事实标准。
一、核心原理:TPM在可信计算中的位置
TPM并不是一个“杀毒芯片”,它不直接判断程序是否恶意,而是通过密码学机制为平台提供可信根。其核心逻辑可以概括为:以TPM内部的密钥和寄存器为信任起点,逐层度量固件、引导程序、操作系统,最终形成可验证的平台状态。TPM内部包含几个关键对象:
- PCR(Platform Configuration Register):平台配置寄存器,用于保存度量值,不能直接写入,只能扩展(extend)。
- EK(Endorsement Key):背书密钥,通常与平台身份绑定,用于证明“这是一个真实的TPM”。
- SRK/Storage Root Key:存储根密钥,用于保护下层密钥,TPM 2.0中对应为Primary Seed派生出的存储主密钥。
- AIK/Attestation Identity Key:身份证明密钥,用于平台身份认证和远程证明。
TPM 2.0在架构上进行了模块化重构,支持算法敏捷性,不再像TPM 1.2那样固定使用SHA-1和RSA。它允许使用SHA-256、SHA-384、ECC、AES等多种算法,并引入了授权策略、会话管理和更灵活的密钥层级。
二、TPM 1.2与TPM 2.0的关键区别
从故障诊断和调试角度看,TPM 1.2与TPM 2.0的差异不仅体现在规范版本上,更体现在命令集、密钥体系、授权方式和平台兼容性上。下表列出最常遇到的对比点:
| 对比维度 | TPM 1.2 | TPM 2.0 |
|---|---|---|
| 算法支持 | 固定RSA、SHA-1 | SHA-256/384、ECC、AES、HMAC等,可协商 |
| 密钥层级 | SRK为根,结构较简单 | Primary Seed派生,支持持久化与临时密钥 |
| 授权方式 | 基于授权数据(AuthData) | 支持策略授权(Policy)、会话、NV索引 |
| PCR使用 | PCR 0~23,扩展写入 | PCR 0~23,支持更多事件类型和动态测量 |
| 平台覆盖 | PC为主 | PC、服务器、移动、嵌入式、虚拟化 |
| 生态兼容 | 驱动和工具链较旧 | TSS 2.0、Windows、Linux、云平台统一支持 |
三、方法流程:从TPM初始化到可信启动
在实际调试中,TPM 2.0的典型使用流程如下:
- 上电与自检:TPM芯片上电,执行自检(Self Test),确认内部密码学模块可用。
- CRTM度量:BIOS/固件首先被度量,度量值写入PCR 0。
- 引导链扩展:引导程序、内核、驱动依次度量,PCR值逐级扩展。
- 密钥加载:操作系统通过TSS 2.0栈加载存储密钥,解密受保护数据。
- 远程证明:平台将PCR值和签名发送给验证方,验证方比对预期基线。
在Linux环境下,常用工具包括 tpm2-tools,可以通过以下命令查看PCR值:
# 查看PCR 0~7的当前值
tpm2_pcrread sha256:0,1,2,3,4,5,6,7
# 读取TPM属性
tpm2_getcap properties-fixed
# 创建主密钥
tpm2_createprimary -C o -c primary.ctx
# 查看NV索引
tpm2_nvreadpublic
tpm2_pcrread 返回“TPM not found”,优先检查BIOS中TPM是否启用、操作系统是否加载了 tpm_tis 或 tpm_crb 驱动,以及 /dev/tpm0 或 /dev/tpmrm0 是否存在。
四、应用场景与可信计算生态
TPM 2.0的应用场景远多于TPM 1.2,主要包括:
- 磁盘加密:BitLocker、LUKS等使用TPM密封密钥,实现开机自动解锁。
- 平台完整性验证:通过PCR基线比对,判断系统是否被篡改。
- 设备身份认证:EK和AIK用于设备唯一身份,适用于零信任网络接入。
- 虚拟化与云:vTPM为虚拟机提供独立可信根,支持云上远程证明。
- 物联网与边缘:嵌入式TPM 2.0用于设备安全启动和密钥存储。
可信计算生态以TPM 2.0为信任根,向上连接固件、引导程序、操作系统、应用和云平台。TSS 2.0(TCG Software Stack)是连接应用与TPM的标准化中间件,屏蔽了不同厂商芯片的差异。在Windows中,TPM 2.0通过WMI和CNG接口暴露;在Linux中,则通过 tpm2-tss 和 tpm2-tools 提供支持。
五、常见误区与复盘
复盘时建议重点关注:TPM固件版本、PCR基线是否更新、密钥层级是否清晰、授权策略是否最小化、以及TSS栈与内核驱动的兼容性。只有把TPM 2.0的算法敏捷性、策略授权和生态兼容性真正用起来,才能在故障诊断和调试中快速定位问题,避免把“TPM不可用”简单归因于硬件损坏。