这取决于您的威胁模型。TPM 有多种用途,但最常见的用途是测量启动。也就是说,TPM 将验证 BIOS、选项 ROM、引导加载程序和其他敏感引导组件的完整性,以便能够检测到恶意女仆攻击或修改的固件。如果您的威胁模型包含能够修改您计算机上的固件或软件的对手,则 TPM 可以提供篡改证据以确保它不会未被检测到。
那么TPM 是如何工作的呢?当你真正开始的时候,它实际上很简单。TPM 测量各种固件组件的哈希值*并将哈希值存储在称为 PCR 的寄存器中。如果哈希值都匹配一个已知值,TPM 将解封,允许自己用于解密任意数据。它解密的数据取决于您。最常见的是,它是磁盘加密密钥的一部分。除非每个固件和启动软件都有正确的哈希值,否则 TPM 不会解封,加密密钥也不会泄露。TPM 可以用于更多用途,但想法是相同的。
* 从技术上讲,TPM 是被动的,不能主动读取固件、引导加载程序或其他数据。相反,一个称为CRTM的 BIOS 只读组件将 BIOS的哈希发送到 TPM,从而启动信任链。此组件是只读的,以确保修改后的 BIOS 不会对 TPM 撒谎。
那么 TPM 值得还是只是一个不必要的潜在故障点?如果我根本不使用带有 TPM 的计算机,我的安全和隐私会更安全吗?即使对于最非法的用例(经 NSA 验证),使用 VeraCrypt 进行全盘加密听起来也足够安全。
您可能不需要使用远程证明。然而,它一点也不安全。它所做的只是允许远程设备向评估人员证明其运行的固件和软件与已知良好的哈希匹配。它不允许远程控制机器。由操作系统进行远程连接并将数据发送到 TPM。TPM 本身甚至不知道它正在用于远程证明。事实上,远程甚至不一定意味着通过网络。有一些非常聪明的实现使用 TPM 远程向安全的 USB 设备证明计算机的状态!由于 TPM 能够使用 DAA 或Direct Anonymous Attestation匿名签名,因此 TPM 的唯一私钥不存在隐私问题。
让我们更进一步,假设 TPM 不仅无用,而且是彻头彻尾的恶意。那它还能做什么?嗯,真的没什么。它缺乏通过LPC 总线发送所谓LDRQ#
信号的能力,而这是执行DMA 攻击所必需的。它唯一能做的就是说“一切正常”,而实际上固件已被篡改。换句话说,恶意 TPM 所能做的最糟糕的事情就是假装它不存在,使恶意 TPM 不会比没有 TPM 更糟糕。
完全可以安全地从主板上卸下 TPM。没有什么需要它在那里。如果它不存在,您将根本无法验证信任链以确保固件未被篡改。但是请注意,许多现代 CPU 具有集成的 TPM,但可以轻松禁用它,其结果与移除物理 CPU 相同。请注意,某些较新版本的 Windows 确实需要存在 TPM 才能确保启动过程的安全。如果删除了 TPM,您可能需要修改操作系统和 UEFI 设置,使其不再需要它。
在底部的部分,它提到了对 TPM 的一些批评,例如远程验证软件 - 制造商,而不是用户决定可以在计算机上运行什么。这听起来很可怕。
令人担忧的是,未来制造商可能会使用 TPM 来阻止您对系统进行敏感修改。默认情况下,TPM 将只服从其所有者。如果您告诉 TPM 系统的当前状态是已知良好的,它将始终检查以确保系统处于该状态。如果恶意制造商将 TPM 设置为认为已知良好状态是启用恶意 DRM 和其他权限限制软件的状态,那么我们就有问题了。对于当前的 TPM,完全由您决定要运行什么软件!他们不限制您的权利。
另一个批评是,它可能被用来向远程网站证明您正在运行他们希望您运行的软件,或者您正在使用不受您控制的设备。TPM 可以向远程服务器证明您的系统固件没有被篡改,并且如果您的系统固件旨在限制您的权利,那么 TPM 证明您的权利已被充分限制,并且您可以观看最新的您想看的充满 DRM 的视频。值得庆幸的是,目前尚未使用 TPM 来执行此操作,但该技术已经存在。
最重要的问题是,TPM 可以向您本地和远程服务器(当然,由操作系统处理网络)证明您的计算机处于正确状态。什么算“正确”取决于拥有 TPM 的人。如果您拥有 TPM,那么“正确”意味着没有 bootkits 或其他篡改。如果某个公司拥有 TPM,则意味着该系统的反盗版和 DRM 功能功能齐全。对于您今天可以购买的 PC 中的 TPM,您就是所有者。
此外,VeraCrypt 不支持 TPM,这引起了一些担忧。如果他们不信任它,我为什么要信任它?
VeraCrypt 实际上在 VeraCrypt 1.20版中增加了对 TPM 1.2 版的支持和对 TPM 2.0 版的实验性支持,尽管他们还没有编辑他们的文档来反映这一点。他们最初是抗拒的,因为最初的 TrueCrypt 作者不了解 TPM。它的目的不是协助磁盘加密,而是验证固件和重要的引导软件(包括 VeraCrypt 引导加载程序!)没有被篡改。