【esp32】secure boot (安全启动)配置

news2024/11/12 10:03:09

简介

Secure Boot,即安全启动,是一种确保在一个平台上运行的程序的完整性的过程或机制。它的主要作用是在固件和应用程序之间建立一种信任关系,从而保护操作系统免受恶意攻击。

工作原理

签名验证:Secure Boot使用公钥/私钥对来验证固件和应用程序的签名是否合法。在设备启动时,Secure Boot会检查固件的签名,如果签名验证失败,则固件将无法加载。
信任链建立:Secure Boot通过建立一个从启动加载程序(如BIOS或UEFI)到操作系统内核的信任链来确保整个启动过程的安全性。每个阶段的固件都必须通过签名验证才能进入下一个阶段。

esp32 配置 secure boot

  1. idf.py menuconfig 打开 secure boot 相关配置
    在这里插入图片描述

💥 测试阶段建议UART ROM download mode (UART ROM download mode (Enabled (not recommended))) 设置为 UART ROM download mode 防止造成不可逆的后果。

  1. 准备签名文件
    1. espsecure.py generate_signing_key --version 2 --scheme rsa3072 secure_boot_signing_key.pem 生成密钥文件
  2. idf.py build 编译 查看编译结果会生成加密和未加密的固件
  3. 将编译产生的 bootloader 、partition_table、 app image 烧录进设备中即可。

执行过程

  1. 编译 bootloader image 时发现 menuconfig 中使能了 secure boot,于是根据 menuconfig 中指定的公钥/秘钥文件路径将公钥编译到 bootloader image 中,bootloader 被编译成支持 secure boot
  2. 编译 partition table 和 app images 时使用秘钥计算出签名,将签名编译到相应的二进制文件中
  3. 芯片第一次 boot 时,软件 bootloader 根据以下步骤使能 secure boot:
    硬件产生一个 secure boot key,将这个 key 保存在 efuse 中,利用这个 key、一个随机数 IV 和 bootloader image 计算出 secure digest,secure digest 与随机数 IV 保存在 flash 的 0x0 地址,用于在后续 boot 时验证 bootloader image 是否被篡改,若 menuconfig 中选择了禁止 JTAG 中断和 ROM BASIC 中断,bootloader 会将 efuse 中的一些标志位设置为禁止这些中断(强烈建议禁止这些中断)bootloader 通过烧写 efuse 中的 ABS_DONE_0 永久使能 secure boot。
  4. 芯片在后面的 boot 中,ROM bootloader 发现 efuse 中的 ABS_DONE_0 被烧写,于是从 flash 的地址 0x0 读取第一次 boot 时保存的 secure digest 和随机数 IV,硬件使用 efuse 中的 secure boot key 、随机数 IV 与当前的 bootloader image 计算当前的 secure digest,若与 flash 中的 secure digest 不同,则 boot 不会继续,否则就执行软件 bootloader。
  5. 软件 bootloader 使用 bootloader image 中保存的公钥对 flash 中的 partition table 和 app images 签字进行验证,验证成功之后才会 boot 到 app 代码中。

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

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

相关文章

【0304】psql 执行“VACUUM FULL”命令的背后实现过程

1. 概述 在前面讲解Postgres内核中解析器相关(【0297】Postgres内核之 INSERT INTO 原始解析树 转 Query 树 (1))内容时,曾提到过,Postgres内核大致将用户下发的SQL语句分为三大类,这里的VACUUM FULL属于CMD_UTILITY; 因此直接调用utility.c(实用程序)中的对应函数。…

javaEE(2)

一. 过滤器 作用:拦截web服务器向后端发送的数据,使请求地址在到达servlet之前进入到指定的过滤器中,可以对数据进行一些统一的处理,比如设置编码,权限控制等 使用:创建一个类实现Filter接口,并实现里面的doFilter()方法,过滤器要做的作用主要写在doFilter方法中 public clas…

实训日记day24

python基础 环境部署 [root2 ~]# yum list installed|grep python python-libs.x86_64 2.7.5-68.el7 [root2 ~]# yum -y install epel-release #必须要有epel库 [root2 ~]# yum update #更新yum [root2 ~]# yum -y install net-tools [root2 ~]…

Spring Boot 多种方式更改上下文路径

1. spring boot上下文路径概述 默认情况下,Spring Boot 在根上下文路径(“/”)上提供内容。 尽管通常最好采用约定而不是配置,但有时我们确实希望拥有自定义路径。 在此快速教程中,我们将介绍配置它的不同方法。 2…

Gitlab-CI

官网 ## gitlab-ci 完整语法 https://docs.gitlab.cn/jh/ci/yaml/index.html 原理 流程图 说明 GitLab Runner 是 GitLab CI/CD 的一个组件,用于运行构建、测试和部署作业。它是一个开源项目,允许您在专用、共享或云计算资源上执行作业。 GitLab Run…

保姆级教程,一文了解LVS

目录 一.什么是LVS tips: 二.优点(为什么要用LVS?) 三.作用 四.程序组成 五.LVS 负载均衡集群的类型 六.分布式内容 六.一.分布式存储 六.二.分布式计算 六.三.分布式常见应用 tips: 七.LVS 涉及相关的术语 八.LVS 负…

轻舟智问大语言模型算法分析报告

一、算法全周期行为分析 1. 算法安全 信息内容安全:通过输入输出内容风控处理,确保生成的内容不涉及违法或不当信息。 信息源安全:模型支持用户挂载知识内容进行增强,确保使用高质量的知识来源。 2. 算法监测 信息安全监测&#x…

