这些小活动你都参加了吗?快来围观一下吧!>>
电子产品世界 » 论坛首页 » DIY与开源设计 » 电子DIY » EEPW‑Let'sdesign|基于SimpleLink‑Wi‑FiCC322

共1条 1/1 1 跳转至页

EEPW‑Let'sdesign|基于SimpleLink‑Wi‑FiCC3220的安全OTA升级

专家
2026-11-02 09:37:30     打赏

前言

OTA 实现远程漏洞修复与功能迭代,但不安全的 OTA 会引入严重安全风险。 安全 OTA 通过固件签名校验、镜像完整性检查、自动固件回滚、密钥硬件安全存储、权限管控、灰度发布,抵御中间人攻击、恶意固件注入、降级攻击,防止升级失败设备变砖,保障设备业务连续运行,降低大规模设备运维成本,满足物联网安全合规要求。

一、基础硬件与软件环境

硬件

  • CC3220SF‑LAUNCHXL开发板

  • USB数据线;串口终端

  • Wi‑Fi路由器(2.4GHz)

软件工具

  1. CCS Code Composer Studio

  2. SimpleLink‑CC32xx‑SDK(带Cloud‑OTA示例工程)

  3. Uniflash:镜像打包、签名、烧录初始固件、OTA Bundle生成

  4. Amazon‑FreeRTOS(AWS‑IoT OTA方案需要)

  5. OpenSSL:生成ECDSA‑P256代码签名证书/密钥

两种OTA方案对比

方案传输链路镜像签名回滚保护适用场景
TI‑SDK Cloud‑OTAHTTPS,公有云对象存储SHA256+非对称签名Bundle保护+看门狗回滚私有HTTP服务器、Dropbox/GitHub托管镜像
FreeRTOS‑AWS‑OTAMQTT over‑TLSECDSA‑P256签名Bundle保护+自检回滚大规模设备集群、AWS‑IoT设备管理平台

二、TI原生Cloud‑OTA实操(TI‑RTOS)

1、导入工程

CCS导入两个工程,不要复制OTA库工程至工作区: 1)OTA库工程:…\source\ti\net\ota\ccs2)Cloud‑OTA应用工程:examples\tirtos\cc3220sf_launchxl\cloud_ota

触发方式:默认SW2按键触发OTA;在cloud_ota.c定义DISABLE_OTA_SWITCH_TRIGGER,设备每收到5次ping自动启动OTA下载,无需按键。

2、配置OTA服务器

修改otauser.h:填写云端HTTP镜像下载地址、OTA_VENDOR_TOKEN校验令牌。支持本地HTTP服务器、Dropbox、Github raw链接。

3、编译、生成OTA Bundle包

  1. 编译工程输出cloud_ota_CC3220SF_LAUNCHXL_tirtos_ccs.bin

  2. 打开Uniflash→Generate Image→Create OTA;

  3. 填入MCU‑image,加载签名私钥(SDK提供demo密钥dummy_ota_vendor_key.der;量产必须自建密钥);输出.tar格式OTA‑bundle固件包。

    Bundle包同时支持更新:MCU应用镜像 + CC3220网络处理器Service‑Pack固件。

4、烧录初始固件到LaunchPad

Uniflash连接开发板,烧录初始应用镜像;写入公钥证书到安全文件系统,用于设备校验OTA镜像签名。串口观察日志,确认Wi‑Fi联网成功。

5、执行OTA升级流程

  1. 将生成的OTA‑tar包上传HTTP服务器;

  2. 开发板按SW2触发OTA;

  3. 设备通过HTTPS分块下载bundle;校验签名、完整性哈希;

  4. 将镜像写入串行Flash;设置测试启动标记+看门狗;软复位。

  5. 测试启动逻辑(Bundle保护核心)

    • 复位后Bootloader先清除“测试启动标记”,如果新镜像自检(联网、业务自测)成功,则把新镜像设为默认运行镜像;

    • 如果新镜像崩溃、掉电、看门狗溢出,Bootloader直接回滚到老可用固件,避免变砖。

三、Amazon‑FreeRTOS + AWS‑IoT MQTT‑OTA

OTA.JPG


框图:云端生成OTA镜像→签名→IoT‑Jobs下发MQTT任务;设备OTA‑Agent接收分片、校验、测试启动、成功则commit新版本,失败自动回退旧版本。

OTA1.JPG

步骤简述

  1. OpenSSL生成ECDSA‑P256代码签名证书与私钥;将公钥证书烧录进CC3220安全文件系统。

  2. CCS导入FreeRTOS aws_demos工程,修改配置头文件:开启CONFIG_OTA_MQTT_UPDATE_DEMO_ENABLED;填写Wi‑Fi SSID/密码、AWS‑IoT‑Endpoint。

  3. Uniflash烧录FreeRTOS初始固件,设备通过TLS MQTT接入AWS‑IoT Core。

  4. AWS‑IoT控制台 → Jobs → 创建FreeRTOS‑OTA更新任务,上传固件bin,调用代码签名配置文件对镜像签名,选定目标设备/设备组,下发OTA Job任务。

  5. 设备侧OTA‑Agent(FreeRTOS任务,低优先级,不阻断业务运行)接收MQTT分片数据包,重组完整镜像;调用片上硬件密码加速器做签名与哈希校验,降低CPU开销。

  6. 写入flash,标记测试启动,MCU复位;新镜像完成AWS连接自检,自检通过确认新版本;自检失败看门狗触发,安全Bootloader回退上一版固件。

优势:复用已有MQTT‑TLS链路,不需要额外HTTPS连接,减小攻击面;支持分批灰度发布设备组升级,适合大规模IoT设备集群。

四、CC3220 OTA关键安全机制

  1. 安全存储密钥:签名公钥、设备证书存放NWP加密存储区,JTAG量产锁定,防止物理读取密钥;

  2. 镜像签名校验:无论HTTPS/MQTT方式,固件必须校验签名,拒绝中间人篡改、降级回滚旧漏洞固件;

  3. Bundle保护与看门狗回滚:测试启动机制,升级中途断电、镜像bug,自动回退旧固件,杜绝设备变砖;

  4. 硬件密码加速:SHA‑256、ECDSA由网络处理器硬件加速,MCU应用核开销低;

  5. 后台升级:OTA‑Agent低优先级任务,业务程序不被中断,工业设备运行过程可升级。

五、常见踩坑点

  1. CC3220SF SOP跳线保持0模式;JTAG调试端口量产务必锁定,否则物理攻击可导出固件;

  2. OTA镜像必须用Uniflash生成Bundle tar包,直接烧录bin无法触发回滚保护;

  3. FreeRTOS‑OTA必须把签名公钥证书烧入安全文件系统,只放在应用Flash会被绕过;

  4. MQTT分片大小匹配设备MQTT缓冲区(典型1KB),分片过大造成内存溢出;

  5. 自测回调钩子:除了默认AWS‑IoT联网检测,需要添加业务自定义自检逻辑(传感器、外设初始化检测),避免镜像联网成功但业务失效。






关键词: CC3220 OTA      升级    

共1条 1/1 1 跳转至页

回复

匿名不能发帖!请先 [ 登陆 注册 ]