如何在 TPM 中加载和使用持久性对称密钥?
How to load and use a persistent symmetric key in the TPM?
我只是想在 TPM 的 NV 存储中持久存储一个 32 字节长的对称密钥,并在电源循环后使用它(不从 TPM 中取出)来加密小型数据。
我尝试用两种不同的方式做到这一点:
1)
- 使用 TPM 的随机字节生成器创建密钥
- 在NV里定义space,把key写进去
- 问题:我知道如何阅读它,但我如何加载它以便在 TPM 中使用它?
2)
- 使用 TPM2_Create 命令创建 AES 密钥
- 使用 TPM2_EvictControl 命令使其持久化
- 通过同样的电源循环,我有它的手柄,我可以加载它并使用它
- 问题: 和之前类似,下次开机后如何加载使用?
我扫描了 TCG's Specs and I even read this free practical guide to TPM2.0,但没有找到任何问题的线索。
我错过了什么?
TPM2_EncryptDecrypt
旨在与对称密钥一起使用。将通过 TPM2_EvictControl
获得的密钥句柄作为 @keyHandle
参数传递,并适当设置 decrypt
参数。将 mode
设置为 TPM_ALG_NUL
,以便使用默认模式。
请记住,使用 TPM 加密大量数据(通常使用对称密钥)是不切实际的。
我只是想在 TPM 的 NV 存储中持久存储一个 32 字节长的对称密钥,并在电源循环后使用它(不从 TPM 中取出)来加密小型数据。
我尝试用两种不同的方式做到这一点:
1)
- 使用 TPM 的随机字节生成器创建密钥
- 在NV里定义space,把key写进去
- 问题:我知道如何阅读它,但我如何加载它以便在 TPM 中使用它?
2)
- 使用 TPM2_Create 命令创建 AES 密钥
- 使用 TPM2_EvictControl 命令使其持久化
- 通过同样的电源循环,我有它的手柄,我可以加载它并使用它
- 问题: 和之前类似,下次开机后如何加载使用?
我扫描了 TCG's Specs and I even read this free practical guide to TPM2.0,但没有找到任何问题的线索。
我错过了什么?
TPM2_EncryptDecrypt
旨在与对称密钥一起使用。将通过 TPM2_EvictControl
获得的密钥句柄作为 @keyHandle
参数传递,并适当设置 decrypt
参数。将 mode
设置为 TPM_ALG_NUL
,以便使用默认模式。
请记住,使用 TPM 加密大量数据(通常使用对称密钥)是不切实际的。