关于转储加密
转储加密可用于加密为系统生成的故障转储和实时转储。 转储使用为每个转储生成的对称加密密钥进行加密。 然后使用受信任的主机管理员指定的公钥(故障转储加密密钥保护程序)对该密钥本身进行加密。 这可确保只有具有匹配私钥的人员才能解密进而访问转储的内容。 此功能在受保护的结构中得到利用。 注意:如果配置转储加密,还需要禁用 Windows 错误报告。 WER 无法读取加密的故障转储。
配置转储加密
手动配置
若要使用注册表启用转储加密,请在 HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\CrashControl
下配置以下注册表值
值名称 | 类型 | 值 |
---|---|---|
DumpEncryptionEnabled | DWORD | 1 用于启用转储加密,0 用于禁用转储加密 |
EncryptionCertificates\Certificate.1::PublicKey | 二进制 | 应用于加密转储的公钥(RSA,2048 位)。 必须将其格式化为 BCRYPT_RSAKEY_BLOB。 |
EncryptionCertificates\Certificate.1::Thumbprint | 字符串 | 证书指纹允许在解密故障转储时在本地证书存储中自动查找私钥。 |
使用脚本进行配置
为简化配置,可使用示例脚本启用基于证书公钥的转储加密。
- 在受信任的环境中:使用 2048 位 RSA 密钥创建证书并导出公共证书
- 在目标主机上:将公共证书导入本地证书存储
- 运行示例配置脚本
.\Set-DumpEncryptionConfiguration.ps1 -Certificate (Cert:\CurrentUser\My\093568AB328DF385544FAFD57EE53D73EFAAF519) -Force
解密加密转储
若要解密现有的加密转储文件,需要下载并安装适用于 Windows 的调试工具。 此工具集包含可用于解密加密转储文件的 KernelDumpDecrypt.exe。 如果当前用户的证书存储中存在包含私钥的证书,则可以通过执行调用操作来解密转储文件
KernelDumpDecrypt.exe memory.dmp memory_decr.dmp
解密后,WinDbg 等工具可以打开解密的转储文件。
排查转储加密问题
如果在系统上启用了转储加密,但未生成转储,请检查系统的 System
事件日志中是否存在 Kernel-IO
事件 1207。 当无法初始化转储加密时,将创建此事件并禁用转储。
详细错误消息 | 缓解步骤 |
---|---|
缺少公钥或指纹注册表 | 检查这两个注册表值是否处于预期位置 |
公钥无效 | 确保存储在 PublicKey 注册表值中的公钥存储为 BCRYPT_RSAKEY_BLOB。 |
不支持的公钥大小 | 目前仅支持 2048 位 RSA 密钥。 配置与此要求匹配的密钥 |
还要检查 HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\CrashControl\ForceDumpsDisabled
下的值 GuardedHost
是否设置为 0 以外的值。 这会完全禁用故障转储。 如果是这种情况,请将其设置为 0。