当前位置:首页 > 嵌入式 > 嵌入式分享
[导读]物联网终端升级既要能从坏版本恢复,也要阻止攻击者刷回有漏洞的旧版本。两项目标存在约束:如果过早提高安全门槛,备用镜像也可能被拒绝。升级状态和防降级策略必须共同设计。

物联网终端升级既要能从坏版本恢复,也要阻止攻击者刷回有漏洞的旧版本。两项目标存在约束:如果过早提高安全门槛,备用镜像也可能被拒绝。升级状态和防降级策略必须共同设计。

双镜像布局首先解决写入失败后仍有代码可启动的问题。下载过程写入非活动区,只有完成长度、摘要与签名等校验后,才把新镜像标记为可尝试启动。摘要能够发现内容损坏,真实性还依赖经过信任根验证的签名,二者不能互相替代。镜像选择元数据同样需要抵抗掉电,可通过冗余记录、校验与可恢复的状态转换实现。若启动标志只放在一处普通存储单元,擦写中断可能让引导程序既不知道旧镜像在哪,也不知道新镜像是否完整,双分区本身并不能避免这种故障。

新镜像第一次运行应处于待确认状态。应用完成关键外设、配置读取和必要的业务自检后,再确认本次版本;若启动循环、看门狗复位或达到试运行失败条件,引导程序可按既定策略回退。确认条件不能仅是执行到主函数,也不宜完全依赖云端在线,否则网络中断会让健康镜像反复回退。对于带执行器的设备,自检还需保证不产生危险动作。试运行考察的是版本能否完成本机职责,远程握手只能作为其中一个有明确超时边界的证据。

恢复能力必须靠断电注入验证。应覆盖镜像写入、元数据更新、镜像交换和确认记录提交等阶段,重新上电后核对实际选择与预期是否一致。采用交换式升级时,恢复逻辑还需要记录搬移进度,不能只保留一个目标分区编号。另一个容易遗漏的边界是持久化配置:新版本若不可逆地改写数据结构,旧代码即使成功启动,也可能无法读取现场参数。因此可回退版本需要兼容的数据迁移方案,或保留旧格式副本,不能把代码回退等同于整机业务恢复。

防降级针对的是另一类问题:旧镜像签名仍然有效,但其中已知漏洞不应再次被启用。可以在受保护存储中保存安全计数下限,镜像携带签名覆盖的安全计数,引导程序拒绝低于下限的候选。这里的安全计数不是展示给用户的版本字符串,也不一定每个普通版本都增长。只有负责决策的引导代码、校验密钥与计数存储受到相应保护,比较结果才有意义;若攻击者能随意改低计数或替换引导程序,应用层再严格的版本检查也无法建立可信边界。

物联网升级系统应明确安全计数何时推进。若新镜像刚下载就提升下限,而它随后无法完成自检,旧镜像可能因计数较低而失去恢复资格。常见做法是在试运行确认后再提交新的可信下限,但具体顺序必须与引导程序的实现相匹配,并测试提交过程中掉电的结果。若一次更新确实要禁止所有旧版本,备用镜像也应满足新的安全条件,或者另备经过授权的恢复镜像。不能同时要求任意旧版本随时回退,又要求所有低于新门槛的镜像永不运行。

发布系统还要区分普通撤回与安全回退。当问题只是新功能不稳定,可以在安全门槛允许的范围内切换备用版本;若旧版本已经被判定不可接受,则应发布修复镜像,而不是绕过计数检查。测试需用签名正确但计数过低、签名错误但版本号较高的镜像,分别验证拒绝路径。安全策略须由实际引导链验证,后台显示成功不能证明异常时仍可恢复。

升级可靠性依靠可恢复的试启动状态,防降级依靠可信且有序推进的安全门槛。先定义允许恢复到哪些镜像,再确定计数提交时机,才能避免两套机制互相封死。

本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除( 邮箱:macysun@21ic.com )。
关闭