BitLocker加密数据访问漏洞:系统更新竟成安全盲区

本文深入分析BitLocker全盘加密机制在系统更新时的安全风险,揭示微软设计决策中存在的安全隐患,包括暂停加密模式导致密钥明文存储等关键漏洞。

如何访问受BitLocker保护的数据?只需进行系统更新

您是否永远缺乏系统更新时间?终于找到时间安装更新,却因为必须离开办公室而未能完成整个过程?您的数据安全吗?阅读本文一探究竟。

与IT世界的常态一样,很难找到一个完美无缺的标准。Linux有LUKS,苹果使用FileVault,而Windows则拥有BitLocker。

实际上,这些解决方案都做同样的事情:提供全盘加密(FDE)。这样即使设备或磁盘被未经授权的人员物理获取,我们也能确保存储的数据保持机密。当然,前提是我们使用了足够强度的密码。

值得信赖的加密?

BitLocker已经伴随我们很久,久到甚至记得Windows Vista时代。一些对Windows设备磁盘加密成为必需的个人和组织曾抵制使用微软的解决方案。

BitLocker是一个封闭解决方案。虽然使用的算法(即AES高级加密标准)及其块加密模式(CBC和XTS)属于公共领域并经过多次评估,但实现本身(特定编程语言中的特定代码)仍然是专有的。

在"加密"世界中,这足以让人警惕。即使具有数学证明特性的完美算法,在错误实现后也可能容易受到攻击。有一整类称为侧信道攻击的漏洞就涉及这个问题。

许多用户的目光转向了TrueCrypt等开放解决方案。但好景不长。

很快发现Windows的"大型"更新(即功能更新)与来自微软独立供应商的各种磁盘加密方法不兼容。互联网上充斥着沮丧用户的帖子,他们的设备在安装更新强制重启后变成了砖块。

原因很简单,一些Windows更新使用Windows预安装环境(Windows PE,WinPE),这是一个操作系统本身,与"经典"Windows一样,需要专用驱动程序来理解使用的全盘加密并与之协作。

尽管如此,一些用户仍试图坚持使用开源解决方案,在安装更新前解密整个磁盘,并在完成此过程后重新加密。

在商业环境中,这至少是具有破坏性的。机械2.5英寸驱动器通常需要24小时或更长时间来完成上述过程,而且有数十或数百台设备。

因此,即使是最有意识的用户,厌倦了整个过程,最终也向BitLocker道歉。

如今WinPE和所谓的第三方加密解决方案的问题不那么令人讨厌,但很难遇到使用BitLocker以外任何东西的大型基于Windows的环境。

因为使用BitLocker一切正常…

这里我们来到问题的核心。

似乎许多"挣扎"于TrueCrypt或一直使用BitLocker的用户已经接受该解决方案是无麻烦的,没有提出任何额外问题。

那么微软的FDE解决方案如何处理先前描述的问题呢?嗯…它没有。必要时,它只是让我们的设备和数据不受保护。震惊吗?这仅仅是开始。

BitLocker如何工作?

以确保其组件未被篡改的方式运行相当现代的PC是一个非常复杂的过程。

此外,BitLocker本身非常灵活,允许配置访问数据的密码输入方式。这里我们有机会利用TPM(可信平台模块)、PIN、文本密码甚至外部USB密钥等。

BitLocker基本上是一个低级驱动程序。只要我们使用Windows提供的功能访问磁盘,其工作对我们就是透明的。

因此微软决定加密称为FVEK(全卷加密密钥)的主密钥,该密钥使用一系列其他密钥(VMK卷主密钥)确保数据安全。

简而言之,每个VMK都是使用不同访问方法加密的密钥。这使我们能够同时使用文本密码和恢复密钥访问数据。

所有数据都存储在受保护的卷上,在标有头-FVE-FS-的元数据中(一些信息也存储在TPM中,如果正在使用)。

