密码学
MD5
别称: Message Digest 5
定义
Ron Rivest 于 1992 年设计的 128 位密码学哈希函数;已被破解,可轻易构造实用碰撞,不得用于任何安全相关用途。
MD5(Message Digest 5)是由 RFC 1321 规定的 Merkle–Damgård 结构哈希函数,输出 128 位摘要。在 1990 至 2000 年代,它在数字签名、证书、密码存储与完整性校验中广泛使用。2004 年王小云等首次发表实用碰撞;此后选定前缀碰撞可在几分钟内完成,最著名的案例是 Flame 恶意软件(2012)伪造了一张微软签名证书的根 CA。MD5 已无碰撞抗性,原像抗性也很弱;NIST、PCI DSS、CA/Browser Forum 与 TLS 均明令禁止。不得将其用于签名、证书、密码存储(应使用 Argon2/scrypt/bcrypt)或新设计中。现代替代算法包括 SHA-256、SHA-3 与 BLAKE2/BLAKE3;MD5 仅在与安全无关的校验和及遗留兼容场景中残存。
示例
- 在只关心意外损坏而非恶意篡改的下载场景中,MD5 校验仍被使用。
- Flame 恶意软件(2012)利用 MD5 选定前缀碰撞伪造了微软的代码签名证书。