Security MD5在实际意义上是否不如SHA等人安全?

Security MD5在实际意义上是否不如SHA等人安全?,security,hash,md5,sha,Security,Hash,Md5,Sha,我已经看到并不断地暗示MD5不如SHA那样安全 我的问题是,在我的情况下,这值得担心吗? 下面是我如何使用它的一个示例: 在客户端,我通过添加当前时间和密码,然后使用MD5对其进行散列,为消息提供“安全”校验和。所以:MD5(消息+时间+密码) 在服务器端,我使用我知道的消息发送时间和客户端密码,对照发送的消息检查此哈希 在本例中,使用SHA而不是MD5真的更好吗? 在什么情况下,哈希函数的选择在实际意义上真正重要 编辑: 只是想澄清一下——在我的例子中,使用SHA算法有什么好处吗 换句话说,在

我已经看到并不断地暗示MD5不如SHA那样安全

我的问题是,在我的情况下,这值得担心吗?

下面是我如何使用它的一个示例:

  • 在客户端,我通过添加当前时间和密码,然后使用MD5对其进行散列,为消息提供“安全”校验和。所以:
    MD5(消息+时间+密码)
  • 在服务器端,我使用我知道的消息发送时间和客户端密码,对照发送的消息检查此哈希
  • 在本例中,使用SHA而不是MD5真的更好吗?

    在什么情况下,哈希函数的选择在实际意义上真正重要

    编辑:

    只是想澄清一下——在我的例子中,使用SHA算法有什么好处吗

    换句话说,在本例中,某人在不知道共享密码的情况下发送消息和正确的哈希值是否可行

    更多编辑:


    抱歉重复编辑-我不清楚我问的是什么。

    这取决于信息内容的价值。SHA家族显然比MD5更安全(其中“更安全”意味着“更难伪造”),但如果你的消息是twitter更新,那么你可能不在乎

    如果这些消息是处理金融交易的分布式系统的IPC层,那么您可能更关心这些消息

    更新:我还应该补充一点,这两种摘要算法在许多方面基本上是可互换的,那么使用更安全的算法会有多大的麻烦呢


    更新2:这是一个更彻底的答案:

    以这种方式使用MD5没有什么不安全的地方。MD5之所以被打破,是因为有一些算法,在给定一组数据的情况下,可以生成额外的数据B来创建所需的散列。这意味着,如果有人知道密码的散列,他们可以生成一个字符串,该字符串将与该散列一起产生。不过,这些生成的字符串通常很长,所以如果您将密码限制为20或30个字符,您可能仍然是安全的


    在MD5之上使用SHA1的主要原因是MD5功能正在逐步淘汰。例如,Silverlight.Net库不包括MD5加密提供程序。

    是的,在实践中值得担心。MD5的缺陷非常严重,它能够伪造与证书颁发机构签署的真实证书相匹配的假证书。这意味着他们能够创建自己的假证书颁发机构,从而可以在浏览器完全信任他们的情况下模仿任何他们喜欢的银行或企业

    现在,他们花了大量时间和精力使用PlayStation3s集群,并花了数周时间找到合适的碰撞。但一旦破坏,散列算法只会变得更糟,永远不会更好。若您关心安全性,那个么最好选择一个完整的散列算法,比如其中的一个(SHA-1也被削弱了,尽管不像MD5那个么坏)

    编辑:我提供给您的链接中使用的技术涉及到能够选择两个任意消息前缀和一个公共后缀,从中可以为每个前缀生成一个数据块,该数据块可以插入该前缀和公共后缀之间,生成MD5和与从另一个前缀构造的消息相同的消息。我想不出在您描述的情况下可以如何利用此特定漏洞,通常,使用安全has for比使用它进行数字签名更能抵御攻击,但我可以想到一些您需要注意的漏洞,这些漏洞大多与您选择的哈希无关

  • 如上所述,您的算法涉及在服务器上以纯文本形式存储密码。这意味着您容易受到任何可能在服务器上发现密码的信息泄露攻击。您可能会认为,如果攻击者可以访问您的数据库,那么游戏就结束了,但是您的用户可能更希望,即使您的服务器被破坏,他们的密码也不会被破坏。由于在线密码的激增,许多用户在不同的服务中使用相同或相似的密码。此外,即使在不存在代码执行或权限提升攻击的情况下,也可能发生信息泄露攻击

    您可以通过将密码存储在服务器上,并使用随机salt散列,来减轻这种攻击;您将密码对
    存储在服务器上,并将salt发送到客户端,以便客户端可以计算
    哈希(密码+salt)
    来代替您提到的协议中的密码。但是,这并不能保护您免受下一次攻击

  • 如果攻击者可以嗅探客户端发送的消息,则可以对客户端密码进行脱机字典攻击。大多数用户的密码具有相当低的熵,一个包含几十万个现有密码的好字典加上一段时间的随机排列可以让攻击者根据嗅探消息所获得的信息很容易找到密码

  • 您建议的技术不会对服务器进行身份验证。我不知道这是否是你所说的一个web应用,但如果是,那么可以在不安全的无线网络上执行DNS劫持攻击或DHCP劫持的人,或者诸如此类的人,可以进行中间人攻击,从你的客户端收集明文密码

  • 虽然当前针对MD5的攻击可能不符合您描述的协议,但MD5已经严重受损,哈希值只会变得更弱,而不会更强。你想打赌你会发现新的攻击可以再次使用吗