3. IoT设备安全需求

IoT设备的安全需求与通用计算设备有本质差异:它们通常部署在无人值守的物理环境中,资源受限(MCU主频几十到几百MHz、RAM几十到几百KB),生命周期长达5~10年,且往往通过无线或现场总线与云端、网关、执行器互联。这些特征决定了IoT安全不能照搬服务器或手机方案,而必须在“有限算力”与“可信隔离”之间找到工程平衡点。TrustZone for Armv8-M正是为这一场景设计的硬件级安全隔离技术,理解它为何适用,需要先看清IoT设备真正面对什么。

一、IoT设备面临的主要安全威胁

从攻击者视角看,IoT设备的威胁可归纳为四类,它们往往组合出现:

  • 固件提取与逆向:攻击者通过调试口(SWD/JTAG)、Flash读取或侧信道获取固件,分析密钥、协议与逻辑。未启用读保护或调试口未锁定的设备几乎“裸奔”。
  • 固件篡改与植入:通过OTA通道缺陷、未签名固件更新或物理写入,植入恶意代码,使设备成为僵尸网络节点或持久后门。
  • 密钥与凭证窃取:密钥明文存于Flash、以固定密钥加密、或在普通世界内存中长时间驻留,一旦应用被攻破,根信任即失守。
  • 运行时攻击:缓冲区溢出、ROP/JOP、非法外设访问、DMA越权读写,直接劫持控制流或读取安全内存。

这些威胁的共同点是:一旦“应用世界”被攻破,攻击者就能触达密钥、固件与安全服务。因此,IoT安全的核心诉求不是“让应用永不被攻破”,而是“即使应用被攻破,密钥与安全资产仍不可达”。

二、典型攻击面与信任边界

IoT设备的攻击面可按“接触方式”分为物理面、调试面、通信面、软件面与供应链面。下图以一台典型的TrustZone-ready MCU设备为例,展示攻击面与信任边界的关系:

IoT设备攻击面与TrustZone信任边界 外部攻击面 物理接触 拆机/探针/侧信道 调试接口 SWD/JTAG/串口 通信链路 BLE/WiFi/LoRa/总线 OTA/云通道 固件更新/凭证下发 供应链 第三方组件 SoC / MCU 内部 非安全世界(Normal World) 应用任务 / RTOS 网络协议栈、UI、业务逻辑 普通外设驱动 GPIO/UART/SPI/I2C 非安全内存(Flash / SRAM) 固件、日志、缓存、临时数据 攻击者可达区域:应用被攻破后,可读写此区域 但无法直接访问安全世界资源 安全世界(Secure World) 安全服务 / 可信应用 密钥管理、加解密、认证 安全外设 TRNG、Crypto、OTP 安全内存(Secure Flash / SRAM) 密钥、证书、安全固件、可信启动代码 硬件隔离:非安全世界不可读写 仅通过受控接口(NSC)调用 TrustZone 硬件信任边界 NSC

图中红色箭头表示攻击者可能进入的路径,蓝色虚线是TrustZone建立的硬件信任边界。关键结论是:攻击面无法完全消除,但可以通过硬件隔离把“被攻破的后果”限制在非安全世界内。

三、TrustZone在IoT中的适用场景与优势

TrustZone for Armv8-M在Cortex-M23/M33/M35P/M55等内核上提供安全与非安全两个状态,配合SAU/IDAU、安全中断、安全MPU与NSC接口,形成一套轻量级TEE。它在IoT中的典型适用场景包括:

场景 安全世界职责 非安全世界职责 核心收益
安全启动与固件校验 BL2、签名验证、镜像解密 应用固件加载与运行 防止固件篡改与植入
密钥与凭证保护 密钥存储、加解密、签名 调用安全服务,不接触明文密钥 应用被攻破也不泄露根密钥
安全OTA更新 验签、解密、版本回滚保护 下载、缓存、触发更新 阻断恶意固件下发
设备身份与认证 设备证书、挑战应答、TLS凭证 网络连接与业务通信 防克隆、防伪造接入
安全外设与数据隔离 TRNG、Crypto、安全存储 普通外设与传感器 敏感数据不进入非安全域

相比软件TEE或外挂安全芯片,TrustZone for Armv8-M的优势在于:零额外BOM成本(集成于MCU内核)、低切换开销(硬件状态切换,适合中断密集场景)、完整工具链支持(TF-M、CMSIS、TrustZone-aware调试),以及可裁剪的安全边界——开发者可按需决定哪些资产放入安全世界,避免过度设计。

四、移植适配中的常见误区与复盘

误区一:认为启用TrustZone就自动安全。TrustZone只是隔离机制,安全世界自身的代码质量、密钥生命周期管理、NSC接口的入参校验才是真正的安全根基。安全世界被攻破,隔离即失效。

误区二:把所有功能都塞进安全世界。安全世界资源有限,过多功能会导致安全固件膨胀、切换频繁、实时性下降。正确做法是“最小可信计算基”:只把密钥、验签、安全存储等核心资产放入安全世界。

误区三:忽视非安全世界的中断与DMA。安全中断优先级、DMA对安全内存的访问必须由SAU/MPU和IDAU共同约束,否则会出现“隔离了CPU却漏了DMA”的典型漏洞。

复盘建议:在移植前先画出一张“资产—攻击面—信任边界”对照表,明确每个密钥、每段固件、每个外设的归属世界;再据此配置SAU区域、NSC入口和安全中断向量。TrustZone的适配质量,取决于边界划分是否与真实威胁模型对齐,而不是取决于是否“用上了”这项技术。

/* 典型SAU区域配置片段(伪代码,用于说明边界划分思路) */
SAU->RBAR = 0x10000000 | SAU_RBAR_ENABLE;   /* 安全Flash起始 */
SAU->RLAR = 0x1001FFFF | SAU_RLAR_ENABLE;   /* 安全Flash结束 */
SAU->RBAR = 0x20000000 | SAU_RBAR_ENABLE;   /* 安全SRAM起始 */
SAU->RLAR = 0x20003FFF | SAU_RLAR_ENABLE;   /* 安全SRAM结束 */
SAU->RBAR = 0x50000000 | SAU_RBAR_NSC;      /* NSC可调用区域 */
SAU->RLAR = 0x50000FFF | SAU_RLAR_NSC;
SAU->CTRL = SAU_CTRL_ENABLE | SAU_CTRL_ALLNS; /* 默认非安全,白名单安全 */

综上,IoT设备的安全需求可以概括为“在资源受限前提下,保护密钥与固件不被提取、篡改和滥用”。TrustZone for Armv8-M通过硬件级安全/非安全隔离,把攻击者可达范围压缩到非安全世界,为安全启动、密钥保护、安全OTA和设备身份提供了可落地的信任根。移植适配的关键不在于“是否启用”,而在于“边界划在哪里、NSC怎么设计、安全世界是否足够小且足够可信”。