eMMC 存储分区结构解析

一、eMMC 存储分区结构图

分区

用途

Boot Area Partitions

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

RPMB Partition

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

General Purpose Partitions

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

User Data Area

应用程序和用户数据存储

二、分区介绍

1、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. 引导程序最终会加载操作系统的内核并交出控制权。

2、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 中。

3、General Purpose Partitions 分区

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

4、User Data Area 分区

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

你好,工程师

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值