虽然我知道盐不应该被重复使用,但我感兴趣的是,如果我们只有少量的散列来重复使用盐,那么它是否是一个重大的问题。
因此,假设我们有一个带有N密码散列的表,该表使用相同的salt。盐是唯一的,但它被重复使用在所有的散列。
表的大小对安全性损失有多大的影响?例如,一个只保存一个密码的表显然没有任何安全损失,而一个包含10个密码的表则不太安全,但没有明显的安全性。
安全损失的数量是否取决于大小的N,在什么时候彩虹表变得具有成本效益?什么时候安全会严重受损?是N=10,还是N=100,还是N=1000?
编辑:我们还假设表中的每个密码都是唯一的。我们不感兴趣的任何其他类型的安全损失,除了彩虹表变得更符合成本效益。
编辑2:假设我们用密码破解后的teraFLOPS来度量计算费用。当然,成本效益实际上取决于预期的回报,但我们只需将一个任意的值-我们认为1 teraFLOP /密码破解为成本效益。
发布于 2016-10-20 18:39:22
salt的目的是迫使恶意用户使用字典攻击而不是彩虹攻击。切换的原因将取决于攻击者的意图和可用资源。
如果一个黑客试图获得一个用户的密码,他无论如何也不会使用彩虹攻击。对一个数据库行的字典攻击实际上更快(除非黑客非常不幸)。
如果黑客只想找到使用非常常见密码的用户,他可以构造一个非常小的彩虹表,每个盐值都有一个。盐越多,他要做的桌子就越多。但是没有神奇的数字。这将取决于黑客可用的资源和他正在寻找的密码列表的大小。因为每一张彩虹桌都很小,他可能愿意创造出成百上千的彩虹。
如果黑客试图破解用户基础中的每个密码,他将需要为每个盐构建一个完整的彩虹表。如果有太多的盐,他会认为更容易切换到字典攻击。这个门槛很可能是主观的和象征性的..。如果黑客有足够的空间存储100个彩虹表,那么使用101个盐就会导致他转向字典攻击。
另一方面,如果您的表只有很少的用户(而不是很少的盐类),那么字典攻击可能会更快。当您拥有数以百万计的用户时,攻击者将愿意更进一步,以避免使用字典攻击。
发布于 2016-10-20 17:41:34
静态盐与不含盐同样有效。你对建造彩虹桌的人没有任何防御能力。密码碰撞的用户会知道谁的密码与他们的密码相匹配。它不会以任何方式增加复杂性或减慢哈希;它不能替代pbkdf2 2型算法。
如果您的系统的安全性依赖于将该盐保密,那么您需要将其视为一个秘密密钥,而不是一个salt。
https://security.stackexchange.com/questions/140336
复制相似问题