摘录
探索在 128 位哈希中发生碰撞的可能性,并理解为了安全目的使用足够大小的哈希的重要性。
介绍
在cryptography中,128 位哈希是指产生 128 位值的哈希函数的输出。哈希函数广泛应用于数字签名和密码存储等应用中。了解 128 位哈希中碰撞(两个输入产生相同输出)的机会能够揭示其安全性和性能。
本文将介绍计算 128 位哈希中碰撞概率的数学原理,实际可能性,与其他哈希大小的比较,以及选择合适的哈希大小的重要性。
理解哈希函数中的碰撞
当哈希函数中两个不同的输入生成相同的哈希值时,就发生了碰撞。这是由于鸽巢原理,因为有限数量的输出必须表示无限数量的可能输入。
为了安全起见,哈希函数旨在将碰撞的机会最小化。强碰撞抵抗确保找到散列到相同值的输入是不可行的。
哈希函数背后的数学原理
理解碰撞概率涉及概率论原理和生日悖论。
生日悖论指出,在只有 23 个人的房间里,存在大约 50%的机会两人生日相同。这个反直觉的结果也适用于哈希碰撞。
128 位哈希的碰撞概率
128 位哈希有 2^128 个可能的值,约为 3.4 x 10^38。
使用生日悖论,当输入数量为 sqrt(2^128)或 2^64 时,碰撞的机会约为 50%。
因此,128 位哈希的碰撞概率为 2^64 中的 1。
实际影响
根据概率,128 位哈希值发生碰撞的可能性非常小,几乎不会意外发生。
要找到碰撞,需要通过暴力破解生成 2^64 个哈希值,而现有技术在计算方面是不可行的。
与其他哈希大小的比较
64 位哈希 - 发生碰撞的概率为 2^32 中的 1,不适用于密码学。
256 位哈希 - 发生碰撞的概率为 2^128 中的 1,非常安全。
512 位哈希 - 发生碰撞的概率为 2^256 中的 1,对大多数用途来说过于冗余。
128 位哈希在碰撞抵抗和效率之间取得了良好的平衡。
结论
总之,由于输出空间的巨大大小,128 位哈希值发生碰撞的概率极低(2^64 中的 1)。利用当前技术通过暴力计算来找到碰撞是不可行的。
相比之下,128 位哈希在大多数应用中提供了良好的碰撞抵抗性能。理解哈希概率理论有助于在安全和密码学中选择适合特定用例的哈希大小和强度。