【问题标题】:What are efficient ways to enhance the security of MD5 hashes?增强 MD5 哈希安全性的有效方法是什么?
【发布时间】:2011-06-26 06:57:15
【问题描述】:

我的意思是即使用户选择了一个相对简单的密码,实际上也很难被利用?除了使用额外的加密功能之外,我想不出任何办法。

【问题讨论】:

  • 使用不同的算法。为什么你不得不坚持使用 MD5?

标签: security cryptography md5 hash


【解决方案1】:

你可以做一些事情:

使用所有这些技术以获得最佳安全性。

最后一个在性能方面并不是特别有效,但这是故意的。最常用的加密散列函数的问题在于,它们的计算速度快速,这意味着如果密码是字典单词,它们也可以快速破解。密钥强化的想法是让算法的计算速度如此之慢,以至于即使是弱密码也需要很长时间才能破解。

【讨论】:

  • 哇没有提到前缀攻击?你不会得到我的 +1。
【解决方案2】:

不要思考,阅读 ;)(然后问 SO)你会想用他们自己的盐来加盐密码,这样相同的密码就不会产生相同的哈希

http://en.wikipedia.org/wiki/Salt_(cryptography)

【讨论】:

    【解决方案3】:

    您可能希望在要散列的密码中添加盐 http://en.wikipedia.org/wiki/Salt_(cryptography)。无论如何,请注意,哈希密码总是存在一些风险,请查看这篇文章http://www.f-secure.com/weblog/archives/00002095.html

    【讨论】:

    • 感谢您的链接,Salt 不能免于暴力破解或字典攻击,但我想它现在可以了。
    • @stokkseyri nothing 对暴力破解免疫 - 如果他们(最终)尝试正确的密码,您如何区分攻击者和最终用户?密码学的理念是让暴力破解成为最佳选择。
    【解决方案4】:

    将加密安全及其分析留给专家,然后使用更好的加密功能。

    【讨论】:

    • 我只是在寻找我还没有遇到过的方法,我知道我不是专家,也不能做出重大贡献。
    【解决方案5】:

    不使用 MD5 对密码进行哈希处理。任何针对吞吐量优化的哈希函数也是如此。 SHA1 和 MD5 的理念是,您可以生成几乎无限量数据的紧凑表示,以便您检查其完整性并对其进行加密签名。

    哈希密码的想法是,您无法从哈希中检索密码。然而,大多数密码都比它们的哈希值短,并且实施暴力破解或字典攻击是微不足道的。所以给定一个散列,使用的散列函数可以在本地实现检查逻辑——可能在大型并行计算机上,想想 GPU——并且相当快地破解密码。

    您真正想要做的是使用哈希函数,它的计算量如此之大,以至于哈希需要很长时间,甚至尝试对 4 个字符的密码进行暴力攻击也需要数小时。

    【讨论】:

      【解决方案6】:

      只需在用户输入的密码中添加一些盐即可。

      $salt = 'random string';
      md5(sha1(md5($salt . $_POST['password'])));
      

      这个结果几乎不可能被破解。

      【讨论】:

      • 被利用了?我想你的意思是破解。是的,字典攻击很容易针对它执行,它称为 FOR LOOP。
      • 如果盐的结构/设置受到损害,或者我想象的需要相当长的时间。
      猜你喜欢
      • 2011-05-16
      • 2017-06-16
      • 1970-01-01
      • 2010-09-05
      • 2012-06-23
      • 1970-01-01
      • 2015-05-28
      • 2018-11-04
      • 1970-01-01
      相关资源
      最近更新 更多