哈希攻击技术手册
将以下提示词粘贴到你的 AI 对话框中:
请根据 https://skillhub.cn/install/skillhub.md,安装 @user_3c6cb52e/hash-attack-techniques-vbhy
技能介绍
解决什么问题
哈希函数广泛用于消息认证、完整性校验和工作量证明,但 Merkle-Damgård 结构的内在缺陷让一类攻击始终存在。当服务端用 H(secret || msg) 做签名、用 MD5 校验上传文件、或用 SHA-1 保护 Git 提交时,攻击者并不需要还原明文——他们只需要构造出能通过校验的不同输入。本技能针对这些具体场景,提供一套从判断可行性到落地攻击的完整分析流程。
核心能力
技能按攻击类型组织,每类都包含选型判断和工具链:
- 长度扩展攻击:利用 Merkle-Damgård 的内部状态可复用特性,在已知
H(secret || msg)和密钥长度时追加任意后缀。MD5、SHA-1、SHA-256、SHA-512 均受影响;SHA-3、HMAC-*、BLAKE2因结构不同不受影响——这是最容易被误用的地方,技能会明确区分。 - 碰撞攻击:区分相同前缀碰撞(
fastcoll)与选择前缀碰撞(hashclash),后者可将两个任意前缀碰撞为同一哈希,曾用于伪造 CA 证书和构造 SHAttered 双 PDF。 - 生日攻击与中间相遇:针对通用碰撞边界与
O(2^(n/2))复杂度的估算,以及将哈希计算拆分两半做预计算匹配的思路。 - HMAC 时序侧信道:逐字节比较
HMAC时,若不做常数时间比较会泄露密钥信息;技能同时给出防御方案。 - 工作量证明求解:覆盖 CTF 中常见的前导零哈希题,支持 GPU 加速与 Python 暴力破解两条路径。
适用边界
- 本技能面向 CTF、渗透测试与安全研究,不适用于绕过生产环境的真实防护。
- 碰撞攻击对现代算法(如 SHA-256 的完整攻击、SHA-3)不现实,技能内置的决策树会先判断攻击是否可行,避免盲目选错工具。
- HMAC 长度扩展是常见误区:密钥作为独立输入参与两次哈希,攻击不成立,技能对此有专门辨析。
- 密码存储部分仅覆盖彩虹表原理与加盐的必要性,现代口令哈希应直接选用
Argon2或bcrypt。
使用场景
- CTF 比赛中遇到 `H(secret||msg)` 签名,需要追加后缀伪造合法消息
- CTF 出题要求找两个不同内容的文件拥有相同 MD5,需构造碰撞
- 渗透测试发现服务端用 HMAC 逐字节比较,想通过时序侧信道恢复密钥
- CTF 工作量证明题要求找到哈希值前导零的输入,需快速暴力求解
适合人员
- CTF 选手,比赛中需要快速判断哈希题该用长度扩展还是碰撞攻击
- 安全工程师,在代码审计中发现系统使用 MD5 或 SHA-1 时想评估真实风险
- 后端开发者,设计接口签名方案时想确认 HMAC 能否防御长度扩展
- 密码学研究者,研究 Merkle-Damgard 构造弱点及其对现有协议的影响