有没有比Windows DPAPI更安全的方法来保护和存储密码?

有没有比Windows DPAPI更安全的方法来保护和存储密码?

我的程序需要存储一个秘密(类似凭据的东西)在Windows上进行自动login,并且这个秘密必须与其他用户帐户共享,因为程序可以在不同的帐户上运行,但共享凭据。

我需要保护这个秘密免遭篡改,以避免攻击者注入自己的凭据并采取控制措施。 如果攻击者有物理访问权限,我知道我们无能为力,但是….现在,存储和保护这个秘密的最好方法是什么?

如果你想确保防止篡改,你可能会采用多层次的方法。 这样做的缺点是获得访问权限(即使是所有的秘密)是一个天文数字的壮举,并会提高你的登录时间。

但请记住,一个系统只是最薄弱的一点, 你可以在一个隐藏的加密卷中有一个文件在更多层的自定义加密之后,但是如果你的办公桌在工作时在便条上留下了密码,那么很可能不会很安全。

窗口上的安全性也一样。 ACL和加密只与您的管理员帐户一样强大。 有关安全性的提示,请尝试服务器故障 。

至于系统本身,以某种方式通过密钥或数字证书实施公钥密码(非对称加密),并给予每个用户自己的个人密钥/ ID是一个更安全的替代方案,风险少得多。
Windows至少支持windows server 2000 ,所以支持pubkey基础设施。 你甚至可以使用智能卡登录,如果你有它的硬件。

考虑以下:
1.攻击者从用户那里获得一个私钥(带有保护)。 这可以在平均硬件上在一两个小时内打破2048bit。 在这个例子中,你只需要删除用户的公钥并让他们重新生成一个新的密钥。
2.攻击者获得用户的数字证书,那么你有两个选择:

1) Remove their certificate from the Active Directory store, ACL or other certificate store. 2) Issue a revocation on the certificate, and forceably expire it. This assumes your are acting as the certificate authority. 

总之,这个答案指出了一件事情: 如果你担心密码安全性太大,那么你不应该使用密码。 如果你让你的系统永远被打破,那么另一种方式是一个僵尸网络的密码。