深色模式
按攻击面组织:算法层 → 协议层 → 格与数论 → 侧信道与实现。
分组密码分析
- 差分分析:追踪明文差分在轮间的传播概率;设计理论
- 线性分析:找明文、密文、密钥位的线性逼近
- Meet-in-the-middle:双向搜索降复杂度;双密钥 3DES 相关
- Padding Oracle:CBC 解密错误反馈区分填充是否正确 → 逐字节恢复明文
练习:Cryptopals Set 3 Oracle 系列。
RSA 与数论攻击
| 攻击 | 前提 | 工具 |
|---|---|---|
| Wiener | 小私钥 d | 连分数 / SageMath |
| Fermat | p ≈ q | gcd 迭代 |
| Coppersmith | 部分已知明文 | SageMath small_roots |
| Bleichenbacher | PKCS#1 v1.5 解密 oracle | 选择密文 + 二分 |
| Franklin-Reiter | 相关明文同 e | 多项式 GCD |
| Hastad BC | 广播 + 小 e | CRT |
<p class="kb-note-inline">练习:CryptoHack · RSA Attacks。</p>
格攻击
参考:CTF Wiki · 格概述 · 格基规约
- LLL:多项式时间求近似最短向量;基规约入门
- BKZ:块规约,更强但更慢;实际攻击常用
- ECDSA nonce 泄露:两次签名 (r,s) 共享 k → Hidden Number Problem → 格恢复 d
- Knapsack / Merkle-Hellman:低密度子集和 → 格攻击
- Coppersmith:求模多项式小根,与格方法结合
练习:SageMath 跑通 LLL 格攻击模板;CryptoHack · Lattices。
协议层攻击
- 降级攻击:强迫协商弱算法(TLS 1.0、EXPORT cipher)
- 重放攻击:重发有效消息;需 nonce / 时间戳 / 序列号
- Nonce 重用:GCM/CTR 下密钥流重用 → 明文 XOR 泄露
- MAC-then-Encrypt:长度扩展、填充 oracle 组合
- ROCA:RSA 密钥生成缺陷导致私钥可 factor
- DUHK:硬编码 IV 的 ANSI X9.31 RNG 可预测
侧信道与实现
- Timing:非常量时间比较泄露信息;用
hmac.compare_digest/subtle - Cache:AES T-table 实现可能泄露密钥;优先 bitsliced 或硬件 AES
- Power / EM:硬件场景;掩码与随机化
- 优先审计库(cryptography、ring、aws-lc-rs);避免自写密码原语
| 语言 | 防护 |
|---|---|
| Python | hmac.compare_digest |
| Rust | subtle、zeroize |
<p class="kb-note-inline">本站笔记 <span class="crypto-pending">待撰写</span>。</p>