【问题标题】:Is it possible to create a forged file which has the same checksums using two different algorithms?是否可以使用两种不同的算法创建具有相同校验和的伪造文件?
【发布时间】:2009-07-24 23:56:10
【问题描述】:

这篇博文http://blogs.technet.com/dmelanchthon/archive/2009/07/23/windows-7-rtm.aspx(德语)让我有点灵感

当前的概念是 md5 和 sha1 都有些损坏。不容易和快速,但至少对于 md5 在实际可能性的范围内。 (我根本不是加密专家,所以也许我在这样的事情上错了)。

所以我问自己是否可以创建一个文件 A',它具有 相同的大小相同的 md5 总和相同的 sha1和作为原始文件A。

首先,这可能吗?

其次,以目前的硬件/软件,这在现实中是否可行?

如果不是,那么始终使用两种不同的算法(即使它们有某种弱点)不是保证文件完整性的最简单方法吗?

更新

澄清一下:这个想法是有一个文件 A 和一个满足条件的文件 A':

size(A) == size(A') && md5sum(A) == md5sum(A') && sha1sum(A) == sha1sum(A')

【问题讨论】:

  • 这实际上是一个有趣的想法,类似于 DES3 背后的原始推理。 md5 有点坏,sha1 有点坏,发现联合碰撞的概率是P(md5sum(A) == md5sum(A')) * P(sha1sum(A) == sha1sum(A')),因为它们是相互独立的,这意味着非常小。但是对于文件共享,我想这是太多的工作,因为你可以从官方来源重新下载文件。对于快速检查,md5 就足够了。
  • 唉,这两种算法来自同一个家族,因此并不独立。

标签: security cryptography


【解决方案1】:

“有可能吗?” - 是的,如果校验和的总大小小于文件的总大小,就不可能避免冲突。

“用当前的硬件/软件,这在现实中是否可行?” - 如果构造一个文本来匹配每个正在使用的校验和的给定校验和是可行的,那么是的。

请参阅wikipedia on concatenation of cryptographic hash functions,这对 google 来说也是一个有用的术语。

从那个页面:

“但是,对于 Merkle-Damgård 哈希 函数,连接函数 只有最好的一样强大 成分,不强。 Joux 指出 2 次碰撞导致 n-collisions:如果可行 找到两条 MD5 相同的消息 哈希,实际上不再是 很难找到尽可能多的消息 攻击者希望具有相同的 MD5 哈希。在 n 条消息中 相同的 MD5 哈希,有可能 是 SHA-1 中的冲突。这 需要额外的工作才能找到 SHA-1 碰撞(超出 指数生日搜索)是 多项式。这个论点是 芬尼总结的。”

【讨论】:

  • 我不会在这种情况下搜索术语连接,但我想这就是我的问题的答案。剩下的问题就是在现实中做这种事情的可能性。
  • moonshadow 在引文中也回答了后一个问题:将两者结合使用并不比单独使用两者中的最好的更难。
【解决方案2】:

对于一个天真的答案,我们会做出一些(不正确的)假设:

  • SHA1 和 MD5 散列算法都会导致一组随机输入的散列值均匀分布
  • 抛开算法细节不谈——随机输入字符串同样有可能产生任何哈希值

(基本上,没有聚集且分布良好的域。)

如果发现一个字符串与另一个的 SHA1 哈希冲突的概率是 p1,类似地,对于 MD5 来说是 p2,那么天真的答案是找到一个与两者都冲突的字符串的概率是 p1*p2。

但是,哈希都被破坏了,所以我们知道我们的假设是错误的。

散列具有聚集性,对某些数据的更改比其他数据更敏感,换句话说,并不完美。另一方面,一个完美的、完整的散列算法将具有上述属性,而这正是难以发现冲突的原因。它们是随机的。

概率本质上取决于算法的属性——基本上,由于我们的假设不成立,我们不能“轻易”确定它有多难。事实上,寻找碰撞输入的难易程度很大程度上取决于输入字符串本身的特性。有些可能相对容易(但在今天的硬件上可能仍然不切实际),并且由于两种算法的不同性质,有些可能实际上是不可能的。

【讨论】:

    【解决方案3】:

    所以我问自己会不会 可以创建一个文件 A' 相同的大小,相同的 md5 总和,以及 与原始文件相同的 sha1 和 A.

    是的,复制文件。

    除此之外,并非没有大量计算资源来检查大量排列(假设文件大小不小)。

    你可以这样想:

    如果文件大小增加 n,可能的假冒可能性会增加,但测试组合所需的计算成本会以指数方式增加 2^n。

    因此,您的文件越大, 越有可能存在欺骗,但您找到它的可能性就越小。

    【讨论】:

    • -1 听起来很权威,但实际上并不是密码学家(请参阅 moonshadow 对两个连接的安全性的正确评估的答案)
    • @Nick:我完全同意。在加密货币中,有很多令人惊讶和不直观的结果。哈希的连接就是其中之一,在这里只是简单的猜测是行不通的。
    【解决方案4】:

    理论上是的,你可以拥有它,但实际上它是一种勾结。在实践中,甚至没有人能够同时创建 SHA1 共谋,更不用说 MD5 + SHA1 + Size。如果没有世界上的全部计算机能力并运行一段时间,这种组合现在简直是不可能的。

    尽管在不久的将来我们可能会在 SHA1 和 MD5 中看到更多漏洞。有了更好的硬件(尤其是 GPU)的支持,何乐而不为呢。

    【讨论】:

      【解决方案5】:

      理论上你可以做到这一点。在实践中,如果您从 MD5 和 SHA1 提供的两个校验和开始并尝试创建一个产生相同两个校验和的文件 - 这将非常困难(比创建一个产生相同 MD5 校验和的文件困难很多倍,或者SHA1 校验和隔离)。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2013-10-09
        • 1970-01-01
        • 2016-03-30
        • 2013-09-22
        • 1970-01-01
        • 2013-12-10
        相关资源
        最近更新 更多