前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >一文读懂设备OTA升级

一文读懂设备OTA升级

作者头像
编程识堂
发布2023-05-24 14:44:31
2.2K0
发布2023-05-24 14:44:31
举报
文章被收录于专栏:编程识堂编程识堂

前言

在迅速变化和发展的物联网市场,新的产品需求不断涌现,因此对于智能硬件设备的更新需求就变得空前高涨,设备不再像传统设备一样一经出售就不再变更。为了快速响应市场需求,一个技术变得极为重要,即OTA空中下载技术。

物联网平台支持通过OTA方式进行设备固件升级,是智能设备修复系统漏洞、实现系统升级的手段,通过固件升级用户提供更好的服务。OTA固件升级功能不仅能够更新固件,而且还能重新配置片上硬件资源。同时,设备固件可通过OTA固件升级流程获得更新的补丁和更多安全算法防范病毒攻击。

什么是OTA升级
OTA升级:通过OTA方式实现固件或软件的升级;
只要是通过无线通信方式实现升级的,都可以叫OTA升级,比如网络/蓝牙。

那什么是有线升级呢?也叫做本地升级,比如我们平时为电脑装系统,就是提前将系统下载到U盘上,再通过USB连接连接到电脑上进行电脑系统升级,也就是说通过UART,USB或者SPI通信接口来升级设备固件就叫做有线升级;
OTA升级优势
市场端的快速上线需求
天下武功唯快不破,市场需要持续不断的创新,不断的增加用户需求,一般设备都会预留一些后加载技术,前期可以实现一部分功能即开始上线,后面通过敏捷开发,不断迭代新功能,通过OTA升级更新设备实现更多功能,实现渐进式部署;
运维成本低
通过OTA方式,可以对分布在各地的设备进行软件升级,而不必让运维人员各地奔波。
设备安全性及完善性
有了OTA固件升级的备案,那么产品不一定等到完全没有缺陷再上市,只要在不存在较为致命的缺陷下,就可以提前上市,解决问题后在远程完成升级修补缺陷。同时基于日益严峻的安全形势威胁,备固件可通过OTA固件升级流程获得最新补丁和更多安全算法,做到不断加固的。
OTA升级流程
小堂为大家列举两种方式OTA升级,MQTT升级与蓝牙升级
MQTT升级
流程图

升级步骤

  • 设备唤醒后上报固件当前版本,服务端进行存储;
  • 在控制台上传新固件,并配置升级计划及升级策略,比如全量升级、容灾升级 、指定设备升级等等;
  • 根据升级计划对设备发送固件升级请求,下发固件URL给设备;
  • 设备拿到固件URL后,进行固件升级,并上报升级进度至服务端
  • 服务端接收到升级进度后返回至控制台展示,直至升级成功。

协议 设备上报固件版本 数据上行Topic #设备通过这个Topic上报当前的固件版本信息。 iot/v1/s/[devId]/ota/uploadVerInfo JSON数据格式 { "id": "123556", "params": { "version": "1.0.1", "deviceId":"3234234234242" } } 参数说明 参数类型说明idLong消息ID号。每个消息ID在当前设备中具有唯一性versionStringOTA模块版本。deviceIdString当前设备id OTA云端下发固件升级包信息至设备 数据下行Topic #通过这个Topic推送升级包信息, 设备订阅该Topic可以获得升级包信息。 iot/v1/c/[deviceId]/ota/execOtaReq JSON数据格式 { "code": "1000", "data": { "size": 432945, "version": "2.0.0", "url": "https://iotx-ota-pre.oss-cn-shanghai.aliyuncs.com/ota/2.0.0/test.bin" }, "id": 1626969597470, "message": "success" } 参数说明 参数类型说明idLong消息ID号。每个消息ID在当前设备中具有唯一性。messageString结果信息。codeString状态码。versionString设备升级包的版本信息。sizeLong升级包大小,单位:字节。urlString升级包在对象存储(OSS)上的存储地址。设备上报升级进度 数据上行Topic #OTA升级过程中,设备可以通过这个Topic上报OTA升级的进度百分比。 iot/v1/s/[deviceId]/ota/progressReq JSON数据格式 { "id": "123", "params": { "step": "-1", "module":"default", "desc": "OTA升级失败,请求不到升级包信息。" } } 参数说明 参数类型说明idString消息ID号。String类型的数字,取值范围0~4294967295,且每个消息ID在当前设备中具有唯一性。stepStringOTA升级进度。 取值范围: 1~100的整数:升级进度百分比。 0:升级中。 -1:升级失败。 -2:下载失败。 -3:校验失败。 -4:烧写失败。descString当前步骤的描述信息,长度不超过128个字符。如果发生异常,此字段可承载错误信息。蓝牙升级 时序图

