本文目录导读:

TPM 2.0(可信平台模块 2.0)用于平台完整性的核心机制,是通过信任链与度量来确保系统从启动到运行的过程中,没有被篡改或植入恶意代码。
TPM 2.0 就像平台的“黑匣子”或“良心”,它只记录事实(度量值),不判断好坏,而是将判断权交给外部,以下是具体的工作流程和原理:
核心概念
- 信任根: 通常是平台固件(BIOS/UEFI) 中的一个不可更改的代码块(CRTM,Core Root of Trust for Measurement),它是整个信任链的起点,被认为是绝对可信的。
- 度量: 在启动过程中,每一个组件(如BIOS、引导加载器、操作系统内核)在将控制权传递给下一个组件之前,会先计算下一个组件的哈希值(Hash)。
- 存储与报告: TPM 2.0 通过 平台配置寄存器(PCR,Platform Configuration Registers) 来安全地存储这些度量值,由于 PCR 具有扩展特性,任何后续的度量值都会与之前的混合,使得 PCR 值能够唯一地反映整个启动历史。
- 远程证明: 当需要验证平台完整性时,TPM 2.0 会签署当前 PCR 值,并发送给远程验证方,验证方通过比对这份受签名的 PCR 值与预期的“黄金值”,来判断平台是否处于健康、未被篡改的状态。
具体工作流程(信任链建立)
这是 TPM 2.0 用于完整性的核心过程,通常分为以下几步:
-
BIOS/UEFI 阶段
- 度量: BIOS 固件(CRTM)首先度量自身,它度量下一个组件(如 Option ROM、主引导记录 MBR 或 UEFI 引导加载器)的代码。
- 扩展: 将度量得到的哈希值扩展到特定的 PCR 中(PCR-0 通常用于 BIOS 固件,PCR-2 用于 Option ROM)。
- 记录: 度量结果被安全地记录在 TPM 芯片的 PCR 寄存器中,这些寄存器只能通过扩展来更新,无法被覆盖或清零(除非系统复位)。
-
引导加载器阶段
- 度量: 引导加载器(如 GRUB2、Windows Boot Manager)在加载操作系统内核之前,会度量内核文件(如 vmlinuz、ntoskrnl.exe)及其驱动、初始 RAM 磁盘(initrd)等。
- 扩展: 这些度量值被扩展到对应的 PCR(PCR-4 用于引导加载器,PCR-8 用于内核)。
-
操作系统阶段
- 度量: 操作系统内核在启动过程中,会度量关键系统文件、安全策略、加载的内核模块等。
- 扩展: 这些度量值进入更高级别的 PCR(PCR-10、PCR-11 等,具体分配由 TCG(Trusted Computing Group)规范和操作系统定义)。
关键点: 在整个信任链中,如果任何一个环节的代码被篡改,其哈希值就会改变,最终导致对应 PCR 的值与预期值不符。
实际应用方式
TPM 2.0 的平台完整性功能主要通过以下两种方式实现其价值:
本地验证:系统健康状态检查
- Windows 示例: Windows 的 BitLocker 驱动器加密 依赖于 TPM 2.0,在系统启动时,BitLocker 会检查 PCR 值(通常包含 BIOS、MBR、引导加载器的度量)是否与加密时记录的“黄金值”一致。
- 匹配: 系统正常,TPM 释放用于解密的密钥,用户正常进入桌面。
- 不匹配: 系统被篡改(如引导扇区感染病毒),PCR 值变化,TPM 拒绝释放密钥,系统会提示输入恢复密钥,防止数据被未授权访问。
- Linux 示例: 使用 dm-verity 或 IMA(Integrity Measurement Architecture) 结合 TPM 2.0,可以验证根文件系统的完整性,防止 rootkit 篡改系统核心文件。
远程验证:网络访问控制
这是 TPM 在云计算、物联网和企业办公环境中最重要的应用。
- 场景: 一台企业笔记本需要接入公司内网。
- 流程:
- 请求: 笔记本向认证服务器(如 VPN 网关或 NAC(Network Access Control,网络访问控制)设备)发起连接请求。
- 挑战: 服务器发送一个随机数(Nonce)给笔记本,防止重放攻击。
- 证明: 笔记本的 TPM 2.0 生成一个受平台认证的 PCR 报告,这份报告包含:当前特定 PCR 的值(度量了整个启动过程的哈希)、一个使用 TPM 中私钥(该私钥永远不会离开 TPM 芯片)对(PCR值 + 随机数)的签名。
- 验证: 服务器使用已知的公钥验证签名,确认报告确实来自这台笔记本的 TPM 2.0,服务器将报告中的 PCR 值与一个预先配置的、被认为是“健康”的“黄金镜像”的 PCR 值进行比对。
- 决策:
- 一致: 笔记本电脑的启动固件、引导加载器、内核等所有度量组件与预期完全一致,允许接入网络。
- 不一致: 系统可能被篡改或运行了未经授权的软件,拒绝接入,并将其隔离到修复网络。
TPM 2.0 相比 TPM 1.2 的改进
- 更强的算法支持: 不再局限于 SHA-1/RSA,原生支持 SHA-256、ECC、SM2/SM3(国密)等现代算法,安全性更高。
- 更灵活的 PCR 策略: TPM 2.0 允许使用策略会话(Policy)来定义更复杂的授权和撤销条件,可以设定“只有 PCR 值为 X 且用户提供了 PIN 码时,才释放密钥”。
- 更细粒度的控制: 支持更多的 PCR(通常至少 24 个),并能更精确地控制哪些度量进入哪些PCR。
局限性
- 度量不等于安全: TPM 只度量“是什么”,不判断“是否安全”,如果度量了恶意签名的原始代码(这本身是不安全的),TPM 也会忠实地记录。
- 防篡改而非防远程攻击: TPM 主要防御物理篡改和启动阶段的恶意软件,对于系统运行后的网络漏洞(如 RCE(远程代码执行)漏洞),TPM 无法直接防御。
- 需要生态支持: 需要 OS、固件、应用、服务端(如证明服务器)全面支持才能发挥效果。
TPM 2.0 用于平台完整性的本质是:从信任根开始,逐一度量并记录引导链上的每一个组件,将度量值安全地存储在无法篡改的硬件 PCR 中。 通过本地(如 BitLocker)或远程(如网络证明)的方式,将这些受保护的度量值与已知的、可信的“黄金值”进行比对,从而判断平台的完整性状态,它提供的是基础设施级的、对引导过程的硬件级信任保障。