day23(mysql主从脚本与mysql详细语句介绍)

一、mysql主从脚本 在同步时,对删除和修改都比较慎重(监控同步时) mysql主从搭建 前提软件libaio,rsync 1.主 2.从 3.同步 4.测试 注意:先执行从服务器的脚本,再执行主服务器脚本 master-mysql配置…

Vue3+setup使用vuemap/vue-amap实现地图相关操作

首先要下载依赖并且引入 npm安装 // 安装核心库 npm install vuemap/vue-amap --save// 安装loca库 npm install vuemap/vue-amap-loca --save// 安装扩展库 npm install vuemap/vue-amap-extra --save cdn <script src"https://cdn.jsdelivr.net/npm/vuemap/vue-a…

ArcGIS基础:自定义创建点线面等样式符号以方便使用

有时&#xff0c;使用ArcGIS自带的符号样式库无法满足我们使用要求&#xff0c;还需要进行调整&#xff0c;可能会浪费一些时间&#xff0c;那么自己新建一些样式符号备用&#xff0c; 需要的时候直接使用&#xff0c;会节省很多时间&#xff0c;大家学会之后&#xff0c;对学…

ctfshow-web入门-sql注入(web196-web200)堆叠注入

目录 1、web196 2、web197 3、web198 4、web199 5、web200 1、web196 对输入长度做了限制 输出 flag 的条件&#xff1a; if($row[0]$password){$ret[msg]"登陆成功 flag is $flag";} 其中 $row[0] 表示从数据库查询结果中提取的某一行的第一个字段值&#x…

Linux网络编程5

IO多路复用 1.IO模型 在unix/linu下主要有四种I/O模式&#xff1a; 阻塞I/O: 最常用 大部分程序使用的都是阻塞模式的I/O 阻塞I/O 缺省情况下&#xff0c;套接字建立后所处于的模式就是阻塞I/O模式 读操作&#xff1a;read,recv,recvfrom 写操作&#xff1a;write,send …

【最新】推荐7款智能AI写作论文生成网站工具

在当前的AI技术浪潮中&#xff0c;智能AI写作工具已经成为了学术研究和论文撰写的重要助手。本文将推荐7款高效且功能全面的智能AI写作论文生成网站工具&#xff0c;并重点介绍其中备受好评的千笔-AIPassPaPer。 1. 千笔-AIPassPaPer 千笔-AIPassPaPer是一款集多种功能于一体…

最近在写的支付模块

最近再写支付模块就到处借鉴 旨在回顾一下。 1.确认订单功能 使用场景是&#xff1a;用户在选择好购物车后&#xff0c;或者是直接选择商品后&#xff08;选择商品封装为购物车&#xff09; 这样做是根据尚硅谷来学习的 目前需要这些属性&#xff0c;原因是在确认订单页面后…

如何采集淘宝商品评论?

采集商品评论对于企业和消费者都至关重要。它不仅帮助企业了解产品优势与不足&#xff0c;指导产品改进和市场策略调整&#xff0c;还能通过积极回应顾客反馈增强品牌忠诚度。对消费者而言&#xff0c;真实客观的评价是决策的重要参考&#xff0c;有助于避开潜在问题&#xff0…

Apache Tomcat 7下载、安装、环境变量配置 详细教程

Apache Tomcat 7下载、安装、环境变量配置 详细教程 Apache Tomcat 7下载Apache Tomcat 7 安装Apache Tomcat 7 环境变量配置启动 Apache Tomcat 7测试Tomcat7是否启动成功 Apache Tomcat 7下载 1、下载地址&#xff0c;找到Archives 链接: 官网下载地址 2、找到Tomcat 7&…

Linux查看系统线程数

Linux查看系统线程数 查看线程数查看进程内的线程统计线程数 查看线程数 想要查看Linux操作系统允许的最大线程数&#xff0c;可以通过命令 ulimit -a返回配置项的详细说明&#xff1a; # core文件的最大值为100blocks core file size (blocks, -c) 0# 进程的数…

[区间概率预测]CNN-BiLSTM-Attention-ABKDE多变量时序预测 基于改进自适应核密度估计实现区间预测

[区间概率预测]CNN-BiLSTM-Attention-ABKDE多变量时序预测 基于改进自适应核密度估计实现区间预测 【原创区间概率预测】CNN-BiLSTM-Attention-ABKDE多变量时序预测 基于卷积神经网络-双向长短期记忆神经网络-注意力机制结合自适应带宽核函数密度估计的多变量时序预测【点预测…

【51单片机仿真】基于51单片机设计的温度检测与高低温报警系统仿真源码设计文档演示视频——文末资料下载

基于51单片机设计的温度检测与高低温报警系统仿真设计 演示视频 基于51单片机设计的温度检测与高低温报警系统仿真 系统功能简介 1、实时温度测量&#xff0c;可调整温度值 2、显示测量的温度值&#xff0c;按键切换可查看高温和低温报警值 3、可通过按键输入报警最高值以及最…

8/8总结

1.三分 | 函数 虽然提示很明显了&#xff0c;但是还是没掌握套路&#xff0c;看了题解才会的&#xff0c;估计也有四分&#xff0c;就是三次方的形式。 例子&#xff1a; 2 1 2 0 0 2 2 0 0 2 -4 2AC: #include<bits/stdc.h> using namespace std; const int maxn1001…