LastPass 等密码管理器的安全性如何?

信息安全 密码 密码管理
2021-08-22 22:44:37

我使用 LastPass 来存储和使用我的密码,所以即使我每天要注册四到五个不同的帐户,我也没有重复的密码,而且密码很长。

LastPass 等密码管理器服务的安全性如何?他们不会造成单点故障吗?它们对黑客来说是非常有吸引力的服务。我如何才能信任这些服务及其安全机制背后的人?我想第三方(政府、公司等)很容易“贿赂”并获取我所有的密码。

是否有任何其他解决方案可以提供类似服务和类似易用性?

4个回答

我们应该区分离线密码管理器(如Password Safe)和在线密码管理器(如LastPass)。

离线密码管理器的风险相对较小。确实,保存的密码是单点故障。但是,您的计算机也是单点故障。违规的最可能原因是在您的计算机上安装了恶意软件。如果没有密码管理器,恶意软件可以悄悄地捕获您使用的所有密码。使用密码管理器会稍微糟糕一些,因为一旦恶意软件捕获了主密码,它就会获取您的所有密码。但是,谁在乎你从不使用的那些呢?从理论上讲,密码管理器可能被木马感染,或者有后门 - 但任何软件都是如此。信任广泛使用的密码管理器,例如 Password Safe,我感到很自在。

在线密码管理器的显着优势是您的密码可以在任何人的计算机上使用,但它们也带来了更大的风险。部分原因是在线数据库可能被破坏(无论是黑客攻击、法院命令、恶意内部人员等)。另外,由于 LastPass 与浏览器集成,它具有更大的攻击面,因此可能存在技术漏洞(独立应用不太可能像密码保险箱)。

现在,对于大多数人来说,这些风险是可以接受的,我建议对大多数密码使用像 LastPass 这样的密码管理器的方法比在任何地方使用相同的密码要好——这似乎是主要的选择。但是我不会将所有密码都存储在那里;努力记住你最重要的,比如网上银行。

我认识一个不会使用密码保险箱的人,而是有一个物理笔记本,他的密码以模糊的形式出现。这款笔记本显然对恶意软件更安全……它是否有更大的丢失/被盗风险是一个有趣的问题。

[披露:我为 1Password 的制造商 AgileBits 工作。由于我不宜评论竞争对手的安全架构,所以我将笼统地谈一谈,只谈一谈 1Password。]

是的。密码管理器会产生单点故障。你把所有的鸡蛋都放在一个篮子里。显然,我认为精心设计的密码管理器是正确的选择。但归根结底,这是每个人都需要为自己做出的选择。

看看这个篮子是如何受到保护的,这一点非常重要。使用 1Password,您可以阅读有关数据存储方式的详细信息。虽然我们大量使用 PBKDF2,但人们选择一个好的主密码非常重要。我见过的唯一确认的 1Password 数据泄露案例是,有人使用了与她用于未加密 POP3/HTTP Road Runner 电子邮件相同的主密码。她的 Dropbox 帐户也使用了相同的密码,该帐户也被接管,我们认为攻击者是如何获得 1Password 数据的。

至于信任密码管理器背后的人,这是一个更棘手的问题。我确实认为可以肯定地说,任何从事密码管理业务一段时间的人都不会冒险尝试从银行凭证或信用卡中赚取额外收益。即使我们内心是骗子,那也只是一件坏事,因为仅仅怀疑这种计划就会使供应商破产。在黑市上批量购买时,被盗的信用卡详细信息每张售价略高于 1 美元。银行凭证大约是其五倍。对于以销售密码管理工具为生的任何人来说,数学都不起作用。

正如已经提到的,在某些方案中,数据永远不会以任何格式发送给供应商。1Password 也是如此。我们从未看到有人如何使用 1Password。但是,为了跨系统同步数据,我们确实依赖第三方同步系统。因此,如果您使用 Dropbox 同步数据,您的加密数据可能会从 Dropbox 被盗,也可能会从您自己的计算机上被盗。您应该始终假设您的加密数据被捕获的可能性是不可忽略的。然后,这又回到了您的数据的加密程度,这是需要仔细查看的内容。

