【问题标题】:How is Bcrypt better than md5 + salt?Bcrypt 比 md5 + salt 好在哪里?
【发布时间】:2016-04-21 04:32:51
【问题描述】:

请也阅读更新,因为我的“实际困惑”就在那里。

自从 Joomla! 以来,它一直很安静。开始支持 bcrypt 散列算法,以及自 Joomla 以来事实上的 md5 + salt! 1.5.

现在我的问题是“作为最终用户,如果我立即开始使用 Bcrypt,与当前的算法(即 MD5 + salt)相比,我可以获得什么好处?对于普通博客来说,它甚至有什么不同吗?每天有几百个访客?”

更新:-

我还在某处读到,由于md5 散列的速度,我的密码可以在几天/几个月内轻松计算出@ most。

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

如果是暴力破解,那么Bcrypt 不是同样容易被密码猜测吗?

【问题讨论】:

标签: php hash joomla md5 bcrypt


【解决方案1】:

据我了解,Bcrypt 更安全。它变得更慢,这使得攻击者更难暴力破解密码。它可以配置为越来越多地迭代,这很有用,因为 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

【讨论】:

  • 感谢您提供的链接,虽然我已经阅读了这些链接,但它们并不能解释完全不妥协的网站密码的区别。
  • @MohdAbdulMujib - 在“完全不受影响的站点”中,您可以存储密码明文,哈希是针对攻击者具有对数据库的读取权限并知道哈希(SQL 注入,丢弃服务器,丢失备份,...)。然后(s)他可以以他本地系统的整个速度(离线攻击)进行暴力破解。使用普通硬件,您可以计算大约100 Giga MD5 per second
【解决方案2】:

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

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

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

【讨论】:

  • 所以,你是说,Bcrypt 对我的好处只有 1. 如果我的网站已经被入侵并且所有散列密码都泄露了 2. 通过减慢整个身份验证过程来减缓暴力破解, 对于攻击者和真正的用户一样。
  • 我想补充一下,你提到的“防御深度”在这个特定问题中完全无关紧要,因为“深度”也可以与我已经在使用的md5 + salt 一起使用,待定。对不起,如果我以居高临下的态度出现,但这是我真正的怀疑?
  • @MohdAbdulMujib MD5 + salt 不是纵深防御。您可以在几个小时内使用 AWS GPU 实例集群为特定的 MD5+salt 生成一个全新的彩虹表,最多只需几百美元。 blog.ircmaxell.com/2011/08/rainbow-table-is-dead.html
  • @MohdAbdulMujib “如果我的网站已经被入侵并且所有散列密码都泄露了” 您的网站将来可能会被入侵。拥有良好编码和安全实践的大公司发现自己是 SQL 注入的受害者。 不要以为你是历史上第一个完美的程序员。
  • “如果攻击者能够转储我的散列密码,那么他很可能能够转储我的整个数据库”是的,但可能是只读的。将这些密码设为 MD5 意味着他们可以将只读访问权限转换为管理员帐户的有效登录名,使用它登录,然后开始删除内容。还要考虑:用户可能在其他网站上使用了相同的电子邮件+密码,因此通过存储 MD5,您会冒着他们在其他网站上的 other 帐户的风险。
【解决方案3】:

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

哈希字符串类似于cost;hashed_string(例如20;5D4140)。当然,这不是真正的格式,而是过于简单地展示了这个想法。

这种“成本”概念使 BCrypt “抗过时”。如果在 10 年内计算能力增加 1000 倍,您只需要使用更高的 "n" 重新散列您的哈希(无需具有原始值来增加成本)。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-02-14
    • 2020-02-07
    • 2010-11-09
    • 2022-12-31
    • 2013-03-21
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多