我想像这样使用DPAPI加密密码
ProtectedData.Protect(plain, optionalEntropy, DataProtectionScope.CurrentUser);
并且想知道域管理员是否可以解密生成的blob,如Using Passwords Effectively 所述:
但是,在域环境中,域管理员可以安全地更改您的密码,您仍然可以访问加密文件。
看起来域管理员必须首先解密数据(或者更确切地说,加密的主密钥),以便能够使用不同的密码对其进行重新加密。
答案是肯定的,前提是他也可以访问熵密钥(如果创建了一个密钥),或者他是否愿意并且有足够的能力入侵blob(参见下面的链接)。
对于DPAPI中的主密钥(在CurrentUser模式下),Windows登录用户名和密码用于生成主密钥。如果管理员更新用户的域密码,DPAPI将重新编码该用户的主密钥。如果用户由于例如更新他的密码也是如此。每月密码更改政策。
但是,如果他无法访问可选的熵密钥或组成该密钥的数据,则该文件将保持加密状态,并且他将获得的只是无效数据。
如果在CurrentMachine模式下使用DPAPI,则该文件只能在加密它的计算机上解密,但该文件对该计算机上的所有帐户都是可读的,只要它们也可以集中熵密钥的内容。
一个很好的信息库是DPAPI Secrets和this paper on reverse-enginerring DPAPI + link to a tool that can recover data from DPAPI blobs
简短的回答:他可能无法开箱即用,但Domain Admin非常强大。如果他们确实需要,他们可以通过多种方式获取密钥。
答案很长:DPAPI使用密钥加密您的数据。 IIRC,它使用AES,密钥每90天更换一次。密钥存储在您的计算机上,使用您的密码加密。这是默认设置,它可以将您的密钥保存在除了您以外的任何人之外。
除非您的域管理员远程安装键盘记录器,窃取您的密码,冒充您并窃取您的密钥(或直接转到他现在以纯文本形式看到的数据)。
另一个鲜为人知的事实是,当在Active Directory上启用Credential Roaming时,它会将加密的密钥发送到服务器。域管理员可以将该副本用于脱机攻击。但这很难,除非你的数据很有价值,否则我不担心。