ic32k/ESP32_SCA_Multitarget
GitHub: ic32k/ESP32_SCA_Multitarget
将 ESP32-C3 Mini 变成侧信道分析与故障注入的练习靶标,支持 AES 功耗/电磁泄漏分析、计时攻击和 Glitch 测试等多种硬件安全实验场景。
Stars: 0 | Forks: 0
# ESP32-C3 SCA 多目标 v0.5 🛡️⚡
一款专为 **ESP32-C3 Mini (0.42" OLED)** 设计的专用固件,旨在练习**侧信道分析 (SCA)** 和**故障注入 (FI)**。该项目将 ESP32-C3 转变为一个用于电磁分析 (EMA) 和 Glitch 攻击的多功能目标。
由 **[@ic32k](https://github.com/ic32k)** 开发。
## 概述
该项目专为安全研究人员和爱好者量身定制,用于练习:
* **简单/差分功耗分析 (SPA/DPA)** 与 **电磁分析 (EMA)**:使用近场探头 (EMF)、LNA 以及 **ChipWhisperer** 或 **PicoGlitcher** 等采集设备。
* **故障注入 (FI) / Glitching**:使用 **ChipShouter**、**PicoEMP** 或 **FaultyCat** 等工具测试对电压或电磁 Glitch 的敏感性。
该固件提供实时 OLED 界面和完整的 UART CLI,用于选择目标并监控执行情况。
## 硬件设置
### 设备: ESP32-C3 Mini 0.42" OLED
ESP32-C3 是一款基于 RISC-V 的 SoC,这使其成为架构侧信道研究的有趣目标。
### 引脚映射
请参考以下引脚连接图:

| 功能 | 引脚 | 描述 |
| :--- | :--- | :--- |
| **UART RX** | GPIO 20 | 连接到您的 UART 适配器(例如 Bus Pirate / FTDI) |
| **UART TX** | GPIO 21 | 连接到您的 UART 适配器(例如 Bus Pirate / FTDI) |
| **Trigger Out** | GPIO 7 | **关键**:连接到您的示波器/ChipWhisperer 触发输入。 |
| **Button** | GPIO 9 | 用于手动菜单导航和执行。 |
| **LED** | GPIO 8 | 内部蓝色 LED(状态指示灯)。 |
| **OLED SDA** | GPIO 5 | 硬连接到内部显示屏。 |
| **OLED SCL** | GPIO 6 | 硬连接到内部显示屏。 |
## 🛠️ 连接示意图
### 1. 泄漏捕获 (EMA/SPA)
捕获 AES 操作期间的电磁泄漏:
1. 将 **EM Probe** 放置在 ESP32-C3 SoC 上(建议 Decap,但非必需)。
2. 将探头连接到 **LNA**(低噪声放大器)。
3. 将 LNA 输出连接到您的 **Oscilloscope** 或 **ChipWhisperer**。
4. 将 **GPIO 7 (Trigger)** 连接到采集设备的外部触发器。
### 2. 故障注入 (Glitch)
执行电压或 EM Glitching:
1. **Voltage Glitch**:拦截 VCC 线路 并使用外部 MOSFET(例如来自 PicoGlitcher)将其短暂拉低至 GND。
2. **EM Glitch**:将 **PicoEMP / ChipShouter** 线圈放置在 SoC 上。
3. 使用 **GPIO 7 (Trigger)** 在 `glitchTest()` 循环开始时精确计时 Glitch。
## 练习与菜单选项
固件包含 10 种模式,可通过板载按钮或 UART 命令选择(`n` 下一个,`s` 选择,或 `0-9` 直接跳转)。
### Glitch 测试
* **[0] G(a) - Glitch Auto**:运行关键计数器的连续循环。在循环期间 `TRIGGER_PIN` 变为高电平。如果计数器损坏,OLED 将显示 "GLITCH!"。
* **[1] G(m) - Glitch Manual**:与上述相同,但每次迭代都需要按下按钮或发送 UART 命令。
### AES 侧信道 (EMA/SPA)
* **[2] SH(a) - AES HW Auto**:使用 ESP32-C3 **硬件加速器** 进行 AES-128。非常适合研究硬件实现泄漏。
* **[3] SH(m) - AES HW Manual**:硬件 AES 的手动触发。
* **[4] SS(a) - AES SW Auto**:使用 **软件 Tiny-AES** 实现。软件实现通常更“响亮”,更容易进行 SPA/DPA 分析。
* **[5] SS(m) - AES SW Manual**:软件 AES 的手动触发。
### 密码计时攻击
* **[6] PV(m) - Password Vuln Manual**:使用 `strcmp` 风格逻辑的易受攻击密码检查(在第一个错误字节处终止)。非常适合**计时攻击**。
* **[7] PV(j) - Password Vuln Jitter**:与上述相同,但增加了随机 **Jitter (噪声)** 以阻碍简单的计时分析。
* **[8] PS(m) - Password Safe Manual**:**常量时间** 密码检查。即使字节错误,执行时间也保持不变。
* **[9] PS(j) - Password Safe Jitter**:最安全的模式,结合了常量时间逻辑和随机抖动。
## UART 控制接口
菜单可通过串口监视器(115200 波特率)完全控制:
* **`n` / `N`**:移至下一个菜单选项。
* **`s` / `S`**:选择/开始当前练习。
* **`0` - `9`**:直接跳转到特定练习。
* **输入密码**:出现提示时,直接在终端中输入密码。
* **退出**:长按物理按钮(>1.5s)或在某些模式下发送 `s` 以返回主菜单。
## 许可证与致谢
* **作者**: ic32k
* **框架**: Arduino / ESP-IDF
* **库**: U8g2 (OLED), mbedtls (Hardware AES).
*免责声明:本项目仅用于教育目的。请对自己拥有的硬件负责地使用。*
标签:ChipWhisperer, DPA, EMA, ESP32-C3, Fault Injection, GPIO, IoT, OLED, RISC-V, SPA, UART, 云资产清单, 侧信道分析, 功耗分析, 固件, 密码学, 嵌入式安全, 手动系统调用, 故障注入, 教学靶场, 时钟毛刺, 漏洞分析, 物联网安全, 电压毛刺, 电磁分析, 硬件安全, 示波器, 路径探测, 逆向工程