BitLocker 恢复指南 您所在的位置:网站首页 删除了system咋样恢复 BitLocker 恢复指南

BitLocker 恢复指南

2023-06-08 07:39| 来源: 网络整理| 查看: 265

BitLocker 恢复指南 项目 06/06/2023 适用于: ✅ Windows 11, ✅ Windows 10, ✅ Windows Server 2022, ✅ Windows Server 2019, ✅ Windows Server 2016

本文介绍如何从 AD DS 恢复 BitLocker 密钥。

组织可以使用保存在 Active Directory 域服务 (AD DS) 中的 BitLocker 恢复信息来访问受 BitLocker 保护的数据。 建议在规划 BitLocker 部署时为 BitLocker 创建恢复模型。

本文假定已了解如何设置 AD DS 以自动备份 BitLocker 恢复信息,以及将哪些类型的恢复信息保存到 AD DS。

本文不详细介绍如何配置 AD DS 以存储 BitLocker 恢复信息。

什么是 BitLocker 恢复?

BitLocker 恢复是一个过程,通过该过程,如果驱动器无法正常解锁,则可以将访问权限还原到受 BitLocker 保护的驱动器。 在恢复方案中,可以使用以下选项来还原对驱动器的访问:

用户可以提供恢复密码。 如果组织允许用户打印或存储恢复密码,则用户可以输入 48 位恢复密码,该密码打印或存储在 U 盘或 Microsoft 帐户联机。 仅当在不是域成员的电脑上使用 BitLocker 时,才允许使用 Microsoft 帐户联机保存恢复密码。

数据恢复代理可以使用其凭据解锁驱动器。 如果驱动器是操作系统驱动器,则必须将驱动器装载为另一台计算机的数据驱动器,数据恢复代理才能解锁它。

域管理员可以从 AD DS 获取恢复密码,并使用它解锁驱动器。 建议在 AD DS 中存储恢复密码,以便 IT 专业人员能够在需要时获取组织中驱动器的恢复密码。 此方法使得必须在 BitLocker 组策略设置中选择如何恢复受 BitLocker 保护的操作系统驱动器(位于本地组策略编辑器中的计算机配置>管理模板>Windows 组件>BitLocker 驱动器加密>操作系统驱动器)中启用此恢复方法。 有关详细信息,请参阅 BitLocker 组策略设置。

是什么导致 BitLocker 恢复?

以下列表提供了在尝试启动操作系统驱动器时将导致 BitLocker 进入恢复模式的特定事件示例:

在使用 BitLocker 驱动器加密的电脑上,或在仅使用 BitLocker 设备加密的平板电脑或手机上,当检测到攻击时,设备将立即重新启动并进入 BitLocker 恢复模式。 若要利用此功能,管理员可以设置交互式登录:计算机帐户锁定阈值组策略设置位于计算机配置>Windows 设置>安全设置>本地策略>安全选项本地组策略编辑器。 或者,他们可以使用 Exchange ActiveSync 的 MaxFailedPasswordAttempts 策略(也可以通过 Microsoft Intune 配置)来限制设备进入设备锁定之前失败的密码尝试次数。

在具有 TPM 1.2 的设备上,更改 BIOS 或固件启动设备顺序会导致 BitLocker 恢复。 但是,在这种情况下,使用 TPM 2.0 的设备不会启动 BitLocker 恢复。 TPM 2.0 不会将启动设备顺序的固件更改视为安全威胁,因为 OS 启动加载程序未受到威胁。

在 BIOS 启动顺序中将 CD 或 DVD 驱动器置于硬盘驱动器之前,然后插入或取出 CD 或 DVD。

在从硬盘驱动器启动之前无法从网络驱动器启动。

停靠或取消停靠便携式计算机。 在某些情况下(取决于计算机制造商和 BIOS),便携式计算机的停靠条件是系统度量的一部分,必须保持一致才能验证系统状态并解锁 BitLocker。 因此,如果便携式计算机在打开 BitLocker 时连接到其扩展坞,则在解锁时,它可能还需要连接到扩展坞。 相反,如果便携式计算机在打开 BitLocker 时未连接到其扩展坞,则可能需要在解锁时断开与扩展坞的连接。

对磁盘上的 NTFS 分区表进行更改,包括创建、删除或调整主分区的大小。

个人标识号 (PIN) 输入错误次数过多,导致 TPM 的反攻击逻辑被激活。 反攻击逻辑是一种软件或硬件方法,通过在特定时间过去之前不接受 PIN 输入来增加对 PIN 进行暴力攻击的难度和成本。

如果使用基于 USB 的密钥而不是 TPM,请关闭对在预启动环境中从 BIOS 或 UEFI 固件读取 USB 设备的支持。

关闭、禁用、停用或清除 TPM。

升级关键的早期启动组件(如 BIOS 或 UEFI 固件升级),导致相关启动度量更改。

启用 PIN 身份验证时忘记 PIN。

更新选项 ROM 固件。

升级 TPM 固件。

添加或删除硬件;例如,将一张新卡(包括一些 PCMIA 无线卡)插入计算机。

删除、插入或完全耗尽便携式计算机智能电池上的电量。

更改磁盘上的主启动记录。

更改磁盘上的引导管理器。

从操作系统隐藏 TPM。 某些 BIOS 或 UEFI 设置可用于阻止将 TPM 枚举到操作系统。 如果实现此选项,则会使 TPM 在操作系统中隐藏。 隐藏 TPM 时,将禁用 BIOS 和 UEFI 安全启动,并且 TPM 不会响应来自任何软件的命令。

使用无法正确输入 PIN 的其他键盘,或者其键盘映射与预启动环境假定的键盘映射不匹配。 此问题可能会阻止输入增强的 PIN。

修改 TPM 验证配置文件使用的平台配置注册表 (PCR)。 例如,包括 PCR[1] 将导致 BitLocker 测量 BIOS 设置的大多数更改,导致 BitLocker 进入恢复模式,即使非启动关键 BIOS 设置发生更改也是如此。

注意

