Appearance
时间存储折中攻击
一、基本背景与动机
密码分析的目标
- 给定密文
,在已知明文 的情况下恢复密钥 。 - 不依赖算法内部结构(黑盒模型),适用于任意分组密码。
- 给定密文
三种通用密钥恢复方法对比
方法 时间复杂度 存储复杂度 特点 穷举攻击 可忽略 每次攻击都需重新计算 查表攻击 1 预存所有 对,内存巨大 TMTO 攻击 介于两者之间 介于两者之间 平衡时间与存储 核心思想:时间-存储折中(Time-Memory Tradeoff)
- 预计算阶段:一次性构建查找表(存储起点 SP 和终点 EP)。
- 在线攻击阶段:利用表快速定位密钥,减少实时计算量。
- 目标:在可接受的存储下显著降低单次攻击时间。
二、Hellman TMTO 攻击详解
1. 基本设定
- 分组密码:
,其中 , 。 - 为简化,常假设
(如 DES: )。
2. 链的构造(Chain)
- 固定明文
。 - 从起点
开始迭代: - 每条链长度为
,仅存储 。
3. 预计算阶段
- 构造
条独立链,每条长 。 - 总预计算工作量:
。 - 存储需求:
个 对(需按 EP 排序以便快速查找)。
4. 在线攻击阶段
- 已知
。 - 从
开始,迭代计算: - 若某步
(查表命中),则从 重建整条链: - 若存在
使得 ,则 。
5. 成功概率分析(理想 vs 现实)
- 理想情况:链无重叠、无环 → 覆盖全部密钥空间。
- 现实问题:
- 链合并(Merge):不同起点生成相同中间值,导致信息丢失。
- 循环(Cycle):链进入自循环,无法到达 EP。
- 假警报(False Alarm):命中 EP 但重建链不包含真实密钥。
6. 改进:多表法(Multiple Tables / Rainbow Tables)
- 使用
个不同的归约函数 。 - 每张表使用不同
构造链,避免链合并。 - 参数选择:令
,则: - 存储
- 时间
- 成功概率 ≥ 55%
- 存储
7. 成功概率公式(基于“占位问题”)
- 将密钥空间视为
个“桶”,预计算的 个点视为“球”。 - 覆盖密钥比例 ≈
- 故成功概率:
8. 复杂度权衡曲线
- 基本关系:
- 最优平衡点:
三、扩展:TMDTO(时间-存储-数据折中)
1. 动机
- 当攻击者能获取多个密文(对应不同密钥或 IV)时,可进一步降低复杂度。
2. 模型
- 函数
,其中 为公共参数(如 IV)。 - 在线阶段获得
个输出: - 目标:恢复任意一个
3. 复杂度关系
,其中 - 示例:若
,则
四、应用场景
| 应用 | 说明 |
|---|---|
| 分组密码(如 DES) | |
| 流密码 | 目标是恢复内部状态 |
| 哈希函数(口令破解) | |
| 公钥加密(特定场景) | 如 NTRU 中恢复明文,需识别合适的单向函数 |
五、防御建议
- 增大密钥/状态空间:使
不可行。 - 加盐(Salt):对哈希函数,使每个用户有独立函数
,破坏预计算通用性。 - 流密码设计:
- 内部状态
- IV 长度
- 内部状态
- 限制数据量:防 TMDTO(如 DRACO 限制每密钥输出
比特)。
✍️ 练习题(含答案)
题 1:基本概念
问:Hellman TMTO 攻击中,为什么只存储链的起点(SP)和终点(EP),而不是整条链?
答:
为了节省存储空间。整条链长度为
题 2:复杂度计算
问:对一个 56 位密钥的密码(如 DES),若采用 Hellman TMTO 攻击并设
- 预计算工作量;
- 存储需求
; - 单次攻击时间
; - 成功概率近似值。
答:
- 预计算 =
(86.5%)
注:实际因链合并,成功率低于此值。
题 3:流密码安全
问:某流密码密钥长
答:
是,易受攻击。
因为 TMTO 攻击复杂度取决于输入空间大小
即使状态
根据 TMDTO 理论,当
安全设计应满足
题 4:哈希与加盐
问:为什么在口令哈希中加入随机盐(salt)能有效防御彩虹表攻击?
答:
彩虹表是针对固定哈希函数
加盐后,每个用户的哈希为
攻击者无法用一张表攻击所有用户,必须为每个 salt 单独预计算,使预计算成本从
题 5:权衡曲线推导
问:从 Hellman TMTO 的参数关系出发,推导出
答:
设:
:链数 :链长 :表数(不同归约函数) :密钥空间大小
为保证高成功率,需覆盖大部分密钥空间:
存储复杂度(每表存
时间复杂度(每表最多走
由 (2)(3) 得:
但更直接:由 (1) 得
代入 (3):
若取
即得