现在我在 users 表上存储一个salt
and (非常标准的东西)。password_hash
需要为用户获取另一个字段的安全哈希。重复使用密码上使用的相同盐是否有任何风险?换句话说,假设攻击者拥有所有哈希值和一个盐值,那么在多个哈希值上使用相同的盐值是否更容易破解?如果有,多少钱?
谢谢!
现在我在 users 表上存储一个salt
and (非常标准的东西)。password_hash
需要为用户获取另一个字段的安全哈希。重复使用密码上使用的相同盐是否有任何风险?换句话说,假设攻击者拥有所有哈希值和一个盐值,那么在多个哈希值上使用相同的盐值是否更容易破解?如果有,多少钱?
谢谢!
盐的重点和唯一用途是防止攻击者以少于攻击一个元素的N倍成本攻击几个N个元素。这里,“攻击”是指“尝试可能的值,直到找到与已知哈希值匹配的值”。没有盐,攻击者可以将他的散列猜测与几个散列值进行比较,从而分担计算散列的成本;例如,攻击者有几个哈希值要同时攻击,或者攻击者构建一个预先计算的哈希值表以进行快速查找(以空间/时间交换为模,两种攻击是相同的)。
如果您对用户的密码和另一个字段使用相同的盐,那么攻击者可能会尝试同时攻击它们。仅当其他字段的潜在值也是潜在密码时,这对攻击者才是有利的,反之亦然。这可能适用于您的上下文,也可能不适用。
一般来说,盐永远不应该被重用,即使只是因为重用的后果不容易详尽地详述。我建议你不要重复使用你的盐。