3

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

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

我需要保护这个秘密不被篡改,以避免攻击者注入他自己的凭据并取得控制权。如果攻击者具有物理访问权限,我知道我们无能为力,但是.... 目前,存储和保护这个秘密的最佳方式是什么?

4

1 回答 1

1

如果你想保护某些东西不被篡改,你可能最好使用多层次的方法。这样做的缺点是获得访问权限(即使拥有所有秘密)是一项天文壮举,并且会增加您的登录时间。

但是请记住,系统的安全性取决于其最弱点。您可以在隐藏的加密卷中拥有一个文件,隐藏在更多层的自定义加密之后,但是如果您在办公桌旁的便利贴上有密码,那么它很可能不会长期安全。

这同样适用于 Windows 上的安全性。ACL 和加密仅与您的管理员帐户一样强大。有关安全提示,请尝试Server Fault

至于系统本身,以某种方式通过密钥或数字证书实施公钥加密(非对称加密)并为每个用户提供自己的个人密钥/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.

简而言之,这个答案说明了一件事:如果您非常担心密码安全性,那么您不应该使用密码。如果你让你的系统永远崩溃,那么替代路线是密码的僵尸网络暴力破解。

于 2012-09-26T23:24:37.583 回答