Hash Collision 哈希碰撞
不同输入产生相同 hash 值的情况。
为什么必然存在
Hash function 把任意长度输入压缩成固定长度(比如 SHA-256 输出 256 bit)。输入空间无限大、输出空间有限——鸽笼原理: 一定有不同输入撞到同一个 hash。
数学上必然,但好算法会让碰撞算不出来。
安全意义
如果攻击者能主动构造碰撞,他可以:
- 伪造数字签名(让两个文件签出一样的签名)
- 伪造证书
- 绕过文件完整性校验
已经”废”了的算法
| 算法 | 状态 | 故事 |
|---|---|---|
| MD5 | 完全破 | 2008 年用碰撞伪造过 CA 证书 |
| SHA-1 | 完全破 | 2017 Google “SHAttered” 公开造出碰撞 |
| SHA-256 / SHA-3 | 安全 | 目前没人能造 |
防御措施: 用 SHA-256 或更强、加 [encryption|盐]。