Security 将常量字符串添加到用户';在对密码进行哈希运算之前,它是否会更安全?

Security 将常量字符串添加到用户';在对密码进行哈希运算之前,它是否会更安全?,security,hash,passwords,cryptography,Security,Hash,Passwords,Cryptography,在散列之前将存储在代码中的常量字符串添加到密码中是否会使攻击者更难识别原始密码 这个常量字符串是对salt的补充。所以,Hash(密码+“代码中的字符串添加到每个密码”+randomSaltForEachPassword) 通常,如果攻击者掌握了数据库,他们可能会通过暴力破解某人的密码。数据库包含与每个密码相对应的盐,因此他们知道用什么来盐他们的暴力尝试。但是,对于代码中的常量字符串,攻击者还必须获得源代码,才能知道在每次暴力尝试中附加什么 我认为这样会更安全,但我想了解其他人的想法,同时确保我

在散列之前将存储在代码中的常量字符串添加到密码中是否会使攻击者更难识别原始密码

这个常量字符串是对salt的补充。所以,
Hash(密码+“代码中的字符串添加到每个密码”+randomSaltForEachPassword)

通常,如果攻击者掌握了数据库,他们可能会通过暴力破解某人的密码。数据库包含与每个密码相对应的盐,因此他们知道用什么来盐他们的暴力尝试。但是,对于代码中的常量字符串,攻击者还必须获得源代码,才能知道在每次暴力尝试中附加什么


我认为这样会更安全,但我想了解其他人的想法,同时确保我不会无意中让它变得不安全

假设您已经有了一个随机salt,那么附加一些其他字符串既不会增加也不会降低安全级别

基本上,这只是浪费时间

更新

使用评论的时间有点长了

首先,如果攻击者拥有数据库,而您唯一加密的是密码,那么无论如何都要进行游戏。他们拥有真正重要的数据

第二,salt意味着他们必须创建一个更大的彩虹表来包含更大的密码长度。根据盐的长度和裂解器可利用的资源,所需的时间变得不切实际。有关更多信息,请参见此问题:

更新2 ;)

诚然,用户会重复使用密码(正如一些最新的黑客网站所揭示的那样),您希望防止数据丢失影响密码是件好事。然而,一旦你读完这个更新,你就会明白为什么这不是完全可能的

其他问题必须综合考虑。salt的全部目的是确保相同的两个密码产生不同的哈希值。每个salt值都需要创建一个包含所有密码散列可能性的彩虹表

因此,不使用salt值意味着可以引用单个全局彩虹表。这也意味着,如果你只对站点上的所有密码使用一个salt值,那么,同样,他们可以创建一个彩虹表,一次获取所有密码

然而,当每个密码都有一个单独的salt值时,这意味着他们必须为每个salt值创建一个彩虹表。彩虹表需要时间和资源来构建。了解密码长度限制有助于限制创建表所需的时间。例如,如果密码必须介于7到9个字符之间,那么黑客只需计算该范围内的哈希值

现在,salt值必须可用于将密码尝试散列的函数。一般来说,你可以把这个值隐藏在别处;但坦率地说,如果他们偷了数据库,那么他们就能很容易地找到它。因此,将值放在实际密码旁边对安全性没有影响

添加所有密码共有的额外字符位不会对混合添加任何内容。一旦黑客破解了第一个,很明显其他人都有这个值,他们可以相应地编写彩虹表生成器。这意味着它本质上不节省时间。此外,它会让你产生一种错误的安全感,从而导致你做出错误的选择


这让我们回到了用盐腌制密码的目的。这样做的目的并不是让它变得不可能,因为任何有时间和资源的人都可以破解它们。这样做的目的是使其变得困难和耗时。耗时的部分是让您有时间检测入室盗窃、通知您必须通知的所有人,以及强制在系统中更改密码

换句话说,一旦数据库丢失,则应通知所有用户,以便他们可以采取适当的措施更改您和其他系统上的密码。盐只是为你和他们争取时间


我之前提到破解密码“不切实际”的原因是,问题实际上是黑客决定密码的价值与破解密码的成本。使用合理的salt值,您可以将计算成本提高到很少有黑客会费心的程度。他们往往是低挂水果类的人;除非你有理由成为目标。此时,您应该研究其他形式的身份验证。

鉴于您已经有了一个随机salt,添加其他字符串既不会增加也不会降低安全级别

基本上,这只是浪费时间

更新

使用评论的时间有点长了

首先,如果攻击者拥有数据库,而您唯一加密的是密码,那么无论如何都要进行游戏。他们拥有真正重要的数据

第二,salt意味着他们必须创建一个更大的彩虹表来包含更大的密码长度。根据盐的长度和裂解器可利用的资源,所需的时间变得不切实际。有关更多信息,请参见此问题:

更新2 ;)

诚然,用户会重复使用密码(正如一些最新的黑客网站所揭示的那样),您希望防止数据丢失影响密码是件好事。然而,一旦你读完这个更新,你就会明白为什么这不是完全可能的

其他问题必须综合考虑。salt的全部目的是确保相同的两个密码产生不同的哈希值。各盐值w