TPM
本文约需 2 分钟阅读
TPM (Trusted Platform Module,可信平台模块) 是一种基于硬件的安全芯片,负责生成与保管加密密钥、验证设备完整性以及支持安全启动等。针对仅靠软件无法完全防御的攻击 (如引导程序套件 (bootkit) 和固件篡改),它提供硬件级别的信任根 (Root of Trust)。其根本的设计思想是将加密密钥存放在与操作系统和应用程序相隔离的专用芯片中,从而在物理上使恶意软件难以窃取密钥。
TPM 1.2 与 TPM 2.0 的区别
TPM 规范由 TCG (Trusted Computing Group,可信计算组织) 制定,目前 TPM 2.0 已成为主流。从 TPM 1.2 向 2.0 的迁移并非单纯的版本升级,而是对架构的根本性革新。
| 项目 | TPM 1.2 | TPM 2.0 |
|---|---|---|
| 加密算法 | RSA + SHA-1 固定 | RSA、ECC、AES、SHA-256 等 (可扩展) |
| 密钥层级 | 单一的 SRK (Storage Root Key,存储根密钥) | 多个层级 (Platform、Storage、Endorsement) |
| PCR 存储区 (bank) | 仅 SHA-1 | 并行运行多种哈希算法 |
| 授权方式 | 仅 HMAC | HMAC + 基于策略的授权 |
TPM 1.2 被固定使用 SHA-1 这一点,在 SHA-1 的脆弱性已被证实的今天是致命的制约。TPM 2.0 的设计允许更换算法,因此能够应对未来加密算法的陈旧化。
Windows 11 与 TPM 2.0 强制要求
微软将 TPM 2.0 设为 Windows 11 的强制系统要求,引发了广泛的争议。这一决定的背景在于固件级别攻击的增多。引导程序套件 (bootkit) 和 rootkit 在操作系统启动之前就开始运行,因此操作系统级别的安全软件无法检测到它们。基于 TPM 2.0 的安全启动会在启动过程的每个阶段验证代码完整性,并阻止被篡改的组件运行。
安全启动的验证流程
固件验证
将测量值记录到 PCR
签名验证
完整性检查
解封密钥
与 BitLocker 的协同
Windows 的 BitLocker 驱动器加密与 TPM 紧密协同运作。加密密钥会被「封印 (seal)」在 TPM 内部,只有当启动过程的测量值 (PCR: Platform Configuration Register,平台配置寄存器) 正常时才会被释放。也就是说,即使将硬盘连接到另一台 PC,由于不满足 TPM 的封印条件,也无法解密。与HSM负责服务器端密钥管理相对,TPM 负责客户端设备的密钥管理,二者是互补关系。
fTPM 与 dTPM
TPM 的实现形态有两种:固件 TPM (fTPM) 和独立 TPM (dTPM)。
- 在 CPU 内的可信执行环境中运行
- 无需额外芯片,成本低
- AMD PSP / Intel PTT 为代表例
- 可能受到 CPU 脆弱性的影响
- 独立的专用芯片
- 物理上隔离,抗篡改性强
- 面向服务器和高安全性终端
- 成本较高,占用电路板空间
在一般的商务用途中 fTPM 已经足够,但在军事、金融、医疗等要求高度安全性的环境中,则推荐使用 dTPM。TPM 也被用作 FIDO/WebAuthn 的认证器,是与生物识别认证相结合的无密码认证的基础技术。也请一并参阅生物识别认证的风险和迁移到通行密钥 (passkey) 的挑战。硬件安全技术书 (Amazon)对学习实现细节也很有帮助。
这篇文章对您有帮助吗?