哈希碰撞(Hash Collision)
哈希碰撞(Hash Collision) 是什么?
哈希碰撞(Hash Collision)两个不同输入产生相同加密哈希值的情况,破坏依赖该哈希函数的完整性、唯一性与签名保证。
哈希碰撞是两个不同输入映射到同一哈希输出的情形。由于哈希函数将任意数据压缩到固定长度,碰撞在数学上必然存在,但安全哈希应使其在计算上不可行。一旦函数被攻破,攻击者可伪造证书、篡改已签名文档或替换二进制文件。MD5 自 2004 年(Wang 等人)起便可实际碰撞,并被 Flame 恶意软件用于伪造微软代码签名证书。SHA-1 在 2017 年被 Stevens 等人的 SHAttered 攻破。现代系统应使用 SHA-256、SHA-3 或 BLAKE2/BLAKE3 以获得抗碰撞性。
● 示例
- 01
2017 年 Google 与 CWI 公布的 SHAttered:同一 SHA-1 散列的两份 PDF。
- 02
Flame(2012)利用 MD5 的选择前缀碰撞伪造了 Microsoft Terminal Server 许可证书。
● 常见问题
哈希碰撞(Hash Collision) 是什么?
两个不同输入产生相同加密哈希值的情况,破坏依赖该哈希函数的完整性、唯一性与签名保证。 它属于网络安全的 密码学 分类。
哈希碰撞(Hash Collision) 是什么意思?
两个不同输入产生相同加密哈希值的情况,破坏依赖该哈希函数的完整性、唯一性与签名保证。
哈希碰撞(Hash Collision) 是如何工作的?
哈希碰撞是两个不同输入映射到同一哈希输出的情形。由于哈希函数将任意数据压缩到固定长度,碰撞在数学上必然存在,但安全哈希应使其在计算上不可行。一旦函数被攻破,攻击者可伪造证书、篡改已签名文档或替换二进制文件。MD5 自 2004 年(Wang 等人)起便可实际碰撞,并被 Flame 恶意软件用于伪造微软代码签名证书。SHA-1 在 2017 年被 Stevens 等人的 SHAttered 攻破。现代系统应使用 SHA-256、SHA-3 或 BLAKE2/BLAKE3 以获得抗碰撞性。
如何防御 哈希碰撞(Hash Collision)?
针对 哈希碰撞(Hash Collision) 的防御通常结合技术控制与运营实践,详见上方完整定义。
● 相关术语
- cryptography№ 247
密码学哈希函数
将任意长度输入映射为固定长度摘要的确定性单向函数,具备抗碰撞、抗原像和抗第二原像三大安全性质。
- cryptography№ 658
MD5
Ron Rivest 于 1992 年设计的 128 位密码学哈希函数;已被破解,可轻易构造实用碰撞,不得用于任何安全相关用途。
- cryptography№ 1023
SHA-1
由美国国家安全局于 1995 年设计的密码学哈希函数,输出 160 位摘要,目前在抗碰撞性方面已被视为破解。
- cryptography№ 1024
SHA-256
SHA-2 系列中的 256 位密码学哈希函数,广泛用于数字签名、TLS、区块链与完整性校验。
- cryptography№ 321
数字签名
一种公钥密码学机制,用于证明消息或文档的真实性、完整性以及不可否认性。
- cryptography№ 101
BLAKE2
RFC 7693 规范的现代高速密码学哈希函数,安全性可与 SHA-3 相比,在软件上性能显著更高。