hash – 这个登录方案是否安全?

这是我获得的webapp登录方案.
存在于数据库中的是两种盐和hmac(hmac(密码,盐1),盐2).

当用户进入登录页面时,他获得salt1.
如果他已激活javascript,而不是发送明文密码,它将发送hmac(密码,salt1).
如果他没有javascript,则会发送明文密码.

因此,在服务器端,当收到登录请求时,我们首先检查发送的内容(passwordSent)与hmac(passwordSent,salt2).如果它不起作用,我们会尝试hmac(hmac(passwordSent,salt1),salt2).

有人访问数据库应该无法使用密码哈希登录,我不认为(但我可能错了)多重hmacs会减少哈希阻力.
有任何好的加密专家看到我可能做过的任何明显错误吗?

最佳答案
通过默默无闻看起来有点像安全性,如果你仍然接受来自客户端的纯文本密码,那么使用javascript在客户端散列密码是什么意思?

您没有提到这是否超过https,如果您不使用https,那么您可能根本没有密码.如果您没有运行https,那么任何MITM都可以看到您发送的盐以及用于散列原始密码的javascript,因此您无法获得任何收益.

至于你对两种盐之间hmac碰撞可能性的关注,这可能是非常不可能的(取决于你的哈希算法)以及你保持盐值的安全性.即使MD5发现了一些碰撞攻击并且有一组彩虹表,如果你保持盐非常安全,你也会没事的.

Please, everybody, please stop trying
to implement custom crypto systems
unless you have a background in
cryptography. You will screw it up.
–Aaronaught

说得好!

转载注明原文:hash – 这个登录方案是否安全? - 代码日志