ALAIN-NG/timing-attack-rsa
GitHub: ALAIN-NG/timing-attack-rsa
一个基于PyQt6的RSA计时侧信道攻击仿真与教学平台,通过可视化界面完整演示从密钥生成、计时测量、逐位提取私钥到防御评估的全流程。
Stars: 0 | Forks: 0
# 🔐 INF4268 – RSA 侧信道攻击(计时)



**项目 3 – 非对称密码学**
信息安全硕士 1 年级 – 雅温得第一大学
授课教师:Dr. Ekodeck Stéphane Gaël R.
## 📖 描述
本项目针对 RSA 的朴素实现实施了一次**时间侧信道攻击**。该 PyQt6 应用程序支持以下功能:
- 生成 RSA 密钥(512 和 1024 位)
- 以纳秒级精度测量解密时间
- 通过统计分析提取私钥比特(Kocher 算法,1996 年)
- 评估两种应对措施:**RSA Blinding** 和 **Montgomery Ladder**
所有操作均通过图形用户界面进行,**无需使用终端**。
## 🚀 安装
### 前置条件
- Python 3.10 或更高版本
- pip
- (可选)用于确保可复现性的 Docker
### 步骤
```
# 1. 克隆 dépôt
git clone https://github.com/ALAIN-NG/timing-attack-rsa.git
cd timing-attack-rsa
# 2. 创建虚拟环境
python -m venv venv
source venv/bin/activate # Linux/macOS
# 或
venv\Scripts\activate # Windows
# 3. 安装依赖
pip install -r requirements.txt
# 4. 启动应用
python main.py
```
### 使用 Docker
```
docker build -t rsa-timing-attack .
docker run -e DISPLAY=$DISPLAY -v /tmp/.X11-unix:/tmp/.X11-unix rsa-timing-attack
```
## 📁 项目结构
```
timing-attack-rsa/
├── main.py # Point d'entrée de l'application
├── requirements.txt # Dépendances Python
├── README.md # Documentation
├── LICENSE # Licence MIT
├── Dockerfile # Conteneur de reproduction
│
├── core/ # Logique métier (indépendante de la GUI)
│ ├── rsa_naive.py # RSA avec square-and-multiply vulnérable
│ ├── rsa_secure.py # RSA avec contre-mesures (Blinding, Montgomery)
│ ├── timing_bench.py # Banc de mesure de timing
│ ├── attack_engine.py # Algorithme d'attaque de Kocher
│ └── stats.py # Fonctions statistiques (t-test, KS, IQR)
│
├── gui/ # Interface graphique PyQt6
│ ├── main_window.py # Fenêtre principale + QTabWidget
│ ├── tab_rsa.py # Onglet 1 : RSA Naïf
│ ├── tab_timing.py # Onglet 2 : Mesures de Timing
│ ├── tab_attack.py # Onglet 3 : Attaque
│ ├── tab_defense.py # Onglet 4 : Contre-mesures
│ ├── widgets/
│ │ ├── console_widget.py # Console de logs colorée
│ │ ├── bit_grid_widget.py # Grille animée des bits extraits
│ │ └── mpl_canvas.py # Wrapper Matplotlib pour PyQt6
│ └── styles/
│ ├── dark_theme.qss # Thème sombre
│ └── light_theme.qss # Thème clair
│
├── workers/ # QThread workers (calculs non bloquants)
│ ├── keygen_worker.py # Génération de clés RSA
│ ├── timing_worker.py # Collecte des mesures de timing
│ ├── attack_worker.py # Attaque bit par bit
│ └── defense_worker.py # Évaluation des contre-mesures
│
├── data/
│ ├── raw/ # Fichiers CSV des mesures brutes
│ └── exports/ # Graphiques PNG exportés
│
└── tests/ # Tests unitaires (pytest, pytest-qt)
├── test_rsa_naive.py
├── test_rsa_secure.py
├── test_timing_bench.py
├── test_attack_engine.py
└── test_gui.py
```
## 🖥️ 界面预览
| 选项卡 | 功能 |
|--------|----------------|
| **阶段 1 – 朴素 RSA** | 密钥生成、加密/解密、单元测试、私钥指数可视化 |
| **阶段 2 – 计时测量** | 计时数据收集、直方图、箱线图、热力图、导出 CSV |
| **阶段 3 – 攻击** | 逐位提取(带动画的 BitGridWidget)、ROC 曲线、混淆矩阵 |
| **阶段 4 – 应对措施** | RSA Blinding 和 Montgomery Ladder、对比图表、统计测试 |
## 📊 预期结果
| 场景 | 密钥大小 | 测量次数 | 预期提取率 |
|----------|---------------|---------|---------------------------|
| S1 – 基线 | 512 位 | 1 000 | 80–95 % |
| S2 – 主要 | 1024 位 | 2 000 | 70–90 % |
| S3 – 低噪声 | 独立 Docker | 1 000 | 85–95 % |
| S4 – 高噪声 | 模拟 CPU 负载 | 2 000 | 60–75 % |
| S5 – 最小阈值 | 512 位 | 可变 | ≥ 提取 8 位 |
## 🧪 测试
```
# 运行所有测试
pytest tests/ -v
# 带 couverture
pytest tests/ --cov=core --cov=gui --cov-report=html
```
## 📚 参考文献
- **Kocher, P. (1996).** *Timing Attacks on Implementations of Diffie-Hellman, RSA, DSS, and Other Systems.* CRYPTO'96.
- **Brumley, D., & Boneh, D. (2003).** *Remote Timing Attacks are Practical.* USENIX Security.
- **OpenSSL Security Advisory (2003).** *RSA blinding vulnerability.*
## 👥 作者
- **NGUEUDJANG DJOMO ALAIN GILDAS** – 22W2183
- **ESSIMBI MBALLA GABRIELLE** – 22U2019
信息安全硕士 1 年级 – INF4268
## 📄 许可证
本项目采用 MIT 许可证。有关详细信息,请参阅 [LICENSE](LICENSE) 文件。
## ✅ 当前进展状态
| 阶段 | 状态 | 描述 |
|-------|------|-------------|
| **S1** | ✅ 已完成 | PyQt6 骨架、主题、GitHub、README |
| **S2-S3** | ✅ 已完成 | 阶段 1 - 朴素 RSA(生成、测试、可视化) |
| **S4** | ✅ 已完成 | 阶段 2 - 计时测量(测量平台、worker、接口) |
| **S5-S6** | ⏳ 待完成 | 阶段 3 - 计时攻击 |
| **S7** | ⏳ 待完成 | 阶段 4 - 应对措施 |
| **S8** | ⏳ 待完成 | 最终定稿、报告、答辩 |
标签:CISA项目, Docker, GUI应用, Kocher算法, meg, PyQt6, Python, RSA密码学, RSA盲化, 主机安全, 云配置检测, 侧信道攻击, 信息安全, 反取证, 图形用户界面, 大学课程设计, 安全规则引擎, 安全评估, 安全防御评估, 实验室环境, 密码学安全, 密钥提取, 教学项目, 无后门, 时间攻击, 纳秒级精度, 统计分析, 网络安全, 蒙哥马利阶梯算法, 请求拦截, 逆向工具, 防御对策, 隐私保护, 非对称加密