使用Spring Security为实时Grails应用程序增加BCrypt logrounds而不重新编码所有密码是否安全?

时间:2017-11-10 01:18:16

标签: grails spring-security bcrypt

这个问题适用于使用配置了BCrypt的Spring Security生成的Grails应用程序。

为了跟上提高服务器CPU速度的步伐,我想提高grails.plugin.springsecurity.password.bcrypt.logrounds属性的值,以便密码哈希需要更长的时间,并且不易受到攻击。

首先想到的是,我认为这是一项艰巨的任务,需要在用户登录或大规模重新编码和自定义登录处理程序时采用涓涓细流的方法,但在运行之间在本地尝试时它似乎没有任何其他更改(使用持久数据库,模拟非本地部署。)

我猜这是因为logrounds存储在密码哈希中:例如,当在本地运行之间从10到20时,密码看起来如下

$2a$10$i/PEPcvSj...< - 当logrounds设置为10时创建的帐户

'$2a$20$3GGujw6o...< - 当logrounds设置为20时创建的帐户

我测试过:

  • 更改前创建的旧帐户仍可以登录。
  • 旧帐户可以更改密码,新的哈希值会使用新的logrounds设置
  • 可以按预期创建和登录新帐户
  • 尝试使用不存在的帐户登录会产生预期的新延迟。

有没有理由不继续进行更改?这里的高度谨慎是因为以任何方式阻止生产登录的错误将是非常昂贵的

1 个答案:

答案 0 :(得分:0)

一切都按预期工作,所以答案是肯定的,你可以。您可以更改loground而不会影响现有帐户,因为用于生成哈希的loground内置于哈希中。 BCrypt的好功能