【问题标题】:How many rounds is the recommended for bcrypt password hasing?bcrypt密码散列推荐多少轮?
【发布时间】:2017-04-06 11:08:53
【问题描述】:

我正在学习关于 nodejs 上下文中的传递哈希,我想知道你会推荐什么作为盐级。默认级别是 10,我想知道这对于少于 10 个用户的基本应用程序是否足够好。

【问题讨论】:

    标签: node.js bcrypt


    【解决方案1】:

    为了回答你的问题,我做了一个简单的 Python 测试脚本:

    #!/usr/bin/env python3
    
    import bcrypt
    import time
    
    passwd = b's$cret12'
    for i in range(4,17):
        print(f'Rounds:{i}')
        start = time.time()
        salt = bcrypt.gensalt(rounds=i)
        hashed = bcrypt.hashpw(passwd, salt)
        end = time.time()
        print(f'Rounds:{i} | Time: {end - start:.4f} s')
    

    在 Intel(R) Xeon(R) CPU E5-2620 v4 @ 2.10GHz 上得到以下结果:

    Rounds:4 | Time: 0.0016 s
    Rounds:5 | Time: 0.0029 s
    Rounds:6 | Time: 0.0060 s
    Rounds:7 | Time: 0.0115 s
    Rounds:8 | Time: 0.0232 s
    Rounds:9 | Time: 0.0459 s
    Rounds:10 | Time: 0.0907 s /* Good enough */
    Rounds:11 | Time: 0.1834 s /* Worth to consider */
    Rounds:12 | Time: 0.3563 s /* >250ms as it discussed in comments */ 
    Rounds:13 | Time: 0.7215 s 
    Rounds:14 | Time: 1.4437 s /* In critical systems for superuser password */
    Rounds:15 | Time: 2.9140 s
    Rounds:16 | Time: 5.8405 s
    

    因此,您可以考虑这些数字来了解根据常用词的哈希表检查 1 个密码需要多长时间。

    今天,我会考虑 每个密码 0.1 秒左右就足够了(如果您不允许用户使用简单的密码,例如“123456”)。因此,考虑 10 或 11 轮。

    • 请记住,它不会保护您的用户,而只是为他们争取时间 安全地更改他们的密码,一旦你的密码数据库是 妥协。

    【讨论】:

    • 上面的“足够好”,甚至“值得考虑”的时间可能仍然被认为太快了。根据我的阅读,散列的 250 毫秒成本大约是更正常的目标(显然这是一个普遍的规范,但每个人都应该仔细考虑自己的用例)。 Ian Boyd 在stackoverflow.com/questions/4443476/optimal-bcrypt-work-factor 中的回答为 250 毫秒时间提供了更多背景信息。
    • 感谢您的链接!欣赏它。更新了原帖。有了这个,我会说这取决于目的。我仍然认为〜0.2s就足够了(距离论文中提出的250ms不远了)。但是,是的,即使在关键系统中达到 1 也是值得的。
    【解决方案2】:

    拥有多少用户并不重要。有人可能会争辩说,如果您只有 10 个用户,那么每个用户就有更多资源来保证他们的安全。

    对于多少轮是可以的问题的一个很好的答案是回答一个问题 - 在不降低性能的情况下你能承受多少轮?

    有时默认设置很好,但有时您可以做得更好。您真的必须自己测试并衡量影响。

    【讨论】:

      猜你喜欢
      • 2013-04-24
      • 1970-01-01
      • 1970-01-01
      • 2021-06-04
      • 2019-07-17
      • 1970-01-01
      • 1970-01-01
      • 2016-12-11
      • 2014-01-09
      相关资源
      最近更新 更多