升级步骤 以智能手表为例,介绍目前可能的一种DFU-OTA方案。手机端和云端的传输过程需使用安全的传输通道(如https)并进行加密处理和数字签名操作,保证传输过程中数据的机密性、完整性和合法性。在手机和手表已建立蓝牙连接的情况下:

  • 手机端向手表设备查询当前设备信息(如当前固件版本)并回传给云端,云端将最新固件版本等信息回传给手机端;
  • 手机端对比当前版本和最新版本,若当前版本不为最新版本,则向云端请求下载设备最新固件包等数据,云端返回相应数据。手机端需先对获取的固件包完整性和来源合法性进行校验;
  • 如需升级,手机端发送升级指令和固件基本信息给手表;
  • 手表端检查固件基本信息(版本等)无误以及相应的升级环境(电量要求、存储容量等)均满足后,返回允许升级信息。若相关信息有误或不满足要求,则不进行后续操作;
  • 手机端发送升级包(根据具体的传输协议和固件大小,确定是否需要拆包发送);
  • 手表端接收并校验固件的合法性(完整性和来源合法),校验无误后进入DFU模式进行设备升级,此时手表和手机端会自动断开;
  • 设备升级完后需重启,重新连接手机后正常使用。

OTA安全风险 当前的OWASP物联网十大漏洞中,排名第四的就是缺乏安全的更新机制。固件验证缺失、明文数据传输、回滚机制缺失和安全更新通知的缺失是主要原因。OTA升级成功与否不仅关系到设备的安全性和可用性,还可能影响用户隐私和财产安全。整个过程中我们可能面临的风险如下:

  • 传输过程中是否能窃取固件中敏感信息;
  • 固件有没有被攻击者篡改;
  • 固件是否来自受信任的来源;
  • 目标设备端是否可信,是否会被身份伪造攻击;
  • 攻击者使用具有漏洞的老版本对设备进行降级或替换;
  • ……

对于传输过程,需要使用安全的无线通信协议,并且加密固件包,保证只有终端设备能够解密。对于固件防篡改,可以通过数字签名技术来保证固件的完整性和来源的安全:

  • 服务端对固件文件进行哈希处理后,用服务端私钥签名,将签名值和固件数据等生成OTA.bin文件,上传到云端;
  • 设备端接收OTA.bin文件后,提取出固件数据并以相同的方式进行哈希处理,得出一个哈希值。将OTA.bin文件中的签名用预置在设备的服务端公钥进行解密后的值,对比二者,如果相同则可以确定固件的完整性以及来源于合法的服务端。

OTA升级包验签 安全性要求较高的场景下,需在升级前进行服务端和设备端的双向认证,防止身份伪造攻击。可以在设备出厂前预先为每个设备烧录唯一的设备证书或身份标识,服务端需要验证该设备证书后,确认设备没有被篡改或仿冒,才能进行数据传输。设备端也需要验证服务端的身份,防止重放攻击,导致设备端可能会“无条件”再次执行服务端下发的控制指令,造成一些意想不到的安全问题。 结语 随着物联网市场发展越来越快,对物联网平台OTA升级带来了越来越大的挑战,需要我们一起完善更加健全的OTA平台。至此,小堂就将物联网产品设计部分的OTA设备固件讲完了,如果对小伙伴儿们有帮助的话,

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2023-04-12,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 编程识堂 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
物联网
腾讯连连是腾讯云物联网全新商业品牌,它涵盖一站式物联网平台 IoT Explorer,连连官方微信小程序和配套的小程序 SDK、插件和开源 App,并整合腾讯云内优势产品能力,如大数据、音视频、AI等。同时,它打通腾讯系 C 端内容资源,如QQ音乐、微信支付、微保、微众银行、医疗健康等生态应用入口。提供覆盖“云-管-边-端”的物联网基础设施,面向“消费物联”和 “产业物联”两大赛道提供全方位的物联网产品和解决方案,助力企业高效实现数字化转型。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档