HaaS100 OTA之固件验签功能介绍

简介: 本文主要介绍HaaS100 对升级的固件做验签的功能进而防止升级非法固件;

1、概述

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

image.png

2、使用流程

2.1、开发环境搭建

组件使用示例相关的代码下载、编译和固件烧录均依赖AliOS Things配套的开发工具 alios-studio ,所以首先需要参考《aos-studio使用说明之搭建开发环境》,下载安装 alios-studio ,待开发环境搭建完成后,可以按照以下步骤进行示例的测试。

2.2、 创建工程

创建新的工程:
组件的示例代码可以通过编译链接到AliOS Things的任意案例(solution)来运行,这里选择ota_demo案例, 开发板:HaaS100。

ota_demo案例相关的源代码下载可参考《aos-studio使用说明之创建工程》。

打开已有工程:
如果用于测试的案例工程已存在,可参考《aos-studio使用说明之打开工程》打开已有工程。

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

image.png

2.4、将公钥内嵌到代码中

如步骤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.5、配置固件版本号

根据需求修改版本号,如app-1.0.0等
修改位置:solutions/ota_demo/otaappdemo.c中的,MY_APP_VER宏定义。

2.6、配置四元祖

修改位置:solutions/ota_demo/otaappdemo.c中的,mqtt_main函数中的char product_key, char device_name, char *device_secret;填入自己的pk,dn,ds;

2.7、编译固件

完成上面步骤后,就可以编译ota_demo案例来生成固件了,具体编译方法可参考《aos-studio使用说明之编译固件》。

2.8、烧录固件

ota_demo案例的固件生成后,可参考《aos-studio使用说明之烧录固件》来烧录固件。

2.9、打开串口

固件烧录完成后,可以通过串口查看示例的运行结果,打开串口的具体方法可参考《aos-studio使用说明之查看日志》。
当串口终端打开成功后,可在串口中输入help来查看已添加的测试命令。

2.10、配网连云

输入wifi账号和密码配网:在终端输入:
netmgr -t wifi -c wifi_ssid wifi_password
注意修改其中的wifi_ssid和wifi_password为需要连接的wifi名字和wifi密码。
连网成功后,登录物联网平台可以看到对应的设备在线:

image.png

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

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

image.png

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

image.png

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

2.12、升级结果验证

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

image.png

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

image.png

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

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

开发者支持

HaaS解决方案中心:https://haas.iot.aliyun.com/
HaaS技术社区:https://blog.csdn.net/HaaSTech

开发者钉钉群和公众号见下图,开发者钉钉群每天都有技术支持同学值班。

image.png

相关实践学习
阿里云AIoT物联网开发实战
本课程将由物联网专家带你熟悉阿里云AIoT物联网领域全套云产品,7天轻松搭建基于Arduino的端到端物联网场景应用。 开始学习前,请先开通下方两个云产品,让学习更流畅: IoT物联网平台:https://iot.console.aliyun.com/ LinkWAN物联网络管理平台:https://linkwan.console.aliyun.com/service-open
相关文章
|
前端开发 API
解决el-table中横向滚动条无法显示的问题
解决el-table中横向滚动条无法显示的问题
4538 0
|
Arthas 监控 Java
Arthas常用命令
Arthas常用命令
990 0
|
8月前
|
人工智能 自然语言处理 安全
多任务并行+跨设备适配,AI编程方案提升研发效率的关键
接触企业级AI编程方案已有段时间,最初以为它只是普通的AI编程辅助方案,实际应用后才发现,其真正价值在于打破了传统研发的固有模式,从环境配置、任务执行到团队协作,将AI能力深度融入开发全流程。作为支持私有化部署、完全开源的企业级AI研发基础设施,它凭借分层解耦架构、双引擎驱动、安全原生等独特技术亮点,跳出同类方案的同质化困境,无花哨功能堆砌,却能切实解决开发中的诸多痛点,今天就从实操角度,和大家聊聊其技术亮点、真实使用案例及我的心得体会。
|
8月前
|
人工智能 安全 开发工具
重构研发流程:AI编程载体的技术架构如何破解行业痛点
在研发团队的日常工作中,环境配置繁琐、单任务执行效率受限、代码审查存在盲区、跨设备研发受制约等问题,一直是影响研发效率的核心痛点。传统AI编程工具多聚焦于代码补全、片段生成等单一功能,难以从底层解决研发流程中的协同与执行问题。一款面向研发团队的AI编程助手,并非简单的工具叠加,而是从研发模式出发的全面变革,其分层解耦+插件化扩展的技术架构设计,为AI能力与研发全流程的深度融合奠定了基础,也让全链路智能化研发成为可能。
|
存储 安全 算法
Linux命令sha256sum详解
`sha256sum`是Linux中用于计算文件SHA-256哈希的命令,确保数据完整性。它基于安全哈希算法,产生不可逆的64字符哈希值,用于验证文件未被篡改。主要参数包括`-b`(二进制模式)、`-c`(检查校验和)、`-t`(文本模式)。应用示例包括计算单个文件哈希、校验文件哈希及批量处理多个文件。最佳实践包括定期验证文件、保存校验和文件和结合其他安全工具使用。
|
人工智能 JavaScript 数据可视化
Cursor 、v0 和 Bolt.new:当今 AI 编程工具的全面解析与对比
本文对 Cursor AI、v0 和 Bolt.new 三大 AI 编程工具进行了全面比较,分析其各自优势与局限性,帮助开发者在不同工作流中灵活应用。
2293 8
Cursor 、v0 和 Bolt.new:当今 AI 编程工具的全面解析与对比
|
存储 小程序 前端开发
小程序封装网络请求和拦截器
在开发小程序时,实际上我们通常需要封装网络请求和拦截器,以实现统一处理状态码和存储用户登录信息等功能。这样可以提高开发效率,减少代码重复,同时也可以提高代码的可维护性和可读性。
795 0
|
前端开发 Java 关系型数据库
xxl-job 登入功能集成 OIDC 统一认证
xxl-job 是一款 java 开发的、开源的分布式任务调度系统,自带了登录认证功能,不支持对接、扩展 LDAP 、OIDC 等标准认证系统,考虑到单独维护 xxl-job 自有的用户系统不方便,以及存在人员离职、调岗、权限变动等需要及时调整用户权限的情况,需要接入公司统一的 OIDC 认证系统
2684 0
|
SQL 监控 前端开发
AI+若依框架(低代码开发)
AI+若依框架(低代码开发)
2962 1

热门文章

最新文章