Windows凭据漫游 - 密码保护密钥如何发送到AD服务器?

时间:2012-09-14 15:04:33

标签: windows winapi dpapi

我正在试图弄清楚如何实施Windows凭据漫游。我发现它将漫游使用密码强烈保护的证书(CryptProtectData()的可选熵)。

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

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

1 个答案:

答案 0 :(得分:1)

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

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

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

同样的事情也允许DPAPI在您更改密码时继续(本地)工作。否则,Windows必须跟踪存储在各处的DPAPI加密blob(文件,注册表项等)以加密到新密码派生密钥。有无数的应用程序,使其无法实现。

相反,密钥位于一个众所周知且隐藏得很好的位置,用户从未见过。 Windows可以使用新密码轻松地重新加密DPAPI,从而屏蔽使用密码更改的应用程序。

凭据漫游也使用相同的机制来保持与用户密码无关。

本网站有code to extract the SYSTEM's account DPAPI key,以及有关结构的一些信息,它可能有助于您调试。