前言
在迅速变化和发展的物联网市场,新的产品需求不断涌现,因此对于智能硬件设备的更新需求就变得空前高涨,设备不再像传统设备一样一经出售就不再变更。为了快速响应市场需求,一个技术变得极为重要,即OTA空中下载技术。
物联网平台支持通过OTA方式进行设备固件升级,是智能设备修复系统漏洞、实现系统升级的手段,通过固件升级用户提供更好的服务。OTA固件升级功能不仅能够更新固件,而且还能重新配置片上硬件资源。同时,设备固件可通过OTA固件升级流程获得更新的补丁和更多安全算法防范病毒攻击。
什么是OTA升级
OTA升级:通过OTA方式实现固件或软件的升级;
只要是通过无线通信方式实现升级的,都可以叫OTA升级,比如网络/蓝牙。
那什么是有线升级呢?也叫做本地升级,比如我们平时为电脑装系统,就是提前将系统下载到U盘上,再通过USB连接连接到电脑上进行电脑系统升级,也就是说通过UART,USB或者SPI通信接口来升级设备固件就叫做有线升级;
OTA升级优势
市场端的快速上线需求
天下武功唯快不破,市场需要持续不断的创新,不断的增加用户需求,一般设备都会预留一些后加载技术,前期可以实现一部分功能即开始上线,后面通过敏捷开发,不断迭代新功能,通过OTA升级更新设备实现更多功能,实现渐进式部署;
运维成本低
通过OTA方式,可以对分布在各地的设备进行软件升级,而不必让运维人员各地奔波。
设备安全性及完善性
有了OTA固件升级的备案,那么产品不一定等到完全没有缺陷再上市,只要在不存在较为致命的缺陷下,就可以提前上市,解决问题后在远程完成升级修补缺陷。同时基于日益严峻的安全形势威胁,备固件可通过OTA固件升级流程获得最新补丁和更多安全算法,做到不断加固的。
OTA升级流程
小堂为大家列举两种方式OTA升级,MQTT升级与蓝牙升级
MQTT升级
流程图
升级步骤
协议 设备上报固件版本 数据上行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)并进行加密处理和数字签名操作,保证传输过程中数据的机密性、完整性和合法性。在手机和手表已建立蓝牙连接的情况下:
OTA安全风险 当前的OWASP物联网十大漏洞中,排名第四的就是缺乏安全的更新机制。固件验证缺失、明文数据传输、回滚机制缺失和安全更新通知的缺失是主要原因。OTA升级成功与否不仅关系到设备的安全性和可用性,还可能影响用户隐私和财产安全。整个过程中我们可能面临的风险如下:
对于传输过程,需要使用安全的无线通信协议,并且加密固件包,保证只有终端设备能够解密。对于固件防篡改,可以通过数字签名技术来保证固件的完整性和来源的安全:
OTA升级包验签 安全性要求较高的场景下,需在升级前进行服务端和设备端的双向认证,防止身份伪造攻击。可以在设备出厂前预先为每个设备烧录唯一的设备证书或身份标识,服务端需要验证该设备证书后,确认设备没有被篡改或仿冒,才能进行数据传输。设备端也需要验证服务端的身份,防止重放攻击,导致设备端可能会“无条件”再次执行服务端下发的控制指令,造成一些意想不到的安全问题。 结语 随着物联网市场发展越来越快,对物联网平台OTA升级带来了越来越大的挑战,需要我们一起完善更加健全的OTA平台。至此,小堂就将物联网产品设计部分的OTA设备固件讲完了,如果对小伙伴儿们有帮助的话,