请解释哈希碰撞的含义,并阐述有哪些防御措施可以防止针对哈希碰撞的攻击?
考察说明
考察对哈希碰撞概念的理解及安全防护能力。
回答思路
- 【回答框架 1】哈希碰撞指两个不同的输入通过同一哈希函数得到相同输出,源于哈希函数输出空间有限而输入无限,必然存在多个输入映射到同一哈希值。
- 【回答框架 2】防止碰撞攻击的关键措施包括:使用强哈希函数(如SHA-256)降低碰撞概率;加盐(salt)增加攻击者预计算成本;使用密钥哈希(HMAC)防止长度扩展攻击;在存储密码时采用专门的慢哈希算法(如bcrypt、Argon2)。
- 【回答框架 3】针对实际业务,可在哈希前对输入进行规范化,并在系统关键路径上监控异常碰撞行为;若需更强安全性,可考虑使用随机化哈希或保持密钥私密。
- 【回答框架 4】总体防护应结合算法选择、参数配置和系统监控,形成纵深防御。
- 【回答框架 5】对于特定场景(如数字签名),需额外注意哈希函数的抗碰撞性,避免选择已被证明易碰撞的算法(如MD5、SHA-1)。
- 【关键点 1】碰撞是哈希函数输出空间有限导致必然存在。
- 【关键点 2】使用SHA-256等强哈希算法可大幅降低实际碰撞概率。
- 【关键点 3】加盐和慢哈希算法(如bcrypt)用于防暴力破解和预计算攻击。
- 【关键点 4】避免使用已不安全的哈希算法(MD5、SHA-1)。
- 【易错点 1】仅使用哈希函数不加盐,无法有效防彩虹表攻击。
- 【易错点 2】将哈希碰撞与业务幂等性混淆,碰撞不等于重复处理。
- 【易错点 3】没有在密码存储场景使用慢哈希,导致暴力破解成本低。