ALAIN-NG/timing-attack-rsa

GitHub: ALAIN-NG/timing-attack-rsa

一个基于PyQt6的RSA计时侧信道攻击仿真与教学平台,通过可视化界面完整演示从密钥生成、计时测量、逐位提取私钥到防御评估的全流程。

Stars: 0 | Forks: 0

# 🔐 INF4268 – RSA 侧信道攻击(计时) ![Python](https://img.shields.io/badge/Python-3.12%2B-blue) ![PyQt6](https://img.shields.io/badge/PyQt-6.5%2B-green) ![许可证](https://img.shields.io/badge/Licence-MIT-yellow) **项目 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盲化, 主机安全, 云配置检测, 侧信道攻击, 信息安全, 反取证, 图形用户界面, 大学课程设计, 安全规则引擎, 安全评估, 安全防御评估, 实验室环境, 密码学安全, 密钥提取, 教学项目, 无后门, 时间攻击, 纳秒级精度, 统计分析, 网络安全, 蒙哥马利阶梯算法, 请求拦截, 逆向工具, 防御对策, 隐私保护, 非对称加密