关于MD5破解这件事

前 几天在论坛上看到有人在讨论MD5的破解,很多人对MD5的理解让我大跌眼镜:有人认为MD5是一种加密算法,有人认为由于无法从MD5 hash回复出明文,因此对其破解的研究毫无意义,甚至因此置疑王小云教授的成果毫无意义,真是让人遗憾。 因此今天决定说说MD5的破解,算是义务普及。有关MD5的描述请参考 Wikipedia/MD5,这里就不多废话了。
一般来说,对一个HASH算法的攻击可分三个级别:
1,Preimage attack(原像攻击?):给定h,找到明文M,使得h=hash(M),如果一个HASH算法
    被人找出preimage attack,那这种算法也就完蛋了;
2,Second preimage attack(次原像攻击?):给定明文M1,找到另一明文M2(不等于M1),
    使得hash(M1)=hash(M2);
3,collision attack(碰撞攻击):找到M1和M2,使得hash(M1)=hash(M2)。
 
关于MD5,王小云教授的成果是实现了在可计算时间内实现找到collision。目前的进展是,基于王晓云教授论文的改进算法,有人可以做到 用笔记本在几小时之内找到collision。这意味着什么?有很多人认为collision毫无意义,因为在实际应用中M1和M2无法任意指定。其实这 是只知其一不知其二。和其他流行的HASH算法一样,MD5有一个众所周知的弱点,叫做length extension,可用数学语言描述如下:
    若,MD5(M1) = MD5(M2)
    则,MD5(M1||M') = MD5(M2||M')
    其中||代表串连接。
 
目前的collision搜索算法可以任意指定初始hash状态,这意味着可任意构造前缀。另外length e

你可能感兴趣的:(关于MD5破解这件事)