显然,雅虎再次遭到黑客入侵,多达10亿个用户帐户遭到入侵。文章说,雅虎使用MD5进行密码哈希处理。

黑客是否也可能破解密码?
破解1个密码需要多长时间?
破解10亿个密码的时间到了,只有1B * t?

评论

由于任何仅使用最常见的不安全密码(如12345或Password123)的人都将在几秒钟内完成,因此无法正确回答。但是安全且更长的密码将花费更多时间。

一些团队制造了一台计算机,该计算机每秒可以进行3500亿次猜测……那是在2012年。

别忘记在2013年发生过这种情况-大多数密码可能已经被破解。

引用网站“基于法医专家对此数据的进一步分析,我们认为未经授权的第三方会在2013年8月窃取数据...

正确的问题很可能是“花了多长时间” ...

#1 楼

是的,他们很可能能够在短时间内破解许多密码。

根据雅虎官方声明:


对于可能受影响的帐户,被盗用户帐户信息可能包括姓名,电子邮件地址,电话号码,生日,哈希密码(使用MD5),在某些情况下还包括加密或未加密的安全问题和解答。


MD5是密码散列的一个有争议的选择,因为它的速度使得破解MD5散列密码的速度非常快。此外,由于Yahoo一定会让我们知道,所以它们很可能不会加盐。 (盐本可以帮助防止在破解时使用彩虹表。)

将MD5哈希与2015年的Ashley Madison违规行为(该漏洞泄露了3600万个帐户)进行比较时,您会看到其简单的缺点。 。在那种情况下,他们使用带有212次密钥扩展回合的bcrypt而不是Yahoo的普通MD5,这就是为什么当时的研究人员只能一次尝试破译4000个密码的原因。
摘自本文:


在Pierce的情况下,bcrypt将他的四GPU破解平台的速度限制在每秒156次猜测中。
[...]
要求苛刻的bcrypt,MD5,SHA1和大量其他哈希算法的目的是使轻量级硬件承受最小的压力。比方说,这对路由器制造商来说是件好事,对饼干用户来说甚至更好。例如,如果Ashley Madison使用MD5,则Pierce的服务器每秒可以完成1100万次猜测,如果这样的速度,他可以在3.7年内测试所有3600万个密码哈希值是否加盐,而如果不加盐仅测试三秒钟(许多网站仍不添加盐散列)。


因此,破解大部分Yahoo密码仅需几秒钟(而一些更强大的密码将保持不变)。确切的答案取决于Yahoo客户的可用计算能力和密码安全意识。


1正如@grc所指出的那样,每秒1100万个散列似乎很慢。 @Morgoroth的链接的8倍Nvidia GTX 1080 Hashcat基准测试(总计MD5为200.3 GH / s)是进行最新测量的好资源。

评论


对于MD5,每秒1千1百万次猜测似乎很慢。

– grc
16 Dec 15'7:52

“而且,它们很可能不会撒盐,因为雅虎肯定会让我们知道。”-像雅虎这样的大型科技公司怎么会不撒盐他们的密码哈希呢?如果这是真的,那是不可原谅的。

–aroth
16 Dec 15'在12:06

@aroth真的吗?这是您第一次听到大黑客吗?直到最近,听到纯文本密码被盗的情况还是很普遍的。它仍然是完全不可原谅的,但是您不应认为它如此令人惊讶。

–大卫说恢复莫妮卡
16 Dec 15'15:02



@Luc的问题是,如果您说“如果您使用大量轮数,则MD5可以进行密码哈希处理”,大多数人会完全忽略其余内容,而“ MD5可以进行密码哈希处理”。这样说MD5不适合密码散列,至少会提示某些人问“好,那什么才合适?”也许通过这种方式,我们可以传播有关如何做事权利的知识。

–毛里西
16年15月15日在15:08

@Luc任何还不了解“ MD5为密码散列而损坏”的人都隐含地指的是简单化的单散列,它没有尝试使用MD5滚动自己的多轮散列方案的业务。如果一个人对哈希没有足够的了解,无法对其进行讨论,那么他们应该使用标准的实现来为他们处理这些细节。句号此外,难道在GPU中甚至没有比其他工具更容易地优化MD5的MD5的多重回合哈希,这使其不如密码哈希算法吗?

– jpmc26
16/12/15在16:47



#2 楼

(摘要在最后一段中。)


破解1个密码需要多长时间?是时候破解10亿个代码了,仅需1e9 * t吗?


想象一下我有以下哈希算法: hash("ab")它可能返回3,因为第一个字符的数值可以是1,第二个字符的数值可以是2,并且将它们加起来,结果为3。

