我想知道是否可以对大多数英特尔芯片中存在的TPM( http://en.wikipedia.org/wiki/Trusted_Platform_Module )进行编程,以便:
- decide what to store in the persistent memory
- decide which cryptographic algorithms to implement.
显然,一旦它开始工作,它就不应该是可重新编程的(你知道这个说法是否正确吗?)。
我想知道是否可以对大多数英特尔芯片中存在的TPM( http://en.wikipedia.org/wiki/Trusted_Platform_Module )进行编程,以便:
- decide what to store in the persistent memory
- decide which cryptographic algorithms to implement.
显然,一旦它开始工作,它就不应该是可重新编程的(你知道这个说法是否正确吗?)。
TPM 的行为由 Trusted Computing Group 发布的规范定义。TPM 必须完全按照指定的方式运行,因此您无法更改正确实施的 TPM 的功能。TPM 制造商在发货后更新其产品的能力有限。例如,英飞凌为其设备提供固件更新。
但是,英特尔 TPM 可能会有所不同。一些芯片组包含模拟/软件 TPM,而不是实际的硬件 TPM。这些 TPM 可以通过 BIOS 更新进行更新。但在这种情况下,更新必须由英特尔提供。最近的主板(如 DQ67SW)具有非英特尔制造的独立硬件 TPM。
所以第二个问题的答案是:不,您不能编程/定义TPM 使用的加密算法。
关于您的第一个问题:是的,您可以在某种程度上定义要在持久存储中存储的内容。此内存区域称为非易失性存储或NV。您必须先使用TPM_NV_DefineSpace命令定义一些空间。之后,您可以使用TPM_NV_ReadValue和TPM_NV_WriteValue读写该位置。定义在 NV 中保留给定数量的内存,并设置此位置的安全属性。这些命令是低级 TPM 命令,强烈建议使用可信软件堆栈 (TSS)来连接 TPM。您可以将jTSS与jTpmTools或TrouSerS一起使用.
关于 NV 的一些注意事项:
TPM 不是可编程的。它有一组固定的支持算法。该代码存储在 ROM 中(或者如果不是,它存储在一个 EEPROM 中,该 EEPROM 位于一个有点防篡改的封装内,您无法覆盖它)。
TPM 定义了各种管理角色。当你第一次使用它时,你会设置管理密码(或者你的软件会为你做这件事,在这种情况下你应该小心地备份这些密码)。如果您在收到 TPM 时不确定 TPM 的状态,可以将其重置为“出厂默认设置”(清除所有现有密钥和凭据);这称为清除 TPM,通常从 BIOS 完成。
您将在凭据配置文件中找到 TPM 存储和使用的各种凭据的概述。除了作为正常生命周期一部分的密钥之外,您还可以导入自己的密钥并使用 TPM 的 RNG 创建不可导出的密钥。
有一个标准的TPM 保护配置文件。我不知道英特尔的 TPM 有没有针对它进行过评估。图 1 是 TPM 生命周期图,显示了何时可以生成密钥。
在实践中,您可能会通过TrouSerS(一种完全开源的 TPM API)与 TPM 进行交互,或者通过 Windows 上的 Bitlocker 以有限的方式进行交互。
是的,您可以将 TPM 芯片用于此类操作,等等。
TrouSerS堆栈是可靠使用 TPM 芯片所必需的可信计算软件堆栈的开源实现。