Bcrypt 比 md5 + salt 好在哪里?

How is Bcrypt better than md5 + salt?

请也阅读更新,因为我的 "actual confusion" 在那里。

自从 Joomla!开始支持 bcrypt 散列算法,以及 md5 + salt 自 Joomla! 1.5.

现在我的问题是"As an end user, what benefits do I get if I start using Bcrypt right away, In comparison to the current algorithm viz. MD5 + salt? Does it even make any difference for a normal blog with a few hundred visitors daily?"

更新:-

另外我在某处读到,由于 md5 散列的速度,我的密码可以很容易地在 days/months @ most 的问题中计算出来。

但这是否不需要我的哈希已经存在于攻击者那里进行比较? 如果 he/she 一开始就没有哈希值,那么我使用的哈希算法如何影响我的网站安全性?最终他还是不得不暴力破解我的登录页面?

如果是通过暴力破解,那么 Bcrypt 是不是同样容易受到密码猜测的攻击?

据我所知,Bcrypt 更安全。它变得更慢,这使得攻击者更难 brute-force 密码。它可以配置为迭代越来越多,这很有用,因为 CPU 的功能越来越强大。

这就是可配置慢度的意义所在:您可以让函数尽可能慢。或者,更准确地说,尽可能慢:事实上,一个慢函数对每个人来说都是慢的,攻击者和防御者都一样。

这些链接可能会有一些帮助:

https://security.stackexchange.com/questions/61385/the-brute-force-resistence-of-bcrypt-versus-md5-for-password-hashing

https://www.bentasker.co.uk/blog/security/201-why-you-should-be-asking-how-your-passwords-are-stored

What's the difference between bcrypt and hashing multiple times?

https://www.quora.com/What-is-the-difference-between-bcrypt-and-general-hashing-functions-like-MD5

https://security.stackexchange.com/questions/4781/do-any-security-experts-recommend-bcrypt-for-password-storage/6415#6415

But does this not require my hash to already be present with the attacker to compare to? And If he/she doesn't have the hash in the first place, then how does the hashing algorithm that I use, affect my sites security? And eventually he ends up having to Brute Force my login page anyways?

首先,没有。许多站点允许登录尝试而没有速率限制。使用 MD5,假设服务器可以处理它,用户可以通过快速连续尝试大量密码来非常快速地尝试 brute-force 密码。 bcrypt 的缓慢保证了这样的尝试会慢得多。

其次,计算中的一个关键安全概念是 defense in depth。您不希望只有一个安全级别 - 很容易意外编写一个 SQL 注入漏洞,可能会让攻击者转储密码哈希值。通过使用 bcrypt,您可以 限制 这种漏洞可能造成的 损害

除了 "salt" 之外,BCrypt 还接受一个“cost”参数——这是它的主要特征。成本是您要应用于散列的计算工作量。将其视为将结果重新散列 2^n 次,其中 n 是成本。

散列后的字符串类似于 cost;hashed_string(例如 20;5D4140)。当然,这不是真正的格式,而是为了展示这个想法而进行的过度简化。

这个 "cost" 概念使 BCrypt "obsolescence resistant"。如果在 10 年内计算能力增加 1,000 倍,你只需要用更高的 "n" 重新散列你的哈希值(不需要有原始值来增加成本)。