第一章:ChipWhisperer 平台介绍
做侧信道攻击,选对平台太重要了。我最早接触 ChipWhisperer 是在一个物联网安全项目里,当时客户要求评估一款加密芯片的电磁泄露风险。说实话,一开始我也试过用示波器加脚本的方式,但同步触发、噪声控制这些问题折腾得我够呛。后来换到 ChipWhisperer,整个流程顺畅多了。
这一章,咱们就聊聊这个平台到底是什么、怎么搭环境、怎么验证它跑起来了。嗯,内容偏基础,但基础打牢了,后面实战才不慌。
1.1 硬件架构:拆开看看里面有什么
ChipWhisperer 本质上是一套集成的侧信道攻击工具。它把目标芯片、功率/电磁测量模块、触发同步电路全塞进了一个板子里。你想想看,传统方案你得自己搭示波器、放大器、触发逻辑,现在一块板子全搞定。
我手头用的是 ChipWhisperer-Lite,它主要包含这几部分:
- 目标板(Target Board):通常是 STM32F3 或 XMEGA 系列 MCU,跑加密算法用的。我习惯把目标板想象成「被攻击者」。
- 捕获板(Capture Board):负责采样功耗或电磁信号,核心是高速 ADC(采样率最高 105 MS/s)。
- 触发接口(Trigger I/O):目标板执行加密操作时,会拉高一个 GPIO 引脚,捕获板收到这个信号才开始采样。同步的关键就在这里。
- 时钟源(Clock Source):可以给目标板提供外部时钟,方便我们控制攻击节奏。
核心逻辑:目标板跑加密 → 触发信号拉高 → 捕获板开始采样电磁/功耗波形 → 数据传回 PC 分析。
下面这张图是我自己画的架构图,帮你理清数据流:
这张图里,数据流是从左到右的。PC 发指令给捕获板,捕获板控制目标板跑加密,同时电磁探头把泄露信号送回捕获板。整个过程闭环了。
1.2 软件环境搭建:别踩我踩过的坑
软件部分,ChipWhisperer 官方推荐用 Python 3.8 以上版本。我个人习惯用 Anaconda 管理环境,省心。
安装步骤其实就几条命令:
# 创建虚拟环境(我建议用 Python 3.9)
conda create -n cw_env python=3.9
conda activate cw_env
# 安装 ChipWhisperer 库
pip install chipwhisperer
# 验证安装
python -c "import chipwhisperer as cw; print(cw.__version__)"
我曾经在 Windows 上装过,结果 USB 驱动死活认不到。后来发现是 Zadig 工具没装对。这里给你个避坑指南:
注意:Windows 用户务必用 Zadig 工具将 ChipWhisperer 的驱动替换为 WinUSB 或 libusb-win32。否则后面连板子会报「设备未找到」的错误。
Linux 和 macOS 用户相对省事,但 macOS 的权限问题偶尔会冒出来。我记得有一次在 macOS 上跑示例脚本,一直报权限错误,最后用 sudo 加了个 udev 规则才搞定。
1.3 开发板连接与验证:让它真正跑起来
硬件连接其实很简单。ChipWhisperer-Lite 的捕获板和目标板是通过排针直连的。你只需要:
- 把目标板插到捕获板的扩展接口上
- 用 Micro-USB 线连接捕获板和电脑
- (可选)接上电磁探头,对准目标芯片
连好之后,跑一个最简单的验证脚本:
import chipwhisperer as cw
# 连接开发板
scope = cw.scope()
target = cw.target(scope)
# 检查连接状态
print(f"Scope 连接: {scope.ok()}")
print(f"目标板连接: {target.ok()}")
# 发送一个简单的加密指令
target.simpleserial_write('p', b'\x01\x02\x03\x04')
resp = target.simpleserial_read('r', 4)
print(f"目标板响应: {resp.hex()}")
如果输出显示 Scope 连接: True 和 目标板连接: True,恭喜你,环境搭好了。
小技巧:我第一次跑这个脚本时,发现目标板没响应。排查了半天,原来是目标板上的跳线帽没插对。J1 跳线要短接,才能让捕获板给目标板供电。你遇到类似情况,先检查跳线。
验证通过后,你可以用 ChipWhisperer 自带的 Jupyter Notebook 示例做一次完整的波形捕获。在终端里运行:
cw_lab --notebook
这会打开一个浏览器页面,里面有很多现成的实验。我建议你先跑一遍 1_1_Introduction_to_ChipWhisperer.ipynb,看看波形长什么样。
嗯,这一章的内容就到这。平台介绍、环境搭建、连接验证,这三步走完,你手里已经有了一套能用的侧信道攻击环境。后面几章,咱们就开始真正动手抓波形、分析密钥了。
本章要点回顾:
- ChipWhisperer 硬件由捕获板、目标板、触发接口、时钟源组成
- 软件安装用 pip,Windows 用户注意驱动替换
- 连接验证跑 simpleserial 脚本,确认 scope 和 target 都 ok