如果我的 bcrypt 哈希是公开的,是否有可能被黑客入侵?

信息安全 哈希 bcrypt
2021-08-15 22:42:29

我刚刚检查了https://haveibeenpwned.com/并且我注意到我被 pwned 了,因此我检查了托管我的“凭据”详细信息的文件,但是,我看到我的电子邮件是纯文本的,但密码是bcrypt哈希。

由于散列函数是一种方式并且不能被逆转,我是否仍然应该担心并更改我所有的密码,还是我太偏执了?

编辑:当我的意思是“我的所有密码”时,我的意思是那些与公开密码不密切相关/相似的密码。显然,对几乎所有网站使用相同的密码是相当愚蠢的 IMO。

编辑 2:我想请你们所有人不要分享有关如何完成的任何信息。谢谢你的理解。

2个回答

弱哈希算法与 bcrypt 的简要概述

使用弱密码散列算法,黑客会尝试数百万或数十亿种不同的组合 - 只要他们的硬件允许 - 许多简单的密码将很快落入彩虹表/密码破解者/基于字典的攻击。

攻击者会尝试将大量字符串与您的哈希值进行比较,而验证的很可能是您的密码。即使不是,您仍然可以使用它登录,因为您发现了冲突。

但是,bcrypt 不同。它的计算速度很慢,因此这种破解将大大减慢如果那样的话, Bcrypt 可以帮助减缓破解速度到每秒只能进行几次测试的程度这是由于计算成本因素。您应该阅读 Thomas Pornin的这个答案以获得更好的解释:

如果迭代计数使得一次 bcrypt 调用与 MD5 的 1000 万次计算一样昂贵,那么使用 bcrypt 暴力破解密码的成本将是使用 MD5 的 1000 万倍。

这就是具有可配置缓慢性的要点:您可以根据需要使函数变慢。或者,更准确地说,尽可能慢:事实上,一个慢的函数对每个人来说都是慢的,无论是攻击者还是防御者。

所以这真的取决于增加的计算成本。一些定制硬件解决方案能够以每秒 52k 哈希以上的速度破解 bcrypt 哈希。使用标准攻击和糟糕的密码,您不会有太大希望坚持很长时间。同样,这取决于计算成本:即使是这种自定义硬件解决方案也可以强制降低到每秒 2-5 个哈希值,甚至更慢。

如果您关心帐户,请不要重复使用密码。


我已经找到了您的凭据,并“破解”了您的 bcrypt 哈希

但我不会黑你,别担心。这只是为了说明为什么您应该更新您的凭据,并停止重复使用您的密码。您想要一个答案,那么有什么比现场演示更好的呢?

你来自英国,对吗?您的 bcrypt 哈希也是$2a$10$omP392PbcC8wXs/lSsKZ5Ojv9.wFQ7opUn7u3YUBNu0kkbff0rB.m,对吗?我已经“破解”了你的密码,而且我知道你的账户。我看到你了,屋顶上的小偷。我的新卫星链路同时具有红外线和 X 射线光谱。我看到你的心跳;我看你很害怕。

这不言而喻:您绝对应该更改密码。立即开始更改您的凭据...以免为时已晚。应该担心,你应该改变你的密码。现在。


是的,bcrypt 可能非常慢,但是......

实际上,我找到了一种通过简单的数据聚合和关联来完全避开暴力破解过程的方法。我写了一个小程序,把几条信息联系在一起,然后比较它们。不是密码破解者或类似的东西,但归根结底,它完成了同样的工作。

为了您的隐私 - 并根据您的要求 - 我不会在这里分享我是如何做到这一点的,但你应该知道我不是唯一可以做到这一点的人。如果我能做到,其他人也能做到。


但是...您需要停止重复使用密码!

你真的,真的不想这样做。如果一个站点被入侵,在其他帐户上使用不同的密码也可以保护其他站点免受破坏。

更新您的所有帐户,即使是您一段时间未使用的帐户,并停止重复使用密码,除非您不关心它们。您可能需要考虑类似KeePass的东西。

您无法解密哈希,因为-正如您所说-哈希函数无法反转。

您仍应更改密码。攻击者将尝试暴力破解哈希,并且 - 如果成功 - 将尝试在您的电子邮件帐户和可能的其他网站上使用凭据。

当您提到“我的所有密码”时,还应注意,您不应将密码重复用于任何远程重要的事情(并且您的密码也不应遵循某些通用结构)。对于一次性帐户,弱密码和密码重用可能没问题,但对于其他任何事情,情况并非如此,正是因为以下情况:一旦一台服务器遭到破坏,攻击者也会尝试使用不同服务的凭据。