为什么盐有固定的长度?

时间:2015-09-15 07:04:47

标签: cryptography saltedhash

我认为使用变量,随机字符串作为盐的原因是强制攻击者在哈希上使用彩虹表之前查找每个盐。这需要很长时间。但是大多数开发商似乎都使用固定尺寸的盐。如果你查看一个盐的大小,你知道,因为大多数密码与盐一起存储,你不能只是从每个密码摘要中删除盐长度,然后使用彩虹表吗?我不知道这将是多么努力,这让我怀疑为什么我甚至应该使用变量盐。因为攻击者需要的唯一信息是一种盐的大小然后他不再需要查找盐。随机大小不会更安全吗?通过默默无闻,变异和随机化似乎真的是一种安全感。对我而言,因为如果你知道方法并且实现它的唯一原因就是引起一些混乱的时刻,那么它很容易解决。或者我错了吗?

1 个答案:

答案 0 :(得分:2)

盐可以是任何长度。良好盐的唯一要求是它是足够独特的'正如这个属性使彩虹表攻击对盐不可行:生成彩虹表需要更多的时间,这只适用于给定的盐,而不仅仅是尝试蛮力攻击 1

  

公共盐使得破解密码列表变得更加耗时。但是,在破解单个密码时,它不会使字典攻击变得更难。 - Salt (cryptography)

生成良好盐的简单方法是从加密随机数生成器生成大(例如,128个随机位)值。这将简单地确保盐的长度相同 - 但是疯狂的量的唯一值可以用128位表示。

由于哈希是生成使用原始' long'盐,使用修剪后的盐只会在指定原始密码时产生无效的哈希 - 它不会让它更容易找到哈希冲突。 (选择像bcrypt这样的慢速哈希是散列密码设计的另一个要求。)

如果攻击者 能够欺骗系统使用少量的盐值(甚至是固定的盐值),那么盐就会失去“足够独特”的特性。 ;

1 可悲的是,许多人选择密码不佳 - 主要是密码太短,基于常用字词/序列,或者在网站之间共享。虽然缓慢的哈希值会有所帮助,但是盐会阻止彩虹表的应用,给定足够大的帐户池(并且可能预期的时间更少),蛮力仍有可能恢复一些密码。