前言
IoT产品同以往的纯软件产品的最大区别就是产品的载体是一块PCBA。攻击者首先面对的是IoT的硬件,情报的收集,bin文件的获取等都是从硬件分析开始。万事开头难,因此硬件的安全设计是IoT安全开发的重要一环。
1 物理调试接口
1.1默认关闭调试接口
基线要求
常见调试接口包括UART、JTAG、SWD、SWIM等,在IoT设备出厂时应默认设置关闭,以减少不必要的物理调试接口暴露和信息传输。如因售后问题分析等原因需开启调试接口,应设置特殊操作后方可开启。如:
- 专用USB dongle
- 不常用的组合按键
- 上电+特出组合按键等
知识库
调试接口介绍:
- SWIM:Single Wire Interface Module,单线接口模块。常见于ST的STM8系列单片机。
- JTAG:Joint Test Action Group,联合测试工作组规定的一种仿真协议,它是一种国际标准测试协议。标准的JTAG是四线:TDI,TMS,TCK,TDO,分别对应数据输入,模式选择,时钟,数据输出。
- SWD:Serial Wire Debugging,串行调试接口。标准的SWD为2pins:DIO和CLK
- UART: Universal Asynchronous Receiver-Transmitter, 通用异步收发器,即常说的串口。
JTAG&SWD调试接口定义
调试器
J-Link
J-Link是德国SEGGER公司为支持仿真ARM内核芯片推出的JTAG仿真器,很多ARM芯片的接口协议是JTAG,JLink一端接电脑USB接口,一端接CPU的JTAG接口,JLink充当的作用就是USB转JTAG,支持JTAG和SWD两种模式。
- 可配合IAR EWAR,ADS,KEIL,WINARM,RealView等集成开发环境。
- 支持ARM7/ARM9/ARM11,Cortex M0/M1/M3/M4,Cortex A5/A8/A9等内核芯片的仿真。
ST-Link
ST-Link是ST意法半导体为评估、开发STM8/STM32系列MCU而设计的集在线仿真与下载为一体的开发工具