关于信任密码管理系统供应商的其他问题归结为信任我们的能力并相信我们没有被强迫/贿赂/“说服”以允许进入系统的后门。这要复杂得多。供应商如何处理被发现的安全漏洞?有多少产品的行为和设计是可独立验证的?创作者是否了解他们使用的加密货币?

对于没有来自用户的任何数据的系统,例如 1Password,我们甚至没有理由被政府机构联系(而且我们还没有接触过。)同时,您应该假设政府这样做可以访问您存储在同步系统上的数据。因此,这又回到了如何加密数据的问题。

免责声明:我创建PfP: Pain-free Passwords作为一种爱好,它可以被视为 LastPass 的竞争对手。

我已经多次调查了几个密码管理器的安全问题。特别是,到目前为止,我向 LastPass 报告了 12 个安全问题,并分析了导致这些问题的设计决策。因此,虽然 paj28 对密码管理器给出了非常好的一般性答案,但我可以提供一些细节。

当人们谈论在线密码管理器的安全性时,他们通常会关注服务器安全性。重点是攻击服务器的难易程度以及接下来会发生什么。然而,这只是一种攻击媒介,因为攻击您的本地密码管理器实例可能会导致相同的结果。事实上,攻击浏览器扩展可能是一种更有希望的做法,因为数据已经在那里解密,您不会在任何日志中留下痕迹。

让我分别看这两个方面。

攻击浏览器扩展

LastPass 浏览器扩展中存在大量漏洞的历史数据。所有这些漏洞都可以被任意网页利用。至少,这些是:

你注意到这里的模式了吗?LastPass 多年来一直在努力保护其自动填充功能并限制对其内部 API 的访问。每次有新报告证明他们之前的修复不完整时。

现在密码管理器无法安全地实施自动填充的情况并不少见,当我检查时,他们中的大多数人在这方面都有问题。虽然完全可以避免,但这些问题很常见,以至于我什至编制了一份清单,其中包含避免陷阱的建议。

但内部 API 问题非常显着。LastPass 以多种不同的方式将此 API 公开给网站。它本应仅限于 lastpass.com,但其逻辑非常复杂,以至于过去曾多次规避这些限制。尽管 LastPass 在其官方公告中尽最大努力淡化其严重性,但这些问题中的每一个都允许网站一次读出所有密码。更糟糕的是,Tavis Ormandy 的最新报告证明,内部 API 可用于使二进制 LastPass 组件在用户机器上执行任意代码。以前暴露内部 API 的所有缺陷也可能会这样做。

人们当然可以问为什么 LastPass 未能正确限制对内部 API 的访问。但更好的问题是为什么这个 API 会暴露给网站。这是因为 LastPass 功能的很大一部分不包含在扩展中,而是依赖于 LastPass 网站来工作。这是一个非常有问题的设计决定,但到目前为止,LastPass 似乎对修复它并不感兴趣。

攻击服务器端数据

让我们非常清楚地说明这一点:我们不信任服务器。并不是我们特别不信任 LogMeIn, Inc. - 至少不比任何其他公司更不信任。但是我们的密码是非常敏感的数据,即使是最有道德的公司也可能有流氓员工。再加上美国当局要求他们提供您的数据的可能性,这甚至不一定与刑事调查有关。不要介意他们的服务器被黑客入侵的可能性,就像它已经发生过一次一样。

因此,非常重要的是,您在服务器上的数据是加密的,并且对于任何可以掌握它的人来说都是无用的。但是什么可以阻止攻击者解密呢?正是一件事:他们不知道您用于派生加密密钥的主密码。所以关键的问题是:LastPass 是否充分保护了您的主密码和加密密钥?

在这方面,除了我自己的,我不知道有任何公开的研究,大部分都写在这篇博文中。我的结论是:LastPass 存在许多设计缺陷,其中一些已经解决,而另一些仍然有效。

