这是一个好主意,安全明智地存储盐与他们的最后一个字符删除,然后暴力强迫最后一个字符,以进一步的时间,它将花费创建彩虹表等?这里假设使用的散列算法是Whirlpool。
这将使登录花费更长的时间,但这将是对暴力速度的限制,无法像其他方法那样绕过。
提前谢谢你。
发布于 2015-02-24 01:21:55
不是的。盐意味着完全改变字符串-如果你认为盐很容易被利用,你应该制作更长的盐或改变散列。此外,每次使用盐时,都会花费大量不必要的暴力行为。
编辑:我只是想澄清一下,我不认为这是一个糟糕的方法,但这里的逻辑是错误的。这样想吧--如果你能粗暴地破解盐,潜在的黑客也可以这么做。你开始一场比赛--在每一个点上,你从盐中删除更多的字符,并试图猜测谁会更好地强制盐;比赛结束时,你根本没有盐。
发布于 2015-02-24 01:32:43
澄清一件事:如果用户试图强行获取一些登录数据,那么复杂性本身并不重要。每一个小的变化都会以足够大的方式影响散列,所以他需要一组新的彩虹表。
由于攻击用户对此一无所知,因此他不会介意您从salt中删除1、2、3-甚至所有字符。
混淆盐本身是没有意义的。如果攻击用户以某种方式获得了访问salt的权限-您的数据库似乎已经被攻破了。所以,在这种情况下,他无论如何都不会关心正确的盐。
发布于 2015-02-24 16:00:45
不,这不是一个好主意,它忽略了盐的用途。每个密码都有一个独特的salt,可防止攻击者使用一个彩虹表一次获取所有密码。即使盐是已知的,它也会这样做,最好不要把它与其他“改进”混淆在一起。
迷你暴力游戏所需的时间,你最好花在更高的成本因素上。也就是说,您应该切换到提供成本因素并需要一定时间来计算散列(BCrypt、PBKDF2或SCrypt)的算法。
实际上,您试图将服务器端秘密添加到散列中(攻击者必须发现缺少一个字符,并且必须是暴力强制的)。添加这样的秘密可以以一种更有效的方式来完成。只需使用强服务器端密钥加密(双向)已经计算出的散列,这样攻击者在开始暴力破解之前就需要了解该密钥。你可以在我的tutorial末尾找到关于安全存储密码的更深入的解释。
https://stackoverflow.com/questions/28679493
复制相似问题