我们是否需要在BCrypt中使用固定盐?

时间:2018-01-23 11:18:09

标签: security hash passwords bcrypt salt

Brypt 为每个密码生成一个随机盐。这可以防止彩虹表攻击。但这可以防止蛮力攻击吗?我的意思是如果用户选择一个弱的常见密码,就可以在熟悉的密码列表上进行暴力攻击。所以我的想法是将用户密码与固定的盐连接起来,最终也是用户id salt(即:user伪)。如果攻击者无法访问软件代码(如果他只攻击数据库),那么他将无法使用熟知密码列表的暴力攻击找到真正的密码。

那么有什么好办法呢?

Bcrypt(apassword) 

bcrypt(apassword+pseudo)

bcrypt(apassword+pseudo+fixedsalt)

1 个答案:

答案 0 :(得分:2)

正如你所写的那样,盐可以防止彩虹表攻击并且不会对暴力破坏有所帮助,这是BCrypt缓慢减轻暴力的原因。 BCrypt提供了一个成本因子,它控制计算单个哈希所需的时间。

通过使用服务器端密钥(任何算法,如AES-256)加密计算的散列,可以更好地实现所需的额外保护。密钥不会成为哈希的一部分,并且可以在必要时进行交换。优点与固定盐(实际上称为胡椒)相同,只有具有服务器权限的攻击者才能开始破解密码哈希值。我试图在tutorial的末尾解释这个问题,关于安全存储密码。

因此,让盐完成其工作,不要将其与其他任务混合,而是在之后加密密码哈希。