某些计算机的 BIOS 设置会跳过对某些 PCR(例如 PCR[2])的测量。 在 BIOS 中更改此设置会导致 BitLocker 进入恢复模式,因为 PCR 度量会有所不同。

将 BitLocker 保护的驱动器移动到新的计算机。

将主板升级到具有新 TPM 的新主板。

在启用启动密钥身份验证后,丢失包含启动密钥的 U 盘。

TPM 自测试失败。

具有不符合客户端计算机的相关受信任计算组标准的 BIOS、UEFI 固件或选项 ROM 组件。 例如,不合规的实现可能会在 TPM 度量中记录易失性数据(例如时间),导致每次启动时度量不同,并导致 BitLocker 在恢复模式下启动。

将 TPM 的存储根密钥的使用授权更改为非零值。

注意

BitLocker TPM 初始化过程将使用率授权值设置为零,因此其他用户或进程必须显式更改此值。

在 Windows 引导管理器 (Bootmgr) 上禁用代码完整性检查或启用测试签名。

在启动过程中按 F8 或 F10 键。

添加或移除附加卡(例如视频卡或网卡),或升级附加卡上的固件。

在启动过程中使用 BIOS 热键将引导顺序更改为硬盘驱动器外的其他内容。

注意

在开始恢复之前,建议确定导致恢复的原因。 这可能有助于防止将来再次出现问题。 例如,如果确定攻击者通过获取物理访问权限修改了计算机,则可以创建新的安全策略来跟踪谁有物理状态。 使用恢复密码恢复对电脑的访问后,BitLocker 会将加密密钥重新密封为测量组件的当前值。

对于计划方案(例如已知的硬件或固件升级),可以通过暂时挂起 BitLocker 保护来避免启动恢复。 由于暂停 BitLocker 会使驱动器完全加密,因此管理员可以在计划任务完成后快速恢复 BitLocker 保护。 使用暂停和恢复还会重新封装加密密钥,而无需输入恢复密钥。

注意

如果暂停,BitLocker 将在电脑重新启动时自动恢复保护,除非使用 manage-bde 命令行工具指定重新启动计数。

如果软件维护要求重启计算机并使用双重身份验证,则可以启用 BitLocker 网络解锁功能,以便在计算机没有提供其他身份验证方法的本地用户时提供辅助身份验证因素。

在计划外或不需要的行为上下文中介绍了恢复。 但是,恢复也可以作为预期的生产方案进行,例如,为了管理访问控制。 将台式机或笔记本电脑重新部署到企业中的其他部门或员工时,可以在将计算机提供给新用户之前强制恢复 BitLocker。

测试恢复

在创建彻底的 BitLocker 恢复过程之前,建议测试恢复过程如何适用于最终用户 (呼叫支持人员以获取恢复密码) 和管理员 (帮助最终用户获取恢复密码) 的人员。 命令-forcerecoverymanage-bde.exe是一种在用户遇到恢复情况之前逐步完成恢复过程的简单方法。

若要强制恢复本地计算机,请执行以下操作:

选择“ 开始” 按钮并键入 cmd

在 “cmd.exe ”或 “命令提示符” 上右键单击,然后选择“ 以管理员身份运行”。

在命令提示符下,输入以下命令:

manage-bde.exe -forcerecovery

若要强制恢复远程计算机,请执行以下操作:

选择“ 开始” 按钮并键入 cmd

在 “cmd.exe ”或 “命令提示符” 上右键单击,然后选择“ 以管理员身份运行”。

在命令提示符下,输入以下命令:

manage-bde.exe -ComputerName -forcerecovery

注意

由 -forcerecovery 触发的恢复会持续多次重启,直到添加 TPM 保护程序或用户暂停保护。 使用新式待机设备(如 Surface 设备)时,不建议使用 -forcerecovery 选项,因为必须从 WinRE 环境中手动解锁和禁用 BitLocker,然后操作系统才能再次启动。 有关详细信息,请参阅 BitLocker 故障排除:在平板电脑设备上使用 BitLocker 恢复进行连续重新启动循环。

规划恢复过程

规划 BitLocker 恢复过程时,请先参阅组织当前恢复敏感信息的最佳做法。 例如:企业如何处理丢失的 Windows 密码? 组织如何执行智能卡 PIN 重置? 这些最佳做法和相关资源 (人员和工具) 可用于帮助制定 BitLocker 恢复模型。

依赖 BitLocker 驱动器加密和 BitLocker To Go 来保护运行 Windows 11、Windows 10、Windows 8 或 Windows 7 操作系统和 Windows to Go 的大量计算机和可移动驱动器上的数据的组织应考虑使用 Microsoft BitLocker 管理和监控 (MBAM) 工具版本 2.0,该版本包含在 Microsoft 软件保障的 Microsoft 桌面优化包 (MDOP) 中。 MBAM 使 BitLocker 实现更易于部署和管理,并允许管理员预配和监视操作系统和固定驱动器的加密。 MBAM 在加密固定驱动器之前会提示用户。 MBAM 还管理固定驱动器和可移动驱动器的恢复密钥,使恢复更易于管理。 MBAM 可用作 Microsoft System Center 部署的一部分,也可用作独立解决方案。 有关详细信息,请参阅 Microsoft BitLocker 管理和监控。

启动 BitLocker 恢复后,用户可以使用恢复密码解锁对加密数据的访问。 请考虑组织的自我恢复和恢复密码检索方法。

确定恢复过程后:

熟悉如何检索恢复密码。 请参阅:

自恢复 恢复密码找回

确定恢复后的一系列步骤,包括分析恢复发生的原因以及重置恢复密码。 请参阅:

恢复后分析 自恢复

在某些情况下,用户可能会打印出恢复密码或将其存储在 U 盘中,并且可以执行自恢复。 建议组织创建自恢复策略。 如果自我恢复包括使用存储在 U 盘上的密码或恢复密钥,则必须警告用户不要将 USB 闪存驱动器存储在电脑所在的同一位置,尤其是在旅行期间。 例如,如果电脑和恢复项目都在同一个包中,则未经授权的用户很容易访问电脑。 要考虑的另一个策略是让用户在执行自恢复之前或之后联系支持人员,以便找出根本原因。

