VeraCrypt

文档 >> 系统加密 >> EFI安全启动

EFI安全启动

VeraCrypt系统加密兼容EFI Secure Boot(安全启动):VeraCrypt EFI引导加载程序通过Microsoft第三方UEFI签名计划由Microsoft签名,因此固件可以使用标准Microsoft证书验证它们,而无需注册任何自定义密钥。本页说明VeraCrypt如何选择已签名的引导加载程序、这与Microsoft Secure Boot证书从2011证书颁发机构(CA)过渡到2023 CA的关系,以及如何诊断并恢复安全启动相关的启动故障。

已签名的引导加载程序套件

自1.26.29版起,VeraCrypt随附两套完整的Microsoft签名EFI引导加载程序:
在安装、升级、修复/重新安装以及开始系统加密时,VeraCrypt会读取固件db和dbx,并选择其已知签名CA存在于db且未列入dbx的套件。可选的dbx变量可以合法地不存在(自定义密钥系统尤其如此);此状态按空禁止数据库处理,而启用安全启动时真正的读取或解析错误仍会导致拒绝安装。若2023 CA对可用则优先选择2023套件,否则在存在 Microsoft Corporation UEFI CA 2011 时使用2011套件。
更改固件安全启动配置(例如在BIOS设置中启用其他证书)本身不会重写已经安装到EFI系统分区上的文件。更改固件安全启动数据库后,请以 修复/重新安装 模式运行VeraCrypt安装程序,或让VeraCrypt System Favorites服务自动刷新引导加载程序(它会在Windows启动、会话登录或解锁、从睡眠恢复以及关机时重新评估选择)。

诊断

VeraCrypt在以下注册表键下记录安装了哪个引导加载程序套件以及原因:
HKEY_LOCAL_MACHINE\SOFTWARE\VeraCrypt\Diagnostics\EfiBootLoader
    EfiBootLoaderResourceSet          REG_DWORD  2011 (0x7db) 或 2023 (0x7e7)
    EfiBootLoaderSelectionReason      REG_SZ     可读的选择原因
    EfiBootLoaderFirmwareDbLastError  REG_DWORD  上次读取/解析固件db的错误(0 = 无)
    EfiBootLoaderFirmwareDbxLastError REG_DWORD  上次读取/解析dbx的错误(0 = 无)
    FirmwareDbxPresent                REG_DWORD  dbx是否存在(0可为合法缺失)
    EfiBootLoaderInstalledResourceSet REG_DWORD  由ESP实际文件识别的套件
    VeraCryptLoaderFilesValid         REG_DWORD  DCS文件与一个内嵌套件完全匹配
    WindowsLoaderSigner               REG_DWORD  内嵌签名:0、2011或2023
    EfiBootLoaderSelectionTimeUtc     REG_SZ     上次选择的时间
以下命令在以管理员身份打开的PowerShell窗口中运行,可显示固件db中存在哪些Microsoft证书(请注意,在某些固件上,即使证书存在,这种简单文本搜索也可能看不到名称):
reg query HKLM\SOFTWARE\VeraCrypt\Diagnostics\EfiBootLoader /s

$t = [Text.Encoding]::ASCII.GetString((Get-SecureBootUEFI db).Bytes)
'Microsoft Corporation UEFI CA 2011',
'Microsoft Windows Production PCA 2011',
'Windows UEFI CA 2023',
'Microsoft UEFI CA 2023',
'Microsoft Option ROM UEFI CA 2023' |
  ForEach-Object { "$_ : $($t -match [regex]::Escape($_))" }

# 将ESP挂载为S:后检查内嵌签名;不要依赖可能返回目录签名的命令。
Get-PfxCertificate -FilePath S:\EFI\Microsoft\Boot\bootmgfw_ms.vc |
  Select-Object Subject,Issuer,Thumbprint
此外,VeraCrypt System Favorites服务会针对实际DCS文件与内嵌套件不匹配、Windows启动管理器缺失或其内嵌签名无法识别、已知所需CA不在db或被列入dbx,以及PCA 2011副本需要迁移等情况写入警告。这只是“已知CA兼容性”评估,并非固件一定接受映像的证明;dbx还可撤销映像哈希、证书TBS哈希和安全版本。

Microsoft 2023证书过渡

Microsoft Secure Boot的2011证书在2026年到期:Microsoft Corporation KEK CA 2011Microsoft Corporation UEFI CA 2011 已于2026年6月到期,Microsoft Windows Production PCA 2011 将于2026年10月到期。Microsoft会以2023 CA替换它们,并通过Windows Update分发新证书以及由 Windows UEFI CA 2023 签名的Windows启动管理器。
VeraCrypt用户需要注意两点:

仅信任2023 CA的新计算机

