是否有比Windows DPAPI更安全的方式来保护和存储密码?
我的程序需要存储一个秘密(类似凭据)来在Windows上进行自动登录,这个秘密必须与其他用户帐户共享,因为该程序可以在不同的帐户上运行,但共享凭据。
我需要保护这个秘密不被篡改,以避免攻击者注入自己的凭据并采取控制措施。如果攻击者具有物理访问权限,我知道我们无能为力,但......目前,存储和保护这个秘密的最佳方式是什么?
答案 0 :(得分:0)
如果你想要防止篡改,你可能会采用多层次方法。这样做的缺点是获得访问权限(即使有所有秘密)也是天文专长,并且会增加你的登录时间。
但请记住,系统只有最弱点才能安全;你可以在一个隐藏的加密卷中有一个文件,后面是更多层的自定义加密,但是如果你在办公桌上的便利贴上有密码,那么它很可能不会很长时间安全。
这同样适用于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.
简而言之,这个答案陈述了一件事:如果你担心密码安全性那么多,那么你不应该使用密码。如果你让你的系统永远打破,那么另一条路线就是僵尸网络强大的密码。