如果网站将我们的密码存储在md5散列中,它们怎么可能被黑客入侵呢?



我是说,他们说md5哈希是单向的。一旦加密,就无法解密。我读了其他问题,人们说现在很容易匹配和解密使用他们所谓的"彩虹表"…好吧,它们是可以被解密的,但是,如果可以的话,有没有其他方法可以保证网站的安全呢?如果所有md5都是可解密的,那么FAcebook和Twitter是如何保证数据安全的呢?

当人们说"md5哈希值是单向的"时,他们真正的意思是当你从一个足够大的输入空间中选择输出时,那么就没有已知的方法来有效地反转它们。但是如果你的输入空间很小呢?

密码往往很小,因为它们需要让人记住,所以它们来自一个很小的输入空间。这意味着可以简单地尝试猜测常见密码(例如abc123、password1、qwerty等),以查看md5产生的输出值是否与存储在数据库中的输出值相同。这并不意味着他们可以得到所有的密码,但他们肯定可以得到大量的密码。这被称为字典攻击。

这个话题有很长的历史,可以追溯到Unix的"crypt"时代。添加"盐"的想法是为了使密码更难在字典攻击中被猜出,而"加密"功能被设计得很慢,以进一步减缓字典攻击。这暂时可行,但随着技术的发展,需要更好的解决方案。

此外,彩虹表在淘汰旧防御方面发挥了作用。彩虹表是一个巨大的查找表,可以让黑客更快地找到密码。这是一种时间-记忆的权衡。实际上,彩虹表只是Martin Hellman(密码学领域有史以来最伟大的人之一)早期技巧的推广。

长话短说,你只是想知道今天的好公司在做什么,关于这一点,我建议你参考这两个参考:

  • CrackStation。网
  • Thomas Pornin

实际上,Thomas Pornin有很多关于这个stackoverflow的信息,所以我建议你谷歌一下,因为他真的很了解这个主题,而且在这个主题上写得比任何人都好。

  • 密码应该散列存储,并包含盐。哈希算法应为SHA256或更好;考虑像script或PBKDF2这样的慢散列。
  • 确保您的服务器基础设施安全,并使用可用的工具积极执行审计。
  • 数据库解决方案,如MySQL通常包括加密方法,这是基于安全密钥的身份验证和解密。

相关内容

最新更新