eMMC 存储分区结构解析

一、eMMC 存储分区结构图

分区

用途

Boot Area Partitions

存储引导加载程序,支持安全启动和恢复模式

RPMB Partition

存储安全关键数据,防止重放攻击

General Purpose Partitions

OEM 自定义数据分区,用于特定功能或镜像存储

User Data Area

应用程序和用户数据存储

二、分区介绍

Boot Area 分区

        Boot Area 分区主要存储引导程序(Bootloader)的第一阶段(Primary Bootloader),也称为 BL1 或 PBL(Primary Boot Loader)。这个阶段的引导程序通常非常小,负责加载更复杂的二级引导程序(如 U-Boot、LK 等)。

在设备加电后,SoC 的引导 ROM 会从 Boot Area 分区读取引导代码并加载到内存中执行。

系统启动Boot Area 分区的读取流程

  1. SoC 的内置 Boot ROM 会尝试从 eMMC 的 Boot Area 分区加载启动代码。
  2. 如果找到有效的引导代码,就将其加载到 RAM 并执行。
  3. 第一阶段引导程序会继续加载更复杂的二级引导程序(如 U-Boot 或其他启动代码),通常从用户数据区或 General Purpose 分区加载。
  4. 引导程序最终会加载操作系统的内核并交出控制权。

RPMB 分区

RPMB(Replay Protected Memory Block)分区是一种特殊的存储区域,通常用于嵌入式存储设备(如eMMC或UFS),其主要功能是提供一种安全的、不可篡改的存储空间,用于存储敏感数据或运行安全相关的操作;

特性
  • 防篡改性:RPMB 使用基于硬件的消息认证码(MAC)机制,确保数据在传输和存储过程中未被篡改。
  • 回放保护:通过计数器机制,防止旧数据包被重复写入(Replay Attack)。
  • 安全访问:只有经过授权的设备和软件可以访问 RPMB 区域。
访问机制
  • RPMB 不能像普通存储分区一样直接读取或写入,而是通过专门的命令和协议(如 MMC/JEDEC 标准)与设备通信
  • 每次访问需要通过认证,包括读、写、计数器检查等操作。
认证与密钥
  • RPMB 区域基于对称加密技术(如 HMAC),访问权限通过预设的共享密钥控制。
  • 密钥通常在设备生产时写入,设备运行时不会暴露给软件层。
使用限制
  • 容量有限:通常只有几百 KB,适合存储少量关键数据。
  • 不可格式化:一旦配置为 RPMB 分区,无法通过普通手段修改或格式化。
读写流程

RPMB 数据读取的流程如下:

  • Host 向 eMMC 发起读 RPMB 的请求,同时生成一个 16 bytes 的随机数,发送给 eMMC。
  • eMMC 将请求的数据从 RPMB 中读出,并使用 Secure Key 通过 HMAC SHA-256 算法,计算读取到的数据和接收到的随机数拼接到一起后的签名。然后,eMMC 将读取到的数据、接收到的随机数、计算得到的签名一并发送给 Host。
  • Host 接收到 RPMB 的数据、随机数以及签名后,首先比较随机数是否与自己发送的一致,如果一致,再用同样的 Secure Key 通过 HMAC SHA-256 算法对数据和随机数组合到一起进行签名,如果签名与 eMMC 发送的签名是一致的,那么就可以确定该数据是从 RPMB 中读取到的正确数据,而不是攻击者伪造的数据。

RPMB 数据写入的流程如下:

  • Host 按照上面的读数据流程,读取 RPMB 的 Write Counter。
  • Host 将需要写入的数据和 Write Counter 拼接到一起并计算签名,然后将数据、Write Counter 以及签名一并发给 eMMC。
  • eMMC 接收到数据后,先对比 Write Counter 是否与当前的值相同,如果相同那么再对数据和 Write Counter 的组合进行签名,然后和 Host 发送过来的签名进行比较,如果签名相同则鉴权通过,将数据写入到 RPMB 中。

