SHA1(3DES-CBC)是否可以在数据库中存储密码?

时间:2014-03-27 00:40:47

标签: security encryption cryptography password-encryption

我是安全分析师,我被问到这个问题SHA1(3DES-CBC)是否可以在数据库中存储密码?

然而,据我所知,我觉得使用盐来存储任何敏感信息。我觉得CBC模式在某些协议上很容易受到攻击。而且我觉得这是最好的实践https://www.owasp.org/index.php/Password_Storage_Cheat_Sheet

请更正我对上述内容的理解。

但是,我正在努力了解SHA1(3DES-CBC)的技术含义,以便更好地向我的团队解释其在实施中的问题。请同样告诉我。

3 个答案:

答案 0 :(得分:1)

  

然而,据我所知,我觉得使用盐来存储任何敏感信息......

OWASP的John Stevens汇总了一份关于服务器密码安全性和存储的好文档。它遍历攻击和威胁,然后添加中断威胁的步骤。以下是对OWASP材料的引用(您只引用了其中一个):


  

我觉得CBC模式在某些协议上很容易受到攻击......

我不相信这是正确的。以CBC模式操作的分组密码是伪随机函数。它拥有PRP概念的安全性。但是,它不能在真空中使用。因此,您需要了解两个OWASP参考文献中的材料。


  

SHA1(3DES-CBC)...

我不确定复合函数的用途是什么。您必须向开发人员询问他们的安全目标是什么,以及它所取代的威胁。天真的,我会说AES / CBC或3DES / CBC就足够了。

您还有应对的密钥存储问题。它被称为“无人值守密钥存储”问题,它的问题没有解决方案。见Peter Gutmann的Engineering Security

答案 1 :(得分:1)

像SHA *这样的快速哈希算法永远不是哈希密码的好选择,相反,你应该使用慢速密钥派生函数,其成本因子如BCrypt或PBKDF2。

我找不到关于“3DES-CBC”与SHA1结合的更多信息,但两者(SHA1和DES)都是散列函数而没有迭代。

答案 2 :(得分:-1)

NO!

如果要将密码存储在数据库中,则应使用bcrypt或scrypt。多年来,bcrypt已被众多密码学家分析,并且是“事实上的”密码哈希算法。

SHA1很糟糕,因为:

  • 它可以快速运行(糟糕,容易受到暴力破坏)。
  • 易受冲突攻击(这意味着攻击者甚至不需要强行密码)。
  • 如果你不使用盐(彩虹表),它可以很容易地逆转。

bcrypt很棒,因为:

  • 速度很慢(减缓攻击者试图暴力破解)。
  • 它需要大量的CPU(这意味着攻击者需要许多计算机,CPU数量很大)。
  • 没有碰撞。

scrypt就像bcrypt,但也需要大量内存来计算哈希,进一步减慢攻击者的速度。 scrypt是相对较新的,所以你现在可能想坚持使用bcrypt。