HaaS100 OTA之固件验签功能

1、概述

本文主要介绍HaaS100 对升级的固件做验签的功能进而防止升级非法固件;如下图流程所示,当用户开启阿里云IOT物联网平台的安全升级功能,对应的产品就启动了针对这个产品的安全升级功能,云端会对这个产品的升级固件做秘钥、公钥管理并对这个产品的固件做数字签名;对应的设备端,在OTA的过程中,会用从云端获取的公钥对升级的固件做数字签名的验证;整个流程,用户不需要管理公私钥,使用起来也非常方便,下图为HaaS100 安全升级使用流程图:

 

 

2、使用流程

2.1、打开云端安全升级功能并获取公钥

 

2.2、将公钥内嵌到代码中

如步骤1图示,通过复制按钮获取的公钥内嵌到 AliOS-Things/components/dm/ota/hal/ota_hal_digest.c文件中,覆盖如下的两个数组:

/* RSA Public Key:User needs sign in alibaba cloud to get and replace them. */

static const unsigned char ota_pubn_buf[256];

static const unsigned char ota_pube_buf[3];

 

2.3、编译烧录到HaaS100的基础固件

  • 选择app和board
    HaaS 100 搭载的是AliOS Things物联网操作系统,编译环境支持windows、linux和mac,下面以linux环境为主介绍使用过程,以ota_demo为例,介绍HaaS 100的固件验签如何使用;
    输入命令:
# 清除之前配置

$ aos make distclean

# 配置app为ota_demo,board为haas100

$ aos make ota_demo@haas100 -c config

 

  • 配置固件版本号
    输入命令:aos make menuconfig, 如下图:
    选择顺序:Application Configuration -> Firmware Version 根据需求修改版本号,如app-1.0.0等
  • 选择OTA组件及功能
    由于AliOS Things 端侧默认支持对固件验签的功能,此处不需要配置,使用OTA的默认配置就可以了;
  • 开始编译固件并烧录
    编译命令:aos make 编译完成后,生成的固件在platform/mcu/haas1000/release/write_flash_gui/ota_bin目录下;根据前面的烧录文档,先将固件烧录到HaaS 100板子上,重启板子,打开串口终端,配置串口波特率为:1500000,连接终端;
  • 设置设备四元组和配网连云
    如果第一次使用板子,需要配置设备的4元组,在终端输入:identity set pk ps dn ds,输入成功后以后不用再输入 ,然后配网:在终端输入:netmgr -t wifi -c wifi_ssid wifi_password  连网成功后,登录物联网平台可以看到对应的设备在线:

 

 

2.4、编译上云固件及云端操作

本地烧录完成后,需要做一个高版本固件上传到云端,通过云端操作完成固件的升级,所以需要按照步骤3中修改版本号的方法,修改固件版本号,其他不用修改,再编译生成一个高版本的固件,然后登录物联网平台平台,按如下图顺序操作:

点击添加固件后,如下图将platform/mcu/haas1000/release/write_flash_gui/ota_bin/ota_bin/ota_rtos_ota.bin上传到云端:

 

点击确定后,选择验证固件即可开始固件升级;


2.5、升级结果验证    


按照上面的操作步骤完成后,可以完成固件的数字签名验签进而实现固件升级,端侧的log如下图:

 

如果开启了安全升级,但HaaS100没有内嵌公钥,触发升级会怎么样呢?答案是HaaS100会数字签名验证失败,禁止固件升级,端侧的log会如下图所示:

云端升级结果可以通过点击“查看”获取详情;物联网平台的OTA操作可参考文档阿里云物联网平台固件升级文档

注:在做OTA之前确保设备端已连接云端

 

开发者技术支持

如需更多技术支持,可加入钉钉开发者群,或者关注微信公众号

更多技术与解决方案介绍,请访问阿里云AIoT首页https://iot.aliyun.com/

 

猜你喜欢

转载自blog.csdn.net/HaaSTech/article/details/115027698