盐渍密码

时间:2015-02-09 22:01:25

标签: hash passwords string-hashing

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

我认为它们是为了防止使用像彩虹表这样的工具,但对我来说,将盐与哈希一起存储的想法似乎是一个潜在的安全问题。根据自己的喜好,在一个地方有太多的数据。

我想要由人们管理的想法是使用一个幸运数字'从密码哈希的一部分创建一个salt。 基本上,在选择密码的同时,用户会选择一个幸运号码'同样。然后,此数字将用作从散列传递中检索salt的起始索引。

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

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

我的想法是,作为幸运数字'不需要存储,盐也会花费计算时间来解决,因此使任何攻击更加困难。加上意味着存储的数据略少。

1 个答案:

答案 0 :(得分:0)

它不会增加更多安全性。使用彩虹表的目的是获得字典单词和相关散列的组合地图。通过为您计算的每个密码哈希使用一个或多或少不同的盐(通常不应该在字典中找到),您强制攻击者为每个条目生成一组新的彩虹表,这将是令人望而却步的计算上很昂贵。在任何时候(生成哈希表除外)攻击者都会计算哈希值,因此您的策略在这里失败。

另一方面,当使用常规字典攻击时,攻击者只需要一个恒定时间计算来计算盐,他必须只计算一次,否则他必须生成数百万或更多的哈希组合。它只会在计算成本比生成所有内容时更有效,但是每次用户想要登录时都必须进行相同的计算,这是不可行的。