彩虹表分步指南(含真实对照)
写这篇的是老陈,后端工程师。正因为密码存储方案他拍板,所以这篇只写能落地的部分。
热身结束。下面是彩虹表的正式动作,做错一步我都会标出来。
一句话结论
先把标准定死,再用工具批量处理,最后按硬指标筛,彩虹表十分钟收工。
下面就是彩虹表的工具本体
| 算法 | 输出长度 | 分组大小 | 典型用途 | 安全定位 |
|---|---|---|---|---|
| MD5 | 128位 | 512位分组 | 文件校验 | 不适合密码 |
| SHA-1 | 160位 | 512位分组 | Git历史校验 | 安全用途弃用 |
| SHA-256 | 256位 | 512位分组 | 数字签名与区块链 | 目前主流 |
| SHA-512 | 512位 | 1024位分组 | 高安全场景 | 64位机上更快 |
| CRC32 | 32位 | 流式计算 | 压缩包校验 | 非密码学算法 |
| bcrypt | 可变长度 | 自适应 | 密码存储 | 刻意算得慢 |
| SHA-3 | 256位 | 海绵结构 | 备选算法 | 设计路线不同 |
| HMAC | 256位 | 带密钥计算 | 接口签名 | 防数据篡改 |
| NTLM | 128位 | Windows域 | 旧系统认证 | 现代已弱化 |
先把哈希基础理顺
别被术语唬住,彩虹表说到底就是哈希不可逆,从摘要反推不出原文,动手就懂。
相同输入永远得到相同摘要——这条做到,密码存储讨论里你已经赢过八成的人。
用哈希的场合不绕弯子
数字签名
数字签名这种场子,记住密码存储讨论就够了。
数据备份
在数据备份,数字签名验证,别想复杂。
安全测试
安全测试里最实用的一条:数据完整性检查。
计算步骤不绕弯子
- 选算法
校验用MD5,安全用SHA-256。安全测试里偷懒跳过这步,后面全得补。
- 输入原文或文件
动作要点:文本粘贴或文件上传,做不到位不算完。
- 对照摘要值
两边算出来比一比。安全测试里偷懒跳过这步,后面全得补。
- 看是否一致
动作要点:一致就是没被改,做不到位不算完。
- 记录用途
哪里用的什么算法。挂在公开主页里偷懒跳过这步,后面全得补。
拿下算法对照的动作
| 算法 | 输出长度 | 分组大小 | 典型用途 | 安全定位 |
|---|---|---|---|---|
| MD5 | 128位 | 512位分组 | 文件完整性校验 | 不再适合密码 |
| SHA-1 | 160位 | 512位分组 | 历史版本校验 | 安全用途已弃用 |
| SHA-256 | 256位 | 512位分组 | 数字签名 | 目前主流 |
| bcrypt | 可变 | 自适应 | 密码存储 | 刻意算得慢 |
教练只补一句:哈希管完整性,不管保密;存密码必须加盐加慢,选哪条路先看你密码存储讨论最想保哪头。
先把使用误区理顺
拿MD5存密码
彩虹表一撞一个准,在密码存储讨论这么干等于白忙,立刻改。
以为哈希能解密
别它是单向的,解不了——这是新手在彩虹表上栽得最多的地方。
加盐用固定值
等于没加,在密码存储讨论这么干等于白忙,立刻改。
只对大小不内容
别文件大小一样内容不同——这是新手在彩虹表上栽得最多的地方。
拿下常见疑问的动作
彩虹表:MD5还能用吗?
直接说:文件校验可以,存密码不行。彩虹表的判断权在你,工具只负责给数。
彩虹表:MD5多少位?
直接说:128位,32个十六进制字符。彩虹表的判断权在你,工具只负责给数。
彩虹表:SHA-256多长?
答案不绕弯:256位,64个十六进制字符,照这个口径在密码存储讨论用就行。
彩虹表:哈希能反推吗?
直接说:不能,只能暴力试。彩虹表的判断权在你,工具只负责给数。
彩虹表:为什么密码要加盐?
答案不绕弯:防彩虹表批量撞库,照这个口径在密码存储讨论用就行。
先把使用细节理顺
- 老手都在做:盐值每个用户不同,密码存储讨论里特别管用。
- 摘要两边分开算,现在就记进你的彩虹表动作里。
- 硬要求:小改动看雪崩效应。
- 老手都在做:别自己发明哈希,密码存储讨论里特别管用。
- 文件校验用MD5或SHA256,现在就记进你的彩虹表动作里。
- 硬要求:存密码用慢哈希。
先把这个哈希值理顺
口令就到这。彩虹表真正难的不是没选项,是你肯不肯现在就做第一组。