hash函数强抗碰撞性和弱碰撞性的区别? 2021-09-04 网络 暂无评论 5189 次阅读 抗碰撞性弱 一个很好的例子,我们实际上只对弱抗冲突感兴趣,将是一个简单的密码存储方案。假设我们通过存储用户提供的密码在数据库中存储它们的哈希值。当用户提供的某些密码的哈希值等于以前存储的值(这是一个固有的不安全方案,但是请暂时抱紧我)时,验证就会成功。现在在这种情况下,给定的x是之前提供的(未知的)原始密码。如果攻击者能够有效地解决“第二前景”问题,则他可以获得散列值与原始x相同的x’,并且因此将被成功认证。请注意,产生任意冲突(即解决强冲突问题)的能力在这种情况下通常是无用的,因为x和x’不太可能类似于其哈希已经存储在数据库中的实际密码。 强耐碰撞性 不同的情况下,我们的关注是强抗冲突,例如,一个应用程序,你希望能够借助唯一的id来查找存储在数据库中的任意数据。不是对原始数据发出查询(由于数据的潜在无界大小,这通常会很慢),而是要计算数据的哈希值。哈希值非常紧凑,其大小有限,因此可以更有效地查询。事实上,在这些情况下,你通常不介意哈希函数的(第二)前像抗性属性,主要是因为前像本身不是秘密。你所关心的是,你绝对希望避免两个不同的数据集散列到相同的值,这本质上是一个冲突。你不关心任何碰撞,特别是,你想要这个属性保持普遍 – 即你不想要任何两个数据集哈希到相同的值(想象有一个’唯一约束’定义在该列)。因为安全性在这些应用程序中通常没有问题,所以我们经常使用非加密散列,主要是因为它们性能更好。 两者之间的关系 直观地并且也通过他们的名字暗示,我们将假设强的抗碰撞性是比难抗碰撞性更难提供的。幸运的是,我们的直觉可以在随机Oracle模型下证明是正确的。我们可以通过假设如果我们有一个有效的概率多项式算法来解决“第二个preimage”,然后这也将给我们一个有效的算法来解决“碰撞”,通过正交性证明这一点。 标签: hash 本作品采用 知识共享署名-相同方式共享 4.0 国际许可协议 进行许可。