密码管理器的设计缺陷

2021-01-04 20:02:37

我曾经在高度管制的环境中工作,需要一种方法来召回数十个经常更改的复杂密码。我尝试使用密码管理器,但是由于某些常见设计缺陷的负担和不安全性而无法使用。我写了确定性密码生成器DPG来解决这个问题。

如果在阅读此书后仍希望使用传统的密码管理器,建议您将密码放入纯文本文件中,并使用GnuPG对称加密它或使用“密码安全”。我也没有关系

存储密码后,必须对密码进行加密,然后在以后需要时进行检索。任何类型的存储都是一个负担。要求用户备份存储的密码,在设备之间同步它们,并采取措施保护它们。

用户还必须设计一个主密码来解锁由密码管理器存储的加密密码。这类似于主密钥。通常公认的是,主钥匙锁的安全性比非主钥匙锁低。如果公开了主密码,则将失去信心(对其解锁的所有密码)。

而且,我们确定用于存储密码的加密是否已正确实施?加密是否已通过外部验证?某些密码管理器是开源且专有的,无法进行检查。

加密很难。甚至受人尊敬的具有多年经验(很少犯错误)的专家开发人员的确会犯错误,从而使加密功能很弱甚至在某些情况下几乎毫无用处。

具有讽刺意味的是,密码管理器很大程度上依赖于远程系统,因为它们存储密码。第一个设计缺陷导致第二个缺陷。

远程系统不受用户控制。它们是不透明的,无法检查,并且不应被密码管理信任。这些系统可能在需要时不可用。他们可能没有正确存储或传输密码。

从外部看,这些系统似乎是正确的(强HTTPS,合理的CSP),但在幕后,没人真正知道发生了什么。密码如何在内部传输,生成和存储?谁可以访问它们?

如今,Web浏览器内置了“除厨房水槽之外的所有东西”功能,并且每年都在变得越来越复杂。他们正在变成整个平台,这些平台具有浏览器插件和扩展程序,可以满足人类已知的每种可能的需求。

尽管其中许多附加组件既方便又有用,但我们不应该通过密码管理来信任它们。浏览器太复杂了,正在进行的事情太多了。

我在2010年左右写了DPG(确定性密码生成器)来解决上述设计缺陷。这是其关键概念。

切勿存储密码。而是根据用户输入根据需要生成它们。无需备份,同步和正确加密密码。没有主密码可立即解锁所有其他密码。没有任何东西会丢失,被盗或损坏。

DPG是开源的,并具有多种实现。生成的密码可以通过多种编程语言的外部实现进行验证和验证。

DPG消除了我多年来使用传统密码管理器遇到的许多缺陷。 试试看。 您可能会喜欢。 我希望您发现它和我一样有用。