bcrypt如何跟上摩尔定律?

时间:2011-09-17 07:31:02

标签: security hash passwords bcrypt

我一直看到建议使用bcrypt哈希密码,因为它能够跟上摩尔定律。

显然原因是因为攻击者破解bcrypt哈希需要的时间比通过SHA256这样的通用哈希函数生成的哈希要长得多。

怎么可能?尽管有摩尔定律,算法怎么会故意慢?

2 个答案:

答案 0 :(得分:5)

bcrypt可配置一个名为“work factor”的参数。在内部,它将连续多次执行类似于散列的操作。 “很多”是可以配置的部分,高达数十亿。因此,为了应对摩尔定律,只需要提高那个设置。可以根据需要做的另一个函数是PBKDF2(参见“迭代计数”参数)。

请注意,使密码散列缓慢的目的是让攻击者感到困难,但它也会使“诚实系统”的机制变得缓慢;这是一种权衡。有关更多详细信息,请参阅this answer(在security.stackexchange上)。

答案 1 :(得分:5)

攻击者想要尝试所有216,553 english words

the common variations还需要另外12位工作,可以说是一个887,001,088(2 29 )可能的密码列表。

BCrypt约需4,342,912 (i.e. 222) operations to calculate one hash (at cost=12)

今天的核心提供大约2 31 周期/秒;现有技术是每处理器8 = 2 3 核心,总共2 3 * 231 = 2 34 周期/秒。服务器通常具有4个处理器,将总数增加到2 2 * 2 34 = 2 36 周期/秒。 2 22 循环计算一个散列* 2 29 可能(常见)密码= 2 51 循环以运行所有(常见)密码。< / p>

这意味着它需要一个4处理器,八核处理器,大约2 51 / 2 36 = 2 15 秒(9小时)运行所有常用密码。

实际上我的密码不常见,使用大约44位。 2 44 密码* 2 22 循环每个密码= 2 66 循环以尝试所有不常见的密码。 2 66 / 2 36 周期/秒= 2 30 秒(34年)找到我的密码。

摩尔定律说,处理能力每18个月翻一番。

  • 今天:34年来找到我不常见的密码
  • 1。5年:17年
  • 3年:8。5年
  • 4。5:2。25年
  • 6年:2。25年
  • 7。5年:1年
  • 9年:6个月
  • 10。5年:3个月
  • 12年:6周
  • 13。5年:3周
  • 15年:10天
  • 17。5年:5天
  • 19年:63小时
  • 20。5年:31小时

现在 bcrypt 支持摩尔定律。

费用因素从 12 增加到 13 ,这将加倍所涉及的时间。