首页 文章

在实践中忽略SHA碰撞的可能性是否安全?

提问于
浏览
185

假设我们有十亿个独特的图像,每个图像一兆字节 . 我们计算每个文件内容的SHA-256哈希值 . 碰撞的可能性取决于:

  • 文件数量

  • 单个文件的大小

假设它为零,我们可以在多大程度上忽略这种可能性?

3 回答

  • 15

    通常的答案是这样的:一个流氓小行星在下一秒内在地球上坠毁的概率是多少,消灭了我们所知道的文明,杀死了几十亿人?可以说,任何概率低于该事件的不幸事件实际上都不是非常重要 .

    如果我们有一个输出大小为n的"perfect"哈希函数,并且我们有p个消息要哈希(单个消息长度并不重要),那么冲突概率约为p2 / 2n 1(这是一个对"small" p有效的近似值,即基本上小于2n / 2) . 例如,使用SHA-256(n = 256)和10亿条消息(p = 109),概率大约为4.3 * 10-60 .

    大规模杀人犯太空岩石平均每3000万年发生一次 . 这导致这种事件在下一秒发生的概率大约为10-15 . 这比SHA-256碰撞的概率高出几个数量级 . 简而言之,如果您发现SHA-256碰撞可怕,那么您的优先级是错误的 .

    在安全设置中,攻击者可以选择要进行哈希处理的消息,然后攻击者可能会使用超过10亿条消息;但是,你会发现攻击者的成功概率仍然很小 . 这是使用具有256位输出的散列函数的全部要点:因此可以忽略碰撞的风险 .

    当然,以上所有假设SHA-256都是一个“完美”的哈希函数,这远未得到证实 . 不过,SHA-256似乎相当强大 .

  • 43

    碰撞的可能性不取决于文件的大小,只取决于它们的数量 .

    这是birthday paradox的一个例子 . 维基百科页面给出了碰撞可能性的估计 . 如果你运行这些数字,你就会拥有足够的1MB文件来获得SHA-256甚至0.01%的冲突可能性 .

    基本上,你可以简单地忽略这种可能性 .

  • 340

    首先,it is not zero, but very close to zero .

    关键问题是如果实际发生碰撞会发生什么?如果答案是"a nuclear power plant will explode"那么你可能不应该忽略碰撞的可能性 . 在大多数情况下,后果并不严重,因此您可以忽略碰撞的可能性 .

    另外,不要忘记您可以部署软件(或其中的一小部分)并同时在大量计算机中使用(现在几乎所有地方都包含一些微型嵌入式微型计算机) . 在这种情况下,您需要将您获得的估计值乘以最大可能的副本数 .

相关问题