MS-SQL 密码存储

信息安全 密码学 密码 哈希
2021-08-21 12:21:16

对于在 MS-SQL 数据库中替换 MD5 哈希方法来存储密码,您有什么建议?

4个回答

早在 1978 年,Robert Morris 和 Ken Thompson 发布了Unix“crypt”密码方案,其中包含对密码散列至关重要的两项创新:盐和迭代计数。没有盐,哈希很容易受到哈希表和彩虹表的攻击即使使用盐,也需要进行迭代以防止快速暴力破解大多数 8 个或更少字符的密码,更不用说字典单词的简单变体了。 实际生成彩虹表需要多长时间?

所以请使用为密码设计的真实哈希值——即一个缓慢且加盐的哈希值。一些好的候选人是:

您可以调整它们以不占用太多服务器时间,但人们不会经常进行身份验证,所以不要小气。

另请参阅:密码散列 - IT 安全

最重要的建议是迁移到为密码散列设计的算法:bcrypt、PBKDF2 或 scrypt。这些算法旨在满足散列密码的需求;例如,为了阻止字典攻击,他们使用迭代来确保散列很慢,为了阻止摊销攻击,他们在散列中加入了盐。

无需从 MD5 迁移到 SHA。你可能听说过 MD5 坏了。这是真的,但不会危及 MD5 用于密码散列。对 MD5 的攻击在于它的抗碰撞性。但是,MD5 的单向性仍然很强。对于密码哈希,您所需要的只是单向性。因此,没有必要从 MD5 迁移到另一个散列,如 SHA256 或 SHA512(可能出于“外观”的原因除外)。

因此,您可以做的最重要的事情是切换到 bcrypt/PBKDF2/scrypt 以使字典搜索更加困难。

另请参阅以下帖子,其中包含有关如何散列密码的出色建议:

我认为:此时SHA256、SHA512更安全。

截至 2009 年,两个最常用的加密哈希函数是 MD5 和 SHA-1。但是,MD5已经被破解了;2008 年,针对它的攻击被用来破解 SSL。SHA-0 和 SHA-1 哈希函数是由 NSA 开发的。
2005 年 2 月,报告了对 SHA-1 的成功攻击,在大约 2^69 次散列操作中发现了冲突,而不是 160 位散列函数预期的 2^80 次。
2005 年 8 月,又一次成功的 SHA-1 攻击被报道,在 2^63 操作中发现了冲突。SHA-1 的理论弱点也存在,这表明它可能在几年内被打破。
新应用程序可以通过使用更高级的 SHA 系列成员(例如 SHA-2)或使用不需要抗碰撞性的随机散列等技术来避免这些问题。

有关更多信息,请参阅维基百科

带盐的 SHA-2 效果很好。但是,您必须考虑如何迁移密码。