可信平台模块 (TPM) 2.0 简介
十多年来,受可信平台模块 (TPM) 规范的推动,可信计算组织 (TCG) 一直在解决个人电脑、服务器、网络设备和嵌入式系统的信任问题及相关的安全优势。
TPM 标准定义了硬件信任根 (HRoT),它被广泛认为比软件更安全,因为软件更容易被攻击者攻破。
TPM 与软件配合使用以启用各项功能;它提供开源 API,也支持开发自定义软件。本文后续部分还将提供更多软件支持资源。
在许多系统中,TPM 提供完整性测量、健康检查和身份验证服务。
TPM 的演变
虽然早期的 TPM 1.2 标准被应用于数十亿台 PC、服务器、嵌入式系统、网络设备和其他设备中,但不断发展的物联网以及对传统 PC 环境之外的安全需求不断增长,促使 TCG 开发了新的 TPM 规范,该规范最近被采纳为国际标准 ISO/IEC 11889:2015。
为了提高应用灵活性并促进规范的更广泛应用,TCG 采用了“库”式方法创建了 TPM 2.0。这使得用户可以根据不同的实现级别和安全级别选择适用的 TPM 功能。此外,还新增了一些特性和功能,例如算法灵活性以及根据需要实现新的加密算法的能力。
TPM 的属性包括:
- 平台支持批量(对称)加密
- 高质量随机数
- 加密服务
- 用于存储少量数据、粘滞位、单调计数器和可扩展寄存器的受保护持久存储
- 一个受保护的伪持久化存储,可存储无限数量的键和数据
- 提供多种授权方式来访问受保护的密钥和数据
- 平台身份
- 支持平台隐私
- 数字签名(普通签名、匿名签名、假名签名)的签署和验证
- 验证密钥和数据的属性
- 审核密钥和数据的使用情况
在可信平台中,TPM 还提供以下功能:
- 证明:报告平台状态
- 密封:使用平台状态来授权对密钥和数据的访问
适用于多种应用的TPM
TCG 为 TPM 2.0 创建了一个库规范,其中描述了从服务器、笔记本电脑到嵌入式系统等各种平台上所有可能实现和需要的命令/功能。每个平台都可以选择所需的功能以及所需的安全级别或保障级别。因此,TPM 2.0 比最初的 TPM 规范更加灵活。这种灵活性使得最新的 TPM 可以应用于众多嵌入式应用,包括汽车、工业、智能家居等等,并且使设计人员和开发人员能够针对特定用例更精细地选择合适的 TPM 功能。
目前主流的TPM类型有四种,它们在成本、功能和安全性之间各有侧重。TCG将持续评估市场需求,以进一步改进TPM。
- 分立式TPM
提供最高级别的安全性,例如用于保护汽车制动控制器的TPM。这种级别的安全性旨在确保其保护的设备即使面对复杂的攻击手段也无法被破解。为了实现这一目标,需要设计、制造和评估一款分立式芯片,使其具备最高级别的安全性,能够抵御各种复杂的攻击,包括探测和冻结等篡改行为。 - 集成式TPM
是安全性较低的一个级别。虽然这个级别仍然包含硬件TPM,但它被集成到一个提供安全以外其他功能的芯片中。硬件实现使其能够抵御软件漏洞,但这个级别并非设计用于防篡改。 - 固件 TPM
是一种受保护的软件。其代码运行在主 CPU 上,因此无需单独的芯片。与其他程序一样运行时,代码位于一个名为可信执行环境 (TEE) 的受保护执行环境中,该环境与其他在 CPU 上运行的程序相互隔离。通过这种方式,TPM 可能需要但不应被他人访问的密钥等敏感信息可以保存在 TEE 中,从而增加黑客攻击的难度。
除了缺乏防篡改能力之外,TEE 或固件 TPM 的缺点在于,TPM 的安全现在依赖于许多其他因素,包括 TEE 操作系统、TEE 中运行的应用程序代码中的漏洞等等。 - 软件TPM
可以实现为TPM的软件模拟器。然而,软件TPM存在诸多安全漏洞,不仅容易被篡改,还可能受到运行该软件的操作系统本身的漏洞影响。尽管如此,它仍然具有一些关键应用:它非常适合测试或构建包含TPM的系统原型。对于测试而言,软件TPM或许是一个合适的解决方案/方法。
许多物联网系统都包含传感器和云处理功能,这意味着需要虚拟化。在云环境中,实现 TPM 的一种巧妙方法是使用虚拟 TPM。虚拟 TPM 是云环境的一部分,它提供与物理 TPM 相同的命令,但这些命令是分别发送给每个虚拟机的。
满足不同需求的TPM解决方案
表 1 列出了 TPM 的五种变体,大致按安全级别和成本递减的顺序进行讨论。为了更好地掌握成本和安全级别的影响,需要咨询 TPM 供应商。

TPM资源
一本旨在帮助读者入门TPM的“开放获取”书籍:
《TPM 2.0实用指南——在安全新时代使用可信平台模块》;作者:Arthur Challener
https://www.springer.com/us/book/9781430265832
一本旨在帮助解释TPM的参考书:
《可信计算平台——TPM2.0 的上下文》;作者:Proudler、Chen、Dalton;出版社:Springer ;网址
:https://www.springer.com/us/book/9783319087436
软件
https://sourceforge.net/projects/ibmswtpm2/
https://chromium.googlesource.com/chromiumos/third_party/tpm2/
https://github.com/vbendeb/tpm2_server
https://research.microsoft.com/en-US/downloads/35116857-e544-4003-8e7b-584182dc6833/default.aspx
https://github.com/PeterHuewe/linux-tpmdd/tree/tpm-emulator
https://github.com/PeterHuewe/linux-tpmdd/commit/9329f13c403daf1f4bd1e715d2ba0866e089fb1d
https://github.com/PeterHuewe/linux-tpmdd/commit/bbf2f7064c1452b47f11dfad340326b1205d863a
