ESP RainMaker OTA 自动签名功能的安全启动

news2024/11/13 15:21:33

【如果您之前有关注乐鑫的博客和新闻,那么应该对 ESP RainMaker 及其各项功能有所了解。如果不曾关注,建议先查看相关信息,知晓本文背景。】


在物联网系统的建构中,安全性是一项核心要素。乐鑫科技对系统安全给予了极高的重视。ESP RainMaker 平台能使设备安全接入 Wi-Fi 网络,并支持通过云平台进行有效的控制和监控。此外,硬件自身的安全性亦不容忽视。因此,乐鑫的 MCU 设备集成了多种安全特性,如安全启动、flash 加密等。

其中,安全启动功能尤为重要,该功能确保了只有获得授权的固件能在 MCU 上运行。在 ESP-IDF 中使能安全启动功能十分简便,然而,安全启动密钥的管理责任归开发者所有。对此,乐鑫用户有一系列疑问,例如:

  • 如何生成安全启动密钥?
  • 安全存储密钥的地方:是开发者的设备还是服务器?
  • 如何防止密钥泄露?工程师离职对此有何影响?
  • 如何正确配对设备和密钥,以避免升级时采用错误的密钥造成潜在风险?
  • 如何管理固件相似但安全启动密钥不同的设备?

ESP RainMaker 最新引入的“安全签名”功能解答了上述疑问,扫除了用户的担忧。它具备如下功能:

  • 生成和管理密钥;
  • 在设备制造之前简化 BootLoader 和应用固件的签名过程;
  • 支持在部署固件升级任务之前进行固件自动签名的功能。

OTA 的自动签名功能

使用 OTA 的自动签名功能时,开发者只需将未签名的固件上传到 ESP RainMaker 平台,并部署固件升级任务。ESP RainMaker 后端会在固件升级过程中使用正确的密钥进行签名处理。

使用安全启动自动密钥选择进行 OTA 作业窗体顶端

如果这些设备使用不同密钥进行密钥验证,ESP RainMaker 将确保只有正确签名的固件发送到对应的设备。

开发者现在无需跟踪密钥(甚至在许多情况下,密钥对开发者不可见),从而极大地简化了设备签名密钥管理。

此外,由于密钥管理的过程在云端进行,无需开发者与设备管理人员的参与,使他们的分工变得更为明确。

密钥管理

在 ESP RainMaker 平台中,安全启动签名密钥在 ESP RainMaker 云端 中创建、维护。私钥本身对用户不可见,仅用于执行签名请求。在私有部署中,RainMaker 采用符合 FIPS(联邦信息处理标准)的硬件安全模块 (HSM) 确保安全性。访问控制授权了签名请求,确保只有获得授权的人员可以对固件镜像进行签名,增强了系统的安全性。

首次签名

在 ESP RainMaker 平台中创建签名密钥后,用户需要对启用安全启动功能的BootLoader 和固件进行签名,然后将它们烧录到生产设备上。操作方法是:首先,将未经过签名的 BootLoader 和固件镜像上传到相应的平台或工具中,上传完成后,用户对这些未签名的镜像进行首次签名操作。

ESP RainMaker 提供了详尽的烧录指南和设置说明,指导用户如何正确烧录签名后的BootLoader和固件到 SoC 上,以完成配置并确保设备能够实现安全启动。

安全签名功能适用于公共和私有 RainMaker 部署环境。在操作该功能时,请确保使用后端版本 2.1.0 或更新版本以及前端版本 2.0.1 或更新版本。

获取使用详情,请查看 ESP RainMaker docs。如有任何疑问,请发送邮件至 esp-rainmaker-support@espressif.com 与我们联系。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2058027.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

AgileTC测试用例管理平台的基本使用

1. 背景 使用企业微信在线文档对测试用例进行管理,存在以下问题,比如新建版本,每次都要设置下执行测试用例那一栏,要提供通过、失败、阻塞等选项,操作异常繁琐,比如版本管理问题,多个版本之后&a…

【企业高性能web服务器】

目录 一、Nginx 介绍1、 Nginx 功能介绍2、基础特性3、Nginx 模块介绍 二、Nginx 编译安装1、编写systemd服务 三、平滑升级和回滚1、平滑升级的流程2、升级2、回滚 四、 Nginx 核心配置详解1、实现 nginx 的高并发配置2、Nginx 账户认证功能3、nginx作为下载服务器配置 五、re…

为了改善您的网络安全状况,请专注于数据

有效地融合、管理和使用企业数据是一项艰巨的任务。企业拥有大量的数据,但这些数据存在于各自为政的系统和应用程序中,需要高技能的数据科学家进行大量的手动操作。工程师和分析师从所有数据中提取价值。 数据准备是一项基本且必要的任务,但…

IOS 11 通用Base控制器封装

整体规划 BaseController:把viewDidLoad逻辑拆分为三个方法,方便管理。 BaseCommonController:不同项目可以复用的逻辑,例如:设置背景颜色方法等 BaseLogicController:本项目的通用逻辑,主要…

Spring的核心启动流程

前言 Spring启动时候整个入口是这么一个方法 AbstractApplicationContext#refresh 总共有12个方法,也就是启动时的核心步骤 AbstractApplicationContext有众多实现,这里我选择SpringBoot Web应用默认的实现来讲 AnnotationConfigServletWebServerAppli…

MySQL系列—MySQL编译安装常见问题(或缺少依赖)及解决方法,MySQL 编译安装时需要安装的依赖(全)