现在,如果您的数据库中有很多数字,例如583、140、8582等,破解需要多长时间?

在此示例中,hash("ab")将导致3以及hash("ba"),这称为碰撞(两个输入映射到相同的输出)。在md5中,这并非那么容易发生。顺序很重要,在给定输出的情况下,您无法导出有关输入的任何信息。甚至没有长度。

因此,您只能尝试所有可能性,直到找到可以提供正确输出的可能性。如果有人使用一个随机的20个字符的强密码,则可能需要几个世纪的时间。但是大多数人都使用“ horselover49”,“ letmein”或“ penis”之类的密码(尽管后者可能太短了),这些密码更容易破解。

每个人抱怨使用md5的原因是因为它很快。但是哈希算法变得更快。 MD5可能出于其他目的而被破坏,但不是为了密码哈希。您只是不应该使用任何哈希算法的单次传递,无论是md5还是sha1或sha512。

更好的算法,例如bcrypt / scrypt / pbkdf2 / etc。使用哈希算法一百万次(除其他外)。现在,您不再需要为每个猜测运行一次该算法,而是需要为每个猜测运行一百万次。这将花费更长的时间,从而使您可以尝试更少的密码,从而更好地保护弱密码。

是的,与使用MD5的其他漏洞一样,这种情况也将发生:许多密码将被破解。但是它们不会全部破裂,而且绝对不会在线性时间内破裂。更强大的将花费更多的时间。

评论


不会多次运行MD5仍然容易受到彩虹表的攻击吗?我仍然在彩虹桌旁徘徊,所以我可以离开这里。

– JimmyJames
16 Dec 15'在14:48

“但是大多数人都使用“ penis”之类的密码(尽管后者可能太短了)”,请告诉我这是有意的。

– Brian H.
16 Dec 15'在15:40

@Brian有些人无法抗拒这个笑话:-)

– John Dvorak
16 Dec 15'在16:01

@JimmyJames大多数彩虹表都假定哈希仅对原始密码计算一次。您可以使用特定数量的多个散列来构建自定义的彩虹表,但这仅在泄漏的密码使用匹配的散列计数的情况下才真正有用。这可能很难预测。破解这种类型的哈希几乎可以肯定会更好。

– PwdRsch
16 Dec 15'在16:32

@Brian是的。

–吕克
16 Dec 15'在17:17

#3 楼

请记住,开始从系统中获取可用密码的时间比查找任何一个特定用户的密码的时间要少得多。选择一个密码,对其进行哈希处理,找到其密码哈希值等于该值的所有用户(如果您以前将用户存储在以密码哈希键作为键的哈希表中,速度将非常快),然后重复。在如此众多的用户中,几乎任何密码都可能有人使用它,而普通/草率密码将使许多人使用它们。

评论


仅当密码不加盐散列时才如此。如果使用了盐,即使您拥有数百万个相同的密码,也不会匹配两个哈希值。如果您使用足够慢的密码哈希算法(bcrypt,scrypt甚至pbkdf2),那么一次猜测一个密码哈希的暴力破解将很慢,以至于希望用户在发现漏洞后有足够的时间更改其密码。实时网站,以免强盗密码对坏人不利。尤其是对于那些选择了长而安全的密码的用户而言。

– Craig
16 Dec 18'在17:58

#4 楼

没有其他信息,我们是不会知道的。

首先,有人说“他们用过MD5”。获取密码并用MD5对其进行哈希处理非常非常快。如前所述,有些机器可以进行280亿次密码猜测并每秒计算MD5哈希码。那将是不好的。但是,他们可能在MD5上使用了多轮哈希处理。他们可能已经对密码进行了哈希处理,然后又对结果加密了100万次。现在,可以猜测的密码数量和计算的哈希值“每秒”仅为28,000。

其次,我们需要知道密码是否被“腌制”。 “加盐”密码意味着对于每个用户,都将不同的“加盐”添加到密码中。例如,如果我愚蠢地使用密码1234,而您愚蠢地使用了相同的密码,那么我们的“真实”密码可能是k39fja0eflaei-1234和oe0vnda9afnlad-1234。因此,即使我的密码被破解,也无济于事。每个密码都必须单独破解。

使用无盐密码,如果数十亿用户中的任何一个使用该密码,则28,000个密码猜测中的每个都会成功。因此,经过数十亿的猜测,所有更简单的密码都将被破解。使用盐腌的密码,只需花费数十亿次猜测,就只会为您提供一些简单的密码。但是,如果他们使用普通的MD5,则即使是加盐,每秒280亿次的密码猜测也会很快破解。