我是安全分析师,我被问到这个问题SHA1(3DES-CBC)是否可以在数据库中存储密码?
然而,据我所知,我觉得使用盐来存储任何敏感信息。我觉得CBC模式在某些协议上很容易受到攻击。而且我觉得这是最好的实践https://www.owasp.org/index.php/Password_Storage_Cheat_Sheet
请更正我对上述内容的理解。
但是,我正在努力了解SHA1(3DES-CBC)的技术含义,以便更好地向我的团队解释其在实施中的问题。请同样告诉我。
答案 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很棒,因为:
scrypt就像bcrypt,但也需要大量内存来计算哈希,进一步减慢攻击者的速度。 scrypt是相对较新的,所以你现在可能想坚持使用bcrypt。