是否可以对英特尔的可信平台模块进行编程



我想知道是否有可能在大多数英特尔芯片中编程TPM (http://en.wikipedia.org/wiki/Trusted_Platform_Module),以这样一种方式:

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

显然,一旦它开始工作,它就不应该被重新编程了(你知道这句话是否正确吗?)

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

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

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


关于你的第一个问题:是的,你可以在某种程度上定义在持久存储中存储的内容。该存储区域称为非易失性存储器NV。您必须首先使用TPM_NV_DefineSpace命令定义一些空间。然后,您可以使用TPM_NV_ReadValueTPM_NV_WriteValue从/写入位置。定义在NV中保留给定数量的内存量,并设置该位置的安全属性。这些命令是底层的TPM命令,强烈建议使用可信软件堆栈(TSS)与TPM接口。您可以将jTSS与jTpmTools或TrouSerS一起使用。

关于NV的一些注意事项:

  • NV中的空间非常有限,但确切的数量是供应商特定的(通常小于5kb)。PC平台的最小值是2048字节。
  • TPM是一个被动设备,如果没有向它发出命令,它不能做任何事情。如果你想在TPM中存储一些东西,你必须有一些活动的部分(BIOS,软件,芯片组,CPU)来发出这些命令。
  • 甚至大多数加密密钥也不存储在TPM中。存在一个密钥层次结构,并且只有根密钥(存储根密钥—SRK)存储在TPM中。所有其他密钥都以加密的方式存储在外部。

TPM不是可编程的。它有一组固定的支持算法。代码存储在ROM中(或者如果不是,它存储在EEPROM中,该EEPROM位于某种防篡改包内,并且您不能覆盖它)。

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

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

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

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

是的,您可以使用TPM芯片来完成这些操作,以及更多的操作。

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

相关内容

  • 没有找到相关文章

最新更新