正确导出 TPM 2.0 密钥句柄(在 TSS.MSR .NET 中)
Proper export of TPM 2.0 key handle (in TSS.MSR .NET)
我最近一直在研究 TPM 2.0 技术,我正试图弄清楚如何在假设应用程序重新运行后保留 keyhendle。我想我需要使用 TPM2_ContextSave
因为这个函数包装并加密了所有的 blob 和诸如此类的东西,这样只有创建上下文的 TPM 才能读回它。因此,这应该是将“密钥”存储在文件中的正确方法。
如果您以后需要使用此密钥进行解密或签名(PC 重启、应用程序重新运行),TPM2_ContextLoad
应该为您提供上下文(如果您正在加载密钥句柄,则处理)。这和我从 Trusted Computing Group 得到的一样多
docs.
TSS.MSR 是带有 .NET 变体的 API。我的问题在于 Tpm2ContextSaveRequest
和 Tpm2ContextLoadRequest
.
Tpm2ContextSaveRequest
有一个 TpmHandle
的构造函数。所以这个结构应该可以写入文件,稍后读取。
Tpm2ContextLoadRequest
然而只有 Context
个缩窄器。
Context
有一些其他构造函数调用其他一些 TpmHandle
和 ulong
,此时我迷失了正在发生的事情。
如何通过应用程序重新运行来保持我的句柄?
我已经找到了答案,所以如果有任何可怜的灵魂偶然发现了这个问题,那就是:
您不应该使用 Tpm2ContextLoadRequest
和 Save 等效项。如果您想使用上下文作为媒介,请使用 Tpm2
方法 ContextSave
和 ContextLoad
但我还没有找到如何存储这些对象的方法。
关于此的下一个注意事项是使用可以由 EvictControl 制作的持久密钥。
然后您要做的是导出您的句柄 ID (uint memberVar)。重新运行应用程序并分配此 ID 应该为签名、解密等提供有效参考...
我已经实施了解决方案 here 以获取更多详细信息。
我最近一直在研究 TPM 2.0 技术,我正试图弄清楚如何在假设应用程序重新运行后保留 keyhendle。我想我需要使用 TPM2_ContextSave
因为这个函数包装并加密了所有的 blob 和诸如此类的东西,这样只有创建上下文的 TPM 才能读回它。因此,这应该是将“密钥”存储在文件中的正确方法。
如果您以后需要使用此密钥进行解密或签名(PC 重启、应用程序重新运行),TPM2_ContextLoad
应该为您提供上下文(如果您正在加载密钥句柄,则处理)。这和我从 Trusted Computing Group 得到的一样多
docs.
TSS.MSR 是带有 .NET 变体的 API。我的问题在于 Tpm2ContextSaveRequest
和 Tpm2ContextLoadRequest
.
Tpm2ContextSaveRequest
有一个 TpmHandle
的构造函数。所以这个结构应该可以写入文件,稍后读取。
Tpm2ContextLoadRequest
然而只有 Context
个缩窄器。
Context
有一些其他构造函数调用其他一些 TpmHandle
和 ulong
,此时我迷失了正在发生的事情。
如何通过应用程序重新运行来保持我的句柄?
我已经找到了答案,所以如果有任何可怜的灵魂偶然发现了这个问题,那就是:
您不应该使用 Tpm2ContextLoadRequest
和 Save 等效项。如果您想使用上下文作为媒介,请使用 Tpm2
方法 ContextSave
和 ContextLoad
但我还没有找到如何存储这些对象的方法。
关于此的下一个注意事项是使用可以由 EvictControl 制作的持久密钥。 然后您要做的是导出您的句柄 ID (uint memberVar)。重新运行应用程序并分配此 ID 应该为签名、解密等提供有效参考...
我已经实施了解决方案 here 以获取更多详细信息。