2010-12-19 169 views
3

我一直在做很多研究,以确定存储我正在开发的系统的密码的最佳实践。到目前为止,我已经决定要使用带有RNG的SHA512哈希来生成一个的密钥,每个密码(显然是对彩虹表等的最佳实践)。密码salt应该存储在数据库的自己的字段中吗?

会在单独的字段存储的密码表中的过于简单化,以确定在数据库中的密码表示(有一个PasswordHash场和PasswordSalt场)?这可能看起来像通过默默无闻的安全性,但我正在考虑将salt和密码哈希存储在一起并存在一个字段中。

这会“帮助”吗?

+0

+1好问题,我在写这本书之前写了自己的。 – James 2012-06-30 11:19:30

回答

3

分开存储。

请记住您的防范措施:该场景是有人获取数据库的副本,因此可以对该字段执行彩虹表查找(如果不是盐腌的话)。

攻击者是否知道盐真的没关系;这只是为了阻止他使用预先生成的彩虹桌。

+0

我知道一般想法,但不知道它是否真的非常必要。感谢您的输入。 – TheCloudlessSky 2010-12-20 14:23:40

+0

为了优化起见,当然最好是在同一个领域存储? – James 2012-06-30 11:18:42

5

这并不重要。盐不会泄露任何秘密,事实上,它有助于保守秘密。如果你想打动你的数据库设计师的朋友,把它保留在自己的领域。如果你想打动你的优化的朋友,保持它的散列。这是一个风格问题,真的。

关于盐;你可能想要足够长的时间来防止彩虹桌攻击:http://en.wikipedia.org/wiki/Rainbow_table#Defense_against_rainbow_tables

相关问题