General Purpose Partitions 分区

  • 用于存储 OEM 自定义数据、分区镜像或特定的系统功能数据。
  • 可以根据设备需求进行配置和分配。

User Data Area 分区

  • 最大的存储区域,用于存储用户数据和文件系统(如 Android 的 /data 分区)。
  • 读写操作与普通存储类似,是主要的应用程序存储区。

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

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

相关文章

攻防世界web第一题

最近开始学习网络安全的相关知识,开启刷题,当前第一题 题目为攻防世界web新手题 这是题目 翻译:在这个训练挑战中,您将了解 Robots_exclusion_standard。网络爬虫使用 robots.txt 文件来检查是否允许它们对您的网站或仅网站的一部…

大恒相机开发(2)—Python软触发调用采集图像

大恒相机开发(2)—Python软触发调用采集图像 完整代码详细解读和功能说明扩展学习 这段代码是一个Python程序,用于从大恒相机采集图像,通过软件触发来采集图像。 完整代码 咱们直接上python的完整代码: # version:…

记一次某企业管理系统通用SQL注入挖掘

更多视频教程可看主页和专栏 目录: 一、资产发现 二、通用漏洞挖掘 三、通用漏洞经验总结 一、资产发现 通过漏洞挖掘过程中发现该系统存在sql注入 1.二话不说先来个单引号显示 ‘011111111111111’’) ) 再来一个单号试一试可不可以把他闭合掉 换成报错注入的poc 发现右边…

Mybatis 如何复用 SQL

比如你的Mapper是这样写的: 但这个接口是没有分页的,你还想再写一个有分页的查询接口,两个接口SQL一模一样,只是多了分页特性。你可以直接重载一个方法,增加分页参数,即可复用该SQL。如下:

Redis 介绍和安装

个人主页:C忠实粉丝 欢迎 点赞👍 收藏✨ 留言✉ 加关注💓本文由 C忠实粉丝 原创 Redis 入门介绍 收录于专栏[redis] 本专栏旨在分享学习Linux的一点学习笔记,欢迎大家在评论区交流讨论💌 本章将带领读者进入 Redis 的世…

快速解决VRay渲染慢问题

在3D设计与渲染领域,VRay渲染器无疑是一款强大且广泛使用的工具,但很多小伙伴在使用它进行 CPU 渲染时,都遇到过速度慢得让人抓狂的情况。今天,我就来给大家分享两套切实可行的解决方案。 当我们将 VRay渲染器与 DMAX或Maya搭配使…

《庐山派从入门到...》PWM板载蜂鸣器

《庐山派从入门到...》PWM板载蜂鸣器 配置PWM模块控制板载无源蜂鸣器播放【一闪一闪亮晶晶】播放do re mi 《庐山派从入门到...》PWM控制无源蜂鸣器 PWM(Pulse Width Modulation,脉宽调制)是一种在嵌入式系统中常用的技术,它可以用…

2024-12-24 NO1. XR Interaction ToolKit 环境配置

文章目录 1 软件配置2 安装 XRToolKit3 配置 OpenXR4 安装示例场景5 运行测试 1 软件配置 Unity 版本:Unity6000.0.26 ​ 2 安装 XRToolKit 创建新项目(URP 3D),点击进入 Asset Store。 进入“Unity Registry”页签&#xff0…

安卓15预置第三方apk时签名报错问题解决

有同事反馈集成apk时安装失败 PackageManager: Failed to scan /product/app/test: No APK Signature Scheme v2 signature in package /product/app/test/test.apk 查看编译后的apk签名信息 DOES NOT VERIFY ERROR: JAR signer CERT.RSA: JAR signature META-INF/CERT.SF indi…

【C语言】指针数组、数组指针、函数指针、指针函数、函数指针数组、回调函数

