3 回答
TA贡献1877条经验 获得超6个赞
盐只需要是随机且唯一的。由于它对攻击者无济于事,因此可以自由地知道它。许多系统会在哈希密码旁边的列中的数据库中存储纯文本盐。
盐有助于确保两个人(用户A和用户B)碰巧共享同一密码,这种情况并不明显。如果没有每个密码的随机唯一盐,则哈希值将相同,并且显然,如果用户A的密码被破解,则用户B必须具有相同的密码。
它还可以防止哈希字典可以与已知密码匹配的攻击。例如彩虹桌。
同样,使用内置“工作因数”的算法也意味着随着计算能力的提高,创建散列所必须经过的算法也可以增加。例如,bcrypt。这意味着暴力攻击的经济学变得难以为继。据推测,创建已知哈希表将变得更加困难,因为它们需要花费更长的时间来创建。“工作因子”的变化将意味着必须建立更多的表。
TA贡献1854条经验 获得超8个赞
我认为您使问题复杂化了。
从问题开始:
您是否要保护弱密码?
您是否要缓解彩虹攻击?
您提出的机制确实可以防止彩虹攻击,即使用户A和用户B具有相同的密码,哈希密码也将有所不同。确实,给密码添加盐过于复杂,这似乎是一种相当复杂的方法。
将数据库迁移到另一台服务器时会发生什么?
您是否可以更改每个数据库的唯一值,如果可以,那么可以生成全局彩虹表,如果不能,则无法还原数据库。
相反,我只需要添加额外的列并存储适当的随机盐即可。这将防止任何形式的彩虹攻击。跨多个部署。
但是,它不能保护您免受暴力攻击。因此,如果您尝试保护密码不正确的用户,则需要在其他地方查找。例如,如果您的用户具有4个字母的密码,即使使用盐和最新的哈希算法,也可能在几秒钟内破解它。
TA贡献1936条经验 获得超6个赞
我认为您需要问自己:“与仅生成随机盐值并将其存储起来相比,使其变得更加复杂,您希望从中获得什么?” 您使算法变得越复杂,就越有可能不经意地引入弱点。不管我怎么说,这听起来都比较老套,但这很有帮助-您的应用程序有什么特别之处,以至于它需要一种新颖的密码哈希算法?
添加回答
举报