暴力破解主密码

如果攻击者得到了一堆加密数据,最直接的解密方法是:猜测用于派生加密密钥的主密码。你可以在本地尝试无限数量的猜测,无论你买得起什么硬件,所以这个过程会相当快。

LastPass 使用 PBKDF2 算法从主密码中导出加密密钥。虽然不如 bcrypt、scrypt 或 Argon2 等较新的算法,但该算法具有使密钥派生速度变慢的重要特性,因此在本地进行猜测的攻击者将被减慢。所需时间与迭代次数成正比,这意味着:迭代次数越多,猜测主密码就越困难。

长期以来,LastPass 默认为 5,000 次迭代。这是一个极低的值,提供的保护很少。我计算出单个 GeForce GTX 1080 Ti 显卡每秒可用于测试 346,000 次猜测。这足以在一个多小时内通过各种网站泄漏已知的超过十亿个密码的数据库。

根据我的报告,LastPass 在 2018 年中期将默认值增加到 100,000 次迭代,这已经足够了。当然,如果你是一个重要的目标,可能会在猜测你的主密码时投入国家级资源,你仍然应该选择一个非常强大的主密码。

获取数据以进行暴力破解

我在 2018 年初的一项发现是,https://lastpass.com/newvault/websiteBackgroundScript.php任何网站都可以加载该脚本。该脚本包含您的 LastPass 用户名和一段加密数据(RSA 私钥)。由于您的 LastPass 用户名也是密码派生盐,因此有人需要在本地暴力破解您的主密码。

这个问题当然很快就解决了。然而,这个缺陷非常明显,以至于我想知道我是否是第一个发现它的人。虽然我敦促 LastPass 检查他们的日志,以寻找该漏洞在野外被利用的迹象,但据我所知,这项调查从未发生过。

“服务器端回合”作为无用的保护

在 2011 年发生安全事件之后,LastPass实施了一个额外的安全机制:除了在客户端进行 PBKDF2 迭代之外,他们还将在服务器上添加另外 100,000 次迭代。所以理论上,如果有人可以从服务器上获取数据,这将增加猜测您的主密码所需的工作量。

在实践中,我可以最终证明这些额外的 100,000 次迭代仅适用于密码哈希。所有其他用户数据(密码、RSA 密钥、OTP 等)仅使用从您的主密码本地派生的加密密钥进行加密,此处没有额外保护。结论:这种额外的“保护”完全是对服务器资源的浪费,并没有提供任何价值。

从后门进入

无论保护多么薄弱,暴力攻击对于最强的主密码总是无效的。然而,LastPass 的设计包含大量后门,可以在不花费任何精力的情况下解密数据。

网页界面

LastPass 方便地为您提供 Web 界面,无需浏览器扩展程序即可访问您的密码。但是,此功能是一个陷阱:无论何时您在 Web 上的登录表单中输入您的主密码,都无法知道它是否会在将主密码发送到服务器之前使用 PBKDF2 对您的主密码进行哈希处理,或者它是否会将其传输为明文文本。

还记得我们不信任服务器吗?然而,对服务器提供的 JavaScript 代码进行微小的修改就足以破坏您的所有密码。即使您检查该 JavaScript 代码,也有太多内容让您无法注意到任何内容。并且可以仅将修改后的代码提供给特定用户。

帐号设定

即使您始终使用浏览器扩展程序,只要您进入帐户设置,它也会加载 lastpass.com 网站。再说一次,您无法知道该网站没有受到威胁,也不会在后台窃取您的数据。

通过回退到 lastpass.com 网站也实现了其他几个扩展功能,LastPass 在这里没有发现问题。

恢复一次性密码

LastPass 具有一次性密码 (OTP) 的概念,如果您忘记了主密码,您可以使用该密码从您的帐户中恢复数据。这些 OTP 允许解密您的数据,但服务器通常不知道。

