我现在正在做一个金融项目。在这里,团队正在考虑使用MD5
for password hashing
。
但是,今天很容易复制SHA1
or MD5
要解密的密码,包括复杂密码,例如:My$uper$ecur3PAS$word+448
,您可以使用在线页面来解密它,这就是它。
中小型开发者(包括我)使用那些hashing methods
,但我认为不足以提供数据库的安全性。
(不包括firewalls
, network security
, iptables
, etc.).
有人可以告诉我解决此漏洞的更好方法是什么吗?
As per OWASP 密码存储备忘单 https://www.owasp.org/index.php/Password_Storage_Cheat_Sheet,建议是:
- Argon2 是密码哈希竞赛的获胜者,应该被视为您新应用程序的首选;
- 当需要 FIPS 认证或多个平台上的企业支持时,PBKDF2;
- scrypt,其中抵抗任何/所有硬件加速攻击是必要的,但支持不是。
- bcrypt,其中 PBKDF2 或 scrypt 支持不可用。
对于大多数与安全相关的用例,MD5 和 SHA1 并不安全,因为可能会发现与这些算法的冲突。换句话说,给定一个输入及其哈希值,可以导出具有相同哈希值的另一个输入。
SHA-2 哈希算法组对于许多安全用例来说都是安全的,但对于密码哈希来说却不是,因为与上述算法相比,它们的速度非常快。对于密码哈希来说,性能是我们不想要的,因为这会让攻击者更容易通过在短时间内尝试各种密码来执行暴力攻击。
因此,上述 4 种算法在内存、计算能力和时间方面都是昂贵的。这些值通常是参数化的,以便随着新技术随着时间的推移提高计算能力,它们可以调整到较高的值。因此,在使用这些算法时,正确选择工作因子值非常重要。设置非常低的值可能会达不到目的。
除此之外,还应该使用盐。
再次来自同一 OWASP 来源:
盐有两个用途:
- 防止受保护的表单泄露两个相同的凭据,并且
- 在不依赖凭证复杂性的情况下增加熵来保护功能。
第二个目标是使针对个人凭证的预计算查找攻击和针对群体的基于时间的攻击变得棘手
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)