如何 TPM - 第 2 部分:TPM 软件堆栈
这篇文章是如何 TPM 系列的一部分。如果您还没有阅读本系列中的前一篇文章,您可能想从那里开始。_ [](https://res.cloudinary.com/practicaldev/image/fetch/s--AQi-lvgJ--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https:// dev-to-uploads.s3.ama
这篇文章是如何 TPM 系列的一部分。如果您还没有阅读本系列中的前一篇文章,您可能想从那里开始。_
[](https://res.cloudinary.com/practicaldev/image/fetch/s--AQi-lvgJ--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https:// dev-to-uploads.s3.amazonaws.com/i/pny68p7sdp6ws5ocafbd.jpg)
上一篇文章介绍了 TPM 词汇的基础知识。这篇文章将深入探讨 TPM 生态系统。可信计算组 (TCG) 已将各种组件的规范放在一起以创建 TPM 2 软件堆栈。有多个库实现了这些规范以适应特定的操作系统和架构。
牛 - 系统 API
系统 API 是整个 TSS 架构的一层,它提供对 TPM 2.0 实现的所有功能的访问。它设计用于对 TPM 功能进行低级别调用的任何地方:固件、BIOS、应用程序、操作系统等。
ESAPI - 扩展系统 API
ESAPI 是 SAPI 之上的一层。这提供了增强的上下文管理和加密操作。
尽管 ESAPI 提供了一种更简单的方式来使用 TPM,但使用 API 的 ESAPI 层仍然需要深入了解 TPM 的内部工作原理。
FAPI - 功能 API
FAPI 层位于 ESAPI 层之上。 FAPI 提供了一个高级接口,包括策略定义语言和密钥库。用户可能希望在不了解底层系统的情况下创建密钥。这可以通过使用 API 的 FAPI 层来实现。
TCTI - TPM 命令传输接口
TCTI 是一个 IPC 抽象层,用于向 TPM 或 TAB/RM 发送命令并从其接收响应。这在 SAPI 和较低的硬件层之间提供了多个接口,具体取决于所使用的 TPM 类型(物理 TPM、tpm 模拟器等)
tpm2-tss 是一个系统实用程序,允许从操作系统和其他程序访问 TPM。该库包含从 FAPI 到 TCTI 的所有层的实现。安装 tpm2-tss。
TAB/RM:这是 TPM 的访问代理和资源管理器。
访问代理管理同时使用 TPM 的进程之间的同步。 TAB 负责确保使用 TPM 的进程能够继续进行所需的操作,而不受任何其他同时进行 TPM 访问的进程的干扰。
资源管理器以类似于虚拟内存管理器的方式管理 TPM 上下文。 TPM 的内存容量很小,很容易受到可以同时加载多少资源的限制。资源管理器负责将进程所需的各种资源换入和换出内存。
在 Unix 中,硬件设备被视为文件,可以使用文件路径进行访问。同样,可以使用/dev/tpm0
或/dev/tpmrm0
访问 tpm 硬件。
/dev/tpm0
是到 tpm 硬件的直接路径,在任何给定时间,只有一个进程可以使用此路径访问 tpm。多个进程需要访问 tpm 是很常见的。为此,使用了/dev/tpmrm0
。这是 tpm 的资源管理器,使用这个多个进程可以同时使用 tpm。
tpm2-abrmd 是实现 TAB(TPM2 访问代理)和资源管理器规范的系统守护进程。最新版本的内核(从 4.12 开始)有一个内核资源管理器。如果您使用的是更高版本的内核,则不需要 tpm2-abrmd 并且可以使用内核内 rm 继续。
安装 tpm2-abrmd。
TPM 设备驱动程序
TPM 设备驱动程序是特定于操作系统的驱动程序。它负责建立与 TPM 的连接以及读取和写入 TPM。
tpm2-工具
这不是 TPM2 软件堆栈本身的一部分,而是一个最终用户命令行工具,可用于生成密钥、查看功能、签名、散列、解封等。
安装 tpm2-tools。
[](https://res.cloudinary.com/practicaldev/image/fetch/s--aZxrMjDd--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev- to-uploads.s3.amazonaws.com/i/47ftwdo73rmoce5y4zkv.jpg)
更多推荐
所有评论(0)