密码学Hash算法除了常规Hash算法的特性,还应该具备下面三个特性。
1)强抗碰撞性(Collision Resistance)
如果两个不相同的值能够得到同样的摘要值,表示产生了Hash碰撞。密码学中,Hash算法必须具备强抗碰撞性,否则不应该使用。
2)弱抗碰撞性(Second pre-image Resistance)
给定一个消息和这个消息对应的摘要值,很难找到一条不同的消息也具有相同的摘要值。如果某个算法不符合该特性,表示该算法遇到了second-preimage攻击。
选用的Hash算法至少也要具备弱抗碰撞性,具备弱抗碰撞性的算法必然也具备强抗碰撞性。
3)单向性(Pre-image Resistance)
给定一个摘要值很难找出它的原始消息,如果计算出原始消息,表示该算法遇到了preimage攻击(attacks)。
对于攻击者来说,Hash算法的破解难度是:强抗碰撞性<弱抗碰撞性<单向性。