针对 Bitlockered Windows PC 的离线蛮力攻击

信息安全 视窗 密码破解 比特锁
2021-09-03 21:43:33

我目前正在从针对存储密码(用于保护全盘加密密钥)的脱机攻击的角度评估 Bitlocker 的安全性。我的假设是用于解密/确定 FDE 密钥的密码必须以某种方式存储在磁盘上,否则将无法确定 FDE 密钥是否正确。

我的问题是,如果一台笔记本电脑被盗,并且它使用 Bitlocker 来保护用于解锁操作系统卷的密码,那么为了恢复密码的目的,它对离线攻击的抵抗力如何?它使用什么技术/算法来防止此类攻击?

请注意,我对恢复磁盘上的数据或 FDE 密钥不太感兴趣。我对此完全感兴趣,因为用户密码本身对拥有被盗笔记本电脑的熟练攻击者的离线攻击有多大抵抗力。

3个回答

您概述的攻击是所有类型加密的基本问题:如果您想使用密码作为加密密钥(来源),密码必须具有与所需加密强度一样多的熵,否则您很容易离线蛮力。

所以是的,如果 Bitlocker 只是使用您输入的密码作为密钥(来源),那么它将很容易受到这种攻击。

Bitlocker 提供多种身份验证机制,以不同方式解决此问题。

  • 推荐的机制 (AFAIK) 是使用计算机的可信平台模块(TPM)。通过 TPM 身份验证(称为带有 Bitlocker 的透明操作模式),TPM 芯片存储 Bitlocker 密钥。TPM 专门设计为仅在提供特定密码/PIN 时才释放该密钥,并限制身份验证尝试的次数。因此,一个相对弱的密码/PIN 就足够了,因为密码不能被离线攻击,因为它存储在 TPM 中。
  • 另一种解决方案是使用USB Key Mode在这种模式下,密钥要么存储在 USB 密钥上(可选地由密码保护),要么使用执行安全身份验证的特殊 USB 设备(类似于 TPM 芯片)。同样,离线攻击是不可能的,因为密钥存储在 USB 设备上。但是,如果 USB 设备只是一个简单的存储设备,则可能会对其进行离线攻击(因此必须非常安全地存储它)。

USB Key Mode 和 TPM 可以结合使用,以获得更好的安全性。

请注意,可以在没有 TPM 芯片的情况下使用 Bitlocker(尽管 Microsoft 显然不建议这样做)。如果你这样做,那么你确实很容易受到密码暴力攻击,所以你需要一个具有足够熵的密码,即至少 128 位,最好是 168 位。


有关 Bitlocker 的设计选择、安全权衡和技术的广泛讨论,请参阅Niels Ferguson的论文AES-CBC + Elephant 扩散器,适用于 Windows Vista 的磁盘加密算法,可从http://go.microsoft.com/fwlink获得/?LinkId=80598

BitLocker 使用“卷主密钥”对驱动器进行加密,该密钥永远不会直接放置在任何地方的持久存储中。卷元数据中存在一个或多个“密钥保护器”,每一个都提供了一种获取 VMK 的方法。对于基于 PIN/密码的保护器,密码通过一个非常慢的密钥派生函数(类似于 bcrypt,但我实际上不确定是什么函数或确切的参数是什么)传递。参数可能因硬件而异,但在我的工作机器上需要半秒钟以上。

我相信这个派生密钥随后会根据存储的哈希进行检查,如果匹配,则用于解密 VMK(即 PIN/密码保护器包含 VMK 的一个版本,使用 KDF 吐出的密钥加密,并且派生密钥的哈希,用于检查派生密钥的正确性)。

要尝试暴力破解密码,您需要弄清楚算法及其参数(盐、工作因子等)。除非您有大量可用的计算资源,否则由于 KDF 速度较慢,暴力搜索需要很长时间才能找到任何东西。

我所知道的 BL 最公开可用的代码实现是dislockergit repodislocker它是 BitLocker 的开源(部分)实现(编写为 FUSE 驱动程序)。dislocker我不知道有任何现成的 BitLocker 暴力破解工具,但您可能会在's 代码之上构建一个。不过,它可能需要一段时间才能运行!

全盘加密工具依赖于今天仍然被认为是安全的 AES。因此,大多数攻击都针对操作系统本身,而不是此类工具使用的加密机制。

如果您的机器被盗,您可能面临的攻击取决于几个因素。首先,关于你如何配置它。在引导操作系统之前需要进行身份验证的配置可防止黑客立即攻击操作系统。因此,首先,使用预启动身份验证选项设置 Bitlocker。

在加密磁盘之前,请确保您的机器安全存在 rootkit 和 bootkit,它们可能具有与您的操作系统相同的权限,甚至可能危及您的完整卷加密密钥,因为它由卷主密钥加密并存储在加密卷。请注意,UEFI 旨在再次保护您的系统免受 rootkit 和 bootkits 的存在,但它并非万无一失。

要考虑的另一件事是暴力登录攻击,甚至可以针对我们上面提到的预启动身份验证器执行。

此外,攻击者可能会使用Thunderbolt将其他设备连接到您的笔记本电脑。由于 DMA(直接内存访问)端口不提供身份验证或访问控制来保护设备只能读取访问的计算机内存内容,因此您可以想象基于这些事实的攻击(称为DMA 攻击)。请注意,如果您运行的是 Windows 8,那么您可能知道 Windows 8 InstantGo 认证的设备没有 DMA 端口,从而消除了 DMA 攻击的风险

因此,结合配置预启动身份验证,您还可以使用 USB 设备(例如闪存驱动器)来存储 BitLocker 启动密钥,并使用它与您的 PIN/密码一起进行身份验证:这是另一层安全性,其中即使您的 PIN/密码被暴力破解,Bitlocker 启动密钥仍然是安全的(假设您的笔记本电脑和 USB 设备不会被同一攻击者窃取)