一文简单了解RPMB

2023-11-12

不知道大家对于RPMB有所了解吗?最近在看这些存储介质的介绍的时候,在推荐里面看到了这个东西,又因为对安全本身就有所涉及学习。所以这里来看看这个东西。

学习的内容都是来自前辈们的blog,会在文末附注。

1、Flash是什么?

关于存储的种类有很多种,这里看一下前辈归纳的图片:(详细可以点击链接查看)

在这里插入图片描述
这里就不展开了,主要看一下flash,flash分为nor flash和nand falsh。

nor flash :NOR Flash的读取和我们常见的SDRAM的读取是一样,用户可以直接运行装载在NOR FLASH里面的代码,这样可以减少SRAM的容量从而节约了成本。

nand falsh:NAND Flash没有采取内存的随机读取技术,它的读取是以一次读取一块的形式来进行的,通常是一次读取512个字节,采用这种技术的Flash比较廉价。用户不能直接运行NAND Flash上的代码,因此好多使用NAND Flash的开发板除了使用NAND Flah以外,还作上了一块小的NOR Flash来运行启动代码。

而我们这里的主要关注点在 nand flash

2、eMMC和nand flash的关系

1、NAND Flash 是一种存储介质,要在上面读写数据,外部要加主控和电路设计。

2、eMMC是NAND flash+主控IC ,对外的接口协议与SD、TF卡类似;对厂家而言简化了电路设计,降低了成本。

3、使用emmc的好处是,除了得到大容量的空间(这一点,只用NAND FLASH多堆叠也可以做到),还有就是emmc可以管理NAND (坏块处理,ECC)等。

eMMC=Nand Flash+控制器+标准封装

在这里插入图片描述

3、RPMB与eMMC的关系

这下来看看emmc的分区
在这里插入图片描述

1. BOOT Area Partition 1 & 2

此分区主要是为了支持从 eMMC 启动系统而设计的。
该分区的数据,在 eMMC 上电后,可以通过很简单的协议就可以读取出来。同时,大部分的 SOC 都可以通过 GPIO 或者 FUSE 的配置,让 ROM 代码在上电后,将 eMMC BOOT 分区的内容加载到 SOC 内部的 SRAM 中执行。

2 RPMB Partition(我们的关注点)

RPMB 是 Replay Protected Memory Block的简称,它通过 HMAC SHA-256 和 Write Counter 来保证保存在 RPMB 内部的数据不被非法篡改。
在实际应用中,RPMB 分区通常用来保存安全相关的数据,例如指纹数据、安全支付相关的密钥等。

3 General Purpose Partition 1~4

此区域则主要用于存储系统或者用户数据。 General Purpose Partition 在芯片出厂时,通常是不存在的,需要主动进行配置后,才会存在。

4 User Data Area
此区域则主要用于存储系统和用户数据。
User Data Area 通常会进行再分区,例如 Android 系统中,通常在此区域分出 boot、system、userdata 等分区。

如果对于这个eMMC感兴趣的可以看看这篇文章–>eMMC之分区管理、总线协议和工作模式

这是一个大致的分区,下面来重点看看我们的关注点RPMB分区。

4、RPMB是什么?

上面我们知道了RPMB(Replay Protected Memory Block)Partition 是 eMMC 中的一个具有安全特性的分区。

eMMC 在写入数据到 RPMB 时,会校验数据的合法性,只有指定的 Host 才能够写入,

同时在读数据时,也提供了签名机制,保证 Host 读取到的数据是 RPMB 内部数据,而不是攻击者伪造的数据。

RPMB 在实际应用中,通常用于存储一些有防止非法篡改需求的数据,例如手机上指纹支付相关的公钥、序列号等。

RPMB 可以对写入操作进行鉴权,但是读取并不需要鉴权,任何人都可以进行读取的操作,因此存储到 RPMB 的数据通常会进行加密后再存储。

下面来看看其工作流程:数据的读写

4.1 RPMB 数据读取

1、 Host 向 eMMC 发起读 RPMB 的请求,同时生成一个 16 bytes 的随机数,发送给 eMMC。

2、 eMMC 将请求的数据从 RPMB 中读出,并使用 Secure Key 通过 HMAC SHA-256 算法,计算读取到的数据和接收到的随机数拼接到一起后的签名。然后,eMMC 将读取到的数据、接收到的随机数、计算得到的签名一并发送给 Host。

