【译】可信平台模块 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 更新的形式获得修复。