TPM2_GetCapability TPM_HT_LOADED_SESSION 打算显示啥?

Posted

技术标签:

【中文标题】TPM2_GetCapability TPM_HT_LOADED_SESSION 打算显示啥?【英文标题】:What TPM2_GetCapability TPM_HT_LOADED_SESSION is intended to show?TPM2_GetCapability TPM_HT_LOADED_SESSION 打算显示什么? 【发布时间】:2021-04-11 19:38:04 【问题描述】:

我试图通过handles-loaded-session 选项了解tpm2-tools/tpm2_getcap 的预期输出,描述说:

handles-loaded-session: Display handles about both loaded HMAC and policy sessions.

我了解 tpm2-tools 会尽可能执行 TPM2_ContextLoad -> 操作 -> TPM2_ContextSave。因此,tpm2_getcap handles-saved-session 将在 TPM 中显示保存的上下文,请检查以下内容:

tpm2_startauthsession -S session.dat --policy-session
tpm2_policypcr -S session.dat -l "sha256:16"
tpm2_getcap handles-saved-session
    > 0x2000000
tpm2_flushcontext session.dat
tpm2_getcap handles-saved-session
    > nil

但是,tpm2_getcap handles-loaded-session 始终不返回任何内容。所以我的问题是tpm2_getcap handles-loaded-session 在什么情况下会显示任何输出?

【问题讨论】:

【参考方案1】:

确实如此。如果 TPM2.0 会话处于活动状态,已加载到 TPM 中并正在使用中,那么您将在 TPM_HT_LOADED_SESSION 列表中看到它。

因为“tss2-software”堆栈默认将上下文存储在 TPM 外部的文件中,所以您不会看到加载的会话。

当您像在示例中那样向 TPM2_GetCapability 询问 TPM_HT_SAVED_SESSION 时,您只会在保存中找到它。

这能回答你的问题吗?

ps:通常,当您有多个用户或应用程序使用 TPM 时,需要保存上下文。所以,我很好奇,您是否有特殊原因要使用上下文保存或观察加载的会话?

【讨论】:

我正在研究为什么 Linux 可信密钥会因策略 PCR 而失败。一个原因是没有正确加载策略会话。您对“tss2-software”的行为是绝对正确的。但是即使我修改 tss2 以在退出时不执行上下文保存,会话仍然不会加载。后来我观察到,在 Linux TPM 驱动程序本身正在执行上下文加载,然后保存在对 TPM 设备节点 (/dev/tpm0 tpmrm0) 的每次调用中。我会接受你的回答,因为这种行为现在已经很好理解了。

以上是关于TPM2_GetCapability TPM_HT_LOADED_SESSION 打算显示啥?的主要内容,如果未能解决你的问题,请参考以下文章