使用Tbsip_Submit_Command玩我的TPM芯片我可以看到Windows会分析我发送给它的帧。
为了简单起见,我使用了shutdown命令。
例如,我试图发送一个参数中包含TPM_SU_CLEAR的TPM_CC_Shutdown。因此帧=>80 01 00 00 0C 00 00 01 45 00 00
为了使其更加详细和解释:
80 01是TPM_ST_NO_SESSIONS00 00 00 0C框架尺寸00 00 01 45 TPM_CC_停机00 00是TPM_SU_CLEAR
Windows对我的响应=>80 01 00 00 0A 80 28 04 00
再次详细说明:
80 01是TPM_ST_NO_SESSIONS00 00 00 0A命令大小80 28 04 00错误代码0x80280400=>TPM_E_COMMAND_BLOCKED
我在这里找到了错误代码。如此明显,Windows切断了我的联系,并放弃了我的命令。我可以理解它不希望TPM断电,但对于我想要创建主键并将其保存在芯片内的命令,我得到了相同的结果。
所以我有一个芯片,但如果我想直接使用它,我不能,我被迫使用加密API:下一代,但在我的情况下,我不能。
有人能帮我什么吗?也许我可以直接与编码驱动程序的芯片通信,绕过Windows层(如果有人知道如何做到这一点)?或者可以在注册表中配置一个值,让windows让我用TPM芯片做我想做的事情?
如上所述,命令是否被阻止取决于您的配置。可以解锁命令,但我无法使其工作。
根据《TPM 2.0实用指南》一书在第10章密钥(第126页)上,它说:
TPM库规范包括可用于AES等通用加密的对称加密密钥。由于潜在的出口限制,TPM供应商是否会包括这些功能尚不确定在PC客户端平台规范中,这些命令是可选的。从历史上看,TPM供应商没有实现可选的TPM功能
您可以使用带有参数TPM_CAP_COMMANDS
的命令TPM2_GetCapability
来检索已实现命令的列表。如果未列出要使用的命令,则TPM供应商可能无法实现该命令。
请参见https://learn.microsoft.com/en-us/windows-hardware/test/hlk/testref/tpm-v20-command-and-signal-profile从Windows的角度查看包含和可选命令的列表。