核心属性
- 抗碰撞性 (Collision Resistance):找到 使得 是困难的。
- 抗第二原像 (Second Pre-image Resistance):给定 ,找到 使得 是困难的。
- 抗原像 (Pre-image Resistance/One-wayness):给定 ,找到 使得 是困难的。
- 关系:抗碰撞 抗第二原像 抗原像。
攻击与结构
- 生日攻击:对于输出长度为 的哈希,找到碰撞的复杂度是 ,而不是 。因此 至少要是 256 (如 SHA-256)。
- Merkle-Damgård 结构:将压缩函数 (固定长度输入) 扩展为哈希函数 (任意长度输入)。MD5, SHA-1, SHA-2 都基于此。
- 缺陷:易受长度扩展攻击 (Length Extension Attack)。如果 已知,敌手可以在不知道 的情况下计算 。
- HMAC:。
- 嵌套结构是为了抵御长度扩展攻击。