一文读懂设备OTA升级_ota两种升级技术方案(1)

id	        Long	消息ID号。每个消息ID在当前设备中具有唯一性
version	    String	OTA模块版本。
deviceId	String	当前设备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"
}

参数说明
参数 类型 说明

id	    Long	消息ID号。每个消息ID在当前设备中具有唯一性。
message	String	结果信息。
code	String	状态码。
version	String	设备升级包的版本信息。
size	Long	升级包大小,单位:字节。
url	    String	升级包在对象存储(OSS)上的存储地址。

设备上报升级进度
数据上行Topic
#OTA升级过程中,设备可以通过这个Topic上报OTA升级的进度百分比。

 iot/v1/s/[deviceId]/ota/progressReq

JSON数据格式

{
  "id": "123",
  "params": {
    "step": "-1",
    "module":"default",
    "desc": "OTA升级失败,请求不到升级包信息。"
  }
}

参数说明
参数 类型 说明

id	    String	消息ID号。String类型的数字,取值范围0~4294967295,且每个消息ID在当前设备中具有唯一性。
step	String	OTA升级进度。
取值范围:
1~100的整数:升级进度百分比。
0:升级中。
-1:升级失败。
-2:下载失败。
-3:校验失败。
-4:烧写失败。
desc	String	当前步骤的描述信息,长度不超过128个字符。如果发生异常,此字段可承载错误信息。

蓝牙升级

时序图
在这里插入图片描述
升级步骤
以智能手表为例,介绍目前可能的一种DFU-OTA方案。手机端和云端的传输过程需使用安全的传输通道(如https)并进行加密处理和数字签名操作,保证传输过程中数据的机密性、完整性和合法性。在手机和手表已建立蓝牙连接的情况下:
● 手机端向手表设备查询当前设备信息(如当前固件版本)并回传给云端,云端将最新固件版本等信息回传给手机端;
● 手机端对比当前版本和最新版本,若当前版本不为最新版本,则向云端请求下载设备最新固件包等数据,云端返回相应数据。手机端需先对获取的固件包完整性和来源合法性进行校验;
● 如需升级,手机端发送升级指令和固件基本信息给手表;
● 手表端检查固件基本信息(版本等)无误以及相应的升级环境(电量要求、存储容量等)均满足后,返回允许升级信息。若相关信息有误或不满足要求,则不进行后续操作;
● 手机端发送升级包(根据具体的传输协议和固件大小,确定是否需要拆包发送);
● 手表端接收并校验固件的合法性(完整性和来源合法),校验无误后进入DFU模式进行设备升级,此时手表和手机端会自动断开;
● 设备升级完后需重启,重新连接手机后正常使用。

OTA安全风险

当前的OWASP物联网十大漏洞中,排名第四的就是缺乏安全的更新机制。固件验证缺失、明文数据传输、回滚机制缺失和安全更新通知的缺失是主要原因。OTA升级成功与否不仅关系到设备的安全性和可用性,还可能影响用户隐私和财产安全。整个过程中我们可能面临的风险如下:
● 传输过程中是否能窃取固件中敏感信息;
● 固件有没有被攻击者篡改;
● 固件是否来自受信任的来源;
● 目标设备端是否可信,是否会被身份伪造攻击;
● 攻击者使用具有漏洞的老版本对设备进行降级或替换;
● ……
对于传输过程,需要使用安全的无线通信协议,并且加密固件包,保证只有终端设备能够解密。对于固件防篡改,可以通过数字签名技术来保证固件的完整性和来源的安全:
● 服务端对固件文件进行哈希处理后,用服务端私钥签名,将签名值和固件数据等生成OTA.bin文件,上传到云端;
● 设备端接收OTA.bin文件后,提取出固件数据并以相同的方式进行哈希处理,得出一个哈希值。将OTA.bin文件中的签名用预置在设备的服务端公钥进行解密后的值,对比二者,如果相同则可以确定固件的完整性以及来源于合法的服务端。

OTA升级包验签

安全性要求较高的场景下,需在升级前进行服务端和设备端的双向认证,防止身份伪造攻击。可以在设备出厂前预先为每个设备烧录唯一的设备证书或身份标识,服务端需要验证该设备证书后,确认设备没有被篡改或仿冒,才能进行数据传输。设备端也需要验证服务端的身份,防止重放攻击,导致设备端可能会“无条件”再次执行服务端下发的控制指令,造成一些意想不到的安全问题。

结语

随着物联网市场发展越来越快,对物联网平台OTA升级带来了越来越大的挑战,需要我们一起完善更加健全的OTA平台。至此,小堂就将物联网产品设计部分的OTA设备固件讲完了,如果对小伙伴儿们有帮助的话,欢迎点赞、关注、转发,也可关注公众号 编程识堂,获取更多干货!

最后

自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。

深知大多数Java工程师,想要提升技能,往往是自己摸索成长,自己不成体系的自学效果低效漫长且无助。

因此收集整理了一份《2024年嵌入式&物联网开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。

img

img

img

img

img

img

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上嵌入式&物联网开发知识点,真正体系化!

如果你觉得这些内容对你有帮助,需要这份全套学习资料的朋友可以戳我获取!!

由于文件比较大,这里只是将部分目录大纲截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且后续会持续更新!!

点,真正体系化!**

如果你觉得这些内容对你有帮助,需要这份全套学习资料的朋友可以戳我获取!!

由于文件比较大,这里只是将部分目录大纲截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且后续会持续更新!!

  • 14
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值