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密钥恢复, 伪随机数生成器破解, 侧信道攻击, 密码分析, 密码学, 手动系统调用, 无后门, 逆向工具