-1

我一直在阅读有关存储和检查用户密码的正确程序,并且对盐有点困惑。

我知道它们是为了防止使用彩虹表等工具,但对我来说,将盐与哈希一起存储的想法似乎是一个潜在的安全问题。我喜欢一个地方的数据太多。

我想由人们运行的想法是使用“幸运数字”从密码哈希的一部分创建盐。基本上,除了选择密码,用户还会选择一个“幸运数字”。然后,此数字将用作从散列通行证中检索盐的起始索引。

所以一个非常基本的例子是这样的。

Pass = "Password"
Lucky Number = "4"
Pass Hash = "00003gebdksjh2h4"
Salt Length = "5"
Resulting Salt = "3gebd"

我的想法是,由于不需要存储“幸运数字”,因此盐也将花费计算时间来计算,因此使任何攻击变得更加困难。Plus 意味着存储的数据略少。

4

1 回答 1

0

它不会增加更多的安全性。使用彩虹表的目标是获得字典单词和相关哈希组合的映射。通过为您计算的每个密码哈希使用或多或少不同的盐(通常不应该在字典中找到),您迫使攻击者为每个条目生成一组新的彩虹表,这将是禁止的计算成本高。攻击者在任何时候(除了生成哈希表)都不会计算哈希,因此您的策略在这里失败。

另一方面,当使用常规字典攻击时,攻击者只需要一个恒定时间计算来计算盐,对于他必须生成的数百万或更多散列组合,他只需要计算一次。只有在计算上比生成所有这些更昂贵时它才会起作用,但是每次用户想要登录时都必须进行相同的计算,这是不可行的。

于 2015-02-09T22:31:27.310 回答