【问题标题】:What is the best way to securely store password (hashes)安全存储密码(哈希)的最佳方法是什么
【发布时间】:2012-06-23 14:32:00
【问题描述】:

现在很多网站都被黑了,密码哈希被盗了。 即使是像 LinkedIn 这样的大网站也没有安全地存储他们的密码(只有 md5)。

现在我的问题是,什么是足够安全的哈希密码方法?

目前我正在使用这个:

sha512(sha512(sha512(password) + salt));

这样够安全吗?

【问题讨论】:

标签: security hash saltedhash


【解决方案1】:

很难说哪个最好,但安全的赌注是 BCrypt 算法。

BCrypt 并不是最好的算法;但是,对于大多数用例来说,它就足够了,而且它与基本的 hash-and-salt 方法一样容易实现,甚至更容易。 BCrypt 的不同之处在于,它不是更典型的 SHA-* 算法,而是利用 Blowfish 算法,该算法具有并行速度慢得多的优势。由于用户一次登录,这使得将测试大量密码的攻击者更难击败算法。

更多:http://davismj.me/blog/bcrypt/

【讨论】:

    【解决方案2】:
    hash_hmac('sha512', $data , $key);
    

    会很棒。 $key 最好使用至少 60 个字符作为盐。

    【讨论】:

      【解决方案3】:

      像现在这样使用 salt 确实可以提高安全性,我强烈建议为每个用户使用随机 salt。恕我直言,您对用户密码进行哈希处理的时间越多(您可以通过在每次哈希之前添加盐来提高安全性),它就越安全。我使用 for 循环重复 256 次来散列密码,这可能被认为在接下来的几年中可以防止暴力破解。

      有点离题,但我建议也要注意会话劫持(例如重新生成 ssid 等...)

      【讨论】:

        【解决方案4】:

        这取决于你的盐。您是否为每个用户生成了唯一的盐?盐不是一个常数,如果每个密码都使用相同的盐进行散列,那么你就是在浪费时间。

        我建议使用 bcrypt 而不是 sha512/salt 方法,它更难暴力破解:http://krebsonsecurity.com/2012/06/how-companies-can-beef-up-password-security/

        【讨论】:

          【解决方案5】:

          是的,这已经足够安全了。我个人认为最后一次 sha512 调用是无用的,但我知道意见不同。

          当然,只要无法使用蛮力策略猜出密码,这是安全的。如果用户选择 4 个字母的密码或他们妻子的名字,那么再多的哈希也无法保护您。

          【讨论】:

            猜你喜欢
            • 2013-01-18
            • 2011-05-16
            • 2013-02-11
            • 1970-01-01
            • 1970-01-01
            • 2020-12-17
            • 1970-01-01
            • 2013-11-24
            • 2011-09-22
            相关资源
            最近更新 更多