hash - sha512 可以保护您免受极其简单的密码的侵害吗?

标签 hash salt sha512

我想问一个问题:如果网络用户选择了非常容易猜测的密码,加盐的效果如何。我已经阅读(并重新阅读)了以下网页,但我觉得我的理解仍然不是100%清晰。

Salt and passwords

How does password salt help against a rainbow table attack?

从上面的第二个 URL 中,可以找到以下内容(由用户“Ross”提供):

要理解第一个,请想象一个包含数百个用户名和密码的密码文件。如果没有盐,我可以计算“md5(attempt[0])”,然后扫描文件以查看该哈希值是否出现在任何地方。如果存在盐,那么我必须计算“md5(salt[a] .attempt[0])”,与条目 A 进行比较,然后计算“md5(salt[b] .attempt[0])”,与条目 B 进行比较等等。现在我有 n 倍的工作要做,其中 n 是文件中包含的用户名和密码的数量。

现在,我了解到,为表中的每条记录引入唯一的盐会使黑客破解密码的难度增加了 n 倍。但是,如果网络用户天真地使用“password”或“dog”或“cat”作为密码怎么办?如果我正确理解 StackOverflow 的答案,则数据库表中每条记录的每个唯一盐都不会保密。成功攻破数据库的黑客可以轻松地获取单独的盐。这些盐的目的是减慢黑客的速度,因为黑客需要 n 个彩虹表而不是一个彩虹表。但是,如果某个 Web 用户的密码为 cat,并且该 Web 用户恰好是 10000 条记录的长表中的第一条或第二条或第三条记录,那么

               $hash = sha512($salt.cat)

不会保护天真的网络用户免遭黑客攻击,不是吗?因为黑客知道盐,他可能会将盐附加或前置到一个简单的密码中,并且他会知道哈希值。然后他将使用彩虹表,网络用户的数据就会受到损害。我是否正确理解,网络用户在表中的记录的位置以及网络用户选择的密码的简单性,甚至可以破坏最巧妙的哈希,因为黑客可以访问盐?

最佳答案

你是对的,它不能防止糟糕的密码。

在拥有八 block AMD R9 290X显卡和hashcat的PC上,就可以破解 每秒 7.97 亿次 SHA512 哈希。

这使得根据一长串弱密码字典检查密码变得非常容易。

如果您将 PBKDF2 与 SHA512 和 20,000 次迭代一起使用,您仍然可以每秒管理 39000 个哈希,因此每个密码字典中出现的弱密码仍然存在风险。

最好强制用户不要使用标准字典中的密码。在该机器上暴力破解一个由 7 个字母组成的字母数字、非字典密码将需要 17 年时间。

祝您的用户使用安全密码一切顺利。 Dilbert reference :

关于hash - sha512 可以保护您免受极其简单的密码的侵害吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29100726/

相关文章:

java - 如何检查加盐和哈希密码的匹配

javascript - 在 node.js 中验证来自 PHP 的 SHA512 哈希

hash - 当 SHA-512 更安全时,为什么要使用 SHA1 来散列 secret ?

c++ - 生成 blake2b 哈希时崩溃

python - 如何在Python中定义哈希函数

perl - 在散列键重复中,将值连接到 perl 脚本中的先前键中

security - 为什么好的散列算法不允许攻击者找到产生相同散列的两条消息?

security - 如果可访问数据库,那么加盐和哈希的意义是什么?

python - 使用 Flask-Security 的每个用户唯一的盐

c - 如何使用 OpenSSL 计算 SHA512/224 和 SHA512/256 哈希值?