具有测量引导的 TPM 芯片的安全性
Security of a TPM Chip with measured boot
我使用经过验证和测量的启动的 TPM 2.0。现在我阅读了有关主板的外部 TPM 模块的信息,这些模块还没有 TPM 模块。我对这有多安全感到有点困惑。
我认为攻击向量可能如下所示:
- 在主板和 TPM 之间放置一个中间人设备,记录每个发送的数据
这样攻击者就可以渗透,例如windows 比特锁密钥。
有什么方法可以防止此类攻击?
我也对主板上 TPM 模块的安全性很感兴趣,因为可以进行相同的攻击。
固件是如何测量到 TPM 中的?这是否依赖于来自 TPM 的数据?
是的,这种针对 TPM 的中间人攻击是众所周知的;描述它们的文章似乎有规律地出现,几乎每年一次(最新的见 here)。
防范它们的方法是基于会话的加密。 (参见第 21 节 here)
展示最简单的用例,其中会话不是授权会话且未绑定到 TPM 对象:基本上,您将启动加盐会话,这将确保只有您和 TPM 可以访问盐。拦截会话开始消息无济于事,因为盐是用 TPM 密钥加密的。
然后计算会话密钥:
sessionKey ≔ KDFa(sessionAlg, salt, “ATH”, nonceTPM, nonceCaller, bits)
请注意,TPM 必须在其端解密盐。
用于加密消息的 XOR 掩码是这样为每次交换计算的:
mask ≔ KDFa (hashAlg, sessionKey, “XOR”, nonce1, nonce2, data.size • 8)
然后通过将受保护的数据与计算出的参数加密掩码进行异或来加密受保护的数据。请注意,每次加密操作的掩码都会有所不同,因为随机数会不断刷新。
还有一个选项可以在支持它的设备上使用 CFB 模式加密。
我使用经过验证和测量的启动的 TPM 2.0。现在我阅读了有关主板的外部 TPM 模块的信息,这些模块还没有 TPM 模块。我对这有多安全感到有点困惑。 我认为攻击向量可能如下所示:
- 在主板和 TPM 之间放置一个中间人设备,记录每个发送的数据
这样攻击者就可以渗透,例如windows 比特锁密钥。 有什么方法可以防止此类攻击? 我也对主板上 TPM 模块的安全性很感兴趣,因为可以进行相同的攻击。 固件是如何测量到 TPM 中的?这是否依赖于来自 TPM 的数据?
是的,这种针对 TPM 的中间人攻击是众所周知的;描述它们的文章似乎有规律地出现,几乎每年一次(最新的见 here)。
防范它们的方法是基于会话的加密。 (参见第 21 节 here)
展示最简单的用例,其中会话不是授权会话且未绑定到 TPM 对象:基本上,您将启动加盐会话,这将确保只有您和 TPM 可以访问盐。拦截会话开始消息无济于事,因为盐是用 TPM 密钥加密的。
然后计算会话密钥:
sessionKey ≔ KDFa(sessionAlg, salt, “ATH”, nonceTPM, nonceCaller, bits)
请注意,TPM 必须在其端解密盐。 用于加密消息的 XOR 掩码是这样为每次交换计算的:
mask ≔ KDFa (hashAlg, sessionKey, “XOR”, nonce1, nonce2, data.size • 8)
然后通过将受保护的数据与计算出的参数加密掩码进行异或来加密受保护的数据。请注意,每次加密操作的掩码都会有所不同,因为随机数会不断刷新。
还有一个选项可以在支持它的设备上使用 CFB 模式加密。