为了使恢复更加可靠,LastPass 将默认自动创建一个恢复 OTP 并将其存储在扩展数据中。这里的问题:恢复过程的设计方式使得扩展程序会立即为 lastpass.com 提供按需恢复 OTP,甚至无需通知您。因此,受感染的 LastPass 服务器可能会要求您的恢复 OTP 扩展程序并使用它来解密您的数据。

根据 LastPass 的说法,这个问题已在 2018 年 8 月得到解决。我不知道他们是如何解决的,至少我在他们的代码中看不到任何明显的解决方案。

加密密钥的公开

在许多情况下,扩展程序会将您的本地加密密钥直接暴露给 LastPass 服务器。这是为了帮助基于 Web 的 LastPass 功能更好地与浏览器扩展集成,但它抵消了本地加密数据的效果。以下动作都是有问题的:

  • 开户设置、安全挑战、历史记录、书签、信用监控
  • 链接到个人帐户
  • 添加身份
  • 如果未安装二进制组件,则导入数据
  • 打印所有站点
  • 点击违规通知

最后一个特别严重,因为 LastPass 服务器可以随意向您发送违规通知。因此,LastPass 可以随时访问您的数据,而不是等待您自己使用有问题的功能。

更多设计缺陷

  • 正如您在登录时打开https://lastpass.com/getaccts.php所看到的那样,LastPass 保险库绝不是加密的数据块。它宁愿在这里和那里加密数据,而与帐户对应的 URL 等其他字段仅使用十六进制编码。这个问题在2015 年的演示文稿中被指出,并且从那时起更多的字段被加密 - 然而,到目前为止还不是全部。特别是,我提交的一份报告指出,未加密的等效域允许 LastPass 服务器修改该列表并以这种方式提取您的密码。根据 LastPass 的说法,这个特定问题已于 2018 年 8 月得到解决。
  • 同一演示文稿谴责 LastPass 使用AES-ECB进行加密。除其他外,它会泄露您的哪些密码是相同的。从那以后,LastPass 一直在过渡到 AES-CBC,但是当我查看我的“保险库”时,我在那里看到了一堆 AES-ECB 加密的凭据(你可以看出,因为 AES-ECB 只是一个 base64 编码的 blob,而 LastPass AES-CBC 的变体以感叹号开头)。
  • 自动创建并存储在扩展数据中的恢复 OTP 意味着任何有权访问您的设备和电子邮件地址的人都可以访问您的 LastPass 帐户。这实际上已记录在案并被认为是低风险的。也许您的一位同事通过以您的名义发送电子邮件来对您进行恶作剧,因为您忘记锁定计算机 - 下次即使您已退出 LastPass,他们也可能会接管您的 LastPass 帐户。
  • 说到注销,默认会话到期时间是两周。虽然当然很方便,但大多数处理敏感数据的产品的会话到期间隔要短得多,通常远低于一天,这是有原因的。
  • 对于将值与秘密(例如作为签名)结合起来,通常会使用 SHA256-HMAC。LastPass 使用自定义方法,应用 SHA256 散列两次。虽然 HMAC 旨在解决的攻击似乎在这里没有发挥作用,但我不会打赌比我有更好的加密知识的人毕竟在这里找不到漏洞。此外,服务器端偶尔也会产生一些 SHA256 令牌 - 我想知道在我看不到它的地方发生了什么样的骗局以及它是否真的安全。

杰弗里的回答特别有见地——主要风险都在经济方面。最大的威胁之一可能是失败的密码管理器(那些没有为他们的作者赚到足够钱的人)。恶意行为者可以通过购买产品并更改程序以向自己发送数据(可能以难以检测的方式)来“拯救”开发人员。因此,确保您使用的密码管理器对它的作者来说似乎在经济上是成功的,这可能很重要。

我最近对我已经使用了很长时间(并且之前付费)的密码管理器应用程序感到不安。开发似乎在很大程度上停止了,该应用程序变得免费(我认为这是一个很大的危险信号)并且所有权可能已经易手。我已经切换到另一个应用程序,但很难知道我的数据是否被泄露。