乐鑫特权隔离机制 #4 | 用户应用程序的安全启动

2023-05-16

乐鑫特权隔离机制 系列文章 #4

目录

安全启动 (Secure boot)

受保护应用程序的安全启动 (Secure boot for protected app )

用户应用程序的安全启动 (Secure boot for user app)

基于证书的验证方案 (Certificate-based verification scheme)

  • 必要条件
  • 验证过程​​​​​​​

在上一篇文章中,我们演示了如何在乐鑫特权隔离框架中,独立地更新用户应用程序。简单来说,通过将受保护的应用和用户应用程序相互隔离,即可轻松实现对其中任意程序的独立更新。在这个框架下,为单个受保护的应用程序提供多个用户应用程序也成为可能,类似于应用程序的“应用程序商店”。然而,随着这些应用程序功能的日益丰富,提高其安全性的需求也随之增加。

本文中,我们将介绍“用户应用程序的安全启动机制”,该机制确保只有受信任和授权的用户应用程序,才能在设备上执行。

安全启动 (Secure boot)

安全启动流程可以确保仅有授权和受信任代码才能在设备上执行,常见的实现方法是通过构建“信任链”,即通过从一个受信任且无法更改的实体开始(例如硬件中的一次性可编程存储器),一步步构建完全值得信任的完整信任链。

使用乐鑫特权隔离框架的项目具有两类相互独立的应用程序二进制文件:受保护应用程序 (protected_app) 和用户应用程序 (user_app) ,可以独立完成更新。

乐鑫特权隔离框架可以为这两类应用程序提供安全启动流程,通过基于信任根的信任链,验证受保护应用和用户应用程序文件。

受保护应用程序的安全启动 (Secure boot for protected app )

受保护应用程序的安全启动遵循 ESP-IDF 中传统应用安全启动方案。

安全启动:信任链

传统安全启动过程概述如下:

1. 芯片上电/复位时,ROM 引导加载程序开始执行。注意,这里的 ROM引导加载程序已经烧录在芯片中,无法改变,因此是可信的,将作为信任链的信任根。

2. ROM 引导加载程序在 flash 中查找有效的二级引导加载程序,如果找到,则使用 eFuse 中烧录的公钥哈希值,验证文件附加 RSA-3072 公钥。

3. 公钥验证完成后,继续使用经过验证的公钥验证整个二级引导加载程序文件的数字签名。如果数字签名验证成功,ROM 引导加载程序将二级引导加载程序加载到内存中,并开始执行。

4. 一旦二级引导加载程序开始执行,它就被视为受信任的实体。然后,二级引导加载程序将初始化系统,并尝试以类似的方式使用 eFuse 验证和加载受保护的应用程序。

更多详情,您可以查看 ESP-IDF 编程指南中的安全启动章节。

用户应用程序的安全启动 (Secure boot for user app)

如前所述,受保护应用程序和用户应用程序都可以独立开发,因此这两类应用程序的所有权可以属于不同单位,也就是说它们可能都需要单独的签名密钥。为了验证受保护应用程序,我们会在 eFuse 中烧录受保护应用程序公钥的哈希值,但出于节省 eFuse 内存的目的,并没有同样地烧录用户应用程序公钥的哈希值。

对此,我们特别为用户应用程序的安全启动设计了基于证书的验证机制。

基于证书的验证方案 (Certificate-based verification scheme)

在此方案中,受保护应用程序被视为受信任的应用程序,因此可以在受保护应用程序的固件中烧录一些信息,用于后续验证用户应用程序的真实性。

  • 必要条件

采用该方案的受保护应用程序和用户应用程序必须满足一些条件。

受保护应用程序:

1. 受保护应用程序的所有者必须维护两组单独的 RSA-3072 私钥。一组用于对受保护的应用程序的固件进行签名,另一个用于创建 CA 证书。

2. 必须提供某种途径,允许用户应用程序开发人员获取签名证书。

3. 必须在其固件中嵌入 CA 证书。

用户应用程序:

1. 用户应用程序的所有者需要生成 RSA-3072 私钥,用于对用户应用固件进行签名,还用于生成证书签名请求(CSR)。

2. 必须将此 CSR 发送到受保护的应用程序 CA,并获取已签名的用户应用证书 (UAC)。

3. 必须使用 RSA-3072 私钥对固件签名。签名和用户应用证书必须随附在应用程序文件的末尾。

  • 验证过程

该方案的验证流程如下:

乐鑫特权隔离中的安全启动流程

