DIHA动态输入杂凑算法(Dynamic Input Hash Algorithm)介绍:
对MD5或SHA 来说,在对每个512位明文块进行四轮运算之前,除去工作变量,所有的输入都已经是确定和已知的,(任何攻击者在运算之前都可以全部完整地写出这些输入),杂凑函数全部的变化仅仅依靠变量ABCD(E)的非线性运算,这对于攻击者来说是便于跟踪比特变化,找到某个冲突的;如果可以自由选择起始端IV,攻击成功率就大大提高。
DIHA杂凑输出160位(或256位)。借鉴MD5,对每个512分组进行3轮16步运算。对于每一步的32位消息子块x[j],先获得x[j]的动态的查表值(256字节的表,(x[j]+ B)值的字节流去查表),与x[j]一起输入工作变量运算并反馈至下一步;并通过辅助寄存器变量组r , r , r , r 延迟输入产生交织效应。在512比特明文块运算的每一步之前,同样是排除工作变量的情形下,其输入是无法预知的。
撇开工作变量abcd(e)的非线性变化,对于一个具体的512位分组,以往的杂凑函数的全部相关输入在四轮运算之前可完全确定,这就给予攻击者充足的便利。而对于DIH动态反馈的无规则查表值输入,在三轮每一步计算之前,是无法预知的,无法再从容地根据确定输入分析,即使允许自由选取IV,每一步多达2的32次方的变化以及r1,r2,r3,r4延迟产生无法预测的雪崩效应,再加上原有MD5非线性函数的复杂变化,使得控制或预测三轮后的更新链值不可行;DIH单向雪崩性远大于其他杂凑函数,这使得即使是自由起始端攻击也不可行。
(责任编辑:adminadmin2008)