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引导加载程序:
-
2011套件:通过 Microsoft Corporation UEFI CA 2011 签名。这是自安全启动引入以来固件用于第三方引导加载程序的CA。
-
2023套件:通过更新后的Microsoft第三方CA签名。主引导加载程序(
DcsBoot.efi)通过 Microsoft UEFI CA 2023 签名,其他组件(DcsInt.dcs、LegacySpeaker.dcs)通过 Microsoft Option ROM UEFI CA 2023 签名。因此,2023套件要求固件安全启动签名数据库(db)中同时存在 两个 证书:Microsoft UEFI CA 2023 和 Microsoft Option ROM UEFI CA 2023。
在安装、升级、修复/重新安装以及开始系统加密时,VeraCrypt会读取固件db,并选择签名CA受固件信任的引导加载程序套件。如果存在2023 CA对,则优先使用2023套件;否则,在 Microsoft Corporation UEFI CA 2011 受信任时使用2011套件。如果启用安全启动且固件不信任任何套件,VeraCrypt会拒绝安装其引导加载程序并显示错误,而不会安装一个在下次重启时会被固件拒绝的加载程序。
更改固件安全启动配置(例如在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 = 无)
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($_))" }
此外,当VeraCrypt System Favorites服务检测到当前安全启动db不再信任已安装启动链中的某个组件时,会向Windows应用程序事件日志(源 VeraCryptSystemFavorites)写入警告。
Microsoft 2023证书过渡
Microsoft Secure Boot的2011证书在2026年到期:Microsoft Corporation KEK CA 2011 和 Microsoft Corporation UEFI CA 2011 已于2026年6月到期,Microsoft Windows Production PCA 2011 将于2026年10月到期。Microsoft会以2023 CA替换它们,并通过Windows Update分发新证书以及由 Windows UEFI CA 2023 签名的Windows启动管理器。
VeraCrypt用户需要注意两点:
-
证书到期不会阻止已安装的引导加载程序启动。 UEFI固件在安全启动验证期间不会评估证书有效期,因此通过2011 CA签名的引导加载程序在到期日期之后仍会在几乎所有固件实现上继续加载。到期意味着 新的 二进制文件不能再通过2011 CA签名,并且从未收到2023证书的系统将停止接收启动链安全更新。
-
未来撤销2011 CA会阻止通过它们签名的引导加载程序启动。 Microsoft已宣布,在过渡的后续阶段(尚未排期),可能会通过安全启动禁止签名数据库(dbx)在已完成过渡的系统上撤销2011 CA。因此建议在该阶段之前迁移到2023引导加载程序套件。
仅信任2023 CA的新计算机
部分较新的计算机出厂时带有只包含 Windows UEFI CA 2023、完全没有Microsoft第三方CA的安全启动配置。在此类系统上,必须先在固件设置中启用VeraCrypt 2023引导加载程序套件所需的两个第三方CA(Microsoft UEFI CA 2023 和 Microsoft 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启动管理器的位置),此类计算机通常不会被归类为自动更新对象,因此部署流程不会自行触发。Windows安全中心可能报告 "not yet enough data to classify your device"。同样,选择加入Microsoft管理的部署流程(MicrosoftUpdateManagedOptIn 注册表值)在这些计算机上可能仍不足以触发更新。
Microsoft文档提供了一个用于显式触发更新的注册表值(参见Microsoft KB5068202,"Registry key updates for Secure Boot")。在以管理员身份打开的命令提示符中运行:
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 下监视进度(值 UEFICA2023Status 和 UEFICA2023Error),也可通过Windows事件日志中的安全启动维护事件监视。db更新会添加 Windows UEFI CA 2023;在已经信任 Microsoft Corporation UEFI CA 2011 的系统上(每台启用安全启动的VeraCrypt系统都是如此),还会添加 Microsoft UEFI CA 2023 和 Microsoft Option ROM UEFI CA 2023。
在VeraCrypt系统加密机器上触发更新之前,请采取以下预防措施:
-
首先将BIOS/UEFI固件更新到计算机制造商提供的最新版本。 新证书写入固件安全启动数据库失败通常由固件错误造成,Microsoft建议在应用证书更新之前先向设备制造商确认是否有更新的固件。
-
首先创建或更新VeraCrypt救援盘,并验证它能够启动。
-
不要禁用 VeraCrypt System Favorites 服务或其引导加载程序更新功能。当Windows维护任务在标准位置安装2023证书签名的Windows启动管理器时,该服务负责保留VeraCrypt启动链:它将新的启动管理器保存为
bootmgfw_ms.vc(VeraCrypt在预启动身份验证后链式加载的副本),并恢复VeraCrypt引导加载程序。
-
隐藏操作系统用户不应从隐藏操作系统触发更新。 运行隐藏操作系统时,自动启动链保留功能被禁用。
-
避免在Windows替换启动管理器到下一次正常重启或关机之间强制断电。在大多数系统上,VeraCrypt启动项会在这个时间窗口内保持计算机可启动,但忽略启动顺序的固件可能会启动普通Windows启动管理器,而它无法启动加密的Windows(可用救援盘恢复)。
-
即使一切正常,也应预期Windows仍会报告安全启动证书维护未完全完成。Windows会检查标准启动管理器位置的文件是否为2023证书签名的Microsoft Boot Manager;在VeraCrypt系统上,该位置按设计保存VeraCrypt引导加载程序。此状态仅为显示问题,不影响系统安全性或运行。
应用db更新后,VeraCrypt会在下次刷新引导加载程序时自动切换到2023引导加载程序套件(修复/重新安装、升级,或System Favorites服务的某个自动刷新点)。您可以在上文所述的诊断注册表键中验证结果,并在提示时重新创建救援盘。
从安全启动故障中恢复
当固件安全启动配置不再信任启动链中的某个组件时,可能出现两类不同故障:
-
密码提示出现之前(例如 "Secure Boot Violation" 消息,或立即返回固件):固件不信任为已安装VeraCrypt引导加载程序签名的CA。
-
成功输入密码之后(VeraCrypt引导加载程序显示明确的安全启动错误消息,或在较旧加载程序版本上返回密码提示):固件不信任为Windows启动管理器副本(
bootmgfw_ms.vc)签名的CA,而该副本由VeraCrypt链式加载。
两种情况下,恢复步骤均为:
-
暂时在固件设置中禁用安全启动并正常启动Windows(禁用安全启动时VeraCrypt预启动身份验证仍可工作),或启动VeraCrypt救援盘并使用 "将VeraCrypt加载程序二进制文件恢复到系统磁盘"。
-
在Windows中,根据需要调整固件/Windows安全启动证书(在固件设置中启用第三方CA,或按上文所述应用Windows安全启动证书更新),然后以 修复/重新安装 模式运行VeraCrypt安装程序。
-
重新启用安全启动。
旧版自定义密钥步骤(已弃用)
较旧的VeraCrypt版本曾记录一种自定义密钥流程(VeraCrypt-DCS的 SecureBoot 脚本,sb_set_siglists.ps1),它用自定义平台密钥和2011版Microsoft证书替换固件安全启动数据库。此流程已经弃用,在使用2023证书链的系统上不得使用:它会移除对2023证书签名的Windows启动管理器的信任,并在VeraCrypt预启动身份验证后破坏Windows启动过程。已应用该流程的系统应恢复制造商安全启动密钥,然后按照本页所述的正常步骤操作。