1. 芯片复位时,ROM 引导加载程序将验证二级引导加载程序,然后验证受保护应用程序的RSA-3072 公钥,具体方式为:对比 eFuse 中烧录的 RSA 公钥哈希值与受保护应用程序文件末尾处附加的公钥哈希值。

2. 公钥验证完成后,继续使用经过验证的公钥验证受保护应用程序的 RSA-PSS 签名。如果验证成功,则可以将受保护的应用程序视为受信任的应用程序并允许启动。

3. 受保护应用程序启动后,会在 flash 中搜索有效的用户应用程序,如果找到,则将使用嵌入在受保护应用程序中的 CA 证书,来验证附加至用户应用程序文件末尾的用户应用证书 (UAC)。UAC 由受保护应用程序的 CA 私钥签名,因此可以通过 CA 证书中的 CA 公钥进行验证。

4. UAC 中包括相应用户应用程序签名密钥的公钥,一旦 UAC 通过受保护应用程序的验证,UAC 内部的公钥也可以被视为受信任。此后,受保护的应用程序使用此公钥,验证用户应用程序的 RSA-PSS 签名。

更多详情,您可以查看乐鑫特权隔离文档中的安全启动章节。


如有任何问题或反馈,欢迎随时在 GitHub 仓库中提交 issue。您可点此 乐鑫特权隔离机制 系列文章 查看往期,敬请期待后续的更多内容。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

乐鑫特权隔离机制 #4 | 用户应用程序的安全启动 的相关文章

  • android远程协助

    一部手机有时候需要远程协助另一台手机如QQ的远程协助一样 xff0c 准备两个手机 下面用AB代替 1 A手机 xff08 需要被协助的手机 xff09 开启开发者选项 xff0c usb连接电脑 xff0c 命令开启ADB xff08 手
  • 阿里云服务器安装图形界面

    为了自动化流程安装图形界面 xff0c 我的服务器是Centos7 1 yum安装gnome图形界面 yum groupinstall GNOME Desktop y 2 安装远程桌面服务端 yum y install tigervnc s
  • 国网 内网U盘 服务未启动 驱动版本不符问题

    国网内网U盘问题处理 1 提示服务未启动 是因为Bios开启了Secure BOOT xff0c 将这个选项设置为disable就可以 xff0c 进入Bios这个选项有的主板在Boot选项下 xff0c 有的在Security选项下 xf
  • 【C++】面试题目,整理自牛客网

    来源 1 写出完整版的strcpy函数 char strcpy char strDest const char strSrc assert strDest 61 NULL amp amp strSrc 61 NULL char addres
  • 卡尔曼滤波

    系列文章目录 前言 一 线性高斯系统 二 卡尔曼滤波算法 1 卡尔曼滤波算法的应用 2 卡尔曼滤波的数学推导 1 预测部分的推导 2 观测部分的推导 前言 最近在阅读概率机器人这本书 xff0c 读到了卡尔曼滤波的相关内容 xff0c 想要
  • xcode升级到6.2,解决了simulator国际化无法获取中文的问题

    问题描述 xff1a http blog csdn net aileenyuxiao article details 42704917 xcode最近升级到6 2 xff0c 这个bug也一起解决了 xff0c 只需要修改simulator
  • 利用OOQP求解二次凸优化问题

    最近使用到了OOQP求解凸优化问题 xff0c 所以记录一下求解简单的二次凸优化问题 目录 一 OOQP安装 二 OOQP相关介绍 三 例题 1 数学例题 2 代码求解 3 求解结果 总结 一 OOQP安装 参考了浙大高飞老师团队提供的 O
  • 一、pixhawk 开发之 QGroundControl 安装

    提示 xff1a 地面站 xff08 QGroundControl xff09 安装 一 注意事项 1 There are known video steaming issues on Ubuntu 18 04 systems with d
  • git bash可以正常commit,但是 VSCode 里不能正常commit使用的解决方法

    问题描述 同一路径下的源码 xff0c 使用git bash可以正常commit xff0c 但是使用vscode提交commit就会一直卡住 xff0c 转圈圈 参考方案链接 xff1a VS CODE GIT 500 问题处理 pudn
  • Windows和Linux双系统安装教程

    最近刚刚完成了Windows和Linux双系统 xff08 这里以Ubuntu安装为例 xff09 的安装 xff0c 应某奔同学要求 xff0c 这里简单记录下安装过程 系统启动盘准备Windows系统安装分出给Linux系统的磁盘空间安
  • Level5#Unit1#Part1#Dialogue#A-Customer-Complaint

    Is this the ACE service center Yes it is sir May I help you Yes I 39 m calling to complain about your service Certainly
  • Level5#Unit1#Part2#Listening#At-Jessica’s-Reunion-Party1

    Jessica 39 s 20 year classreunion was held at a fancy hotel When she arrived she wasn 39 t sure she was in the right pla
  • Level5#Unit2#Part1#Dialogue#The-Teenage-Years

    What 39 s so funny What are you writing about I 39 m writing about something I saw earlier this morning Really Do you ke
  • nginx环境wordpress 固定链接实现…

    开始几次设置wordpress的固定链接都没成功 xff0c 今天做松子价格网时不甘心 xff0c 试了几次OK了 其实nginx环境下设置wordpress固定链接 xff08 也叫伪静态 xff09 非常简单 xff08 我是用的是wo
  • 如何使用vb.net多线程

    可能一些小程序用不上 xff0c 单线程就可以完成 xff0c 但是很多程序往往需要多个线程同时操作 xff0c 或者用辅助线程来完成主线程的工作 xff0c 多线程对于一个程序员来说是一个必须逾越的槛 最近在写一个程序 xff0c 设备要
  • 准备自己做块飞控,先看看方案

    主要参考是CC3D和crazyflie 2 0 xff0c 双CPU xff1a STM32F405RG xff0c 和STM32F103相比 xff0c 支持浮点运算 xff0c 168MHz xff0c 片上存储空间大 xff0c 考虑
  • 转:如何获取某人的所在物理位置

    如何获取某人的所在物理位置 xff1f xff08 andorid手机GPS 基站定位 JSON获取基站定位信息 xff09 原文地址 xff1a http cyad blog 163 com blog static 54368792011
  • Excel“工程不可查看”及VBA工程密码…

    一 Excel 工程不可查看 两种实现方法及破解 关于Excel宏编程中 xff0c 要用到一些技巧 xff0c 如破解Excel宏加密 今天我对一个Excel宏编程中进行日期限制进行了破解 方法一 xff08 共用级锁定 xff09 1
  • vba给数组赋值

    39 向VBA数组中写入数据 39 1 按编号 标 写入和读取 Sub t1 39 写入一维数组 Dim x As Integer Dim arr 1 To 10 arr 2 61 190 arr 10 61 5 End Sub
  • 中兴光猫配置文件获取方法

    中兴光猫配置文件获取方法 http 192 168 1 1 manager dev config t gch 有些配置文件加密了 xff0c 还不好破解 网上有超级牛帖子 xff0c 不过想在好像web shell也关闭了 http www