3、 Host 接收到 RPMB 的数据、随机数以及签名后,首先比较随机数是否与自己发送的一致,如果一致,再用同样的 Secure Key 通过 HMAC SHA-256 算法对数据和随机数组合到一起进行签名,如果签名与 eMMC 发送的签名是一致的,那么就可以确定该数据是从 RPMB 中读取到的正确数据,而不是攻击者伪造的数据。

(因为伪造者就算得到了随机数,但是没有Secure Key,也无法伪造出对应的签名)

通过上述的读取流程,可以保证 Host 正确的读取到 RPMB 的数据。

在这里插入图片描述

4.2 RPMB 数据写入

Host 按照上面的读数据流程,读取 RPMB 的 Write Counter。

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

在这里插入图片描述

(这里如果发送的东西被截取到了,是不是就可以伪装host发生信息,nonono,首先这里有两个部分,一是secure key,二是 Write Counter。secure key这个肯定你知道,做签名用的。其次就是这个 Write Counter,下面来详细讲一下)

4.3 Write Counter–Replay Protect 原理

使用 eMMC 的产品,在产线生产时,会为每一个产品生产一个唯一的 256 bits 的 Secure Key,烧写到 eMMC 的 OTP 区域(只能烧写一次的区域),同时 Host 在安全区域中(例如:TEE)也会保留该 Secure Key。

在 eMMC 内部,还有一个RPMB Write Counter。RPMB 每进行一次合法的写入操作时,Write Counter 就会自动加一 。

通过 Secure Key 和 Write Counter 的应用,RMPB 可以实现数据读取和写入的 Replay Protect。

因为每次成功写入后Write Counter就加一了,那么就算你截取到了我的消息,你知道不能伪装我写入fake数据,你就想搞破快,不断的将截取道德数据发给RPMB,但是因为截取到的信息写入成功后,Write Counter加一了,因此这个时候你想搞重复写的破坏行为会在RPMB阶段给拒绝掉。

4.4 RPMB的大小

两个 RPMB Partition 的大小是由 Extended CSD register 的 BOOT_SIZE_MULT Field 决定,大小的计算公式如下:

Size = 128Kbytes x BOOT_SIZE_MULT

一般情况下,Boot Area Partition 的大小是128KB的倍数,EMMC中默认为 4 MB,即 RPMB_SIZE_MULT 为 32,部分芯片厂家会提供改写 RPMB_SIZE_MULT 的功能来改变 RPMB Partition 的容量大小。RPMB_SIZE_MULT 最大可以为 128,即 Boot Area Partition 的最大容量大小可以为 128 x 128 KB = 16384 KB = 16 MB。

小结:以上我们就大概知道了RPMB的相关知识。希望有所收获。感谢点赞关注啊!!!

参考链接:
https://www.zhihu.com/search?type=content&q=flash%E3%80%81ddr
https://blog.csdn.net/qilu0882/article/details/78135191
https://blog.csdn.net/u013686019/article/details/66472291

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

一文简单了解RPMB 的相关文章