恢复密码找回

如果用户没有打印恢复密码或在 U 盘上打印,用户将需要能够从联机源检索恢复密码。 如果电脑是域的成员,则恢复密码可以备份到 AD DS。 但是,默认情况下不会将恢复密码备份到 AD DS。 在电脑上启用 BitLocker 之前 ,必须通过适当的组策略设置配置恢复密码到 AD DS 的备份。 可以在“本地组策略编辑器”或“组策略管理控制台 (GPMC) ”计算机配置>管理模板>“”Windows 组件>“”BitLocker 驱动器加密“下找到 BitLocker 组策略设置。 以下策略设置定义了恢复方法,它可用于在身份验证方法失败或无法使用时还原对受 BitLocker 保护的驱动器的访问。

选择如何恢复受 BitLocker 保护的操作系统驱动器

选择如何恢复受 BitLocker 保护的固定驱动器

选择如何恢复受 BitLocker 保护的可移动驱动器

在每个策略中,选择“将 BitLocker 恢复信息保存到Active Directory 域服务然后选择要在 AD DS 中存储的 BitLocker 恢复信息。 如果希望阻止用户启用 BitLocker,除非计算机已连接到域,并且驱动器的 BitLocker 恢复信息备份成功,否则选中“在恢复信息存储在 AD DS 检查之前不要启用 BitLocker”框。

注意

如果电脑是工作组的一部分,建议用户使用其 Microsoft 帐户在线保存其 BitLocker 恢复密码。 建议使用 BitLocker 恢复密码的联机副本,以帮助确保在需要恢复时不会丢失对数据的访问。

利用适用于 Active Directory 用户和计算机的 BitLocker 恢复密码查看器工具,域管理员能够查看 Active Directory 中特定计算机对象的 BitLocker 恢复密码。

以下列表可用作模板,用于创建恢复过程以检索恢复密码。 此示例过程使用适用于 Active Directory 用户和计算机的 BitLocker 恢复密码查看器工具。

记录用户计算机的名称 验证用户的身份 在 AD DS 中找到恢复密码 收集信息以确定发生恢复的原因 为用户提供恢复密码 记录用户计算机的名称

用户计算机的名称可用于在 AD DS 中查找恢复密码。 如果用户不知道计算机的名称,请要求用户在 BitLocker 驱动器加密密码输入用户界面中阅读驱动器标签的第一个单词。 此词是启用 BitLocker 时的计算机名称,可能是计算机的当前名称。

验证用户的身份

请求恢复密码的人员应验证为该计算机的授权用户。 还应验证用户为其提供名称的计算机是否属于该用户。

在 AD DS 中找到恢复密码

在 AD DS 中找到具有匹配名称的计算机对象。 由于计算机对象名称在 AD DS 全局目录中列出,因此即使该对象是多域林,也应能够找到该对象。

多个恢复密码

如果多个恢复密码存储在 AD DS 中的计算机对象下,则 BitLocker 恢复信息对象的名称包括创建密码的日期。

若要确保提供正确的密码和/或防止提供不正确的密码,请要求用户读取恢复控制台中显示的八个字符密码 ID。

由于密码 ID 是与 AD DS 中存储的每个恢复密码关联的唯一值,因此使用此 ID 运行查询会找到正确的密码来解锁加密卷。

收集信息以确定发生恢复的原因

在向用户提供恢复密码之前,信息应是有助于确定为何需要恢复的信息。 此信息可用于在恢复后分析期间分析根本原因。 有关恢复后分析的详细信息,请参阅 恢复后分析。

为用户提供恢复密码

由于恢复密码的长度为 48 位,因此用户可能需要通过写下密码或在另一台计算机上键入来记录密码。 如果使用 MBAM 或 Configuration Manager BitLocker Management,则从 MBAM 或Configuration Manager数据库恢复恢复密码后,将重新生成恢复密码,以避免与不受控制的密码相关的安全风险。

注意

由于 48 位恢复密码很长并且包含数字组合,因此用户可能听错或拼错密码。 启动时间恢复控制台使用内置的校验和数字检测 48 位恢复密码的每个 6 位块中的输入错误,并让用户有机会更正此类错误。

恢复后分析

使用恢复密码解锁卷时,会将事件写入事件日志,并在 TPM 中重置平台验证度量值以匹配当前配置。 解锁卷意味着加密密钥已被释放并准备好在将数据写入卷时进行动态加密,并在从卷中读取数据时进行动态解密。 解锁卷后,BitLocker 的行为方式相同,无论授予访问权限的方式如何。

如果注意到计算机重复恢复密码解锁,管理员可能需要执行恢复后分析以确定恢复的根本原因,并刷新 BitLocker 平台验证,以便用户不再需要在每次启动计算机时输入恢复密码。 有关详细信息,请参阅:

确定恢复的根本原因 解决根本原因 确定恢复的根本原因

如果用户需要恢复驱动器,请务必尽快确定启动恢复的根本原因。 正确分析计算机的状态并检测篡改可能会揭示对企业安全具有更广泛影响的威胁。

虽然在某些情况下,管理员可以远程调查恢复原因,但最终用户可能需要将包含已恢复驱动器的计算机带到现场,以进一步分析根本原因。

查看并回答组织的以下问题:

哪种 BitLocker 保护模式 (TPM、TPM + PIN、TPM + 启动密钥、仅启动密钥) 有效? 电脑上使用哪个 PCR 配置文件?

用户只是忘记 PIN 还是丢失了启动密钥? 如果令牌丢失,令牌可能在哪里?

如果 TPM 模式有效,恢复是否是由启动文件更改导致的?

如果恢复是由启动文件更改引起的,则启动文件更改是由于预期用户操作 (例如 BIOS 升级) 还是恶意软件?

用户上次成功启动计算机是何时?之后计算机可能发生了什么情况?

