我使用经过验证和测量的TPM2.0启动。现在我读到了主板的外部TPM模块,它们还没有TPM模块。我有点不明白这有多安全。我认为攻击矢量可能是这样的:
这样,攻击者就可以提取例如windows位储物柜密钥。是否有任何方法来防止这种攻击?我还对主板上的TPM模块的安全性感兴趣,因为在那里可以进行同样的攻击。如何将固件测量到TPM中?这是否依赖于来自TPM的数据?
发布于 2021-11-04 17:04:14
是的,这种针对TPM的中间人攻击是众所周知的;描述这些攻击的文章似乎是有规律的,几乎是每年一次(最新的一篇文章见这里 )。
防范它们的方法是基于会话的加密。(见第21条这里)
为了给出最简单的用例,其中会话不是授权会话,也不绑定到TPM对象:基本上,您将启动一个咸会话,这将确保只有您和TPM才能访问salt。截取会话开始消息不会有帮助,因为salt是用TPM密钥加密的。
然后计算会话密钥:
sessionKey ≔ KDFa(sessionAlg, salt, “ATH”, nonceTPM, nonceCaller, bits)请注意,TPM将必须对其末端的盐分进行解密。用于对消息进行加密的XOR掩码是为每个交换程序计算的:
mask ≔ KDFa (hashAlg, sessionKey, “XOR”, nonce1, nonce2, data.size • 8)然后用XORing加密受保护的数据,并使用计算的掩码进行参数加密。请注意,对于每个加密操作,掩码将是不同的,因为非are将不断刷新。
还可以选择在支持CFB模式加密的设备上使用CFB模式加密。
https://stackoverflow.com/questions/69825587
复制相似问题