emmett-hannam/cryptography-attacks
GitHub: emmett-hannam/cryptography-attacks
UVA 密码学课程的两个学术密码分析项目,演示弱 PRNG 的预测和 RSA 私钥的 timing 侧信道恢复。
Stars: 0 | Forks: 0
# 密码学攻击
这是 UVA **密码学**课程(2024 年春季)的两个密码分析项目——每一个都是*破解*
刻意设计得脆弱的密码学原语,而不是实现它们。两者都是独立的 Python 脚本。
## `prng-attack/` — 预测弱 PRNG
目标(`uva_random.py`)是一个 Mersenne-Twister 风格的生成器,具有脆弱的输出转换和
糟糕的 seeding。攻击脚本(`proj1_soln.py`)分为两部分:
1. **Seed 恢复** — 给定单个输出及其生成的日期,在午夜前后 86,400 秒的范围内
暴力破解 seed(该生成器是由 Unix 时间戳进行 seed 的)。
2. **下一个值预测** — 在观察到 650+ 个输出后,对输出函数求逆(乘以乘数的
模逆元素)以恢复内部状态,重放 twist,并准确预测下一个值——而无需知道 seed。
## `rsa-timing-attack/` — 通过 timing side-channel 恢复 RSA 密钥
目标(`uva_rsa.py`)暴露了解密 oracle,其运行时间会泄漏有关
模幂运算过程中私有指数的信息。攻击脚本(`proj2_soln.py`)通过
测量 timing 差异并执行迭代二分搜索来恢复私钥位——从前几位逐步升级到完整的 2048 位私钥恢复。`proj2_report.pdf` 是相关的报告。
## 运行
```
cd prng-attack && python3 proj1_soln.py # runs the built-in sample checks
cd rsa-timing-attack && python3 proj2_soln.py
```
## 注意
这些是学术练习,旨在演示*为什么*脆弱的随机性和简单粗暴的(非常数时间)
实现是危险的。这些目标是故意设计的存在漏洞的教学代码。
标签:Python, RSA密钥恢复, 伪随机数生成器破解, 侧信道攻击, 密码分析, 密码学, 手动系统调用, 无后门, 逆向工具