我想知道是否有可能在大多数英特尔芯片中编程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.可以使用BIOS更新来更新这些TPM.但在这种情况下,更新必须由英特尔提供.像DQ67SW这样的最新主板有独立的硬件TPM,不是由英特尔制造的.
因此,您的第二个问题的答案是:不,您无法编程/定义 TPM使用的加密算法.
关于您的第一个问题:是的,您可以在某种程度上定义存储在持久存储中的内容.该存储区域称为非易失性存储或NV.您必须首先使用TPM_NV_DefineSpace命令定义一些空间.之后,您可以使用TPM_NV_ReadValue和TPM_NV_WriteValue从/向该位置读取和写入.定义在NV中保留给定数量的内存,并设置此位置的安全属性.这些命令是低级TPM命令,强烈建议使用可信软件堆栈(TSS)来连接TPM.您可以将jTSS与jTpmTools或TrouSerS一起使用.
有关NV的一些注意事项
NV中的空间非常有限,但具体数量是供应商特定的(通常小于5kb).PC平台的最小数量为2048字节.
TPM是一种被动设备,如果没有发出命令,它就无法做任何事情.如果要在TPM中存储某些内容,则必须具有一些发出这些命令的活动部分(BIOS,软件,芯片组,CPU).
甚至大多数加密密钥也不存储在TPM中.存在密钥层次结构,并且只有根密钥(存储根密钥 - SRK)存储在TPM中.所有其他密钥以加密方式存储在外部.