前言
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而设计的集在线仿真与下载为一体的开发工具,支持JTAG/SWD/SWIM三种模式。
1.2PCB板上的调试接口丝印
基线要求
设备应去除 PCB 板上的调试接口丝印 ( 如明显的 TX、RX),以防止逆向工程。
知识库
PCB中的丝印层包括:Top Silkscreen(顶层)、Bottom Silkscreen(底层)。即印刷电路板的最上和最下两层。
这是为了方便电路的安装和维修等,在印刷板的上下两表面印刷上所需要的标志图案和文字代号等的专用层,例如元件标号和标称值、元件外廓形状和厂家标志、生产日期等等。
1.3 调试接口默认关闭信息输入
基线要求
调试接口因某些特定需要而开启后,默认不应开放调试接口的信息输入,防止设备固件被篡改或本地存储的敏感信息被读取。尽可能减少攻击面。
知识库
如由于输入造成的缓冲区溢出漏洞。
1.4 调试接口打印敏感数据
基线要求
调试接口在某些特定需要而开启后,应仅允许进行不包含用户与设备敏感信息的信息输出。
知识库
敏感信息包括:
- 敏感参数信息:token,key,deviceId
- 个人敏感信息
- 加密保护的明文信息
2 本地数据存储
2.1存储在本地敏感信息加密
基线要求
设备敏感信息存在PCB板上存储芯片,包含但不限于norflash,nandflash,E2PROM,eMMC,SDcard,CFcard时,需要进行加密存储。加密方案优先采用安全芯片(加密芯片)或操作系统分区加密来实现。如IoT设备设备无硬加密和操作系统支持,加密方案需满足加密算法基线要求。
知识库
- norflash:是一种存储介质,由Intel于1988年开发出来。它的存储空间一般比较小,使用时不用初始化,应用程序可以直接在flash闪存内运行,不必再把代码读到系统RAM中。
- nandFlash:Flash存储器的一种,其内部采用非线性宏单元模式,为固态大容量内存的实现提供了廉价有效的解决方案。Nand Flash存储器具有容量较大,改写速度快等优点,适用于大量数据的存储,因而在业界得到了越来越广泛的应用,如嵌入式产品中包括数码相机、MP3随身听记忆卡、体积小巧的U盘等。
- E2PROM: (Electrically Erasable Programmable read only memory)是指带电可擦可编程只读存储器。是一种掉电后数据不丢失的存储芯片。 EEPROM 可以在电脑上或专用设备上擦除已有信息,重新编程。一般用在即插即用场景。
- eMMC: (Embedded Multi Media Card)是MMC协会订立、主要针对手机或平板电脑等产品的内嵌式存储器标准规格。
2.2 芯片读保护
基线要求
设备主控MCU和设备板上模组MCU应开启芯片读保护机制,以防止通过调试接口非授权读取设备信息。
知识库
如STM32的芯片都提供对Flash的保护,具体分为写保护和读保护。如开启了读保护,尝试通过调试接口读取芯片内flash内容会报错。
3 安全启动(BOOT)
基线要求
在设备方案设计选型时,应选择支持安全启动芯片,启动时对不同类型的固件(uboot、kernel、rootfs)或 存储代码的Flash区域进行校验。确保存储芯片中的系统合法性和完整性校验通过后方可正常启动。
知识库
针对不同的设备方案,生成的固件会有所不同,系统的启动方式也会不同。但是在设备上电后,均要针对系统程序进行合法性校验。
- linux系统会涉及到uboot,kerenl和rootfs的校验。
- 烧录在flash中的单片机,需要对关键的flash区域进行校验
4 I/O数据传输
基线要求
设备I/O接口(包括但不限于I2C,SPI,UART,SDIO,CAN,PCI,USB)中传输的通讯数据、控制数据应加密处理。宜采用安全芯片来确保加密密钥的安全性,加密方案需满足加密算法基线要求。以此达到攻击者通过硬件I/O接口嗅探得到协商密钥以及控制命令。
知识库
I2C
- 定义
I2C全称:Inter-Integrated Circuit,是由Philips公司开发,是一种同步、半双工的通信总线。 - 同步:发送接收端要严格同步,一般有同步时钟线。
- 半双工:I2C只有一条数据线,所以master发数据与收数据不能同时进行。
- 同通信速率
- 引脚
SCL(Serial Clock):时钟线,时钟都是有master提供的
SDA(Serial Data):双向数据线,发数据或者收数据(收发不能同时)
SPI
-
定义
SPI(Serial Perripheral Interface)是串行外围设备接口。SPI是Motorola公司推出的一种同步串行接口技术,是一种高速,全双工的同步通信总线。主要应用于MUC外扩EEPROM、FLASH、ADC、DAC等芯片。 -
引脚
CS/SS,Slave Select/Chip Select,这个是片选信号线,用于选择需要进行通信的从设备。IIC主机是通过发送从机设备地址来选择需要进行通信的从机设备的,而SPI主机不需要发送从机设备地址,直接将相应的从机设备片选信号拉低即可。
SCK,Serial Clock,串行时钟,和IIC的SCL一样,为SPI通信提供时钟。
MOSI/SDO,Master Out Slave In/Serial Data Output,简称主出从入信号线,这根数据线只能用于主机向从机发送数据,也就是主机输出,从机输入。
MISO/SDI,Master In Slave Out/Serial Data Input,简称主入从出信号线,这根数据线只能用户从机向主机发送数据,也就是主机输入,从机输出。
UART
-
定义
UART(Universal Asynchronous Receiver-Transmitter) 通用异步收发器。常用与控制系统与外设通信,包括控制器与控制器,控制器与终端设备。 -
波特率:每秒钟传输的数据位。 9600、19200、38400、57600 以及 11520等。
-
引脚
1、RX:接收数据
2、TX:发送数据
3、GND:数字地
4、VCC:直流电源
SDIO
- 定义
SDIO(Secure Digital Input and Output),即安全数字输入输出接口。它是在SD卡接口的基础上发展而来,它可以兼容之前的SD卡,并可以连接SDIO接口设备,比如:蓝牙、WIFI、GPS等。 - 总线模式
1、SPI模式
2、1-bit SD传输模式
3、4-bit SD传输模式 - 引脚
5 防物理拆除与破坏
5.1外壳防拆除
基线要求
设备不宜暴露可以将设备部分或全部拆除的螺丝孔
或卡扣,设备室外外壳宜采用一体式结构设计;如因业务需要必须暴露螺
丝或卡扣的,宜采用非常用类型固定螺丝来固定设备,并使用强度结构符
合要求的结构胶对外壳螺丝封胶防护,以防止设备从室外被轻易拆除。
5.2 强拆告警
基线要求
设备应设计传感器识别设备的拆解。对于强安全要求设备应失效部分或全部功能,并感知设备异常。
5.3 对控制信号线的破话保护
基线要求
设备中用于控制的信号线,如开关信号线,异常检测等重要信号线路。宜设计检测电路,防止脱落或人为破坏。
6 防强电磁攻
基线要求
高安全等级设备应在芯片外加装电磁防护罩,以防止强电磁脉冲(EMP)攻击造成的设备逻辑或运行异常,进而导致逻辑错误,设备宕机或电路烧毁
知识库
- 电磁脉冲,是一种瞬变的强电磁波,可由核爆炸、雷电、静电放电及人为技术等产生。
- 电磁屏蔽,就是利用金属等电磁屏蔽材料做成屏蔽体,将需要防护的区域封闭起来,把电磁脉冲隔离在屏蔽体外,需要通风和进出人员设备的孔口则采用电磁屏蔽门或波导窗保护起来。
7 设备唯一标识防篡改
基线要求
设备端应存储唯一硬件标识,并采用一次性编程、安全芯片等技术防
止被篡改。