在安全性方面存储盐的最后一个字符是否被删除,然后强制使用最后一个字符以进一步创建彩虹表所需的时间等等?这假设使用的哈希算法是Whirlpool。
这会使登录花费更长时间,但这对于强制速度的限制是无法像其他方法那样绕过的。
提前谢谢。
答案 0 :(得分:1)
没有。盐意味着完全改变字符串 - 如果你认为盐很容易被利用,你应该制作更长的盐或更改哈希值。此外,每次使用盐时,它都会带给你许多不必要的暴力。
编辑:只是为了清除,我认为这不是一个糟糕的方法,但这里的逻辑是错误的。可以这样想想 - 如果你可以强制盐,潜在的黑客可以做同样的事情。你开始一场比赛 - 在每一点你从盐中删除更多的角色,并试图猜测谁会更好地强化盐;比赛结束时你根本就没有盐。
答案 1 :(得分:0)
要清除一件事:如果用户试图强制执行某些登录数据,那么复杂性本身并不重要。每个小变化都会以足够大的方式影响哈希,因此他需要一组新的彩虹表。
由于攻击用户不知道任何事情,如果你从盐中移除1,2,3甚至所有角色,他都不会介意。
模糊盐本身毫无意义。如果攻击用户以某种方式访问盐 - 您的数据库似乎已经被破坏了。因此,在这种情况下,他无论如何都不会关心正确的盐。
答案 2 :(得分:0)
不,这不是一个好主意,它错过了盐的目的。每个密码的唯一salt可防止攻击者使用一个彩虹表一次获取所有密码。它即使盐已知也能做到,最好不要将它与其他“改进”混合起来。
迷你暴力游戏需要的时间,你应该花更多的成本因素。也就是说,你应该切换到一个算法,它提供一个成本因子,需要一定的时间来计算哈希值(BCrypt,PBKDF2或SCrypt)。
实际上,您尝试向哈希添加服务器端密钥(攻击者必须发现缺少一个字符且必须强制执行)。添加这样的秘密可以以更有效的方式完成。只需使用强大的服务器端密钥对已经计算好的哈希进行加密(双向),这样攻击者就可以在启动暴力破解之前了解密钥。您可以在我的tutorial末尾找到关于安全存储密码的更深入的解释。