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

时间:2011-12-07 09:17:50

标签: cryptography hardware intel tpm

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

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

显然一旦它开始工作就不应该重新编程(你知道这个陈述是否正确?)。

3 个答案:

答案 0 :(得分:5)

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

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

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


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

关于NV的一些注意事项:

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

答案 1 :(得分:3)

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

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

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

有一个标准TPM protection profile。我不知道英特尔的TPM是否已经过评估。图1是TPM生命周期图,显示何时可以生成密钥。

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

答案 2 :(得分:2)

是的,您可以将TPM芯片用于这些类型的操作,还有更多。

TrouSerS堆栈是可靠计算软件堆栈的开源实现,可靠地使用TPM芯片。