【译】可信平台模块 TPM
本文是 Trusted Platform Module - Wikipedia 的部分翻译,译于 2022 年 10 月 17 日。
概述
TPM 提供:
- 一个硬件随机数生成器
- 用于安全生成有限用途密钥的设施
- 远程认证:创建一个几乎不可伪造的硬件和软件配置的哈希密钥摘要,可以用来验证软硬件是否被修改。负责给配置生成哈希的软件决定了摘要的范围。
- 绑定:用 TPM 绑定的密钥(一个从存储密钥派生而来的唯一的 RSA 密钥)加密数据。包含 TPM 的计算机可以创建密钥并用 TPM 来加密这些密钥,以便它们只能由 TPM 解密。这一过程通常称为包装或绑定密钥,可以保护密钥不被泄露。每个 TPM 有一个存于内部的主包装密钥,称为存储根密钥(storage root key)。用户级 RSA 密钥容器和特定用户的 Windows 用户配置一起存储,可以用于加解密以该特定用户身份运行的应用程序的信息。
- 密封:类似于绑定,但要指定 TPM 状态以便解密(开封)数据。
- 其他解密(开封)数据的可信计算功能。
由于每个 TPM 芯片在生产时都有烧录在内的一个唯一且保密的背书密钥 (Endorsement Key, EK),计算机程序可以使用 TPM 来认证硬件设备。嵌入硬件的安全方案能比纯软件解决方案提供更多保护。但它在某些国家受到限制。
用途
平台完整性证明
TPM 的主要应用范围是确保平台的完整性。在这里,“完整性”表示“按预期行为”,而“平台”是指任何计算机设备,无论是什么操作系统。这是为了确保从硬件和软件的可信组合开始计算机启动过程,并一直持续到操作系统完全启动并运行应用程序为止。
使用 TPM 时,固件和操作系统负责确保完整性。
例如,统一的可扩展固件接口(UEFI)可以使用 TPM 形成信任根:TPM 包含若干平台配置寄存器(PCRs),允许安全存储和报告安全相关的度量值。这些度量值可用于检测对先前配置的更改并决定如何处置。可以在 Linux Unified 密钥设置(LUKS),Bitlocker 和 Privatecore vCage 内存加密中找到此类使用的例子。(见下文。)
使用基于 TPM 的平台完整性验证的另一个例子是 Microsoft Office 365 的许可证和 Outlook Exchange。
TPM 用于平台完整性的一个示例是 Trusted Execution Technology (TXT),它建立了一条信任链。它可以远程验证计算机正在使用指定的硬件和软件。
磁盘加密
像 dm-crypt 和 BitLocker 这样的全盘加密程序可以使用 TPM 技术来保护用于加密存储设备的密钥,并为包含固件和引导扇区的可信引导路径提供完整性身份验证。
其他用途和疑虑
任何应用程序都可以使用 TPM 芯片来:
- 数字版权管理(DRM)
- Windows Defender
- Windows 域登录
- 软件许可证保护和执行
- 防止网游作弊
还有些其他用途,其中一些引起了隐私问题。TPM 的“物理存在(physical presence)”特征要求一部分操作需要 BIOS 级的确认,如激活,停用,清除或改变 TPM 的人的所有权,需要有真人在机器的控制台旁才能操作,可以解决一部分隐私问题的担忧。
用于一些组织
美国国防部(DoD)规定,“若国防信息系统局(DISA)安全技术实施指南(STIGs)要求且此类技术可用,为支撑国防部而采购的新计算机资产(如服务器、台式机、笔记本电脑、瘦客户端、平板电脑、智能手机、PDA、手机)将包括 TPM 1.2 或更高版本。”国防部预计 TPM 将用于设备识别、身份验证、加密和设备完整性验证。
TPM 的实现
2006年,内置 TPM 芯片的新的笔记本电脑开始销售。在未来,这个概念可以是在计算机的现有主板芯片上,或者任何其他可以使用 TPM 设施的设备上,比如手机。PC 上会使用 LPC 总线或 SPI 总线连接到 TPM 芯片。
可信计算小组(TCG)已认证由英飞凌技术、Nuvoton和意法半导体制造的 TPM 芯片,已将 TPM 供应商 ID 分配给 AMD、Atmel、博通、IBM、英飞凌、英特尔、联想、国家半导体、Nationz Technologies、Nuvoton、高通、瑞芯微电子、微芯科技、意法半导体、三星、中新、德州仪器和 Winbond。
有五种不同类型的 TPM 2.0 实现(按安全性从高到低的顺序列出):
- 独立的 TPM 是在其自己的防篡改半导体封装中实现 TPM 功能的专用芯片。它们是最安全的,经 FIPS-140 认证,相对于软件实现的例程具有 3 级物理安全抗攻击能力,并且它们的封装需要实现一些防篡改功能。例如,汽车刹车控制器的 TPM 可以通过复杂的方法防止黑客入侵。
- 集成 TPM 是另一个芯片的一部分。虽然他们使用的硬件可以抵抗软件 bug,但他们不需要实现防篡改。Intel 在其部分芯片组中集成了 TPM。
- 固件 TPM(fTPM) 是在 CPU 的可信执行环境(trusted execution environment, TEE)中运行的基于固件(例如 UEFI)的解决方案。Intel、AMD和高通都有固件 TPM。
- Hypervisor TPM(vTPM) 是由 Hypervisor 提供并依赖于 Hypervisor 的虚拟 TPM,位于一个独立的执行环境中,该环境对虚拟机内运行的软件不可见,以保护其代码不受虚拟机中软件的影响。它们可以提供与固件 TPM 相当的安全级别。谷歌云平台(GCP)已实施 vTPM。
- 软件 TPM 是 TPM 的软件仿真器,运行时不会在操作系统中比常规程序得到更多的保护。它们完全依赖于运行它们的环境,因此它们所提供的安全性并不比正常执行环境所提供的更高。它们用于开发目的。
TPM 2.0 规范的官方 TCG 参考实现由 Microsoft 开发,根据 BSD 许可证授权,开源于 GitHub。Microsoft 提供了 Visual Studio 解决方案和 Linux autotools 构建脚本。
2018年,Intel 开源了其 Trusted Platform Module 2.0(TPM2)软件栈,支持 Linux 和 Microsoft Windows。源代码托管在 GitHub,并根据 BSD 许可证授权。
英飞凌资助开发了一个开源 TPM 中间件,该中间件符合 TCG 的软件栈(TSS)增强系统 API(ESAPI)规范。它由 Fraunhofer Institute for Secure Information Technology(SIT)开发。
IBM 的软件 TPM 2.0 是 TCG TPM 2.0 规范的实现。它基于 TPM 规范第 3 部分和第 4 部分以及Microsoft 提供的源代码。它包含完成实现所需的其他文件。源代码托管在 SourceForge 和GitHub 上,并根据 BSD 许可证授权。
2022年,AMD 宣布在某些情况下,其 fTPM 实现会导致性能问题。可以以 BIOS 更新的形式获得修复。