【问题标题】:Which hash method do you use (MD5, SHA1, other?)您使用哪种哈希方法(MD5、SHA1、其他?)
【发布时间】:2010-09-28 07:27:24
【问题描述】:

This Wikipedia page 拥有大量散列方法

如您所见,MD5 和 Sha1 都已被破坏(在密码学中,“破坏”意味着存在比暴力攻击更复杂的攻击。换句话说,如果您需要 100 万年才能找到碰撞而不是十亿年使用蛮力,算法被认为是坏的,即使它可能仍然可以安全使用)

你使用什么作为哈希算法?

SHA1 已损坏,但仍需要数十亿年的时间来计算碰撞。

其他散列仍然没有被破坏,但我们必须记住,研究人员将他们的精力集中在主流算法(即 MD5 和 SHA1)上,因此完整的哈希也可能是不安全的。

【问题讨论】:

标签: security encryption hash


【解决方案1】:

现在大多数人仍然使用 SHA1 甚至 MD5,无论是否损坏。因为散列技术的当前状态是,我们知道一些函数存在理论上的漏洞,但没有真正的实际突破,还有一些未经证实的函数,我们对此知之甚少。

如果您使用哈希函数存储密码,那么理论上的漏洞可能对您来说并不重要。首先,因为漏洞的性质并不能真正帮助反转密码。其次,如果您非常关心安全性,您可能不会使用密码。

更重要的是您是否使用数字签名、SSL、IPSEC 等,这些都依赖于哈希函数,并且您是否需要哈希函数长时间保持安全。但是在这里,您别无选择,只能等待,看看哪些散列函数成为新的经过验证的标准,和/或尽可能使用多个散列函数。

即便如此,从总体上看,这还是远远低于威胁列表。与攻击您的哈希函数的人相比,您系统中的安全问题更有可能出自您自己的代码或人员威胁!

不过,如果设计一个新系统,设计它以便您可以随时替换任何您的加密算法的建议仍然很有价值。理想情况下通过配置/插件,而不是重新编译。

【讨论】:

  • 不要不要使用 MD5 或 SHA1 进行密码散列!使用 bcrypt 甚至更好的库。另见security.stackexchange.com/questions/19906/…
  • 在 2020 年,这是一个糟糕的、过时的答案。将 bcrypt 用于密码(您需要散列算法较慢)和 SHA256 或 BLAKE2b 用于比较文件(您需要散列算法较快)。
【解决方案2】:

我使用Whirlpool hash。但是......您不能依靠散列来保护密码。如果您将密码存储在数据库中,总是使用合适的盐(这有助于防止彩虹表攻击和冲突)。

并遵循适用于您的平台的其他适当安全准则 :)

【讨论】:

  • 是的,使用盐是强制性的。但即使使用了体面的盐,MD5 仍然严重损坏。我将研究 Whirlpool 哈希。谢谢:)
【解决方案3】:

这取决于我将哈希用于... 安全?文件更改检测?查找重复文件?

我假设从提出问题的方式来看,前者是您使用哈希的原因。在这种情况下,我建议不要使用“损坏”的方法。

如果是非安全用途(即查找重复文件),MD5 工作正常且速度更快。

【讨论】:

  • 确实,我使用哈希来存储用户密码。
【解决方案4】:

还有其他类似 SHA-256RIPEMD-160 甚至是 SHA-3 候选者之一(请参阅列表 here 供您选择。请始终记住,这些都没有像 MD4 那样经过彻底的测试和分析/5 和 SHA-1。当然,这在性能方面也是有代价的。

您的问题的一个答案是使用其中的两个,希望它们的不同之处足以破坏一个不会破坏另一个。恕我直言,两者都被破坏到足以伪造两个校验和的可能性非常大。

【讨论】:

    【解决方案5】:

    如果您担心安全问题,最好避免“损坏”的哈希函数。对于刚刚被研究人员破解的一些哈希函数,您所说的可能是正确的,但是通过使用从研究工作中获得的新见解,现实世界的攻击很快就会浮出水面。

    例如,现在可以很快找到 MD5 的冲突(我认为 wikipedia 提到了一种可以在几分钟内完成的方法,但如果我错了,请纠正我)。

    如果发生这种情况,您不希望为已经计算的大量内容重新计算所有哈希/签名。

    【讨论】:

    • 是的,您对 MD5 的看法是正确的。关于 SHA1,它已损坏,但您仍然需要数十亿年的时间来计算碰撞。
    【解决方案6】:

    据我了解,MD5 的缺陷在于,拥有原始文本的人现在能够轻松构建具有相同 MD5 摘要的第二文本。

    对于只有原始文本的 MD5 摘要的人仍然不可能构造与之匹配的第二个文本。

    【讨论】:

    • md5 攻击比这还弱。您所描述的称为第二个原像,我们不知道找到一个用于 MD5 的快速方法。攻击者可以做的是构造两条具有相同哈希的消息。
    • @CodesInChaos 对,MD5 并没有被“破坏”,因为蛮力仍然是找到给定哈希的纯文本的唯一方法。好吧,然后在 Google 上查找哈希 ;-)
    【解决方案7】:

    https://security.stackexchange.com/questions/211/how-to-securely-hash-passwordshttps://security.stackexchange.com/questions/56397/which-hashing-algorithm-is-ideal-for-use-on-the-web 也对此进行了讨论

    TL;DR:

    • 如果你散列密码,你需要一些慢的东西,比如 bcrypt。
    • 否则,SHA-256 似乎是可行的方法。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-02-07
      • 2011-08-16
      • 1970-01-01
      • 2013-06-17
      • 1970-01-01
      • 2010-09-06
      • 1970-01-01
      • 2010-12-08
      相关资源
      最近更新 更多