彩虹表

一、简介

彩虹表就是一个庞大的、针对各种可能的字母组合预先计算好的哈希值的集合,不一定是针对MD5算法的,各种算法的都有,有了它可以快速的破解各类密码。越是复杂的密码,需要的彩虹表就越大,现在主流的彩虹表都是100G以上。

简单的说就是针对特定算法,尤其是不对称算法进行有效破解的一种方法(如 md5算法)。他的过程 就是建立一个 源数据与加密数据之间对应的hash表。这样在获得加密数据后 通过比较,查询或者一定的运算,可以快速定位源数据。理论上,如果不考虑查询所需要的时间的话,hash 表越大,破解也就越有效越迅速。当然对于其它破解方法(如碰撞)此方法比较笨拙,对于可变长密钥等现代高级算法,效果会大打折扣。但是无论怎样, 彩虹表(hash)永远是在数据加解密中是无奈但十分有效的方法。

2、彩虹表的获取

可以自己编程生成彩虹表,也可以使用RainbowCrack或Cain等软件来生成,有兴趣的读者可以自行百度。彩虹表的生成时间与字符集的大小、哈希链的长度成正比,如下图中“7位密码、全部字符集、哈希链长度为2万”的彩虹表大小为32G,本地生成大约需要332天,而从网上下载只需要2个小时左右,主流的彩虹表的大小普遍在100G以上,想要自己生成是几乎不可能的事,因此强烈建议黑客技术爱好者直接从网上下载。

彩虹表_第1张图片

彩虹表确实像它的名字一样美好,至少黑客眼里是这样。上表是7位以内密码在不同字符集下构造出的彩虹表的情况,彩虹表中哈希链的长度和个数随着字符集的增长而增长,彩虹表的大小和生成时间也随之成倍增加。7位数字组合在彩虹表面前简直就是秒破,即使最复杂的7位密码不到一个小时就能破解,如果采用普通的暴力攻击,破解时间可能需要三周。

3、如何防御彩虹表

虽然彩虹表有着如此惊人的破解效率,但网站的安全人员仍然有办法防御彩虹表。最有效的方法就是“加盐”,即在密码的特定位置插入特定的字符串,这个特定字符串就是“盐”,加盐后的密码经过哈希加密得到的哈希串与加盐前的哈希串完全不同,黑客用彩虹表得到的密码根本就不是真正的密码。即使黑客知道了“盐”的内容、加盐的位置,还需要对H函数和R函数进行修改,彩虹表也需要重新生成,因此加盐能大大增加利用彩虹表攻击的难度。

你可能感兴趣的:(学习笔记)