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

有没有比Windows DPAPI更安全的方法来保护和存储密码?,windows,security,store,Windows,Security,Store,有没有比Windows DPAPI更安全的方法来保护和存储密码 我的程序需要存储一个秘密(比如凭据)才能在Windows上进行自动登录,而且这个秘密必须与其他用户帐户共享,因为程序可以在不同的帐户上运行,但需要共享凭据 我需要保护这个秘密不被篡改,以避免攻击者注入自己的凭据并获得控制权。如果攻击者具有物理访问权限,我知道我们无能为力,但是。。。。目前,存储和保护此机密的最佳方法是什么?如果您想保护某些内容不被篡改,最好采用多级方法。这样做的缺点是获得访问权限(即使有所有机密)是一项天文壮举,并且

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

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


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

如果您想保护某些内容不被篡改,最好采用多级方法。这样做的缺点是获得访问权限(即使有所有机密)是一项天文壮举,并且会增加登录时间

然而,请记住,一个系统的安全性取决于其最薄弱的环节;你可以在一个隐藏的加密卷中使用更多的自定义加密层,但是如果你在办公桌旁的便笺上有密码,那么它很可能不会长期安全

这同样适用于windows上的安全性。ACL和加密只与管理员帐户的功能一样强大。有关安全性的提示,请尝试

至于系统本身,以某种方式通过密钥或数字证书实施公钥加密(非对称加密),并为每个用户提供各自的密钥/ID,是一种安全得多、风险小得多的选择。
Windows支持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.

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

如果你想自己控制安全,你可以使用自己的功能实现。这在技术上是对称密钥加密的一个例子,因为用户有一个共享的秘密。请参阅,也要感谢@Hiroto,但对于对称加密,我需要一个密钥来加密和解密数据,并且该密钥必须存储在计算机中(例如文件),问题是,如何保护该密钥和文件免受远程篡改?攻击者可以同时篡改它们(密钥和包含加密数据的文件)。例如,我们可以使用DPAPI加密数据,将其存储在文件中,并使用ACL对其进行保护。但是我不确定这个场景是否是最安全的。非常感谢@Hiroto。我同意你的看法。我的系统能够检测到篡改企图并相应地锁定此帐户,但即使使用此安全系统,我的意图是尽可能强化此秘密,以使篡改工作复杂化。