转储加密可用于加密为系统生成的故障转储和实时转储。 使用为每个转储生成的对称加密密钥对转储进行加密。 然后使用受信任的主机管理员指定的公钥(故障转储加密密钥保护程序)对该密钥本身进行加密。 这可确保只有具有匹配私钥的人才能解密,从而访问转储的内容。 此功能在受保护的结构中得到利用。 注意:如果配置了转储加密,则还应禁用 Windows 错误报告。 WER 无法读取加密的故障转储。
配置转储加密
手动配置
若要使用注册表启用转储加密,请在以下注册表下配置以下注册表值 HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\CrashControl
值名称 | 类型 | 价值 |
---|---|---|
DumpEncryption已启用 | DWORD | 1 启用转储加密,0 禁用转储加密 |
EncryptionCertificates\Certificate.1:PublicKey | 二进制 | 用于加密数据转储的公钥(RSA,2048 位)。 这必须格式化为 BCRYPT_RSAKEY_BLOB。 |
EncryptionCertificates\Certificate.1::指纹 | 字符串 | 证书指纹允许在解密故障转储时在本地证书存储中自动查找私钥。 |
使用脚本进行配置
为了简化配置, 可以使用示例脚本 基于证书中的公钥启用转储加密。
- 在受信任的环境中:使用 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 密钥。 配置符合此要求的密钥 |
另请检查GuardedHost
中的HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\CrashControl\ForceDumpsDisabled
值是否设置为 0 以外的值。 这会完全禁用故障转储。 如果是这种情况,请将其设置为 0。