自上次成功启动后,用户是否遇到了恶意软件或计算机无人看管?

为了帮助回答这些问题,请使用 BitLocker 命令行工具查看当前配置和保护模式:

manage-bde.exe -status

扫描事件日志以查找有助于指示 (启动恢复的原因的事件,例如,如果启动文件发生更改) 。 这两项功能都可以远程执行。

解决根本原因

确定导致恢复的原因后,可以重置 BitLocker 保护以避免每次启动时进行恢复。

此重置的详细信息可能因恢复的根本原因而异。 如果无法确定根本原因,或者恶意软件或 rootkit 可能感染了计算机,则支持人员应应用最佳做法病毒策略来做出适当的反应。

注意

可以通过暂停和恢复 BitLocker 来执行 BitLocker 验证配置文件重置。

未知 PIN 启动密钥丢失 启动文件发生更改 未知 PIN

如果用户忘记了 PIN,则必须在登录到计算机时重置 PIN,以防止每次重启计算机时 BitLocker 启动恢复。

防止因未知 PIN 而继续恢复

使用恢复密码解锁计算机。

重置 PIN:

选择并按住驱动器,然后选择 “更改 PIN”

在“BitLocker 驱动器加密”对话框中,选择“重置已忘记的 PIN”。 如果登录的帐户不是管理员帐户,则此时必须提供管理凭据。

在“PIN 重置”对话框中,提供并确认要使用的新 PIN,然后选择“ 完成”。

下次需要解锁驱动器时,可以使用新的 PIN。

启动密钥丢失

如果包含启动密钥的 USB 闪存驱动器已丢失,则必须使用恢复密钥解锁驱动器。 然后可以创建新的启动。

防止因启动密钥丢失而继续恢复

以管理员身份登录到丢失启动密钥的计算机。

打开“管理 BitLocker”。

选择“ 复制启动密钥”,插入将写入密钥的干净 U 盘,然后选择“ 保存”。

启动文件发生更改

如果更新了固件,则会发生此错误。 最佳做法是,在对固件进行更改之前,应暂停 BitLocker。 固件更新完成后,应恢复保护。 暂停 BitLocker 可防止计算机进入恢复模式。 但是,如果在启用 BitLocker 保护时进行了更改,则恢复密码可用于解锁驱动器,并且将更新平台验证配置文件,以便下次不会进行恢复。

Windows RE 和 BitLocker 设备加密

Windows 恢复环境 (RE) 可用于恢复对受 BitLocker 驱动器加密保护的驱动器的访问。 如果电脑在两次故障后无法启动,则“启动修复”会自动启动。 当启动修复因启动失败而自动启动时,如果启动日志或任何可用的故障转储指向特定损坏的文件,则仅执行操作系统和驱动程序文件修复。 在 Windows 8.1 及更高版本中,包含用于支持 PCR[7] 特定 TPM 测量的固件的设备可以验证Windows RE是否为受信任的操作环境,并在未修改Windows RE时解锁任何受 BitLocker 保护的驱动器。 如果已修改Windows RE环境(例如 TPM 已禁用),则驱动器将一直处于锁定状态,直到提供 BitLocker 恢复密钥。 如果启动修复无法从电脑自动运行,而是从修复磁盘手动启动Windows RE,则必须提供 BitLocker 恢复密钥才能解锁受 BitLocker 保护的驱动器。

Windows RE在使用 TPM + PIN 或 OS 驱动器保护程序的密码的设备上启动“从Windows RE删除所有内容重置”时,还会要求提供 BitLocker 恢复密钥。 如果在具有仅 TPM 保护的无键盘设备上启动 BitLocker 恢复,Windows RE(而不是启动管理器)将要求提供 BitLocker 恢复密钥。 输入密钥后,可以访问Windows RE故障排除工具,或者可以正常启动 Windows。

Windows RE显示的 BitLocker 恢复屏幕具有辅助工具(如讲述人和屏幕键盘)来帮助输入 BitLocker 恢复密钥。 如果 Windows 启动管理器请求 BitLocker 恢复密钥,则这些工具可能不可用。

若要在 Windows RE 中恢复 BitLocker 期间激活讲述人,请按 Windows + Ctrl + Enter。 若要激活屏幕键盘,请点击文本输入控件。

BitLocker 恢复屏幕

在 BitLocker 恢复期间,Windows 会显示自定义恢复消息和一些提示,用于标识可从何处检索密钥。 这些改进可在 BitLocker 恢复期间帮助用户。

自定义恢复消息

从 Windows 10 版本 1511 开始的 BitLocker 组策略设置允许在 BitLocker 恢复屏幕上配置自定义恢复消息和 URL。 自定义恢复消息和 URL 可以包括 BitLocker 自助恢复门户的地址、IT 内部网站或支持电话号码。

可以使用 GPO 在“计算机配置”>“管理模板”>“Windows 组件”>“BitLocker 驱动器加密”>“操作系统驱动器”>“配置启动前恢复消息和 URL”下配置此策略。

还可以使用移动设备管理 (MDM) (包括在 Intune 中使用 BitLocker CSP)配置它:

./Device/Vendor/MSFT/BitLocker/SystemDrivesRecoveryMessage

自定义恢复屏幕的示例:

BitLocker 恢复密钥提示

从 Windows 10 版本 1903 开始,BitLocker 元数据已得到增强,包括有关备份 BitLocker 恢复密钥的时间和位置的信息。 此信息不会通过 UI 或任何公共 API 公开。 它仅由 BitLocker 恢复屏幕以提示的形式使用,以帮助用户找到卷的恢复密钥。 提示将显示在恢复屏幕上,并引用保存密钥的位置。 提示将显示在新式(蓝色)和旧版(黑色)恢复屏幕上。 提示适用于启动管理器恢复屏幕和 WinRE 解锁屏幕。

重要提示

不建议打印恢复密钥或将其保存到文件。 请改为使用 Active Directory 备份或基于云的备份。 基于云的备份包括 Azure Active Directory (Azure AD) 和 Microsoft 帐户。

