TPM2 NVM能否加密数据?EDK2中Tpm2CommandLib使用疑问
在EDK2中通过TPM2加密存储NVM数据的说明
核心结论
直接通过DefineSpace这类NVM写入接口让TPM自动加密存储数据是行不通的——TPM的NVM索引本身没有透明加密能力,你写入的原始数据会直接存在NVM中,除非你提前完成加密再写入。
关于TPMA_SESSION的encrypt参数
这个参数和NVM存储数据的加密无关,它管的是TPM与主机之间的命令/响应报文加密:
- 当
encrypt设为1时,TPM会对会话内的命令参数、响应数据做加密,避免传输过程中数据被窃听或篡改 - 这只是链路层面的加密,不会改变最终存在NVM里的数据状态
实现TPM加密存储的可行步骤
如果要让NVM里的数据是加密状态,得手动完成以下流程:
- 通过TPM生成对称加密密钥(比如用
Tpm2Create创建存储密钥,再派生对称密钥) - 在主机端用该密钥加密待存储的数据
- 将加密后的数据写入TPM NVM索引
- 读取时,先从NVM取出加密数据,再调用TPM内的密钥完成解密
需要注意:用来加密的密钥必须存放在TPM的受保护存储中(比如持久化密钥或会话内管理),绝对不能导出到主机,否则就失去了TPM的安全防护意义。
内容的提问来源于stack exchange,提问作者Hamit Can Karaca
相关产品推荐
相关产品推荐