随机推荐

  • wget下载百度网盘文件

    分享一下wget下载百度网盘文件 有些时候需要从网盘下比较大文件 xff0c 但是linux无法登陆百度网盘 xff08 当然如果使用了API xff09 可以获取下载链接 这里介绍简单的方法 xff0c 直接在百度网盘分享建立公共链接 然
  • sudo aptitude install…

    sudo aptitude install 这个方法可以解决破损包问题 Aptitude will give up less easily and will attempt to find solutions which may invol
  • centos 万兆网卡使用要点

    随着宽带技术的快速发展 xff0c 服务器使用万兆网卡的概率越来越高 最近装了几台服务器都用的万兆网卡 xff0c 为了图便宜 xff0c 网卡和模块都是淘宝上买的 xff0c 这部还真遇到不少问题 我的服务器都是centos6 4 64位
  • 实在受不了360流氓浏览器用了10年终于不用了

    360浏览器 xff0c 恶心广告 xff0c 垃圾软文越来越泛滥了 xff0c 实在让人受不了 用了近10年终于下决心抛弃了 大家看下恶心不 xff0c 天天都是这个
  • ESP-AT 系列: AT+MQTT 使用

    AT 工程 xff1a https github com espressif esp at AT 文档 xff1a https docs espressif com projects esp at zh CN latest MQTT AT
  • ESP8266 常见固件烧写失败原因和解决方法

    简介 在使用 ESP8266 进行开发时 读者或多或少都能遇到固件烧写失败情况 无论是官方提供的 windows 上 Flash 下载工具 还是 SDK 中提供的 esptool py 下面笔者提供几种常见的烧写失败的原因和对应解决方法 原
  • 基于ros的kcf目标跟随

    本文参考的是基于 大神的博客 https blog csdn net yiranhaiziqi article details 53303747 locationNum 61 10 amp fps 61 1 关于kcf追踪的ros库在git
  • ESP-AT 系列: HTTP 客户端功能

    AT 工程 xff1a https github com espressif esp at AT 文档 xff1a https docs espressif com projects esp at zh CN latest 简介 esp a
  • esptool.py 介绍和使用

    一 esptool py 简介 esptool py 是乐鑫提供的开源库工具 xff0c 用于乐鑫 ESP8285 ESP8266 ESP32 ESP32 S等系列芯片和 ROM Bootloader xff08 即 xff1a 一级 bo
  • 如何使用 Gitee 快速搭建 ESP-IDF 开发环境(Windows 版本)

    前言 为更好地服务国内用户 xff0c 构建中文需求沟通平台 xff0c 帮助用户快速下载乐鑫开源代码 xff0c 乐鑫将 GitHub 中的主要仓库 xff08 包含 ESP IDF ESP ADF ESP MDF 以及阿里 腾讯 京东等
  • ESP32-S3-USB-OTG 开发板首发限量预售

    ESP32 S3 USB OTG 开发板新品首发 xff0c 官方淘宝店 现已上新 预售限量 200 个 xff0c 欢迎选购 xff01 开发板搭载 ESP32 S3 MINI 1 N8 模组 xff0c 集成 ESP32 S3 的 EC
  • 乐鑫多系列芯片支持 NuttX 和 Zephyr 操作系统

    乐鑫芯片凭借丰富的功能和广阔的应用 xff0c 在物联网市场广受欢迎 乐鑫还为用户提供了一个物联网开发框架 ESP IDF xff0c 集成大量软件组件 xff0c 包括 RTOS 外设驱动程序 网络栈和多种协议实现技术等 开发者能够在乐鑫
  • 使用 ESP-DL 深度学习库基于 ESP32-S3 实现手势识别

    人工智能改变了计算机与现实世界交互的方式 过去 xff0c 人们通过微小的低功率设备和传感器获取数据 xff0c 并传输至云端进行决策 这样的方式在设备连接性 成本和数据隐私方面带来了一定挑战 相对地 xff0c 边缘人工智能是在物理设备上
  • 乐鑫特权隔离机制

    乐鑫特权隔离机制 本视频演示了如何在乐鑫特权隔离框架中轻松更新用户应用程序 xff1b 使用 ESP RainMaker 移动端 APP xff0c 演示了用户应用程序设备配置的具体过程 xff0c 以及如何进行 OTA 升级 基于乐鑫 S
  • Matter 研讨会回顾(第三期)|乐鑫 Matter 免开发方案与证书服务介绍

    1 月 17 日 xff0c 乐鑫举办了以 乐鑫 Matter 免开发方案与证书服务介绍 为主题的第三期 Matter 线上研讨会 xff0c 介绍乐鑫开箱即用的 ESP ZeroCode 模组及其免开发 Matter 方案 xff0c 以
  • 乐鑫特权隔离机制 #3 | OTA 固件升级

    乐鑫特权隔离机制 系列文章 3 固件空中升级 OTA Over The Air 是任何联网设备的重要功能之一 xff0c 支持开发人员通过远程更新固件 xff0c 以发布新功能或修复错误 乐鑫特权隔离框架中包含两类应用程序 xff1a 受保
  • 基于乐鑫 ESP32 的智能手表

    拥有一块自己制作的智能手表是不是听起来就很酷 xff1f 工程师 Pcadic 基于乐鑫 ESP32 PICO D4 实现了这个想法 xff01 他开发了一款能够与我们的手机或任何其他设备互联的智能手表 ESP32 Pico Watch E
  • Kvaser在linux系统使用小结

    首先需要在Kvaser官网安装linux系统的底层kvaser驱动 xff1b 安装成功之后需要重启电脑 驱动对应网址 xff1a https www kvaser cn downloads Kvaser Linux Drivers and
  • Matter 系列 #9|乐鑫 Matter 预配置服务加速设备生产

    乐鑫 Matter 系列文章 9 目录 Matter 预配置服务 1 设备认证 Device Attestation 2 独特性 Uniqueness 3 安全性 Security 联系我们 如今 xff0c 物联网行业蓬勃发展 xff0c
  • 乐鑫特权隔离机制 #4 | 用户应用程序的安全启动

    乐鑫特权隔离机制 系列文章 4 目录 安全启动 Secure boot 受保护应用程序的安全启动 Secure boot for protected app 用户应用程序的安全启动 Secure boot for user app 基于证书