首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >单一盐能提供额外的安全保障吗?

单一盐能提供额外的安全保障吗?
EN

Stack Overflow用户
提问于 2014-07-10 17:20:50
回答 1查看 1.1K关注 0票数 0

我知道,为您使用的每个密码生成一个长盐是最好的做法。但是,使用一种盐是否能从根本不吃盐中获得安全好处?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-07-10 18:27:41

共享盐会让你稍微安全一些。它防止攻击者使用预先计算的彩虹表攻击,但它并不阻止他们为您的密码数据库构建一个单一的、新的彩虹表。因此,攻击者很难用给定的salt破解单个密码,但使用该salt破解每个密码要容易得多。

例如,考虑以下一组简化的密码、盐类和散列:

代码语言:javascript
复制
Password  Salt     Hash
aaaaaz    y03sar   ze4lap
zzzzza    y03sar   enbe65

攻击者知道您的salt是y03sar,并开始计算从azzzzzz的每个密码的每个哈希。在很久以前(就迭代而言,对于如此复杂的密码和盐类来说,实际破解将很快完成)他们会发现密码zzzzza,他们会意识到他们也发现了密码aaaaaz。换句话说,在最坏的情况下,强行强制数据库中的一个密码并不比强制每个密码更困难。

对于不同的盐类,必须对每个密码分别进行攻击。

代码语言:javascript
复制
Password  Salt     Hash
aaaaaz    bbq9f0   i2chf1
zzzzza    y03sar   enbe65

如果攻击者再次开始用salt y03sar计算从azzzzzz的每一个密码的哈希数,那么i2chf1就不会出现在他们的输出列表中(至少对于合理的长度哈希输出是不太可能的;即使是这样,salt y03sar的计算密码仍然无法获得对aaaaaz帐户的访问,因为哈希与salt bbq9f0不同)。

要在混合中添加一些数字,使用单一盐可以将攻击时间从瞬时(彩虹表提供了对散列摘要的固定时间查找)延长到线性时间。一旦攻击者计算出系统允许的每个密码的哈希数,他们就可以访问您系统中的每个帐户。即使您有16个字符密码允许[a-zA-Z0-9],那么您的整个系统将在days or weeks中受到破坏。(链接问题只是一个例子--GPU的密码破解速度甚至比答案中的硬件还要快。)

现在,如果您对每个密码都有不同的盐类,那么攻击者在相同的时间内就会破解整个数据库,它们只破解了一个密码。

这是一个相当大的区别。使用独特的盐类。(以及good hashing algorithm,在我们讨论这个话题的时候。)

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/24682650

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档