为什么 VeraCrypt 不使用 TPM?

信息安全 tpm 真密码
2021-08-17 00:22:45

根据VeraCrypt 常见问题解答,关于是否支持 TPM:

不可以。这些程序使用 TPM 来防御攻击,这些攻击需要攻击者拥有管理员权限或对计算机的物理访问权限,并且攻击者需要您在获得此类访问权限后使用计算机。但是,如果满足这些条件中的任何一个,实际上就不可能保护计算机(见下文),因此,您必须停止使用它(而不是依赖 TPM)。

如果攻击者拥有管理员权限,例如,他可以重置 TPM,捕获 RAM 的内容(包含主密钥)或存储在已安装的 VeraCrypt 卷上的文件内容(动态解密),然后可以将其发送到攻击者通过 Internet 或将其保存到未加密的本地驱动器(攻击者以后可能会在他获得对计算机的物理访问权时从中读取它)。

也许我错了,但是 RAM 的内容永远不会包含主密钥,对吗?TPM 将像 HSM 一样使用,因此将在 TPM 内部进行加密操作,并且任何有关密钥的内容都不会存储在 RAM 中。你能证实我吗?

如果攻击者可以物理访问计算机硬件(并且您在访问后使用它),例如,他可以在其上附加恶意组件(例如硬件击键记录器),该组件将捕获密码、RAM 的内容(包含主密钥)或存储在安装的 VeraCrypt 卷上的文件内容(动态解密),然后可以通过 Internet 发送给攻击者或保存到未加密的本地驱动器(攻击者可能从中读取它)后来,当他再次获得对计算机的物理访问权限时)。

我不确定他们所说的“硬件击键记录器”。它是一种电磁分析(DEMA)吗?如果是这样,默认情况下 TPM 会受到保护。

2个回答

VeraCrypt 使用不同的密钥加密每个扇区。这些不同的密钥是从一个主密钥派生的。主密钥本身存储在卷中,受卷密码(和/或密钥文件)保护。您引用的讨论是关于主密钥是否应该存储在 TPM 中,而不是通过密码或磁盘上的密钥文件进行加密。无论哪种情况,VeraCrypt 都需要 RAM 中的主密钥来派生扇区密钥。

让 TPM 计算扇区密钥确实是一种提高 RAM 转储安全性的选项,但我无法判断实用性(例如,我不知道 TPM 是否支持以合适的方式派生子密钥或引入的延迟)那)。然而,具有管理权限的攻击者可以开始向 TPM 请求一个扇区密钥(就像 truecrypt 一样)并记录它们。

你的第二个问题:硬件键盘记录器是一个独立的 USB 代理,安装在主板上的 USB 控制器和键盘之间(它甚至可能在机箱内,特别是如果键盘连接到通过电缆连接的前置端口到主板。

我对使用 TPM 的看法是,如果满足某些条件,它确实可以工作。这甚至适用于 TPM 仅保护主密钥的情况:如果您的计算机未被篡改(如 BIOS 中的软件键盘记录程序或未经授权的操作系统更改),TPM 应该分发主密钥。因此,TPM 应该使对检索主密钥的离线攻击成为不可能。TPM 仍然没有在将主密钥交给 VeraCrypt 后保护它。这个想法是操作系统中没有安全漏洞(已通过安全启动验证),并且密钥存储在内核内存中。操作系统还应该阻止用户模式进程读取内核模式内存,因此没有机会获得 VeraCrypt 主密钥。请注意“没有安全漏洞的操作系统”的非常大胆的假设,这对于当前的操作系统来说不太可能是正确的,因此整个论点都被打破了。似乎这还不够糟糕,即使是没有安全漏洞的操作系统也需要依赖硬件正常工作。如果硬件(如处理器或内存)在没有操作系统允许的情况下将内存内容暴露给用户空间进程,系统受到损害。而这恰恰可以通过最近对大部分计算机的 RowHammer 攻击来实现。

我预览了对 VeraCrypt UEFI 的 TPM 1.2 支持。

主要思想是在 PCRs 保护下的 TPM NVRAM 中设置秘密。它锁定引导链。因此修改 BIOS 和其他组件会导致授权被拒绝。