论文部分内容阅读
传统的基于穷举搜索的暴力法在攻击密码散列时需要大量的计算,而且往往要经过很长的时间才能完成计算。 本文作者提出了一种称为索引链预计算法的密码散列攻击方法。传统的暴力攻击法是在攻击过程中逐个尝试所有可能的密码明文,而索引链法则完全是另外一种方法。它预先计算出所有可能的“密码明文-散列值”对,并把它们转化后存放到一个称为索引链表的文件中。尽管预计算索引链表需要很长的时间,但是一旦预计算完成,则用索引链表攻击密码散列仅需几秒的时间。 传统的暴力法在攻击过程中会计算出“明文-散列值”对,但是索引链预计算法建立的索引链表中并不包含这样的“明文-散列值”对。索引链表中包含的是索引链,每条索引链包括两个索引值,其中第一个为索引头,第二个是索引尾。 索引头与索引尾都是与某个明文对应的索引值,换句话说,它们事实上就是该明文在所有明文组合空间中的序号。 索引头是用随机法产生的一个8字节数,并且必须保证它落在所有明文组合空间范围内。 索引尾是通过重复以下步骤从索引头计算出来的: 1.把索引值转化成明文 2.用散列算法把明文转化成散列值 3.用消减函数把散列值转化成另一个索引值 很显然,用“索引头-索引尾”对代替“明文-散列值”对可以大大减少存放这些数据所需要的硬盘空间。 要攻击一个密码散列,我们首先把它转化成索引值,然后通过比较它与各索引尾的办法在索引链表中搜索它。如果找不到,则按前面所述的3个步骤计算出下一个索引值并在索引链表中搜索该索引值。在某条索引链中搜索到该索引值后,我们先计算出重复上述3个步骤的次数,假定是N次,然后从索引尾逆向走N+1步,这样我们就可以找到一个索引值,该索引值对应的明文很可能就是我们要攻击的散列值的明文。如果验证后发现该索引值对应的明文与我们攻击的散列值无关的话,则继续上述搜索过程。