MySQL系列—MySQL编译安装常见问题(或缺少依赖)及解决方法 MySQL 编译安装时需要安装的依赖(全): yum install -y cmake yum install ncurses ncurses-devel -y yum install -y libarchive yum install -y gcc gcc-c yum install -y openssl openssl-devel yum inst…

Python.NET:打开Python与.NET世界互通的大门

Python.NET 是一个强大的工具,它为 Python 程序员提供了一种与 .NET 公共语言运行时 (CLR) 无缝集成的途径。它就像一座桥梁,将 Python 的灵活性与 .NET 的强大功能连接起来,为开发者提供了前所未有的自由和可能性。 1. Python.NET 的核心价值…

内核代码中的路障宏

路障宏包含: mb()/rmb()/wmb barrier() __asm__:GCC关键字,用来声明一个内联汇编表达式。 __volatile__:告诉编译器,不要优化后面表达式中的内联汇编代码。 内联汇编表达式中的(“memory”):告诉GCC如下两个条件 If your assembler ins…

Flink常见数据源开发(DataStream API)

前言 一个 Flink 程序,其实就是对 DataStream 的各种转换。具体来说,代码基本上都由以下几部分构成,如下图所示: 获取执行环境(execution environment)读取数据源(source)定义基于数据的转换操作(transformations)定义计算结果的输出位置(sink)触发程序执行(exec…

Veritas NBU8.3.0.2安装Media Server(篇三)

一、环境自检阶段 1、Media角色地址为192.168.189.3,计算机名称为bakmedia,域名为sszz.com 2、防火墙均已关闭 二、hosts解析配置 在安装之前需要在hosts文件中配置解析,master和media都需要配置;后期如果备份客户端也需要为客户…

虚幻游戏开发| 编辑器内正常运行但打包出错

示例错误1 在编辑器里可以正常跳转关卡,但是在打包模式不能。 需要去projectsetting把需要跳转的关卡添加到maps list 编辑器内运行正常,但打包后出现报错或者不同的表现,其他原因汇总: 1. 资源加载问题 延迟加载:…

STM32 内部FLASH详解

目录 STM32 内部FLASH详解 1. STM32 FLASH简介 2. STM32 FLASH与SRAM 3. STM32 FLASH 容量、内容介绍 4. STM32 FLASH 读写注意事项 5. STM32 FLASH 基本结构 6. STM32 FLASH 读写步骤 6.1 FLASH 解除或添加 读、写保护的方法 6.2 FLASH 如何使用指针 读写存储器的方法…

Java | Leetcode Java题解之第354题俄罗斯套娃信封问题

题目&#xff1a; 题解&#xff1a; class Solution {public int maxEnvelopes(int[][] envelopes) {if (envelopes.length 0) {return 0;}int n envelopes.length;Arrays.sort(envelopes, new Comparator<int[]>() {public int compare(int[] e1, int[] e2) {if (e1[…

JMeter的安装和使用

&#x1f4a5; 该系列属于【SpringBoot基础】专栏&#xff0c;如您需查看其他SpringBoot相关文章&#xff0c;请您点击左边的连接 目录 一、安装 1. 下载 2. 解压 3. 修改配置 4. 运行 二、使用 1. 添加线程组 2. 添加http取样器 3. 添加监听报告 4. 添加监听结果树 …

SpringBoot依赖之Spring Data Redis实现位图Bitmap

Spring Boot 项目中使用 Spring Data Redis 实现位图Bitmap 暂未发表&#xff0c;记录于20240820 概念 Spring Data Redis (AccessDriver) 依赖名称: Spring Data Redis (AccessDriver)功能描述: Advanced and thread-safe Java Redis client for synchronous, asynchronous,…

Python(PyTorch)物理变化可微分神经算法

&#x1f3af;要点 &#x1f3af;使用受控物理变换序列实现可训练分层物理计算 | &#x1f3af;多模机械振荡、非线性电子振荡器和光学二次谐波生成神经算法验证 | &#x1f3af;训练输入数据&#xff0c;物理系统变换产生输出和可微分数字模型估计损失的梯度 | &#x1f3af;…

ubuntu命令大全

查看系统版本 lsb_release -a

C++模板方法TemplateMethod

23种设计模式分为九类 1.组件协作 2.单一职责 3.对象创建 4.对象性能 5.接口隔离 6.状态变化 7.数据结构 8.行为变化 9.领域问题 什么时候、什么地点用设计模式 才是最重要的。 关键的重构技法&#xff1a; 静态-----动态 早绑定—晚绑定 继承-----组合 编译时依赖------运行…

计算机毕业设计--基于深度学习(PSPNet、空洞卷积Atrous Convolutions)的多类型图像通用分割模型

基于深度学习(PSPNet、空洞卷积Atrous Convolutions)的多类型图像通用分割模型 更多基于深度学习的毕业设计请关注专栏 --- 计算机毕业设计 ✨ 动物图分割&#xff08;使用训练集DIS5K-TR&#xff0c;DIS-TEs&#xff0c;DUTS-TR_TE &#xff09; ✨自然与人类图像分割&#xf…

支持最新 mysql9的workbench8.0.39 中文汉化教程来了

之前在 B 站上发布了 mysql8 workbench 汉化教程&#xff0c;一年多来帮助很多初学者解决了不熟悉英文的烦恼。 汉化视频可以访问&#xff1a; 2024最新版mysql8.0.39中文版mysql workbench汉化 中文升级 旧版汉化报错解决_哔哩哔哩_bilibili MySql Workbench汉化_哔哩哔哩_bi…