chipwhisperer是用于功耗采集的设备平台,由于其官网介绍都是英文,为便于国内读者使用,作者把平台使用的部分功能做了一个主要介绍
1、软件下载
下载地址:Releases · newaetech/chipwhisperer (github.com)
图中的第一个链接
2、本文使用的是chipwhisperer pro 和cw308目标板,芯片是STM32芯片,设备连接图:
左边还有一根usb线连接到电脑,黑线用于功耗采集,白色的用于数据传输 (不同设备的连接线不同,后面会有各种设备的详细介绍)
3、设备连接测试,首先打开安装好的软件,本文安装在C盘子目录下, 是一个python的jupyter,已经集成好了各种python脚本
点开第一个 ,界面:
打开这个界面下的jupyter/1 - Connecting to Hardware ,会打开连接到硬件的脚本
我们按Run逐行执行
有时候会出现设备无法连接的问题
这意思是无法识别chipwhisperer,那就看看设备管理器 ,如果设备管理器中能显示CW1200这个设备,那错误可能变为
USBErrorPipe: LIBUSB_ERROR_PIPE [-9]
这个错误是驱动没设置好,需要下载一个软件来设置,zadig-2.8.exe,我把这个软件放在云盘上,地址为分享文件:zadig-2.8.exe
链接:https://pan.xunlei.com/s/VO-FqmYtEwLwa5c7OHsv-O2cA1#
提取码:q6zs
点开options-----list all devices则可以看到识别的CW1200,如果是别的设备,比如CWlite,就选cwlite
绿色箭头右边选择winUSB选项,然后点击install wcid driver,等待一会可以看到安装驱动成功
这样应该可以了,再回到python脚本中执行,应该不会报错
界面未报错
代表成功连接,此时设备上的CLK模块的灯应该是全亮的,代表连接成功
这时候可以接着执行脚本,到这一步
这里需要设置好设备的参数,我是安装在C盘,所以全路径为 C:\ChipWhisperer5_64\cw\home\portable\chipwhisperer\hardware\victims\firmware\simpleserial-base记得这个文件夹位置
执行这个命令后可以看到报错和提示
这是说PLATFORM未设置,本文使用的是
CW308目标板和STM32F3芯片的组合,所以参数设置为
CW308_STM32F3,读者所用的芯片和目标板不同,就选择相应的参数
可以看到执行成功,在文件夹中也生成了hex文件
通过这个hex文件可以把简单的串口通信程序烧录到芯片中,就可以开始数据传输测试了
执行到这一行,把STM32这一行取消注释,把地址换为之前生成的hex文件的地址,如果是别的芯片种类就换别的,执行 (注意:直接复制的地址是'\',python识别的是反斜杠'/'需要替换),执行完可以看到
代表烧录成功,接下来可以开始测试串口通信程序是否可用
这两句代码代表通过串口向芯片发送16个'0'数据,而串口读到的也是16个'0',代表串口通信没问题 ,这段代码中的'p'代表发送数据标志,这是串口程序的默认设置,如果发送'k'标志,则不会显示数据,只会返回0
当然,你还可以发送别的数据看看串口能否接收和转发
可以看到了发送了16个'ff' ,串口接收到了'r'代表读取命令,然后是16个ff字符,然后是'z'和'00',这部分代表字符串是以回车键结束。
至此,已经完成chipwhisperer软件的前期工作,连接和串口部分都没有问题,下篇文章就开始介绍如何把AES加密的hex烧录到芯片中,并采集加密功耗数据和保存。这部分我会细致的把每一步都介绍清楚,以便读者可以通过更改代码采集到任意加密算法的功耗数据