坚持MD5,有没有办法让它更安全



我现在正在工作的网站使用第三方计费公司处理用户注册,所以所有的用户名和密码都输入在账单的网站,然后账单将用户名和用户现在加密的密码写入我们服务器上的'会员'数据库。

问题是,账单(和他们中的许多人,从我收集)加密密码与MD5,我已经读了一遍又一遍是不安全的。但是,由于加密是在账单端处理的,而且他们只提供MD5,我想知道我这端是否可以做些什么来使密码更安全?

当我写这篇文章时,我在想,"如果出纳员正在加密密码,我可能没有办法增加更多的安全性",因为出纳员的部分工作是处理会员问题,如密码丢失和其他问题。

所以…是否有一种方法可以为数据库中存储的密码增加更多的安全性,或者我们只是冒险使用我们都知道是不安全的标准?我们只能短期使用这个账单,更糟糕的是,我联系了另一个非常有名的账单,他们也使用MD5。

提前感谢!

不幸的是,在这个阶段,您对账单处理无能为力。很难知道你在试图减轻哪些威胁。如果您担心计费器和您的机器之间的通信被监视,那么SSL或SSH应该可以帮助解决这个问题。如果您担心攻击者侵入您的数据库并窃取密码,那么使用另一种方案来存储密码将会有所帮助。

您可以继续使用MD5并添加盐。请检查你的账单是否在保存密码,如果不是,你真的需要删除它们。他们的数据库将容易被彩虹表查找。

彩虹表是一个用于反转加密哈希函数的预计算表,通常用于破解密码哈希

您可以使用收到的MD5并使用更好的密码哈希算法(假设您不需要保留原始MD5)。比特币就是一个例子。请注意,SHA1, SHA-256等,虽然更好的散列算法在密码散列方面并不那么出色。原因是SHA被设计为快速的。您希望密码散列相对较慢。对于合法用户来说,等待20毫秒等待正确的密码验证根本不是时间,但对于攻击者来说,这大大降低了他们暴力破解密码的能力。

bcrypt是由Niels Provos和David mazi设计的密码密钥派生函数,基于Blowfish密码,并于1999年在USENIX上提出。[1]除了加入盐来防止彩虹表攻击之外,bcrypt是一个自适应函数:随着时间的推移,迭代计数可以增加以使其变慢,因此即使计算能力增加,它仍然可以抵抗暴力搜索攻击。

本质上,bcrypt有一个很好的哈希算法,需要一个盐,并允许您指定哈希算法在其上运行的次数。例如,你可以从100发子弹开始。在两年的时间里,当计算能力提高时,你可以把它增加到150。

Md5在技术上是一种加密算法,而不是加密算法。不同之处在于,您不能对散列字符串进行反散列(理论上,md5是弱的,因为这被证明是错误的)。如果您有适当的密钥,则可以撤销加密。

你最担心的是什么?您是否担心密码在您和账单人之间传输时被人拦截,或者您是否担心有人打开数据库?

如果你担心有人闯入你的数据库并获得你的表的密码,那么你绝对可以提高安全性。您可以在持久化条目之前使用带有您自己的私钥的现代算法对它们进行加密。在使用md5值之前,不要将密钥存储在服务器上,也不要在提取数据库时不加密。

你也可以用一些现代的强散列算法来散列他们给你的md5值(并使用盐)。这意味着,如果有人得到了你的表,他们将不得不解开你的哈希,然后解开md5。假设您会使用强散列,那么第一步将是不可能的。与往常一样,要小心安全性,因为您肯定应该自己编写一些东西,否则会有错误!

相关内容

  • 没有找到相关文章

最新更新