很明显,雅虎再次遭到黑客攻击,拥有多达10亿个用户帐户再次遭到黑客攻击。这篇文章说,雅虎使用MD5进行密码哈希。
黑客也有可能破解密码吗?破解1密码需要多长时间?是时候破解10亿,只是1B *t?
发布于 2016-12-15 08:03:53
(摘要载于最后一段)
破解1密码需要多长时间?现在是破解10亿美元的时候了吗,仅仅是
1e9 * t
?
假设我有这样的哈希算法:
function hash(password):
hash = 0
foreach character in password:
hash = hash + toNumber(character)
return hash
如果您调用hash("ab")
,它可能返回3,因为第一个字符的数值可能是1,第二个数字值可能是2,它会将它们相加,从而得到3。
现在,如果你有一个满是数字的数据库,比如583,140,8582等等,那需要多长时间才能破解呢?
在本例中,hash("ab")
将产生3和hash("ba")
,这称为冲突(两个输入映射到相同的输出)。在md5中,这种情况并不容易发生。顺序很重要,您不能导出任何关于给定输出的输入的信息。连长度都没有。
所以,你必须尝试所有的可能性,直到你找到一个给你正确的输出。如果有人有一个强大的,随机的,20个字符的密码,它可能需要几个世纪。但大多数人使用"horselover49“、”生菜“或”阴茎“等密码(尽管后者可能太短),这些密码更容易破解。
每个人抱怨使用md5的原因是因为它速度快。但是哈希算法是快速的。MD5可能出于其他目的而中断,但它不是用于密码哈希的。您不应该使用任何散列算法的一次传递,无论是md5、sha1还是sha512。
更好的算法,如bcrypt/scrypt/pbkdf2 2/等,使用了百万次哈希算法(除其他外)。现在,不是每次猜测都能运行一次算法,而是每次猜测都需要运行一百万次。这需要花费更长的时间,允许您尝试更少的密码,从而更好地保护弱密码。
所以,同样的情况也会发生,就像其他使用MD5的漏洞一样:很多密码都会被破解。但它们不会全部破裂,而且绝对不会在线性时间内被破解。实力较强的公司将花费更多的时间。
发布于 2016-12-17 01:01:56
请记住,从系统中获取可用密码的时间要比查找任何特定用户的密码的时间短得多。选择一个密码,散列它,找到密码哈希值为这个值的所有用户(如果您以前用密码哈希键将用户存储在哈希表中),重复。在这么大的一堆用户中,几乎任何密码都可能有人使用它,而普通/草率的密码会有很多人使用它们。
发布于 2016-12-18 17:56:25
如果没有更多的信息我们就无法知道。
首先,有人说“他们使用MD5”。获取密码并使用MD5对其进行散列非常非常快。如前所述,有一些机器可以每秒猜出280亿个密码并计算MD5哈希码。那就不好了。但是,他们可能使用了与MD5的多重哈希。他们可能会对密码进行散列,然后再对结果进行百万次的散列。现在,可以猜测的密码数量和计算出来的散列数是每秒“仅”28,000。
第二,我们需要知道密码是否被“腌制”。“盐渍”密码意味着对每个用户,一个不同的“盐”被添加到密码中。例如,如果我愚蠢地使用了密码1234,而您却愚蠢地使用了相同的密码,那么我们的“真正”密码可能是k39fja0eflaei-1234和oe0vnda9afnlad-1234。所以即使我的密码被破解了,这也无助于破解你的密码。每个密码都必须单独破解。
对于未加盐的密码,如果10亿用户中的任何一个使用该密码,则28000个密码猜测中的每一个都将成功。因此,经过几十亿的猜测,所有更简单的密码都将被破解。使用盐渍密码,需要几十亿的猜测才能得到几个简单的密码。但是如果他们使用普通的MD5,那么每秒280亿个密码猜测就会很快破解,即使是盐渍。
https://security.stackexchange.com/questions/145369
复制相似问题