05 密码学攻击(Cryptographic Attacks)
Domain 3 · 攻击者怎么破密码,以及”加盐+密钥延展”怎么防
一句话秒懂
密码学攻击分两类思路:硬算(暴力/分析)和找软肋(实现/侧信道/社会工程)。防御的关键一招是加盐(salt)+密钥延展(key stretching),让暴力破解成本飙升。
生活类比
暴力破解像试遍所有锁芯组合;侧信道像不撬锁、而是听锁芯转动的声音(功耗/电磁辐射)猜密码;加盐像每把锁里塞了随机异物,让”通用万能钥匙表(彩虹表)”失灵。
核心概念(大白话 + 原书定义)
1. 按思路分类的攻击
| 攻击 | 原理 | |—|—| | Brute-Force 暴力 | 穷举所有密钥/密码组合;每多 1 位密钥,时间翻倍 | | Analytic 分析 | 代数化简算法逻辑本身 | | Implementation 实现 | 钻实现/代码的漏洞(非算法本身) | | Statistical 统计 | 利用统计弱点(如随机数不真随机) | | Fault Injection 故障注入 | 用高压/极端温度等制造设备故障泄密 | | Side-Channel 侧信道 | 利用功耗、电磁辐射、CPU 占用等”指纹” | | Timing 时序(侧信道一种) | 精确测量运算耗时推断密钥 |
2. 按已知信息分类(经典密码分析)
- Ciphertext-Only(仅密文):只有密文,常用频率分析(英文 E/T/A/O/I/N 最常见;若最常见字母一致→换位密码,否则→替换密码)。
- Known-Plaintext(已知明文):有明文+密文对,易破弱码。
- Chosen-Plaintext(选择明文):自选明文得密文推密钥(差分密码分析属此类)。
- Chosen-Ciphertext(选择密文):能解密部分密文反推密钥。
3. 针对性攻击
- Meet-in-the-Middle(中间相遇):针对双重加密,使 2DES 仅比 DES 强一倍 → 故 2DES 被弃、用 3DES。⚠️ 别和 Man-in-the-Middle 混淆(MITM 是中间人窃听并重放建连)。
- Birthday Attack(生日/碰撞攻击):利用哈希碰撞,找另一消息产生相同 digest,保住原签名有效。
- Replay(重放):截获认证请求后重发开新会话;防御=时间戳+过期+挑战响应+临时会话密钥。
- Man-in-the-Middle(MITM): attacker 夹在双方间,分别与两者建独立加密会话、读全部流量。
4. 防御:加盐与密钥延展
- Salt(盐):在密码末尾加随机值再哈希,盐随哈希存于密码文件。→ 攻击者须为每个盐值单独建彩虹表,成本剧增。
- Key Stretching(密钥延展):刻意拖慢单次猜测。专用函数:PBKDF2、bcrypt、scrypt(皆支持 salt)。
- 盐+延展组合,暴力/字典/彩虹表攻击难度大幅上升。
彩虹表(rainbow table):预计算哈希值,常用于破密码文件;加盐使其失效。
真实案例
- 2DES 之死:中间相遇攻击证明双加密几乎无增益,催生 3DES。
- 密码数据库泄露:若只用裸 MD5 且无盐,攻击者用彩虹表秒破;加盐+bcrypt 则难破——这就是为什么现代系统强制加盐。
考试怎么考
- 题型 A:问”加盐主要防御什么” → 彩虹表/字典/暴力破解;问”防重放攻击” → 时间戳+挑战响应。
- 题型 B:区分 Meet-in-the-Middle(破双重加密)vs Man-in-the-Middle(中间人窃听)。
- 必记混淆项:① 盐不保密、与哈希同存;② bcrypt/PBKDF2/scrypt 做密钥延展;③ 生日攻击针对哈希碰撞;④ 时序攻击是侧信道。
记忆口诀
“攻击分硬算与找缝:暴力/分析/实现/统计/侧信道/时序;破译看已知:仅密文→频率、已知/选择明文、中间相遇破2重;防御靠加盐+延展(bcrypt/PBKDF2/scrypt)。”
自测
- 加盐(salt)主要用来对抗哪类攻击手段?(答:彩虹表、字典与暴力破解——攻击者需为每个盐值单独建表)
- Meet-in-the-Middle 攻击与 Man-in-the-Middle 攻击的主要区别是什么?(答:前者是密码分析攻击、针对双重加密算法降其安全性;后者是网络中间人攻击、窃听并重放通信会话)