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://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
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" 重新散列你的哈希值(不需要有原始值来增加成本)。
请也阅读更新,因为我的 "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://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
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" 重新散列你的哈希值(不需要有原始值来增加成本)。