Windows 10 IoT 核心版上的受信任的平台模块 (TPM)

什么是 TPM?

受信任的平台模块(TPM)是一种加密协处理器,包括随机数生成、加密密钥的安全生成以及其使用限制的功能。 它还包括远程证明和密封存储等功能。 TPM 的技术规范由受信任的计算组(TCG)驱动公开发布。 最新版本的 TPM 2.0(2014 年 10 月发布)主要对规范进行了重新设计,该版本添加了新的功能并修复了之前 TPM 1.2 的缺陷。

为什么使用 TPM?

包含 TPM 的计算机可以创建加密密钥并对其进行加密,以便它们只能由 TPM 解密。 此过程通常称为 “包装”“绑定” 密钥,可以帮助保护密钥免受泄露。 每个 TPM 都有一个主“封装”密钥(称为存储根密钥),它存储在 TPM 本身的内部。 TPM 中创建的密钥的私有部分永远不会向任何其他组件、软件、进程或人员公开。

包含 TPM 的计算机还可以创建一个密钥,该密钥不仅已包装,而且绑定到某些平台度量。 仅当这些平台度量的值与创建密钥时具有相同的值时,才能解包这种类型的密钥。 此过程称为 TPM 的密钥“密封”。 解密密钥称为“未密封”。 TPM 还可以密封和取消密封在 TPM 外部生成的数据。 使用此密封密钥和 BitLocker 驱动器加密等软件,可以锁定数据,直到满足特定的硬件或软件条件。

使用 TPM 时,密钥对的私有部分与操作系统控制的内存分开。 密钥可以密封到 TPM,并且可以在密钥未密封并释放以供使用之前对系统状态(定义系统“可信度”的保证)的某些保证。 由于 TPM 使用自己的内部固件和逻辑线路来处理指令,因此它不依赖于操作系统,并且不会暴露在操作系统或应用程序软件中可能存在的漏洞。

TPM 体系结构

TPM 1.2 和 TPM 2.0 之间的差异。
TPM 规范已开发两次。 它第一次从 1.1b 发展到 1.2,纳入规范委员会请求/确定的新功能。 这种特征的演变形式使得最终的 TPM 1.2 规范非常复杂。 最终,发现 SHA-1(这是 TPM 1.2 中最强的商业算法)的加密弱点,这导致了更改的需要。 TPM 体系结构从头开始重新设计,导致 TPM 2.0 更集成和统一的设计。

与以前的 TPM 1.2 相比,更改和增强功能包括:

  • 支持其他加密算法
  • 增强 TPM 对应用程序的可用性
  • 增强的授权机制
  • 简化的 TPM 管理
  • 增强平台服务安全性的其他功能

注意

Windows IoT 核心版仅支持 TPM 2.0,并不支持过时的 TPM 1.2。

什么是 TBS?

TPM 基本服务(TBS)功能是一种系统服务,允许透明共享 TPM 资源。 它通过远程过程调用(RPC)在同一物理计算机上的多个应用程序之间共享 TPM 资源。 它使用调用应用程序指定的优先级跨应用程序集中 TPM 访问。

TPM 提供旨在提供平台信任的加密函数。 由于 TPM 是在硬件中实现的,因此它具有有限的资源。 TCG 定义了一个 TPM 软件堆栈(TSS),它利用这些资源为应用程序软件提供受信任的操作。 但是,未预配为支持 TSS 实现可与操作系统软件(也可能正使用 TPM 资源)并行运行。 TBS 功能通过使与 TBS 通信的每个软件堆栈检查计算机上可能运行的任何其他软件堆栈使用 TPM 资源来解决此问题。

Windows IoT Core 上提供的 TPM 解决方案

简要介绍软件 TPM (sTPM)、固件 TPM (fTPM)、离散 TPM (dTPM)...

固件 TPM (fTPM)

固件 TPM (fTPM) 需要特殊处理器/SoC 支持,该支持当前未在 Raspberry Pi 2 或 3 上实现。 MinnowBoard Max 需要固件版本 0.80 或更高版本。 DragonBoard410c 提供了默认启用的全新 fTPM 功能。

离散 TPM (dTPM)

离散 TPM (dTPM) 被视为最值得信任的解决方案。
Windows IoT Core 上支持多个 dTPM 芯片和BP 模块的制造商:

制造商 网页 模量类型 TPM 芯片
Infineon TPM Evalboard Infineon SLB9670 TPM 2.0
Pi3g Pi3g.com Mass Product 和 Evalboard Infineon SLB9670 TPM 2.0

软件 TPM (sTPM)

软件 TPM (sTPM) 也称为 TPM 模拟器。 它独立于平台,在 Windows IoT Core 上受支持。

注意

sTPM 仅用于开发目的,并不提供任何切实的安全优势。

示例

  • Urchin 库示例本教程演示如何创建使用 Urchin 库练习 TPM 功能的示例 C++ 应用程序。 Urchin 是派生自 TPM 2.0 参考实现的符合规范的库。 它向客户端提供封送/取消封送所有数据结构、正确计算授权、执行参数加密和执行审核的功能。

其他资源