3、威胁模型分析:攻击者如何物理接触设备、常见攻击路径(UART、JTAG、SPI、I2C、逻辑分析仪)、Flash读取风险概述
TinyML设备通常部署在物理可触及的环境中——智能家居传感器、工业监测节点、农业物联网终端、医疗穿戴设备等。与云端服务器不同,这些设备缺乏物理隔离保护,攻击者可以购买同款设备、拆解外壳、使用逻辑分析仪或编程器直接探测芯片引脚。本章将系统分析物理接触场景下的威胁模型,梳理UART、JTAG、SPI、I2C等常见调试与存储接口的攻击路径,并重点阐述Flash读取风险及其对模型权重保密性的影响。
上图展示了TinyML设备物理攻击的完整威胁链路。攻击者通过拆解设备外壳,接触PCB板上的调试接口、存储芯片或总线引脚,利用UART获取交互Shell,通过JTAG/SWD直接读写内存,或使用逻辑分析仪嗅探SPI/I2C总线上的数据流。最终目标均指向Flash中存储的模型权重、密钥和固件。下面将逐一分析各攻击路径的技术细节与防护要点。
3.1 核心原理:物理接触攻击的威胁建模框架
威胁建模的核心是识别资产、攻击面、攻击者能力与攻击路径。对于TinyML设备,最重要的资产是模型权重——它代表了训练数据的知识浓缩,是商业竞争力的核心。其次是加密密钥(用于OTA固件签名、通信加密)和固件本身(可能包含算法逻辑)。攻击者的物理接触能力决定了攻击路径的选择:
- 无侵入式攻击:仅通过外部接口(如USB、网络)进行探测,不拆解设备。此类攻击获取的信息有限,但可尝试固件升级漏洞或侧信道分析。
- 侵入式攻击:拆解外壳,使用逻辑分析仪、JTAG调试器、编程器等工具直接接触PCB上的测试点、芯片引脚或Flash芯片。这是本章讨论的重点。
- 半侵入式攻击:通过化学腐蚀或激光照射去除芯片封装,但不破坏钝化层,利用聚焦离子束(FIB)或光子发射分析读取内部数据。此类攻击成本高,通常针对高价值目标。
威胁建模的关键在于评估攻击者的时间成本与设备价值。对于售价几十元的传感器节点,攻击者不太可能投入数万美元进行FIB逆向;但使用50美元的树莓派配合开源工具,即可在数小时内完成UART或SPI嗅探。因此,防护策略应优先阻断低成本攻击路径。
3.2 常见攻击路径详解
3.2.1 UART调试口攻击
UART(通用异步收发器)是嵌入式设备最常见的调试接口。许多TinyML设备在开发阶段保留UART用于日志输出、命令行交互或固件升级。生产时若未禁用,攻击者只需找到PCB上的TX/RX/GND测试点,使用USB转TTL适配器即可连接。
攻击流程:
- 拆解设备,目视寻找标有"UART"、"DEBUG"、"TX"、"RX"的排针或测试点。
- 使用万用表测量引脚电压,通常TX/RX在空闲时为3.3V或1.8V。
- 连接USB转TTL模块,使用minicom或PuTTY打开串口终端,尝试常见波特率(115200、57600、9600)。
- 若设备启动时输出引导日志,可能泄露内核版本、文件系统类型、甚至root shell。
实战中,部分设备在UART上提供uboot或bootloader交互界面,攻击者可中断启动过程,修改启动参数进入单用户模式,直接挂载文件系统读取Flash内容。即使没有Shell,UART日志也可能泄露内存地址、密钥片段或模型加载路径。
3.2.2 JTAG/SWD调试接口攻击
JTAG(联合测试工作组)和SWD(串行线调试)是芯片级调试接口,允许攻击者完全控制CPU:读写任意内存地址、设置断点、单步执行、甚至修改Flash内容。对于ARM Cortex-M系列MCU,SWD只需2根线(SWDIO和SWCLK),更容易被隐藏或禁用。
攻击路径分析:
| 接口类型 | 引脚数量 | 攻击能力 | 检测难度 |
|---|---|---|---|
| JTAG | 4-5 (TMS, TCK, TDI, TDO, TRST) | 全内存读写、Flash编程、边界扫描 | 中(需找到测试点) |
| SWD | 2 (SWDIO, SWCLK) | 与JTAG类似,但引脚更少 | 高(引脚易隐藏) |
攻击者使用OpenOCD或J-Link连接调试接口后,可执行以下操作:
# 读取整个Flash镜像
openocd -f interface/stlink.cfg -f target/stm32f1x.cfg -c "init" -c "dump_image flash_dump.bin 0x08000000 0x100000" -c "shutdown"
# 读取SRAM中的密钥
openocd -c "mdw 0x20000000 64"
即使MCU启用了读保护(RDP),部分芯片存在已知绕过漏洞(如STM32F1的RDP降级攻击)。攻击者可利用电压毛刺或温度冲击使保护机制失效,然后通过调试接口读取Flash。
3.2.3 SPI/I2C总线嗅探
TinyML设备常使用外部SPI Flash存储模型权重(如W25Q64),或通过I2C连接传感器。攻击者使用逻辑分析仪(如Saleae Clone,约100元)即可捕获总线上的所有通信数据。
SPI Flash读取攻击:
- 定位PCB上的SPI Flash芯片(常见封装SOIC-8),查阅数据手册确认引脚定义。
- 使用测试夹或飞线连接逻辑分析仪的8个通道到CS、CLK、MOSI、MISO、VCC、GND。
- 触发设备启动过程,捕获CPU对Flash的读取命令(0x03读命令、0x9F读ID等)。
- 使用SPI解码器解析数据,直接获得模型权重二进制文件。
I2C总线同样存在风险。若模型权重通过I2C从安全芯片加载,攻击者可嗅探通信内容。更隐蔽的是,攻击者可以主动注入I2C命令,伪装成合法主机修改设备配置,或读取传感器数据流中的敏感信息。
3.2.4 逻辑分析仪与侧信道分析
逻辑分析仪不仅用于总线解码,还可用于时序侧信道分析。例如,模型推理过程中,MCU访问Flash的地址序列与输入数据相关。攻击者通过分析CS/CLK信号的时序模式,可能推断出模型的分支结构或激活函数类型。更高级的攻击是功耗分析(SPA/DPA),通过测量MCU的电流变化来提取密钥或模型参数。
对于TinyML设备,功耗分析尤其危险,因为模型推理涉及大量MAC(乘加)运算,功耗波形与权重值存在相关性。攻击者采集数百次推理的功耗轨迹,使用差分功耗分析(DPA)即可恢复部分权重。
3.3 Flash读取风险概述
Flash是TinyML设备中模型权重的最终存储介质。无论使用内部Flash还是外部SPI Flash,攻击者的目标都是读取其中的二进制数据。Flash读取风险可分为三个层次:
| 风险层次 | 攻击方式 | 所需设备成本 | 成功概率 |
|---|---|---|---|
| 直接读取 | 编程器(如CH341A)直接读取SPI Flash | 约50元 | 极高(若未加密) |
| 调试接口读取 | JTAG/SWD绕过RDP读取内部Flash | 约200元 | 高(取决于芯片型号) |
| 芯片级逆向 | FIB、电子显微镜、化学腐蚀 | 数万至数十万元 | 中(针对高价值目标) |
直接读取SPI Flash是最常见的攻击方式。攻击者只需热风枪拆下Flash芯片,放入编程器,即可读取全部内容。若模型权重以明文存储,攻击者可直接获得完整的神经网络参数。即使权重经过混淆(如XOR),攻击者也可通过分析固件中的解密代码找到密钥。
3.4 案例拆解:智能门锁模型权重提取全过程
背景与约束:某智能门锁使用TinyML进行人脸识别,模型权重存储于外部SPI Flash(W25Q32),MCU为STM32L4系列。设备售价约800元,攻击者目标为提取模型权重以复制门锁系统。
初始现象:攻击者购买同款门锁,拆解后观察到PCB上有8脚SOIC封装芯片,丝印为"25Q32",确认为Winbond SPI Flash。同时发现PCB边缘有4个未标注的排针孔,疑似调试接口。
关键输入数据:
- SPI Flash型号:W25Q32(容量4MB,标准SPI接口)
- MCU型号:STM32L431(支持SWD调试,默认RDP级别0)
- 排针孔电压测量:VCC=3.3V,GND=0V,另外两脚空闲时均为3.3V(疑似SWDIO和SWCLK)
分析判断过程:攻击者首先尝试直接读取SPI Flash。使用CH341A编程器配合夹子,无需拆焊芯片,直接读取4MB内容。分析二进制文件,发现前1MB为固件代码,后3MB为全零数据。在固件中搜索模型特征(如"tflite"、"model"字符串),未找到明显标记。进一步分析发现固件末尾有AES-256-CBC加密的密文块,密钥存储于MCU内部Flash。
实际操作步骤:
- 使用ST-Link连接SWD排针,OpenOCD尝试连接。由于RDP级别为0,直接连接成功。
- 读取MCU内部Flash(0x08000000起始,共512KB),保存为mcu_dump.bin。
- 在mcu_dump.bin中搜索AES密钥模式(32字节随机数据),结合固件中的密钥派生函数,定位到密钥存储地址0x0803F000。
- 使用密钥解密外部SPI Flash中的密文块,获得完整的TensorFlow Lite模型文件(约2.8MB)。
- 使用Netron可视化模型结构,提取全部权重参数。
结果对比:攻击总耗时约3小时,成本约150元(CH341A编程器+ST-Link)。成功提取模型后,攻击者可在树莓派上复现门锁的人脸识别功能,并绕过活体检测(因为模型权重完全一致)。
风险与代价:该攻击暴露了三个设计缺陷:外部Flash未加密、SWD接口未禁用、RDP未启用。修复方案为:启用RDP级别1、禁用SWD、使用MCU内部唯一ID派生密钥加密外部Flash。
复盘经验:对于TinyML设备,外部存储必须加密,且密钥不能存储在MCU内部Flash的固定地址。更安全的做法是使用独立安全芯片(如ATECC608A)存储密钥,或使用MCU的OTP区域存储密钥并启用RDP。
3.5 常见误区与总结复盘
误区一:认为"小设备不值得攻击"。实际上,攻击者可能批量提取低价值设备的模型,用于训练对抗样本或构建更强大的攻击工具。一次成功的提取可被无限复制。
误区二:混淆"固件加密"与"模型加密"。固件加密保护的是代码不被逆向,但模型权重可能以独立文件存储。攻击者即使无法解密固件,也可通过总线嗅探获取模型加载时的明文数据。
误区三:忽视调试接口的残留风险。许多开发板在量产时仅移除了调试排针,但PCB上仍留有焊盘。攻击者使用焊锡和飞线即可恢复连接。正确做法是在固件中永久禁用调试接口,并烧断对应的熔丝位。
误区四:依赖混淆而非加密。XOR、字节重排等混淆技术可被自动化解混淆工具在数分钟内破解。真正的安全必须依赖标准加密算法(AES-256)和硬件安全模块。