我目前在一家公司工作,我们需要设计一个基于令牌的认证系统。我们将拥有和控制两个服务器,一个是身份验证服务器,另一个是应用服务器。
我对计算机安全概念、威胁、常见漏洞及其对策相当熟悉,但我没有找到一个问题的答案是,在使用HMAC- sign 256签署JWT令牌时,是否需要多次散列。
因为对于像使用SHA256哈希密码这样的事情,我理解的一般规则是运行2^(2000年-2000年)(根据性能需要进行或采取)散列,所以我很难相信一轮HMAC- the 256足够好,但是在我研究这个主题时,我还没有见过有人问这个问题。
因此,给定一个秘密密钥和一个JWT令牌头和有效负载,以下哪一项被认为是令牌签名的最佳实践:
非常感谢您的帮助。只想确保系统设计得尽可能好。
发布于 2018-01-12 14:48:51
HMAC和密码散列解决了非常不同的问题。HMAC的秘密是高质量的(即128位熵),而密码则是低质量的(30位熵对于大多数人来说是乐观的)。
一轮快速哈希函数对于密码是不好的,因为它允许攻击者快速尝试许多常见密码,或者对低熵密码进行暴力攻击。对于HMAC来说,这种风险并不存在(只要秘密是由CSPRNG产生的),所以一轮就足够了。
附带注意:您没有指定,但是您不应该直接使用SHA-256对密码进行散列,即使您使用了很多次。在标准库中使用PBKDF2与SHA-256相比要容易得多,这样您就不会遇到任何陷阱。
https://security.stackexchange.com/questions/177437
复制相似问题