6

我想知道是否可以对大多数英特尔芯片中存在的TPM( http://en.wikipedia.org/wiki/Trusted_Platform_Module )进行编程,以便:

- decide what to store in the persistent memory
- decide which cryptographic algorithms to implement.

显然,一旦它开始工作,它就不应该是可重新编程的(你知道这个说法是否正确吗?)。

4

3 回答 3

5

TPM 的行为由 Trusted Computing Group 发布的规范定义。TPM 必须完全按照指定的方式运行,因此您无法更改正确实施的 TPM 的功能。TPM 制造商在发货后更新其产品的能力有限。例如,英飞凌为其设备提供固件更新。

但是,英特尔 TPM 可能会有所不同。一些芯片组包含模拟/软件 TPM,而不是实际的硬件 TPM。这些 TPM 可以通过 BIOS 更新进行更新。但在这种情况下,更新必须由英特尔提供。最近的主板(如 DQ67SW)具有非英特尔制造的独立硬件 TPM。

所以第二个问题的答案是:不,您不能编程/定义TPM 使用的加密算法。


关于您的第一个问题:是的,您可以在某种程度上定义要在持久存储中存储的内容。此内存区域称为非易失性存储NV。您必须先使用TPM_NV_DefineSpace命令定义一些空间。之后,您可以使用TPM_NV_ReadValueTPM_NV_WriteValue读写该位置。定义在 NV 中保留给定数量的内存,并设置此位置的安全属性。这些命令是低级 TPM 命令,强烈建议使用可信软件堆栈 (TSS)来连接 TPM。您可以将jTSSjTpmToolsTrouSerS一起使用.

关于 NV 的一些注意事项:

  • NV 中的空间非常有限,但具体数量取决于供应商(通常小于 5kb)。PC 平台的最小数量为 2048 字节。
  • TPM 是一种被动设备,如果没有向它发出命令,它就无法做任何事情。如果你想在 TPM 中存储一些东西,你必须有一些活动的部分(BIOS、软件、芯片组、CPU)来发出这些命令。
  • 甚至大多数加密密钥也不存储在 TPM 中。有一个密钥层次结构,只有根密钥(Storage Root Key - SRK)存储在 TPM 中。所有其他密钥都以加密方式存储在外部。
于 2011-12-07T19:42:49.347 回答
3

TPM 不是可编程的。它有一组固定的支持算法。该代码存储在 ROM 中(或者如果不是,它存储在一个 EEPROM 中,该 EEPROM 位于一个有点防篡改的封装内,您无法覆盖它)。

TPM 定义了各种管理角色。当你第一次使用它时,你会设置管理密码(或者你的软件会为你做这件事,在这种情况下你应该小心地备份这些密码)。如果您在收到 TPM 时不确定 TPM 的状态,可以将其重置为“出厂默认设置”(清除所有现有密钥和凭据);这称为清除 TPM,通常从 BIOS 完成。

您将在凭据配置文件中找到 TPM 存储和使用的各种凭据的概述。除了作为正常生命周期一部分的密钥之外,您还可以导入自己的密钥并使用 TPM 的 RNG 创建不可导出的密钥。

有一个标准的TPM 保护配置文件。我不知道英特尔的 TPM 有没有针对它进行过评估。图 1 是 TPM 生命周期图,显示了何时可以生成密钥。

在实践中,您可能会通过TrouSerS(一种完全开源的 TPM API)与 TPM 进行交互,或者通过 Windows 上的 Bitlocker 以有限的方式进行交互。

于 2011-12-07T18:11:18.290 回答
2

是的,您可以将 TPM 芯片用于此类操作,等等。

TrouSerS堆栈是可靠使用 TPM 芯片所必需的可信计算软件堆栈的开源实现。

于 2011-12-07T09:27:09.507 回答