[基础技能] 安全技术——哈希算法密码破解之彩虹表(Rainbow Table)学习
1、基础知识
刚刚学习过数字签名的相关知识,以及数字签名的伪造技术,而伪造数字签名归根结底就是密码破解的一个过程,然而直接破解的速度是非常缓慢的,所以有人想出一种办法,直接建立出一个数据文件,里面事先记录了采用和目标采用同样算法计算后生成的Hash散列数值,在需要破解的时候直接调用这样的文件进行比对,破解效率就可以大幅度地,甚至成百近千近万倍地提高,这样事先构造的Hash散列数据文件在安全界被称之为Table。
其实简单理解就是使用一个大型数据字典来进行快速匹配暴力破解的方法,以空间来换取时间的方法。
具体的需要一些基础知识做支撑:
1、哈希算法
哈希(Hash)算法是单向散列算法,它把某个较大的集合P映射到另一个较小的集合Q中,假如这个算法叫H,那么就有Q = H(P)。对于P中任何一个值p都有唯一确定的q与之对应,但是一个q可以对应多个p。作为一个有用的Hash算法,H还应该满足:
H(p)速度比较快; 给出一个q,很难算出一个p满足q = H(p);即单向性。
给出一个p1,很难算出一个不等于p1的p2使得 H(p1)=H(p2);强弱碰撞性。
正因为有这样的特性,Hash算法经常被用来保存密码————这样不会泄露密码明文,又可以校验输入的密码是否正确。常用的 Hash算法有MD5、SHA1等。
2、破解HASH
破解Hash的任务就是,对于给出的一个q,反算出一个p来满足q = H(p)。即直接采用碰撞的方法来打破它的强弱碰撞性。通常我们能想到的办法有两种:
1、暴力破解法,把P中的每一个p都算一下H(p),直到结果等于q;
2、查表法,使用一个大型字典,把每个p和对应的q都记录下来,按q做一下索引,直接查找匹配。
两种办法理论上都是可以的,但是前一种需要大量时间,后一种需要大量存储。这种单纯的开销是很巨大的,所以目前我们认为Hash是足够安全的,十几位以上的密码也是强度足够的。
3、彩虹表 时空的平衡
对于HASH的传统做法是把H(X)的所有输出穷举,查找H(X[y])==H(P),得出P==X[y]。而彩虹表则是使用散列链的方式进行。
2、详解
就这样,将H运算、R运算、H运算……这个过程反复地重复下去,重复一个特定的次数 k 以后,就得到一条哈希链,例如k为2时得到:
要生成一个表,我们选择一组随机的初始密码,每一个密码计算一个固定长度K的链,并只存储每一个链的第一个和最后一个密码。第一密码被称为始点,最后一个被称为末点。在上面例举的链中,“zhihu”就是始点,“crepa”就是末点,其他密码(或散列值)并不被保存。
造表过程:
查表过程:
参考:
彩虹表破解开机密码、MD5算法等的原理
[基础技能] 安全技术——哈希算法密码破解之彩虹表(Rainbow Table)学习的更多相关文章
- 一致性哈希算法(适用于分库分表、RPC负载均衡)转
在分布式应用中,应该来说使用到hash最多的地方就是rpc负载均衡和分库分表,通常对于正式意义上的分布式应用来说,扩容和收缩是一个半自动化的过程,在此期间,应用基本上是可用的,所以不能发生大规模动荡的 ...
- 20155325 信息安全技术 实验二 Windows口令破解
内容一览 实验结果 遇到的问题 思考题 详细步骤与解析(为了使存做笔记资料而做) 实验结果 字典破解 暴力破解 -不同密码强度的破解时间比较 用户名 密码 破解方式 破解时间 TEST (年月日) 字 ...
- 20155327 信息安全技术 实验二 Windows口令破解
课程:信息安全概论 班级:1553 姓名:了李百乾 学号:20155327 成绩: 指导教师: 李冬冬 实验日期及时间: 2017年10月11日 15:30-18:00 必修/选修:必修 实验序号:0 ...
- 如何破解密码的哈希值,破解双MD5密码值
这是关于我如何破解密码的哈希值1亿2200万* John the Ripper和oclHashcat-plus故事. 这是几个月前,当我看到一条推特:从korelogic约含共1亿4600万个密码的密 ...
- 算法与数据结构基础 - 哈希表(Hash Table)
Hash Table基础 哈希表(Hash Table)是常用的数据结构,其运用哈希函数(hash function)实现映射,内部使用开放定址.拉链法等方式解决哈希冲突,使得读写时间复杂度平均为O( ...
- Linux基础系列-系统密码破解
无引导介质(光盘.iso)救援模式下root密码破解 第一步: GRUB启动画面读秒时按上下方向键,进入GRUB界面 第二步: 使用上下光标键选择要修改的操作系统启动内核(默认选择的即可),按e键进行 ...
- java单向加密算法小结(2)--MD5哈希算法
上一篇文章整理了Base64算法的相关知识,严格来说,Base64只能算是一种编码方式而非加密算法,这一篇要说的MD5,其实也不算是加密算法,而是一种哈希算法,即将目标文本转化为固定长度,不可逆的字符 ...
- .NET平台开源项目速览(12)哈希算法集合类库HashLib
.NET的System.Security.Cryptography命名空间本身是提供加密服务,散列函数,对称与非对称加密算法等功能.实际上,大部分情况下已经满足了需求,而且.NET实现的都是目前国际上 ...
- 秀尔算法:破解RSA加密的“不灭神话”
RSA加密 VS 秀尔算法 作为RSA加密技术的终结者——“太多运算,无法读取”的秀尔算法(Shor’s algorithm)不是通过暴力破解的方式找到最终密码的,而是利用量子计算的并行性,可以快速分 ...
随机推荐
- Eclipse的快捷键
Ctrl+Shift+L调出eclipse的所有快捷键 不定期更新2016#8#19 如何配置快捷键:windown-preferences-General-key 一些操作 Ctrl+D 删除 ...
- window.onload =writeMessage(); 与window.onload =writeMessage;的区别
window.onload =writeMessage(); window.onload =writeMessage; 异:第一种是window加载时执行writeMesage方法,第二种是把writ ...
- VB.NET操作Excel
VB.NET操作Excel的基本方法与例子:
- Ubuntu14.04安装配置web/ftp/tftp/dns服务器
目录: 1.安装ftp服务器vsftpd --基于tcp,需要帐号密码 2.安装tftp服务器tftpd-hpa,tftp-hpa --udp 3.web服务器--使用Apache2+Mysql+PH ...
- Java对象的深拷贝和浅拷贝、集合的交集并集
http://blog.csdn.net/lian_1988/article/details/45970927 http://www.cnblogs.com/yxnchinahlj/archive/2 ...
- Go简介
Go是Google开发的一种编译型,並發型,并具有垃圾回收功能的编程语言. 罗伯特·格瑞史莫(Robert Griesemer),罗勃·派克(Rob Pike)及肯·汤普逊于2007年9月开始设计Go ...
- Nodejs 饭店
一个Node.js饭店的发展历程 前面的一堆理论似乎不太好明白,最后讲一个关于饭店发展历程的故事作为结尾吧. 第一年 饭店开张,只有一个厨师(同时还兼任老板.服务员.打荷.收银员),当一个客 ...
- springMVC接受JSON异常
在springMVC 使用@RequestBody接受Json总是报如下错误: HTTP Status 500 - Handler processing failed; nested exceptio ...
- andriod刷机
有句古话叫常在河边走,难免会翻船.对于经常刷机的Android刷友来说,难免会碰到刷机失败损坏recovery程序乃至手机无法启动的情况,也就是传说中的手机变砖块.不过刷机失败手机变砖并不是世界末日, ...
- java垃圾回收机制
1 .垃圾回收机制(GC)垃圾回收就是回收内存中不再使用对象:(1)垃圾回收的步骤:1)查找内存中不再使用的对象:2)释放这些对象所占用的内存:(2)查找内存中不再使用的对象方法:1)引用计数法如果一 ...