在 TPM 中打开密封对象时会发生啥情况?

Posted

技术标签:

【中文标题】在 TPM 中打开密封对象时会发生啥情况?【英文标题】:What happens to the sealed object when unsealing it in TPM?在 TPM 中打开密封对象时会发生什么情况? 【发布时间】:2018-11-14 23:43:48 【问题描述】:

当我在 TPM 中解封一段密封的数据时会发生什么?密封的数据还存在吗?

例如,我有一个密封数据hSealedData 的句柄,我连续两次执行TPM_Unseal(hSealedData,...)。两个调用会返回相同的未密封数据吗?

我找不到有关此的文档。

【问题讨论】:

你尝试了会发生什么? 【参考方案1】:

当前的 PCR 值将与密封时记录的 PCR 值进行比较,如果它们匹配,则将解密并发送回对象。密封数据不会发生任何事情,因为密封数据不会存储在 TPM 中,而是在密封时返回给用户。

【讨论】:

如果我用其他 PCR 值密封相同的密封数据,第一个密封会被覆盖,还是两个密封都有效? 它们都是有效的。 TPM 不会记录已密封的内容(密封的数据会返回给您),因此它不会以某种方式使之前的密封失效。 谢谢。如果我想“覆盖”以前的印章,我怎么能做到这一点?我是否必须清除/重置 TPM? 当您封存一些数据时,TPM 会将加密后的数据返回给您,让您随心所欲。如果您想“覆盖”它,您只需删除该加密数据并使用新的 PCR 值再次密封原始数据。加密数据的管理取决于您,TPM 与它无关。

以上是关于在 TPM 中打开密封对象时会发生啥情况?的主要内容,如果未能解决你的问题,请参考以下文章

插入的 NSManagedObject 无法保存时会发生啥情况?

当事件触发并尝试在不再存在的对象中执行事件处理程序时会发生啥?

在java中的继承上下文中通过对象调用类成员时会发生啥

当我创建我的类的对象实例时会发生啥

当我们在 JavaScript 中将原语视为对象时会发生啥?

c++ 当在一个线程中写入并在第二个线程中读取同一个对象时会发生啥? (它安全吗?)[重复]