首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >对于SaltedHash来说,什么是足够好的盐?

对于SaltedHash来说,什么是足够好的盐?
EN

Security用户
提问于 2011-10-19 11:00:24
回答 3查看 3.1K关注 0票数 15

既然我用自己的盐对所有密码进行散列,那么盐是否真的是随机的,或者增量计数器或guid是否足够好?另外,大盐和小盐有好处吗?

编辑:既然已经确定散列不应该太小:什么是足够大小的盐?guid (16字节)可以吗?

EN

回答 3

Security用户

回答已采纳

发布于 2011-10-19 12:49:09

salt的唯一用途是唯一的:没有两个散列密码使用相同的盐值。这是为了防止成本分担,如预先计算的哈希表。

独特性应该是世界性的。例如,假设您使用一个简单的计数器作为盐。相应地,值"1“将用作第一个创建帐户的salt,可能是服务器管理员的salt。对于该服务器的所有已安装实例,这将是正确的。这使得使用"1“作为salt预计算一个可能的散列密码的大表(例如彩虹台)是值得的,因为该表可用于攻击所有使用该软件的服务器上的管理员密码。在这里冥想这个词是“值得的”。

由于服务器范围的唯一性是不够的,一个计数器是不够的;用户名也不是一个好盐(用户名在给定的服务器上是唯一的,但是有许多'Bob‘、'Joe’和'DarkLord42‘)。UUID (GUID)应该能做到这一点。您也可以使用一个强均匀伪随机生成器(/dev/urandomCryptGenRandom()java.security.SecureRandom.根据您使用的平台而定),并从中获取足够多的随机字节,这样重用盐值的风险就足够小了;16个字节就足够了。使用随机性是一种“稳健的方式”,因为它以足够高的概率产生唯一性,而不必依赖于世界范围的惯例。

票数 19
EN

Security用户

发布于 2011-10-19 12:16:30

感谢亨德里克对这个问题的评论,我找到了一条与此相关的线索。以下是我的调查结果:

  • 使用增量计数器作为盐,仍然会使使用彩虹表更加困难。
  • 更大通常是更好的,而随机性是避免重用的首选。

如果每个人(或至少有几个)使用相同的盐类(即。增加数字或短盐),可以为所有重复的盐类创建彩虹表,使那些盐渍散列不那么安全。

因此,盐最好也应该是唯一的系统,而不仅仅是在我的系统内,以避免一组彩虹表要创建和使用,以损害几个系统。(一个表用于salt=1,一个用于salt=2,一个用于salt=3,等等)。

票数 8
EN

Security用户

发布于 2011-10-19 12:18:00

盐不一定是随机的,也不是秘密的。它只是用来阻止使用彩虹表的攻击,或者使这种攻击慢得多。如果我没有弄错的话,用他/她的用户名保存用户密码应该是安全的。

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

https://security.stackexchange.com/questions/8246

复制
相关文章

相似问题

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