部分较新的计算机出厂时带有只包含 Windows UEFI CA 2023、完全没有Microsoft第三方CA的安全启动配置。在此类系统上,必须先在固件设置中启用VeraCrypt 2023引导加载程序套件所需的两个第三方CA(Microsoft UEFI CA 2023Microsoft Option ROM UEFI CA 2023)。该选项通常称为 "Allow Microsoft 3rd Party UEFI CA""Third-Party CA""Third-Party Certificates"。启用后,请以 修复/重新安装 模式运行VeraCrypt安装程序(或开始系统加密),以便VeraCrypt选择2023引导加载程序套件。
如果固件没有提供信任Microsoft第三方CA的方法,则无法在该机器启用安全启动的情况下使用VeraCrypt系统加密。

将现有系统更新到2023证书

Windows通过基于遥测的分阶段部署流程分发2023证书。只有在Microsoft对设备硬件/固件组合有足够信心后,设备才会自动更新。VeraCrypt系统加密计算机采用非标准启动链,因为VeraCrypt引导加载程序占用Windows启动管理器的标准位置;这可能影响维护检查,但Microsoft并未将VeraCrypt列为必然排除在部署之外的条件。Windows安全中心显示 "not yet enough data to classify your device" 只表示当前部署状态,不能证明原因是VeraCrypt。MicrosoftUpdateManagedOptIn 是加入Microsoft异步托管部署的另一种方式,需要允许发送相应的诊断数据,也不保证立即部署。不要把该方式与手动设置 AvailableUpdates 混用。
对于受控的手动部署,Microsoft将 0x5944 记录为显式请求2023 CA、KEK和Windows启动管理器迁移的值(参见Microsoft安全启动注册表指导)。它不会应用Windows PCA 2011的dbx撤销,VeraCrypt也绝不会自动设置此值。阅读下述预防措施后,才应在完全更新的Windows上使用:
reg add HKLM\SYSTEM\CurrentControlSet\Control\Secureboot /v AvailableUpdates /t REG_DWORD /d 0x5944 /f

rem 可选:立即运行维护任务(否则它每 12 小时运行一次):
schtasks /Run /TN "\Microsoft\Windows\PI\Secure-Boot-Update"
可在 HKLM\SYSTEM\CurrentControlSet\Control\SecureBoot 及其 Servicing 子项下监视进度,也可查看安全启动维护事件。AvailableUpdates 的预期变化顺序为 0x59440x4100,在所需任务运行和重启后最终为修饰值 0x4000。还应确认 UEFICA2023Status=Updated 并检查实际启动文件;仅有 0x4000 不能证明VeraCrypt的 bootmgfw_ms.vc 已刷新。db更新会添加 Windows UEFI CA 2023。对于已经信任 Microsoft Corporation UEFI CA 2011 的系统,它会有条件地添加 Microsoft UEFI CA 2023Microsoft Option ROM UEFI CA 2023;并非所有可安装VeraCrypt的系统都具有该旧版第三方CA。
在VeraCrypt系统加密机器上触发更新之前,请采取以下预防措施:
应用db更新后,VeraCrypt会在下次刷新引导加载程序时自动切换到2023引导加载程序套件(修复/重新安装、升级,或System Favorites服务的某个自动刷新点)。您可以在上文所述的诊断注册表键中验证结果,并在提示时重新创建救援盘。
Windows PCA 2011的dbx撤销是后续的独立操作,详见 Microsoft KB5025885。在确认 bootmgfw_ms.vcWindows UEFI CA 2023 签名、恢复介质已更新,并且启用安全启动的受控重启成功之前,不要请求其 0x80 位(或还会请求SVN更新的组合值 0x280)。VeraCrypt绝不会自动启用此撤销。

从安全启动故障中恢复

当固件安全启动配置不再信任启动链中的某个组件时,可能出现两类不同故障:
两种情况下,恢复步骤均为:
  1. 暂时在固件设置中禁用安全启动并正常启动Windows(禁用安全启动时VeraCrypt预启动身份验证仍可工作)。VeraCrypt救援盘可以恢复缺失或损坏的VeraCrypt引导加载程序组件,但无法生成当前的Windows启动管理器,也无法在PCA 2011 CA被加入dbx后使由其签名的 bootmgfw_ms.vc 重新获得信任;它不能替代完成Windows迁移。
  2. 在Windows中修复固件/Windows安全启动策略(启用第三方CA、自定义密钥流程后恢复当前dbx,或应用上述Windows更新),然后以 修复/重新安装 模式运行VeraCrypt。修复会检查Windows维护的 EFI_EX/EFI 副本,并可安装兼容的当前Windows启动管理器。
  3. 检查VeraCrypt诊断和内嵌签名,然后重新启用安全启动并执行一次受控重启。策略评估不完整或加载程序文件不兼容时不要重新启用。

旧版自定义密钥步骤(已弃用)

较旧VeraCrypt版本记录的自定义密钥流程(VeraCrypt-DCS SecureBoot 脚本 sb_set_siglists.ps1)会用自定义密钥、2011版Microsoft证书及过时的2018 dbx替换PK、KEK、db和dbx。此流程已经弃用,在2023证书链系统上不得使用:它会移除对新Windows启动管理器的信任、丢弃当前撤销并可能破坏Windows交接。应恢复制造商密钥和当前dbx。
 
下一部分 >>