准备BitLocker工作的过程如下:

  • 用户提供解密其中一个VMK或TPM密钥所需的数据,在确保系统未被篡改后,释放VMK密钥;
  • 使用VMK密钥解密FVEK密钥;
  • FVEK密钥允许加密和解密存储在磁盘上的数据。

每个允许访问VMK密钥的方法称为KP(密钥保护器),因此每个VMK密钥(TPM之外)都用KP加密。

在更新设备组件期间,将发生许多过程,在这些过程中我们将无法解密磁盘内容,从而执行与现代化相关的活动,例如:

  • 更新BIOS后,TPM确定系统已被篡改,不会释放VMK密钥;
  • WinPE可能无法与TPM通信,因此无法获取VMK。

BitLocker如何处理这些情况?

残酷的现实

让我们跟踪Windows 10环境功能更新的安装过程。

借助上面的截图,我们可以描述系统当前所处的情况:

  • 设备驱动器已使用BitLocker完全加密。整个磁盘的加密已成功完成。算法是XTS-AES-128。
  • 当前操作系统是Windows 10专业版,版本1903内部版本18362.449。
  • Windows已完成下载更新到20H2,并提示重新启动以完成安装。
  • 在C:驱动器的根目录中,除其他外,有一个secret.txt文件,只有知道BitLocker密码才能访问。

让我们同时查看与BitLocker相关的元数据。

bdeinfo工具返回信息显示有两个可用的KP:

  • 密码 - 顾名思义,这是我们的密码,
  • 恢复密码 - 这是我们的恢复密钥。

该程序还明确指出无法解锁卷。数据是安全的。

按照Windows"请求",让我们重新启动计算机。但只到计算机关闭的部分。我们不重新启动它。

再次查看元数据揭示了新的密钥保护器编号2,类型为Clear Key!

新的KP是什么?它是用于加密另一个VMK密钥副本的字符串,以…公共文本形式保存。在关机期间,Windows将BitLocker置于称为Suspended的操作模式。

由于我们可以访问由VMK加密的字符串,这意味着,因此我们可以访问磁盘上的所有数据。让我们检查一下。

尝试挂载卷成功!

我们可以访问存储在磁盘上的数据,包括前面提到的secret.txt文件的内容。

更重要的是,我们可以使用dislocker工具获取FVEK密钥。

一个有趣的事实是,系统没有以任何方式通知用户其数据在更新期间将不受保护。

接下来会发生什么?系统更新安装继续。

在其完全完成后,密钥保护器编号2从元数据中删除。

然而,这并不令人安慰,因为如果在更新期间有人设法获取了FVEK密钥的内容,他们仍然能够解密我们的磁盘,而无需任何密码或其他密钥。

在这一点上,非常重要理解所呈现的机制操作不是错误或漏洞。这是微软做出的设计决策。BitLocker的工作方式。

微软的解决方案创造了可能导致问题并暂时停止BitLocker保护我们数据的情况。

讽刺

加密"暂停"机制与系统更新没有密切关系。这是BitLocker操作模式之一。在微软的网站上,我们将找到关于如何自己操作它的详细信息。

我们可以"暂停"加密一定数量的重启或无限期。

此机制的主要危险是我们无法保证在将BitLocker置于Suspended模式后,Clear Key类型的密钥保护器将被删除。

因此值得不时检查BitLocker的配置,我们委托其数据加密功能。特别是在Active Directory环境中,那里有数百台设备,因此问题的概率更大。

如上图所示,加密被"暂停"的卷会获得一个感叹号图标。相关信息也在manage-bde工具中提供。

总结

在本文中,我概述了针对使用BitLocker全盘加密设备的潜在攻击角度。

话虽如此,我远非给这个工具负面评价:它高效工作并使用合理的算法。然而,这并不改变微软的一些设计决策似乎有点可疑的事实,至少可以这么说。您对Suspended模式有什么看法?一定要在评论中告诉我。

comments powered by Disqus
使用 Hugo 构建
主题 StackJimmy 设计