如何使用HTTP基本身份验证解决密码哈希复杂性?

时间:2013-10-18 08:04:42

标签: security http authentication cookies hash

密码哈希值存储为PBKDF2,512位,16384轮。这需要花时间在我的小型服务器上。用户通过SSL / TLS授权HTTP基本身份验证。使用此设置,每个请求都需要计算将负载放在服务器上的哈希值。

当前解决方案:首次成功登录后,我将会话cookie存储在客户端。

Pro:减少哈希计算时间的最小复杂性,仍适用于不存储cookie的客户端

缺点:不接受cookie的客户端仍会产生负载。

其他缓解方法: - 弱化密码哈希(感觉不对) - 实现自己/其他身份验证而不是基本身份验证(哪一个?增加了复杂性)

优先级: 安全第一,确保访问管理/监控。 然后服务器加载。

如何减轻密码哈希负载?如何不牺牲安全?没有安全通道(共享密钥),是否有替代身份验证的方法?

1 个答案:

答案 0 :(得分:1)

  

当前解决方案:首次成功登录后,我将会话cookie存储在客户端。

这是典型的解决方案 - 使用实际存储的会话或签名用户+时间戳令牌(HMAC比bcrypt更快验证)。

它还解决了HTTP Auth仅针对与请求auth的第一页相同的目录路径下的页面以及不再重新发送auth标头的疯狂浏览器的问题,直到每个单独提示401为止请求。

  

缺点:不接受cookie的客户端仍会产生负载。

根本不接受cookie的客户是相对罕见的,几乎所有其他需要登录的网站都会中断,因此对于普通情况,您通常应该没问题。

  

实施自己的/其他身份验证而不是基本身份验证(哪一个增加了复杂性)

如果您决定不依赖cookie,我可以考虑使用本机浏览器支持的唯一其他机制是Digest Auth(并不能真正解决问题,因为它仍然是基于密码的)和HTTPS客户端证书(可能是一个可接受/方便的选择,取决于你的用户群是谁。