按照处理) 的顺序,控制在恢复 (期间显示哪个提示的规则:

如果已配置自定义恢复消息(使用 GPO 或 MDM),则始终显示该消息。

始终显示泛型提示: For more information, go to https://aka.ms/recoverykeyfaq.

如果卷上存在多个恢复密钥,请确定上次创建的 (的优先级,并成功备份) 恢复密钥。

让成功备份的密钥优先于从未备份的密钥。

按以下顺序对远程备份位置设置备份提示的优先级: Microsoft 帐户 > Azure AD > Active Directory。

如果已打印密钥并将其保存到文件中,则显示组合提示“查找带密钥的打印输出或文本文件”,而不是两个单独的提示。

如果针对同一恢复密钥执行了相同类型的多个备份 (删除与本地) ,请优先使用最新备份日期的备份信息。

对于保存到本地 Active Directory的密钥,没有具体的提示。 在这种情况下,如果配置) 或通用消息“联系组织的技术支持”,则会显示自定义消息 (。

如果磁盘上存在两个恢复密钥,但只有一个恢复密钥已成功备份,则系统会要求提供已备份的密钥,即使另一个密钥较新。

示例 1(具有单个备份的单个恢复密钥) 自定义 URL 是 已保存到 Microsoft 帐户 是 已保存到 Azure AD 否 已保存到 Active Directory 否 已打印 否 已保存到文件 否

结果: 将显示 Microsoft 帐户和自定义 URL 的提示。

示例 2(具有单个备份的单个恢复密钥) 自定义 URL 是 已保存到 Microsoft 帐户 否 已保存到 Azure AD 否 已保存到 Active Directory 是 已打印 否 已保存到文件 否

结果:只显示自定义 URL。

示例 3(具有多个备份的单个恢复密钥) 自定义 URL 否 已保存到 Microsoft 帐户 是 已保存到 Azure AD 是 已保存到 Active Directory 否 已打印 是 已保存到文件 是

结果:只显示 Microsoft 帐户提示。

示例 4 (多个恢复密码) 自定义 URL 否 已保存到 Microsoft 帐户 否 已保存到 Azure AD 否 已保存到 Active Directory 否 已打印 否 已保存到文件 是 创建时间 下午 1 点 密钥 ID A564F193

自定义 URL 否 已保存到 Microsoft 帐户 否 已保存到 Azure AD 否 已保存到 Active Directory 否 已打印 否 已保存到文件 否 创建时间 下午 3 点 密钥 ID T4521ER5

结果:只显示成功备份密钥的提示,即使它不是最新的密钥。

示例 5 (多个恢复密码) 自定义 URL 否 已保存到 Microsoft 帐户 是 已保存到 Azure AD 是 已保存到 Active Directory 否 已打印 否 已保存到文件 否 创建时间 下午 1 点 密钥 ID 99631A34 自定义 URL 否 已保存到 Microsoft 帐户 否 已保存到 Azure AD 是 已保存到 Active Directory 否 已打印 否 已保存到文件 否 创建时间 下午 3 点 密钥 ID 9DF70931

结果:显示最新密钥的提示。

使用其他恢复信息

除了 48 位 BitLocker 恢复密码之外,其他类型的恢复信息也存储在 Active Directory 中。 此部分介绍如何使用此附加信息。

BitLocker 密钥包

如果本文档前面讨论的恢复方法无法解锁卷,则可以使用 BitLocker 修复工具在块级别解密卷。 该工具使用 BitLocker 密钥包来帮助从严重损坏的驱动器恢复加密数据。 然后,即使正确的恢复密码无法解锁损坏的卷,恢复的数据也可用于挽救加密数据。 建议仍保存恢复密码。 如果没有相应的恢复密码,则无法使用密钥包。

注意

必须使用 BitLocker 修复工具 repair-bde.exe 才能使用 BitLocker 密钥包。

默认情况下不保存 BitLocker 密钥包。 若要在 AD DS 中保存包以及恢复密码,必须在控制恢复方法的组策略设置中选择 “备份恢复密码和密钥包 ”选项。 密钥包也可以从工作卷导出。 有关如何导出密钥包的详细信息,请参阅 检索 BitLocker 密钥包。

重置恢复密码

建议在提供并使用恢复密码后将其失效。 如果已提供并使用恢复密码,或者出于任何其他有效原因,恢复密码可能会失效。

恢复密码和 以两种方式失效和重置:

使用 manage-bde.exe: manage-bde.exe 可用于删除旧的恢复密码并添加新的恢复密码。 该过程将识别此方法的命令和语法。

运行脚本:可以运行脚本来重置密码,而无需解密卷。 该过程中的示例脚本说明了此功能。 示例脚本将创建新的恢复密码,并使所有其他密码失效。

使用 重置恢复密码 manage-bde.exe

删除以前的恢复密码。

`manage-bde.exe` -protectors -delete C: -type RecoveryPassword

添加新的恢复密码。

`manage-bde.exe` -protectors -add C: -RecoveryPassword

获取新恢复密码的 ID。 从屏幕上复制恢复密码的 ID。

`manage-bde.exe` -protectors -get C: -Type RecoveryPassword

将新的恢复密码备份到 AD DS。

`manage-bde.exe` -protectors -adbackup C: -id {EXAMPLE6-5507-4924-AA9E-AFB2EB003692}

警告

ID 字符串中必须包含大括号 {} 。

运行示例恢复密码脚本以重置恢复密码

将以下示例脚本保存在 VBScript 文件中。 例如:

ResetPassword.vbs.

在命令提示符下,输入以下命令:

cscript.exe ResetPassword.vbs

重要提示

此示例脚本配置为仅适用于 C 卷。 如有必要,请自定义脚本以匹配需要测试密码重置的卷。

注意

若要管理远程计算机,请指定远程计算机名称,而不是本地计算机名称。

以下示例 VBScript 可用于重置恢复密码:

展开以查看用于重置恢复密码的示例恢复密码 VBscript ' Target drive letter strDriveLetter = "c:" ' Target computer name ' Use "." to connect to the local computer strComputerName = "." ' -------------------------------------------------------------------------------- ' Connect to the BitLocker WMI provider class ' -------------------------------------------------------------------------------- strConnectionStr = "winmgmts:" _ & "{impersonationLevel=impersonate,authenticationLevel=pktPrivacy}!\\" _ & strComputerName _ & "\root\cimv2\Security\MicrosoftVolumeEncryption" On Error Resume Next 'handle permission errors Set objWMIService = GetObject(strConnectionStr) If Err.Number 0 Then WScript.Echo "Failed to connect to the BitLocker interface (Error 0x" & Hex(Err.Number) & ")." Wscript.Echo "Ensure that you are running with administrative privileges." WScript.Quit -1 End If On Error GoTo 0 strQuery = "Select * from Win32_EncryptableVolume where DriveLetter='" & strDriveLetter & "'" Set colTargetVolumes = objWMIService.ExecQuery(strQuery) If colTargetVolumes.Count = 0 Then WScript.Echo "FAILURE: Unable to find BitLocker-capable drive " & strDriveLetter & " on computer " & strComputerName & "." WScript.Quit -1 End If ' there should only be one volume found For Each objFoundVolume in colTargetVolumes set objVolume = objFoundVolume Next ' objVolume is now our found BitLocker-capable disk volume ' -------------------------------------------------------------------------------- ' Perform BitLocker WMI provider functionality ' -------------------------------------------------------------------------------- ' Add a new recovery password, keeping the ID around so it doesn't get deleted later ' ---------------------------------------------------------------------------------- nRC = objVolume.ProtectKeyWithNumericalPassword("Recovery Password Refreshed By Script", , sNewKeyProtectorID) If nRC 0 Then WScript.Echo "FAILURE: ProtectKeyWithNumericalPassword failed with return code 0x" & Hex(nRC) WScript.Quit -1 End If ' Removes the other, "stale", recovery passwords ' ---------------------------------------------------------------------------------- nKeyProtectorTypeIn = 3 ' type associated with "Numerical Password" protector nRC = objVolume.GetKeyProtectors(nKeyProtectorTypeIn, aKeyProtectorIDs) If nRC 0 Then WScript.Echo "FAILURE: GetKeyProtectors failed with return code 0x" & Hex(nRC) WScript.Quit -1 End If ' Delete those key protectors other than the one we just added. For Each sKeyProtectorID In aKeyProtectorIDs If sKeyProtectorID sNewKeyProtectorID Then nRC = objVolume.DeleteKeyProtector(sKeyProtectorID) If nRC 0 Then WScript.Echo "FAILURE: DeleteKeyProtector on ID " & sKeyProtectorID & " failed with return code 0x" & Hex(nRC) WScript.Quit -1 Else ' no output 'WScript.Echo "SUCCESS: Key protector with ID " & sKeyProtectorID & " deleted" End If End If Next WScript.Echo "A new recovery password has been added. Old passwords have been removed." ' - some advanced output (hidden) 'WScript.Echo "" 'WScript.Echo "Type ""manage-bde.exe -protectors -get " & strDriveLetter & " -type recoverypassword"" to view existing passwords." 检索 BitLocker 密钥包

可以使用两种方法检索密钥包,如 使用其他恢复信息中所述:

从 AD DS 导出以前保存的密钥包。 需要对存储在 AD DS 中的 BitLocker 恢复密码具有读取访问权限。

从受 BitLocker 保护的未锁定卷导出新的密钥包。 在卷发生任何损坏之前,需要本地管理员访问工作卷。

运行示例密钥包检索脚本,该脚本从 AD DS 导出以前保存的所有密钥包

以下步骤和示例脚本从 AD DS 导出以前保存的所有密钥包。

将以下示例脚本保存在 VBScript 文件中。 例如:GetBitLockerKeyPackageADDS.vbs。

在命令提示符下,输入类似于以下示例脚本的命令:

cscript.exe GetBitLockerKeyPackageADDS.vbs -?

以下示例脚本可用于创建 VBScript 文件,以从 AD DS 检索 BitLocker 密钥包:

展开以查看从 AD DS 导出所有以前保存的密钥包的示例密钥包检索 VBscript ' -------------------------------------------------------------------------------- ' Usage ' -------------------------------------------------------------------------------- Sub ShowUsage Wscript.Echo "USAGE: GetBitLockerKeyPackageADDS [Path To Save Key Package] [Optional Computer Name]" Wscript.Echo "If no computer name is specified, the local computer is assumed." Wscript.Echo Wscript.Echo "Example: GetBitLockerKeyPackageADDS E:\bitlocker-ad-key-package mycomputer" WScript.Quit End Sub ' -------------------------------------------------------------------------------- ' Parse Arguments ' -------------------------------------------------------------------------------- Set args = WScript.Arguments Select Case args.Count Case 1 If args(0) = "/?" Or args(0) = "-?" Then ShowUsage Else strFilePath = args(0) ' Get the name of the local computer Set objNetwork = CreateObject("WScript.Network") strComputerName = objNetwork.ComputerName End If Case 2 If args(0) = "/?" Or args(0) = "-?" Then ShowUsage Else strFilePath = args(0) strComputerName = args(1) End If Case Else ShowUsage End Select ' -------------------------------------------------------------------------------- ' Get path to Active Directory computer object associated with the computer name ' -------------------------------------------------------------------------------- Function GetStrPathToComputer(strComputerName) ' Uses the global catalog to find the computer in the forest ' Search also includes deleted computers in the tombstone Set objRootLDAP = GetObject("LDAP://rootDSE") namingContext = objRootLDAP.Get("defaultNamingContext") ' e.g. string dc=fabrikam,dc=com strBase = "" Set objConnection = CreateObject("ADODB.Connection") Set objCommand = CreateObject("ADODB.Command") objConnection.Provider = "ADsDSOOBject" objConnection.Open "Active Directory Provider" Set objCommand.ActiveConnection = objConnection strFilter = "(&(objectCategory=Computer)(cn=" & strComputerName & "))" strQuery = strBase & ";" & strFilter & ";distinguishedName;subtree" objCommand.CommandText = strQuery objCommand.Properties("Page Size") = 100 objCommand.Properties("Timeout") = 100 objCommand.Properties("Cache Results") = False ' Enumerate all objects found. Set objRecordSet = objCommand.Execute If objRecordSet.EOF Then WScript.echo "The computer name '" & strComputerName & "' cannot be found." WScript.Quit 1 End If ' Found object matching name Do Until objRecordSet.EOF dnFound = objRecordSet.Fields("distinguishedName") GetStrPathToComputer = "LDAP://" & dnFound objRecordSet.MoveNext Loop ' Clean up. Set objConnection = Nothing Set objCommand = Nothing Set objRecordSet = Nothing End Function ' -------------------------------------------------------------------------------- ' Securely access the Active Directory computer object using Kerberos ' -------------------------------------------------------------------------------- Set objDSO = GetObject("LDAP:") strPathToComputer = GetStrPathToComputer(strComputerName) WScript.Echo "Accessing object: " + strPathToComputer Const ADS_SECURE_AUTHENTICATION = 1 Const ADS_USE_SEALING = 64 '0x40 Const ADS_USE_SIGNING = 128 '0x80 ' -------------------------------------------------------------------------------- ' Get all BitLocker recovery information from the Active Directory computer object ' -------------------------------------------------------------------------------- ' Get all the recovery information child objects of the computer object Set objFveInfos = objDSO.OpenDSObject(strPathToComputer, vbNullString, vbNullString, _ ADS_SECURE_AUTHENTICATION + ADS_USE_SEALING + ADS_USE_SIGNING) objFveInfos.Filter = Array("msFVE-RecoveryInformation") ' Iterate through each recovery information object and saves any existing key packages nCount = 1 strFilePathCurrent = strFilePath & nCount For Each objFveInfo in objFveInfos strName = objFveInfo.Get("name") strRecoveryPassword = objFveInfo.Get("msFVE-RecoveryPassword") strKeyPackage = objFveInfo.Get("msFVE-KeyPackage") WScript.echo WScript.echo "Recovery Object Name: " + strName WScript.echo "Recovery Password: " + strRecoveryPassword ' Validate file path Set fso = CreateObject("Scripting.FileSystemObject") If (fso.FileExists(strFilePathCurrent)) Then WScript.Echo "The file " & strFilePathCurrent & " already exists. Please use a different path." WScript.Quit -1 End If ' Save binary data to the file SaveBinaryDataText strFilePathCurrent, strKeyPackage WScript.echo "Related key package successfully saved to " + strFilePathCurrent ' Update next file path using base name nCount = nCount + 1 strFilePathCurrent = strFilePath & nCount Next '---------------------------------------------------------------------------------------- ' Utility functions to save binary data '---------------------------------------------------------------------------------------- Function SaveBinaryDataText(FileName, ByteArray) 'Create FileSystemObject object Dim FS: Set FS = CreateObject("Scripting.FileSystemObject") 'Create text stream object Dim TextStream Set TextStream = FS.CreateTextFile(FileName) 'Convert binary data To text And write them To the file TextStream.Write BinaryToString(ByteArray) End Function Function BinaryToString(Binary) Dim I, S For I = 1 To LenB(Binary) S = S & Chr(AscB(MidB(Binary, I, 1))) Next BinaryToString = S End Function WScript.Quit 运行示例密钥包检索脚本,该脚本从已解锁的加密卷导出新密钥包

以下步骤和示例脚本从已解锁的加密卷中导出新的密钥包。

将以下示例脚本保存在 VBScript 文件中。 例如:GetBitLockerKeyPackage.vbs

打开管理员命令提示符,然后输入类似于以下示例脚本的命令:

cscript.exe GetBitLockerKeyPackage.vbs -? 展开以查看从已解锁的加密卷导出新密钥包的示例 VBscript ' -------------------------------------------------------------------------------- ' Usage ' -------------------------------------------------------------------------------- Sub ShowUsage Wscript.Echo "USAGE: GetBitLockerKeyPackage [VolumeLetter/DriveLetter:] [Path To Save Key Package]" Wscript.Echo Wscript.Echo "Example: GetBitLockerKeyPackage C: E:\bitlocker-backup-key-package" WScript.Quit End Sub ' -------------------------------------------------------------------------------- ' Parse Arguments ' -------------------------------------------------------------------------------- Set args = WScript.Arguments Select Case args.Count Case 2 If args(0) = "/?" Or args(0) = "-?" Then ShowUsage Else strDriveLetter = args(0) strFilePath = args(1) End If Case Else ShowUsage End Select ' -------------------------------------------------------------------------------- ' Other Inputs ' -------------------------------------------------------------------------------- ' Target computer name ' Use "." to connect to the local computer strComputerName = "." ' Default key protector ID to use. Specify "" to let the script choose. strDefaultKeyProtectorID = "" ' strDefaultKeyProtectorID = "{001298E0-870E-4BA0-A2FF-FC74758D5720}" ' sample ' -------------------------------------------------------------------------------- ' Connect to the BitLocker WMI provider class ' -------------------------------------------------------------------------------- strConnectionStr = "winmgmts:" _ & "{impersonationLevel=impersonate,authenticationLevel=pktPrivacy}!\\" _ & strComputerName _ & "\root\cimv2\Security\MicrosoftVolumeEncryption" On Error Resume Next 'handle permission errors Set objWMIService = GetObject(strConnectionStr) If Err.Number 0 Then WScript.Echo "Failed to connect to the BitLocker interface (Error 0x" & Hex(Err.Number) & ")." Wscript.Echo "Ensure that you are running with administrative privileges." WScript.Quit -1 End If On Error GoTo 0 strQuery = "Select * from Win32_EncryptableVolume where DriveLetter='" & strDriveLetter & "'" Set colTargetVolumes = objWMIService.ExecQuery(strQuery) If colTargetVolumes.Count = 0 Then WScript.Echo "FAILURE: Unable to find BitLocker-capable drive " & strDriveLetter & " on computer " & strComputerName & "." WScript.Quit -1 End If ' there should only be one volume found For Each objFoundVolume in colTargetVolumes set objVolume = objFoundVolume Next ' objVolume is now our found BitLocker-capable disk volume ' -------------------------------------------------------------------------------- ' Perform BitLocker WMI provider functionality ' -------------------------------------------------------------------------------- ' Collect all possible valid key protector ID's that can be used to get the package ' ---------------------------------------------------------------------------------- nNumericalKeyProtectorType = 3 ' type associated with "Numerical Password" protector nRC = objVolume.GetKeyProtectors(nNumericalKeyProtectorType, aNumericalKeyProtectorIDs) If nRC 0 Then WScript.Echo "FAILURE: GetKeyProtectors failed with return code 0x" & Hex(nRC) WScript.Quit -1 End If nExternalKeyProtectorType = 2 ' type associated with "External Key" protector nRC = objVolume.GetKeyProtectors(nExternalKeyProtectorType, aExternalKeyProtectorIDs) If nRC 0 Then WScript.Echo "FAILURE: GetKeyProtectors failed with return code 0x" & Hex(nRC) WScript.Quit -1 End If ' Get first key protector of the type "Numerical Password" or "External Key", if any ' ---------------------------------------------------------------------------------- if strDefaultKeyProtectorID = "" Then ' Save first numerical password, if exists If UBound(aNumericalKeyProtectorIDs) -1 Then strDefaultKeyProtectorID = aNumericalKeyProtectorIDs(0) End If ' No numerical passwords exist, save the first external key If strDefaultKeyProtectorID = "" and UBound(aExternalKeyProtectorIDs) -1 Then strDefaultKeyProtectorID = aExternalKeyProtectorIDs(0) End If ' Fail case: no recovery key protectors exist. If strDefaultKeyProtectorID = "" Then WScript.Echo "FAILURE: Cannot create backup key package because no recovery passwords or recovery keys exist. Check that BitLocker protection is on for this drive." WScript.Echo "For help adding recovery passwords or recovery keys, enter ""manage-bde.exe -protectors -add -?""." WScript.Quit -1 End If End If ' Get some information about the chosen key protector ID ' ---------------------------------------------------------------------------------- ' is the type valid? nRC = objVolume.GetKeyProtectorType(strDefaultKeyProtectorID, nDefaultKeyProtectorType) If Hex(nRC) = "80070057" Then WScript.Echo "The key protector ID " & strDefaultKeyProtectorID & " is not valid." WScript.Echo "This ID value may have been provided by the script writer." ElseIf nRC 0 Then WScript.Echo "FAILURE: GetKeyProtectorType failed with return code 0x" & Hex(nRC) WScript.Quit -1 End If ' what's a string that can be used to describe it? strDefaultKeyProtectorType = "" Select Case nDefaultKeyProtectorType Case nNumericalKeyProtectorType strDefaultKeyProtectorType = "recovery password" Case nExternalKeyProtectorType strDefaultKeyProtectorType = "recovery key" Case Else WScript.Echo "The key protector ID " & strDefaultKeyProtectorID & " does not refer to a valid recovery password or recovery key." WScript.Echo "This ID value may have been provided by the script writer." End Select ' Save the backup key package using the chosen key protector ID ' ---------------------------------------------------------------------------------- nRC = objVolume.GetKeyPackage(strDefaultKeyProtectorID, oKeyPackage) If nRC 0 Then WScript.Echo "FAILURE: GetKeyPackage failed with return code 0x" & Hex(nRC) WScript.Quit -1 End If ' Validate file path Set fso = CreateObject("Scripting.FileSystemObject") If (fso.FileExists(strFilePath)) Then WScript.Echo "The file " & strFilePath & " already exists. Please use a different path." WScript.Quit -1 End If Dim oKeyPackageByte, bKeyPackage For Each oKeyPackageByte in oKeyPackage 'WScript.echo "key package byte: " & oKeyPackageByte bKeyPackage = bKeyPackage & ChrB(oKeyPackageByte) Next ' Save binary data to the file SaveBinaryDataText strFilePath, bKeyPackage ' Display helpful information ' ---------------------------------------------------------------------------------- WScript.Echo "The backup key package has been saved to " & strFilePath & "." WScript.Echo "IMPORTANT: To use this key package, the " & strDefaultKeyProtectorType & " must also be saved." ' Display the recovery password or a note about saving the recovery key file If nDefaultKeyProtectorType = nNumericalKeyProtectorType Then nRC = objVolume.GetKeyProtectorNumericalPassword(strDefaultKeyProtectorID, sNumericalPassword) If nRC 0 Then WScript.Echo "FAILURE: GetKeyProtectorNumericalPassword failed with return code 0x" & Hex(nRC) WScript.Quit -1 End If WScript.Echo "Save this recovery password: " & sNumericalPassword ElseIf nDefaultKeyProtectorType = nExternalKeyProtectorType Then WScript.Echo "The saved key file is named " & strDefaultKeyProtectorID & ".BEK" WScript.Echo "For help re-saving this external key file, enter ""manage-bde.exe -protectors -get -?""" End If '---------------------------------------------------------------------------------------- ' Utility functions to save binary data '---------------------------------------------------------------------------------------- Function SaveBinaryDataText(FileName, ByteArray) 'Create FileSystemObject object Dim FS: Set FS = CreateObject("Scripting.FileSystemObject") 'Create text stream object Dim TextStream Set TextStream = FS.CreateTextFile(FileName) 'Convert binary data To text And write them To the file TextStream.Write BinaryToString(ByteArray) End Function Function BinaryToString(Binary) Dim I, S For I = 1 To LenB(Binary) S = S & Chr(AscB(MidB(Binary, I, 1))) Next BinaryToString = S End Function 相关文章 BitLocker 概述


【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有