0

我试图弄清楚如何实现 Windows 凭据漫游。我发现它会漫游受密码严格保护的证书(CryptProtectData() 的可选熵)。

除非 Windows 在导入证书时在某处保留密码副本,否则我看不到如何做到这一点。将 %APPDATA%/Crypto/RSA{UserSID} 中的文件复制到另一台机器将不起作用,因为密钥是使用用户 DPAPI 主密钥和可选密码加密的。

除了使用 ProcMon 之外,我不知道还有什么可以尝试或查看以解决这个问题。任何有助于解决这个问题的指针将不胜感激!

4

1 回答 1

1

CryptProtectData做了更多的事情,使整个事情成为可能。

DPAPI 将生成用于加密的密钥。然后,DPAPI 密钥将使用从您的密码派生的另一个密钥进行加密。

在凭证漫游中发送的是 DPAPI 密钥,而不是您的密码。

当您更改密码时,这也允许 DPAPI 继续(本地)工作。否则,Windows 将不得不跟踪存储在各处(文件、注册表项等)的 DPAPI 加密 blob,以加密到新的密码派生密钥。有无限数量的应用程序,使其成为不可能。

相反,密钥位于一个众所周知且隐藏良好的位置,用户永远不会看到。Windows 可以轻松地使用新密码重新加密 DPAPI,从而保护使用它的应用程序免受密码更改的影响。

凭证漫游也使用相同的机制来保持用户密码的独立性。

这个网站有提取SYSTEM账户DPAPI密钥的代码,以及一些结构信息,可能对你调试有帮助。

于 2012-09-14T18:16:34.807 回答