RPMB原理介绍【转】
本文转载自:https://blog.csdn.net/shenjin_s/article/details/79868375
RPMB介绍:
RPMB(Replay Protected Memory Block)Partition 是 eMMC 中的一个具有安全特性的分区。
eMMC 在写入数据到 RPMB 时,会校验数据的合法性,只有指定的 Host 才能够写入,同时在读数据时,也提供了签名机制,保证 Host 读取到的数据是 RPMB 内部数据,而不是攻击者伪造的数据。
RPMB 在实际应用中,通常用于存储一些有防止非法篡改需求的数据,例如手机上指纹支付相关的公钥、序列号等。RPMB 可以对写入操作进行鉴权,但是读取并不需要鉴权,任何人都可以进行读取的操作,因此存储到 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。
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。
RPMB 数据读取
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 中读取到的正确数据,而不是攻击者伪造的数据。
通过上述的读取流程,可以保证 Host 正确的读取到 RPMB 的数据。
RPMB 数据写入
RPMB 数据写入的流程如下:
1、Host 按照上面的读数据流程,读取 RPMB 的 Write Counter(通过Write Counter来识别数据的有效性)。
2、 Host 将需要写入的数据和 Write Counter 拼接到一起并计算签名,然后将数据、Write Counter 以及签名一并发给 eMMC。
3、eMMC 接收到数据后,先对比 Write Counter 是否与当前的值相同,如果相同那么再对数据和 Write Counter 的组合进行签名,然后和 Host 发送过来的签名进行比较,如果签名相同则鉴权通过,将数据写入到 RPMB 中。
通过上述的写入流程,可以保证 RPMB 不会被非法篡改。
RPMB原理介绍【转】相关推荐
- MTK 驱动(62)---eMMC RPMB分区介绍
eMMC RPMB分区介绍 Partitions Overview eMMC标准中,将内部的 Flash Memory 划分为 4 类区域,最多可以支持 8 个硬件分区,如下图所示: 一般情况下,Bo ...
- HDR sensor 原理介绍
HDR sensor 原理介绍 一. HDR sensor 原理介绍 什么是sensor的动态范围(dynamic range): sensor的动态范围就是sensor在一幅图像里能够同时体现高光和 ...
- java语言的实现机制_JAVA语言之Java NIO的工作机制和实现原理介绍
本文主要向大家介绍了JAVA语言之Java NIO的工作机制和实现原理介绍,通过具体的内容向大家展示,希望对大家学习JAVA语言有所帮助. 前言 本文只简单介绍NIO的原理实现和基本工作流程 I/O和 ...
- 中兴SDH原理介绍及中兴E300网管介绍
姓名 苟忠兴 培训课程 中兴SDH原理介绍及中兴E300网管介绍 培训心得 1. SDH概念: SDH(Synchronous Digital Hierarchy,同步数字体系)是一种将复接.线路传输 ...
- 【机器学习】多项式回归原理介绍
[机器学习]多项式回归原理介绍 [机器学习]多项式回归python实现 [机器学习]多项式回归sklearn实现 在上一节中我们介绍了线性回归的原理,然后分别用python和sklearn实现了不同变 ...
- 计算机原理 英文版,计算机原理介绍英文版.doc
计算机原理介绍英文版 Importing TrafficOverview This lesson demonstrates the traffic import capabilities of Mod ...
- heartbeat原理介绍
heartbeat原理介绍 HeartBeat运行于备用主机上的Heartbeat可以通过以太网连接检测主服务器的运行状态,一旦其无法检测到主服务器的"心跳"则自动接管主服务器的资 ...
- 安检x光机原理计算机实现,安检x光机成像原理介绍
安检x光机是我们都很熟悉的一种安检设备,但很少有人去了解安检x光机成像原理.本文将为大家介绍安检x光机成像原理. 安检x光机成像原理 安检x光机主要由X光管和X光机电源以及控制电路等组成,而X光管又由 ...
- php new对象 调用函数,关于JS中new调用函数的原理介绍
这篇文章主要介绍了关于JS中new调用函数的原理介绍,有着一定的参考价值,现在分享给大家,有需要的朋友可以参考一下 JavaScript 中经常使用构造函数创建对象(通过 new 操作符调用一个函数) ...
最新文章
- Neutron:Firewall as a Service(FWaaS)
- C++ operator关键字(重载操作符)
- [NOIP 2011普及组 No.4] 表达式的值
- TCP/IP总结(4)TCP 概述
- 约瑟夫环算法c语言,约瑟夫环的c语言实现(代码已实现)
- 第8篇:Flowable快速工作流脚手架Jsite_请假实战_查看历史任务
- iOS 13新增防骚扰功能,但开启后用户吐槽声一片
- 苹果终端date命令_苹果M1 Mac电脑关闭SIP方法
- PPP 守护进程 RCE 漏洞已存在17年,可控制几乎所有的 Linux 系统
- 选择软件测试作为你的职业,一个无经验的大学毕业生,可以转行做软件测试吗?
- 计算某天是星期几数字或文本形式的JAVA工具方法
- 【傻瓜攻略】深度学习之海森矩阵(九)
- java写入到excel表格乱码怎么办,数据库导出excel表格是乱码-java导出excel表格乱码!...
- Android 强制关闭软键盘/修改软键盘状态——弹出或关闭
- Selenium GUI自动化下载百度图片
- mysql键值_如何在MySQL中存储键值对?
- 生成订单 30 分钟未支付,则自动取消,该如何实现?
- git pull 时出现:There is no tracking information for the current branch. Please specify which branch...
- 浏览器书签同步插件EverSync
- DOS汇编程序提高练习
热门文章
- 华科计算机网络报告,华科-计算机网络实验报告-Java Socket编程-网络组建实验
- 《springcloud 二》微服务动态网关,网关集群
- C#图解教程 第十三章 委托
- luogu Cantor表
- Django Admin后台管理功能使用
- 旧闻新看 ---- 西门子为什么要收购TESIS PLMWare
- weblogic管理脚本
- Android开发环境搭建Eclipse+JDK+ADT+AVD(系列一)
- codeforces C. Inna and Huge Candy Matrix 解题报告
- 在柱状图中找最大矩形——O(n)时间复杂度java实现