随机推荐

  • 【Logstash】【ElasticSearch】【Kibana】安装测试【日志存储】

    Linux日志 var存放日志 log auth 认证 boot 登录 dpkg 深度 Debian软件安装 fontconfig 字体 Logstash功能 Logstash是一个开源的数据收集引擎 具有实时管道功能 接收 处理 转发日志
  • 华为培训04 路由协议

    学习目标 路由分类 路由配置 VLAN路由 1 路由基础 2 VLAN间路由 2 1 三层交换 解决VLAN间通信的一种解决办法就是三层交换 在三层交换机上配置vlanif接口 实现VLAN间路由 如果网络上有多个VLAN 则需要给每一个V
  • 基于springboot开发项目架构之CMS

    1 CMS是什么 CMS Content Management System 即内容管理系统 不同的项目对CMS的定位不同 比如 一个在线教育网站 有些公司认为CMS系统是对所有的课程资源进行管理 而在早期网站刚开始盛行时很多公司的业务是网
  • Spring Cloud Alibaba + mybatis + Element UI 前后端分离 分布式微服务高并发数据平台化(中台)思想+多租户saas企业开发架构技术选型和设计方案

    基于Spring Cloud Alibaba 分布式微服务高并发数据平台化 中台 思想 多租户saas设计的企业开发架构 支持源码二次开发 支持其他业务系统集成 集中式应用权限管理 支持拓展其他任意子项目 一 架构技术选型 核心框架 Spr
  • [云原生专题-41]:K8S - 核心概念 - Service业务的统一网关接口Ingress详解、安装、常见操作命令

    作者主页 文火冰糖的硅基工坊 文火冰糖 王文兵 的博客 文火冰糖的硅基工坊 CSDN博客 本文网址 https blog csdn net HiWangWenBing article details 122804728 目录 前言 第1章
  • 面向切面编程SpringAop入门案例和实现机制

    代理与SpringAop springAop概述 SpringAop术语 SpringAop的实现机制 JDK实现动态代理 CGlib实现动态代理 springAop代理的实现 xml springAop代理的实现 注解 切点修饰语法 sp
  • ROS中订阅(Subscribe)最新消息以及对消息队列的浅谈

    ROS中订阅 Subscribe 最新消息以及对消息队列的浅谈 机器人应用中难免会遇到运算起来很费时间的操作 比如图像的特征提取 点云的匹配等等 有时候 不可避免地 我们需要在ROS的Subscriber的Callback回调函数中进行这些
  • 作用域和堆内存的区别

    作用域是函数执行的时候产生fn 函数执行的时候首先会开辟一个新的内存空间叫栈内存 环境或作用域 数据类型在赋值的时候会开辟一个新的内存空间叫堆内存 存放代码块的 二者都会形成一个内存地址 生成对象的单例模式 优势 每个对象都是独立的 即便属
  • @SuppressWarnings("resource")作用

    1 实例 SuppressWarnings resource public static void main String args Scanner input new Scanner System in 写代码时 input 警告加上这个
  • 若隐若现的芯片

    先看效果 再看代码
  • 【java语法基础】常量与变量、数据类型,以及数据类型的转换

    常量 就是值永远不被改变的量 声明一个常量 需要用final关键字修饰 具体格式 final 常量类型 常量标识符 常量值 例如 final int PIE 18 注 在定义一个常量标识符时 所有的字符都要大写 如果常量标识符由多个单词组成
  • 用python实现数字图片识别神经网络--实现网络训练功能

    上节我们完成了神经网络基本框架的搭建 当时剩下了最重要的一个接口train 也就是通过读取数据自我学习 进而改进网络识别效率的功能尚未实现 从本节开始 我们着手实现该功能 自我训练过程分两步走 第一步是计算输入训练数据 给出网络的计算结果
  • git查看日志

    目录 引言 git查看该项目提交记录 查看指定条数的记录 显示提交的差异 提交的简略信息 按行显示提交信息 按照指定格式显示记录 指定文件的提交记录 指定字符串或函数的提交记录 示例 引言 有时需要对之前所做的一些修改查看记录 这里是查看g
  • STM32F407ZGT6控制舵机(采用高级定时器8)

    前言 32单片机给舵机供电不足 会出现不稳定的情况 舵机鬼畜 所以要外加电源给舵机供电 利用12v锂电池 通过稳压模块降压到5 5v 提供给舵机 稳压电路的gnd一定要接上32单片机的gnd 不共地虽然能供电但数据线无法传输数据 stm32
  • 以太坊ERC-20协议详解

    区块链学习 https github com xianfeng92 Love Ethereum ERC20是以太坊定义的一个 代币标准 https github com ethereum EIPs blob master EIPS eip
  • 计算机网络综合选择题

    计算机网络综合选择题 TCP IP体系结构中的TCP和IP所提供的服务分别为 A 运输层服务和网络层服务 B 运输层服务和应用层服务 C 链路层服务和网络层服务 D 网络层服务和运输层服务 答案 A 2 对于无序接收的滑动窗口协议 若序号位
  • JAVA中的异常处理机制

    JAVA中的异常处理机制 java异常处理中的关键字 try catch finally throw throws return try 检测代码块 在此代码块中一旦检测到异常就会自动跳转到相应的catch try 检测代码块 catch
  • 21_pre_access 阶段

    文章目录 限制每个客户端的并发连接数 limit conn 指令 示例配置 限制每个客户端的每秒处理请求数 limit req 指令 限制每个客户端的并发连接数 ngx http limit conn module 生效阶段 ngx htt
  • Java实现FTP的上传和下载!

    java实现连接FTP服务器 实现文件的上传和下载 一 FTP服务器 FTP服务器 File Transfer Protocol Server 是在互联网上提供文件存储和访问服务的计算机 它们依照FTP协议提供服务 FTP协议是一种专门用来
  • 一文简单了解RPMB

    不知道大家对于RPMB有所了解吗 最近在看这些存储介质的介绍的时候 在推荐里面看到了这个东西 又因为对安全本身就有所涉及学习 所以这里来看看这个东西 学习的内容都是来自前辈们的blog 会在文末附注 1 Flash是什么 关于存储的种类有很