TPM2 - 使用Tbsip_Submit_Command在Windows下创建持久主键

时间:2018-02-19 17:00:25

标签: windows encryption tpm

使用Tbsip_Submit_Command播放我的TPM芯片我可以看到Windows会分析我发送给它的帧。

为了简单起见我正在使用shutdown命令。

例如,我尝试在参数中发送TPM_CC_Shutdown和TPM_SU_CLEAR。所以框架是> 80 01 00 00 00 0C 00 00 01 45 00 00

使其更加详细和解释:

80 01         is TPM_ST_NO_SESSIONS
00 00 00 0C   size of the frame
00 00 01 45   TPM_CC_Shutdown
00 00         is TPM_SU_CLEAR

Windows回应我=> 80 01 00 00 00 0A 80 28 04 00
再次使其更加细致:

80 01         is TPM_ST_NO_SESSIONS
00 00 00 0A   size of the command
80 28 04 00   error code 0x80280400 => TPM_E_COMMAND_BLOCKED

我发现错误代码here。 因此,明显的Windows会让我失望并放弃我的命令。我可以理解它不希望TPM被断电,但是我得到了一个命令的相同结果,我想创建一个主键并将其保存在芯片内。

所以我有一个芯片,但如果我想直接使用它我不能,我被迫使用Cryptography API:Next Generation但在我的情况下我不能。

任何人都有什么可以帮助我吗? 可能是我可以直接与编码驱动程序的芯片进行通信并绕过Windows层(如果有人知道如何做到这一点)? 或者可以在注册表中配置一个值,让Windows让我用我的TPM芯片做我想做的事情?

2 个答案:

答案 0 :(得分:0)

正如所解释的here命令被阻止或取消,具体取决于您的配置。可以解锁命令,但我无法使其工作。

答案 1 :(得分:0)

根据书#34; A Practical Guide to TPM 2.0" 在第10章键(第126页)上,它说:

  

TPM库规范包括可用于AES等通用加密的对称加密密钥。由于潜在的出口限制,TPM供应商是否会包含这些功能尚不确定。 这些命令在PC客户端平台规范中是可选的。从历史上看,TPM供应商尚未实现可选的TPM功能。

您可以使用带有参数TPM2_GetCapability的命令TPM_CAP_COMMANDS来检索已实现命令的列表。如果未列出您要使用的命令,则TPM供应商可能无法实现该命令。

https://docs.microsoft.com/en-us/windows-hardware/test/hlk/testref/tpm-v20-command-and-signal-profile中查看Windows强大的包含可选命令列表。