我想知道是否有可能在大多数英特尔芯片中编程TPM(http://en.wikipedia.org/wiki/Trusted_Platform_Module),以这种方式:
- decide what to store in the persistent memory
- decide which cryptographic algorithms to implement.
显然一旦它开始工作就不应该重新编程(你知道这个陈述是否正确?)。
答案 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。您可以使用jTSS与jTpmTools或TrouSerS。
关于NV的一些注意事项:
答案 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芯片。