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,这使其成为架构侧信道研究的有趣目标。 ### 引脚映射 请参考以下引脚连接图: ![ESP32-C3 Mini Pinout](https://ae-pic-a1.aliexpress-media.com/kf/Saffc363f38ab48febae45e1dbce87eaan.jpg_640x640q75.jpg_.avif) | 功能 | 引脚 | 描述 | | :--- | :--- | :--- | | **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, 云资产清单, 侧信道分析, 功耗分析, 固件, 密码学, 嵌入式安全, 手动系统调用, 故障注入, 教学靶场, 时钟毛刺, 漏洞分析, 物联网安全, 电压毛刺, 电磁分析, 硬件安全, 示波器, 路径探测, 逆向工程