Florian1911/Projet-MA1---Side-Channel-Attack
GitHub: Florian1911/Projet-MA1---Side-Channel-Attack
该项目是针对 STM32 上 AES-128 实现的侧信道功耗攻击研究套件,集成了固件代码、迹线采集脚本、CPA 与机器学习攻击流水线及实验记录。
Stars: 0 | Forks: 0
# MA1 项目 - 侧信道攻击
与报告相关的代码及结果:
**基于 STM32 微控制器功耗分析的 AES 实现侧信道攻击**
本仓库汇集了用于研究 AES-128 功耗分析攻击的 Python 脚本、STM32 固件和实验记录。该项目涵盖了使用 PicoScope 进行迹线采集、对齐、CPA 攻击、兴趣点(POI)选择,以及 MLP/CNN 模型的试验。
## 组织结构
- `firmware/`:用于 AES 的 STM32 固件变体,涉及 GPIO 触发、UART、low-side/high-side 测量和泄漏测试。
- `scripts/acquisition/`:PicoScope/STM32 采集脚本。
- `scripts/preprocessing/`:迹线的对齐、准备和质量控制。
- `scripts/analysis/`:SNR/POI/相关性分析、诊断和图表生成。
- `scripts/attacks/`:CPA、密钥恢复、盲测攻击和投票机制。
- `scripts/ml/`:MLP/CNN/ASCAD 试验和迁移流水线。
- `scripts/campaigns/`:实验活动的编排脚本。
- `setups/`:完整且有文档记录的设置(`base_saine_pico5000`,`aes_uart_highside_chb_trigger`)。
- `docs/`:实验记录、操作手册和说明性图表。
- `results/`:用于追踪结果的小型摘要、图表和已记录版本的实验活动。
完整的数据集和原始采集数据可能非常庞大。它们并未全部纳入版本控制;本仓库主要保留代码、小型摘要和有用的图表。
## 实验数据
完整的实验工作空间在本地占用约 200 GB 的空间,根据保留的实验活动和采集数据,可能会达到约 221 GB。这种大小主要来源于原始的 PicoScope 迹线(`.npz`、`.npy`、完整采集)以及大量的测试活动。
为了保持 GitHub 仓库的流畅访问,并未包含所有大型数据。本仓库主要包含:
- 采集与分析代码;
- 所使用的 STM32 固件;
- 用于复现处理过程的脚本;
- 结果摘要、图表和轻量级输出。
实验测量过程耗时较长,因为每次活动都需要进行逐条迹线的物理采集、对齐测试、稳定性验证,并且当噪声、触发器或硬件设置导致信号质量下降时,还需要进行多次重新采集。
## Python 安装
```
python3 -m venv .venv
source .venv/bin/activate
python -m pip install -r requirements.txt
```
如需进行 PicoScope 采集,还需要安装制造商提供的 PicoSDK 系统库。
## 实验流程示例
1. 烧录适合硬件设置的 STM32 固件变体。
2. 运行采集脚本(`scripts/acquisition/acquire_dataset_no_uart.py`、`scripts/acquisition/acquire_dataset_highside.py` 或 `setups/base_saine_pico5000/` 目录)。
3. 检查迹线的对齐情况和质量(`scripts/preprocessing/fix_alignment.py`、`scripts/preprocessing/quality_check.py`、SNR 脚本)。
4. 执行 CPA 或机器学习(ML)攻击(`scripts/attacks/cpa_attack.py`、`scripts/campaigns/full_aes16_pipeline.py`、`scripts/ml/train_mlp_numpy.py` 等)。
5. 对比排名/相关性并生成报告所需的图表。
标签:AES, STM32, 侧信道攻击, 功耗分析, 客户端加密, 密码学, 嵌入式安全, 手动系统调用, 逆向工具