2. 受限设备的安全威胁模型与密钥风险
受限设备(MCU、安全芯片、TEE、物联网模组等)的密钥生命周期管理,不能只从“算法是否安全”出发,而必须先回答一个更基础的问题:攻击者能接触到什么、在哪个阶段接触、能获得什么收益。这就是威胁模型。对受限设备而言,物理暴露、资源受限、固件可读、通信链路不可信,使得密钥风险贯穿生成、注入、存储、使用、更新、销毁全过程。本节先建立攻击面与密钥阶段的对应关系,再给出可落地的威胁建模方法与防护优先级。
一、六类典型攻击方式与作用点
物理访问攻击是最直接的一类。攻击者拆解设备后,可通过探针读取PCB走线、探测Flash总线、使用JTAG/SWD调试口、或对封装进行开盖(decap)后读取芯片内部存储。典型目标是提取长期密钥(LTK)或设备身份私钥。防护上依赖调试口熔断、读保护(RDP)、屏蔽层、防拆开关与密钥加密存储。
侧信道攻击不破坏设备,而是通过功耗、电磁辐射、执行时间等旁路信息推断密钥。例如AES的功耗曲线与S盒操作相关,通过相关性功耗分析(CPA)可在数千条曲线内恢复密钥字节。防护手段包括恒定时间实现、掩码(masking)、隐藏(hiding)、随机化时钟与双轨逻辑。
固件提取针对的是“密钥被硬编码或明文存储”的常见错误。攻击者通过UART Bootloader、SPI Flash读取、OTA包解包或调试接口导出固件,再在离线环境搜索密钥常量。若密钥与固件一同发布,等同于公开密钥。
中间人攻击(MITM)发生在设备与云端、设备与网关之间的通信链路上。攻击者伪造服务器证书或利用未校验的服务端身份,截获会话密钥协商过程,从而解密或篡改业务数据。防护依赖双向证书校验、证书固定(pinning)与安全信道(TLS/DTLS)。
重放攻击不破解密钥,而是复制合法报文重复发送。例如重放一条“开锁”指令即可绕过认证。防护需要随机数(nonce)、时间戳、单调计数器与挑战-响应机制,并保证计数器在断电后仍可恢复。
克隆攻击是上述手段的综合结果:攻击者提取设备唯一密钥后,将其复制到仿制硬件中,使克隆设备能通过云端认证。防护依赖不可导出的密钥(如安全芯片内的密钥句柄)、设备指纹绑定与云端一机一密策略。
二、威胁建模方法:从资产到优先级
威胁建模不是罗列攻击名词,而是把“资产—攻击面—攻击路径—影响—防护”串成可判断的链条。对受限设备,推荐按以下四步执行。
第一步:资产识别与分级。列出设备内所有密钥类资产,例如设备身份私钥、TLS会话密钥、固件签名验证公钥、OTA解密密钥、业务数据密钥。按“泄露后影响范围”分级:设备唯一密钥泄露只影响单台设备,根密钥或产线密钥泄露则影响整批设备,后者应列为最高等级。
第二步:攻击面枚举。对每个资产,列出攻击者可接触的入口:物理接口(JTAG、UART、SPI)、存储介质(外部Flash、EEPROM)、通信链路(BLE、LoRa、Wi-Fi、NB-IoT)、软件接口(Bootloader、OTA、调试命令)。每个入口标注“是否需要物理接触”“是否需要高成本设备”。
第三步:攻击路径与可行性评估。将攻击方式与入口组合成路径。例如“SPI Flash读取 → 固件中搜索AES密钥 → 解密OTA包 → 伪造固件”,这条路径的可行性取决于Flash是否加密、密钥是否硬编码。可用“攻击成本 × 成功概率 × 影响”做粗略排序,成本低、概率高、影响大的路径优先处理。
第四步:防护优先级排序。优先处理“可远程触发”和“可批量复制”的风险。远程中间人和重放影响面大,应优先做双向认证与新鲜性校验;克隆和固件提取影响整批设备,应优先做密钥不可导出与安全启动。物理访问和侧信道虽然严重,但通常需要较高成本,可作为第二优先级,通过安全芯片和恒定时间实现逐步加固。
三、各阶段关键风险点与防护优先级
| 阶段 | 关键风险点 | 典型攻击 | 防护优先级 |
|---|---|---|---|
| 生成/注入 | TRNG熵不足、产线明文注入、密钥重复 | 物理访问、固件提取 | 高:安全产线、一机一密、注入后立即加密 |
| 存储/保护 | Flash明文、读保护未开、密钥可导出 | 固件提取、物理访问 | 高:安全芯片、密钥句柄、读保护熔断 |
| 使用/运算 | 功耗与密钥相关、时间侧信道、调试口开放 | 侧信道、物理访问 | 中高:恒定时间、掩码、关闭调试口 |
| 更新/轮换 | OTA包未签名、版本可回滚、旧密钥未失效 | 中间人、重放 | 高:签名验证、防回滚计数器、双密钥过渡 |
| 销毁/退役 | 密钥残留、证书未吊销、设备身份可复用 | 克隆、物理访问 | 中:零化验证、吊销列表、退役审计 |
四、一个可操作的威胁建模示例
假设一台NB-IoT智能水表,使用STM32L4 + 外部SPI Flash,通过MQTT上报数据,固件支持OTA。资产包括:设备私钥(用于MQTT双向认证)、OTA解密密钥、计量数据密钥。
攻击面枚举结果:SPI Flash可物理读取;UART调试口未熔断;MQTT链路使用单向TLS;OTA包仅做CRC校验。组合出的高风险路径有两条:其一,读取SPI Flash获取OTA解密密钥,伪造固件实现批量控制;其二,劫持MQTT链路,重放“开阀”指令。
对应的防护动作可以这样落地:将设备私钥与OTA密钥迁移到安全芯片(如ATECC608A),密钥不可导出,仅通过I2C句柄调用;关闭UART调试口并熔断读保护;MQTT改为双向TLS并启用证书固定;在应用层加入单调计数器与随机数,服务端校验新鲜性,拒绝重复报文。完成后再评估:SPI Flash中已无明文密钥,固件提取无法直接获得密钥;链路劫持因双向认证失败而中断;重放因计数器不匹配被拒绝。剩余风险主要是侧信道,可通过安全芯片内置的恒定时间AES与随机化时钟进一步降低。
综上,受限设备的密钥风险不是单点问题,而是“攻击面 × 生命周期阶段”的交叉矩阵。物理访问、侧信道、固件提取、中间人、重放、克隆分别作用于不同阶段,防护优先级应依据攻击成本、影响范围和可批量性排序。先做密钥不可导出与安全启动,再做链路双向认证与新鲜性校验,最后针对侧信道与物理攻击做加固,才能在资源受限条件下获得可接受的密钥安全基线。