每个人都说“代码是开源的,去看看吧”。事实是,我既不知道如何验证复杂的代码,也无法理解代码中的二进制文件或预测它们的行为。有没有人真正读过它,理解它并验证它
- 正确实施 AES 标准
- 后门
- 程序本身将数据发送到它不应该发送到的地方的风险(恶意代码)。
我通过在线研究完成了我的工作,并没有发现任何严重的证据(他们实际上是在判断密码学的实施)验证这一点并确认它可以安全使用。如果有人可以向我指出相关文献或验证他们是否真的完成了这项工作,那将非常有帮助。
每个人都说“代码是开源的,去看看吧”。事实是,我既不知道如何验证复杂的代码,也无法理解代码中的二进制文件或预测它们的行为。有没有人真正读过它,理解它并验证它
我通过在线研究完成了我的工作,并没有发现任何严重的证据(他们实际上是在判断密码学的实施)验证这一点并确认它可以安全使用。如果有人可以向我指出相关文献或验证他们是否真的完成了这项工作,那将非常有帮助。
加利福尼亚大学的 Paolo Gasti 和 Kasper Bonne Rasmussen 发表了一篇论文,研究了各种密码管理器使用的存储格式——他们确实强调了 Keepass 2.x 格式的一些问题,但这些问题在论文发表后已得到修复.
还发布了一个工具KeeFarce,它声称能够从运行的 Keepass 实例的内存中提取密码。
但是,我找不到任何证据表明对代码进行了独立的安全分析。我找不到任何反对 PasswordSafe 的证据,它也可能是最直接的竞争对手。
不过,在这种情况下,考虑到最常见的攻击向量,我怀疑即使是具有本地缺陷的密码保险箱(例如内存中的数据可恢复)也比跨多个站点重复密码要好。非民族国家/间谍攻击者很少使用特定密码。他们倾向于使用包含许多不同密码的数据库转储,寻找可以用来获得价值的潜在有用数据,以更有用的站点或商品的形式。即使是带有站点特定密码的未加密文本文件,也存储在您的本地系统上(请不要这样做!) 与记住一个非常强大的密码并在任何地方使用它相比,提供了对这种攻击方法的良好保护。显然,如果保险箱将密码数据发送给第三方,这将不适用,但这也更容易检查 - 在通过监控开关连接的机器上运行应用程序,看看它是否发送任何你没有发送的东西期待在使用过程中。
我完全愿意对各种开源密码安全系统进行独立的安全分析,但这确实需要专业知识,并且如果代码库的任何部分发生重大更改,则需要重复。对于任何孤独的开源开发人员来说,这可能超出了预算。在那之前,我宁愿人们为他们登录的每个站点使用唯一的密码,即使是有缺陷的本地实现也可能总体上更安全。
我个人也没有资格审查代码并对其进行评论,但是,我可以告诉您,从计算机通过网络提交代码(“数据包”)并不是一件容易的事:您需要提供网络地址并克服操作系统防火墙和防病毒防火墙。我还发现了一篇论文,似乎表明作者已经研究了这个程序的实现。除了这些假设之外,还有我进行的测试:
我在一台测试计算机上安装了 KeePass,该计算机上除了安装了操作系统和驱动程序之外没有任何程序。所有驱动程序都被阻止从 Internet 获取更新。我使用防火墙(Sophos Enterprise 防火墙)的日志查看了网络流量,发现没有从 KeePass 到任何外部网络方的通信。此外,除了一些主机/Windows 进程外,我发现我的计算机与 Internet 没有任何通信。