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 文件来检查是否允许它们对您的网站或仅网站的一部…

C++可执行文件参数解析

前言 针对简单工程甚至是单cpp文件&#xff0c;C可执行二进制的参数获取&#xff0c;getopt被用来解析命令行选项参数。该接口在unix的头文件<unistd.h>中定义。参数类型区分为短参数&#xff08;只有一个中划线’-&#xff09;、长参数&#xff08;有2个中划线‘–’&a…

跟踪方案和小语法

语法一&#xff1a; case when cond1 then res1 [when cond2 then res2] else res end; 这种语法用于条件判断&#xff0c;其中 cond1 和 cond2 是需要评估的条件。如果 cond1 为真&#xff0c;则执行 res1。如果 cond1 为假&#xff0c;程序会继续检查 cond2&#xff0c;如果…

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

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

基于SSM(Spring + Spring MVC + MyBatis)框架构建一个图书馆仓储管理系统

基于SSM&#xff08;Spring Spring MVC MyBatis&#xff09;框架构建一个图书馆仓储管理系统是一个涉及多个功能模块的项目&#xff0c;包括但不限于图书管理、读者管理、借阅管理、归还管理等。 1. 环境准备 确保你已经安装了以下工具和环境&#xff1a; Java Developmen…

WebDavClient 安装和配置指南

WebDavClient 安装和配置指南 WebDavClient Asynchronous cross-platform WebDAV client for .NET Core [这里是图片001] 项目地址: https://gitcode.com/gh_mirrors/we/WebDavClient 1. 项目基础介绍和主要编程语言 WebDavClient 是一个异步的跨平台 WebDAV 客户端&#xf…

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

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

Mybatis 如何复用 SQL

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

python ai框架

Python是AI和机器学习领域最常用的编程语言之一&#xff0c;拥有大量的工具和库&#xff0c;下面是一些常见的Python AI工具&#xff0c;它们涵盖了从数据处理到模型训练、评估和部署的各个方面&#xff1a; 1. 机器学习与深度学习框架 TensorFlow&#xff1a;由Google开发的开…

Autosar入门_OS_2

上一篇 | 返回主目录 | 下一篇 OS调度机制 1 基本概念2 Tasks2.1 调度方式2.1.1 完全抢占式调度2.1.2 非抢占式调度2.1.3 混合抢占式调度2.2 激活方式2.2.1 系统定时2.2.2 调度表2.3 执行逻辑及分类2.4 任务堆栈2.5 任务基本属性3 Event4 ISRs1 基本概念 首先,明确三个基本概…

Redis 介绍和安装

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

我的性能优化经验

专业方向&#xff1a;App cpu/memory/gpu/流畅度/响应时间的优化&#xff0c;Anr&#xff0c;Framework CarPowerManagementService模块的&#xff08;STR&#xff09;&#xff0c;从0~1完成性能监控体系搭建&#xff0c;完成3大版本迭代高质量性能交付 响应时间&#xff1a; …

快速解决VRay渲染慢问题

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

C++ 23版的最新特性

C 23 是 C 编程语言的最新标准版本&#xff0c;于 2023 年正式发布&#xff0c;带来了诸多新特性与改进&#xff0c;以下是一些主要内容&#xff1a; 1.语言特性 1.显式对象参数&#xff08;Deducing this&#xff09;&#xff1a;显式对象参数&#xff08;Deducing this&…

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

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

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

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

ChatGPT生成接口测试用例(一)

用ChatGPT做软件测试 接口测试在软件开发生命周期中扮演着至关重要的角色&#xff0c;有助于验证不同模块之间的交互是否正确。若协议消息被恶意修改&#xff0c;系统是否能够恰当处理&#xff0c;以确保系统的功能正常运行&#xff0c;不会出现宕机或者安全问题。 5.1 ChatGP…

安卓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…

SWIFT基本使用

安装 # 全量能力 pip install ms-swift[all] -U # 仅使用LLM pip install ms-swift[llm] -U # 仅使用AIGC pip install ms-swift[aigc] -U # 仅使用Adapters pip install ms-swift -U or git clone https://github.com/modelscope/ms-swift.git cd ms-swift pip install -e …

YOLOV8涨点技巧(源码)

YOLOV8涨点技巧之替换骨干网络(需要源码请私信或评论) 模型架构 YOLOv8模型架构包含 输入端、骨干网络(Backbone)、颈部(Neck)和预测头(Prediction) 。其中: 输入端负责处理图像并调整尺寸 Backbone提取多层次特征 Neck整合这些特征 Prediction模块进行最终预测。 这种设计…