Railscasts的“Scratch身份验证”有多安全?

时间:2011-12-22 00:59:04

标签: ruby-on-rails ruby authentication devise

我正在权衡使用“来自Scratch的身份验证”(在此Railscast中实现)与使用Devise的优缺点。

我正在使用自定义数据存储区,因此使用Devise并不像遵循README那样简单。这需要写一个custom ORM adapto r,这远非微不足道。

鉴于这一切,从零开始的Railscast Auth似乎更容易实现。

那么它有多安全?

更新:我应该指出我正在使用Parse.com作为我的数据存储区。这意味着它们会处理散列密码并限制用户名的唯一性。

2 个答案:

答案 0 :(得分:5)

他们都使用bcrypt来生成密码的盐渍哈希,唯一的区别是设计(默认情况下)使用更高的哈希成本(即需要更多的cpu周期来暴力破解),但是当然,您可以轻松地将其添加到railscast代码中,因此在这方面大致相同。

railscast版本确实容易受到时间攻击的影响,因为只做==不会给你一个恒定的时间比较操作。简而言之,定时攻击是有效的,因为哈希完全错误的密码将比用于前半部分字节正确的密码所需的时间更少= =拒绝(因此= =必须在提交之前考虑更多字节)。似乎任何这样的差异都会被网络延迟等变化引起的噪声所抹去,但人们已经使用这些方法安装了真正的攻击来恢复密钥。

你显然可以从设计中借用安全比较位,但它确实表明涉及非明显的问题。

显然,设计为您提供的不仅仅是身份验证!

答案 1 :(得分:2)

该截屏视频使用bcrypt-ruby库,它是bcrypt的Ruby实现,它基于Blowfish cipher。 bcrypt的好处是破解这个系统生成的密码在计算上是昂贵的,并且生成这些密码的成本可以根据需要增加,以使其更安全,代价是它需要的计算时间。产生时间。

有关更多信息,请查看BCrypt::Password RDoc。