第20章:固件安全更新
OTA (Over-the-Air) 既是物联网设备的“后悔药”,也是黑客攻击的“后门”。
20.1 OTA 更新架构
一个安全的 OTA 系统应包含:
- 版本管理:记录当前版本、目标版本、发布说明。
- 差分引擎:生成 v1.0 到 v1.1 的差分包(Patch),大幅减小下载量。
- 灰度发布:先推送给 1% 的设备,观察无异常后再全量推送。
20.2 固件安全防护
20.2.1 固件签名 (Signing)
目的:防止设备刷入被篡改的恶意固件。
- 做法:开发者用私钥对固件 Hash 进行签名。设备用内置公钥验签。
20.2.2 固件加密 (Encryption)
目的:防止竞争对手通过抓包或提取 Flash 逆向分析你的代码。
- 做法:固件在云端用 AES 密钥加密,设备下载后在内存中解密写入,或边解密边写入。
20.2.3 防回滚 (Anti-Rollback)
目的:防止攻击者刷入有已知漏洞的旧版本固件。
- 做法:eFuse 熔丝位。每升级一次大版本,烧断一位熔丝。启动时检查版本号是否低于熔丝位记录。
20.3 A/B 分区机制
为了防止更新过程中断电导致设备变砖,通常采用 双分区 (Dual Bank) 设计。
- 分区结构:
Bootloader|App A (Active)|App B (Standby)|Data - 更新流程:
- 当前运行在 A 分区。
- 下载新固件写入 B 分区。
- 校验 B 分区完整性。
- 设置 Boot 标志位指向 B。
- 重启。
- Bootloader 尝试启动 B。
- 确认机制:如果 B 启动失败(如看门狗超时),自动回滚到 A。
至此,第五部分“进阶技术与安全”已全部完成。物联网的未来在于智能化,下一章我们将进入第六部分:AI与物联网融合。