【C语言】函数指针与指针函数 文章目录 [TOC](文章目录) 前言一、指针数组二、数组指针三、函数指针四、指针函数五、函数指针数组六、回调函数七、参考资料总结 前言 使用工具: 1.DEVC 提示:以下是本篇文章正文内容,下面案例可供参考 一、…

【Leetcode】1705. 吃苹果的最大数目

文章目录 题目思路代码复杂度分析时间复杂度空间复杂度 结果总结 题目 题目链接🔗 有一棵特殊的苹果树,一连 n n n 天,每天都可以长出若干个苹果。在第 i i i 天,树上会长出 a p p l e s [ i ] apples[i] apples[i] 个苹果&a…

使用 HTML 和 CSS 实现绚丽的节日烟花效果

文章目录 1. 效果预览2. 核心技术栈3. 核心代码解读3.1 HTML结构3.2 霓虹文字的CSS样式3.2.1 核心样式代码3.2.2 动画效果 3.3 JavaScript 的烟花效果实现3.3.1 烟花上升3.3.2 粒子爆炸 4. 用户交互5. 运行步骤总结 1. 效果预览 打开后输入文本的展示内容 用户点击页面后播放…

基于openEuler22.09部署OpenStack Yoga云平台(一)

OpenStack Yoga部署 安装OpenStack 一、基础准备 基于OpenStack经典的三节点环境进行部署,三个节点分别是控制节点(controller)、计算节点(compute)、存储节点(storage),其中存储…

国自然面上项目分享|基于人工智能和病理组学的早癌筛查算法研究|基金申请·24-12-24

小罗碎碎念 今天分享的项目为【常规面上项目】,执行年限为2018年1月至2021年12月,直接费用为55万元。 今天分享的这个项目很有意思,因为这个项目的成果是团队2020年申报基金委优青的材料,并且还有临床验证和商业转化,值…

SDMTSP:黑翅鸢算法(Black-winged kite algorithm,BKA)求解单仓库多旅行商问题,可以更改数据集和起点(MATLAB代码)

一、黑翅鸢算法BKA 黑翅鸢算法(Black-winged kite algorithm,BKA)由Wang Jun等人于2024年提出,该算法受黑翅鸢的迁徙和掠食行为启发而得。BKA集成了柯西突变策略和领导者策略,增强了算法的全局搜索能力,提…

41 stack类与queue类

目录 一、简介 (一)stack类 (二)queue类 二、使用与模拟实现 (一)stack类 1、使用 2、OJ题 (1)最小栈 (2)栈的弹出压入序列 (3&#xf…

【笔记】深度学习模型评估指标

推荐链接: (0)多分类器的评价指标 (1)泛化误差的评价方法:【机器学习】模型评估与选择(留出法、交叉验证法、查全率、查准率、偏差、方差) (2)机器学习&…

Linux运维常见命令

vi/vim快捷键使用 1)拷贝当前行 yy ,拷贝当前行向下的5行 5yy,并粘贴(输入p)。 2)删除当前行 dd ,删除当前行向下的5行5dd 3)在文件中查找某个单词 [命令行下 /关键字,回车查找 ,输入n就是查找下一个 ] 4)设置文件的行号&…

评估大语言模型在药物基因组学问答任务中的表现:PGxQA

​这篇文献主要介绍了一个名为PGxQA的资源,用于评估大语言模型(LLM)在药物基因组学问答任务中的表现。 研究背景 药物基因组学(Pharmacogenomics, PGx)是精准医学中最有前景的领域之一,通过基因指导的治疗…

AI芯片常见概念

文章目录 AI芯片常见概念前言常见概念AI芯片分类按照芯片的技术架构分GPU半定制化的 FPGA全定制化 ASIC神经拟态芯片 按应用场景分训练卡推理卡 按部署位置分国产AI卡资料汇总 AI芯片算力和能效比AI芯片算力AI芯片能效比 封装相关Chiplet技术3DIC三星多芯片集成联盟&#xff08…