为什么被文学视为夏娃知道的盐?

标题说明了一切。 我不明白:为什么你不应该像密码一样保密。 还是我误解了一些东西?


盐被视为公开,主要是因为保密是没有必要的。

盐点主要是为了使字典攻击更加困难/不太实际。 在字典攻击中,攻击者从字典中散列出常见字词,并且(如果他认真的话)用通用名称来补充这些字词。 配备此功能,如果他能够保留你的哈希密码列表,他可以看到他们中的任何一个是否与他列表中的哈希匹配。 假设你有大量的用户,他有很好的机会找到至少一个。 当他这样做时,他会查看他的列表以查找产生该散列的单词,现在他可以使用它来登录并模拟该用户。

添加一个盐意味着,不是这样做一次,他必须为每个可能的盐值做一次。 例如,如果使用24位盐,他必须在字典中散列每个单词~1600万次,并存储所有大约1600万个散列的结果。

为了争论起见,我们假设没有盐,攻击者需要8小时才能散列所有候选词,而16兆字节要存储结果(散列和每个产生的词)。 我们将进一步假定存储在哈希本身和单词/名称/任何产生它们的列表之间平均分配。

使用相同的24位盐,这意味着他的时间乘以约1600万的相同因子。 他对产生哈希值的单词的存储保持不变,但对于哈希本身(再次)乘以〜1600万。 算出数学计算结果大约有15,000年的计算量和128TB的存储空间。

总之,没有盐,几乎任何人都可以轻松获得字典式攻击。 我很容易相信(例如)有人会让他们的计算机在一夜之间运行哈希,只是为了让一些愚蠢的笑话在他的几个同事身上(很容易相信,因为我已经看到它完成了)。

当你想到它时,它就是一个数字游戏:字典攻击并不是要求每个用户都有一个容易猜到的密码,只有这样才能让他们找到至少几个空洞。 同样,公开发布盐也允许进行更简单的攻击,方法是下载每个散列的salt,然后对每个散列进行单独的字典攻击,每个攻击使用已知的salt。 假设一个系统的用户比可能的散列值少,这是一个更实际的攻击。 尽管如此,他现在坚持单独攻击每个密码,而不是仅仅为整个系统使用单个字典,而是实际上对于他可能想要攻击的所有使用相同散列算法的系统。

总而言之:尽管盐业已经公开,但它可以很好地完成其工作。 几乎所有安全系统的目标之一就是尽量减少需要保密的信息量。 由于盐即使是公开也可以工作,所以通常认为它是公共知识。 在一个实际的系统中,你当然不会尝试将它发布给攻击者,但是你不会(也不应该)依赖它的秘密。


盐的目的是在同一时间更难以攻击多个加密密码。 它不会更难对单个密码进行攻击。

使用盐时,攻击者必须为每个不同的盐测试每个候选明文密码。


我在这篇文章中发现的原因是,您实际上需要使用盐来检查数据库中已腌制和散列的密码。

链接地址: http://www.djcxy.com/p/21579.html

上一篇: why is the salt treated by the literature as being known to Eve?

下一篇: Why not use MD5 for password hashing?