在散列之前是否将一个常量字符串添加到用户的密码使其更安全?
在散列之前是否将代码中存储的常量字符串添加到密码中使得攻击者难以找出原始密码?在散列之前是否将一个常量字符串添加到用户的密码使其更安全?
这个常量字符串是除盐之外的。因此,Hash(password + "string in code added to every password" + randomSaltForEachPassword)
通常情况下,如果攻击者拿到他们的数据库,他们可能通过蛮力找出某人的密码。数据库包含与每个密码相对应的盐分,因此他们会知道应该用什么方法来限制他们的蛮力尝试。但是,通过代码中的常量字符串,攻击者还必须获得源代码,以了解要对其每个暴力试图追加什么内容。
我认为这会更安全一些,但我希望得到别人的想法,同时也要确保我不会无意中使其不那么安全。
鉴于您已经有了一个随机salt,所以附加其他字符串既不会增加安全级别也不会降低安全级别。
基本上,这只是浪费时间。
更新
这是越来越有点长使用的意见。
首先,如果攻击者拥有数据库,并且唯一加密的是密码,那么无论如何游戏。他们拥有的数据是真正重要的部分。
其次,盐意味着他们必须创建一个更大的彩虹表,以包含更大的密码长度可能性。这取决于盐的长度和裂解器可用的资源而变得不切实际。看到这个问题了一点信息: How to implement password protection for individual files?
更新2 ;)
这是事实,用户重复使用的密码(如一些最新的被黑网站的显示),并要它的好防止数据丢失影响他们。但是,一旦阅读完此更新,您将会看到为什么这不是完全可能的。其他问题将不得不一起考虑。 salt的全部用途是确保相同的两个密码导致不同的散列值。每个salt值都需要创建一个包含所有密码哈希可能性的彩虹表。
因此,不使用盐值意味着可以引用单个全局彩虹表。这也意味着,如果您只对网站上的所有密码使用一个salt值,那么他们又可以创建一个彩虹表并一次获取所有密码。
但是,当每个密码有一个单独的盐值时,这意味着他们必须为每个盐值创建一个彩虹表。彩虹表需要时间和资源来建立。可以帮助限制创建表所需时间的事情是知道密码长度限制。例如,如果您的密码必须介于7到9个字符之间,那么黑客只需计算该范围内的散列值。
现在盐值必须可用于要散列密码尝试的函数。一般来说,你可以在别处隐藏这个值;但坦率地说,如果他们已经窃取了数据库,那么他们就可以很容易地追踪到它。因此,将值放在实际密码旁边对安全性没有影响。
添加额外的字符是所有密码共同的没有增加任何混合。一旦黑客破解第一个,很明显其他人有这个价值,他们可以相应地编码他们的彩虹表生成器。这意味着它基本上不会节省时间。此外,它会导致您的安全感错误,从而导致您做出错误的选择。
这导致我们回到salting密码的目的。目的不是为了使它不可能,因为有时间和资源的任何人都可以破解它们。目的是让它变得困难和耗时。耗时的部分是让您有时间检测到中断,通知您需要的所有人,并在系统中强制更改密码。
换句话说,一旦数据库丢失,应通知所有用户,以便他们可以采取适当的措施在您的系统和其他系统上更改密码。盐只是买你和他们的时间来做到这一点。
我之前提到的“不切实际”之所以关于破解它的原因是,这个问题实际上是黑客确定密码的价值与破解密码的成本之间的一个问题。使用合理的盐值可以将计算成本提高到足以让很少黑客烦恼的程度。他们往往是低挂水果的人;除非你有理由成为目标。此时您应该查看其他形式的身份验证。
这只有在您的威胁模型包含攻击者以某种方式获取您的密码数据库但无法读取存储在您的代码中的密钥的情况下才有所帮助。对于大多数人来说,这不是一个非常可能的情况,所以它不值得迎合。
即使在这种有限的情况下,它也不会为您带来很多额外的安全性,因为攻击者可以简单地使用自己的密码并遍历所有可能的密钥值。一旦他们找到了正确的密码(因为密码正确),他们就可以像通常那样攻击数据库中的所有其他密码。
如果你担心安全地存储密码,你应该使用一个标准的方案,如PBKDF2,它使用密钥伸展使暴力强制更不实际。
确定吗? salt存储在数据库中,所以如果攻击者拥有数据库,那么他们就知道每个密码的含盐量。但是对于代码中的字符串,攻击者是否也需要获取源代码(或者弄清楚字符串是以其他方式)? – Kyle 2011-03-22 15:46:59
1 - 不显示用户密码也很重要。用户经常在许多不同的网站上使用相同的密码,如果我的网站被黑客入侵,我不希望黑客能够获得用户的密码。 2 - 你能提供一个链接或一些阐述吗?盐是密码中出现的已知值... 3 - 含盐意味着彩虹桌无用,这意味着每个用户的哈希密码必须分别强制强制。这需要更长的时间,但仍然可以通过这种方式检索密码。 – Kyle 2011-03-22 16:52:33
@kyle:查看其他信息 – NotMe 2011-03-22 19:17:49