RPMB说明与使用(Replay Protected Memory Block)

这篇具有很好参考价值的文章主要介绍了RPMB说明与使用(Replay Protected Memory Block)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

1. 什么是RPMB

首先RPMB是repaly protected memory block,从字面意思理解就是一个回放保护的存储区域。
这个区域是EMMC或者UFS上的一个区域,这个区域可以读,可以写,但是读和写是受到访问控制和回放保护的。
UFS上的RPMB空间大小一般是16M;
EMMC上的RPMB空间大小一般是4M,也有64K的;
所以RPMB的空间大小一般看选择的存储芯片的数据手册(遇到过EMMC上没有RPMB区域的)。
一般情况下数据需要具备几个要素:

  • 机密性
  • 完整性
  • 新鲜性
  • 可用性
    回放保护,可以保证数据的新鲜性。

2. 什么是回放保护

理解回放保护,我们先理解一下回放攻击。
int write_file()
{
char *data = “123456”;
int fd;
fd = open(“a.txt”, O_RDWR);
if (fd < 0) {
printf(“open a.txt failed, errno= %d\n”, errno);
return -1;
}

int wlen = write(fd, data, strlen(data));
if (wlen != strlen(data)) {
	printf("write failed");
	close(fd);
	return -2;
}
printf("write file success\n");
close(fd);

return 0;

}
上边方法,我们往a.txt中写入了一些数据,这个时候,如果我们将写完的文件备份出来,备份成b.txt,我们使用程序读a.txt,是可以正常读出来的,然后再将a.txt删除,最后再将b.txt拷贝成a.txt,
如果有回放保护,那么程序再读a.txt,应该会失败。如果成功,那么证明就没有回放保护机制。

3. RPMB的工作原理

RPMB功能

  • get counter: 获取RPMB中counter计数器;
  • program key:写入RPMB key,每个RPMB在生命周期内,都需要program仅仅一次密钥,这个动作可以在工厂完成,也可以每次开机在bootloader中自动完成;
  • read:读RPMB中的数据;
  • write:往RPMB中写数据;
  • get max wr size: 获取一次可以往RPMB中写入的最大数据量;

RPMB操作关键数据结构

struct rpmb_frame {
	u_int8_t  stuff[196];  //无用
	u_int8_t  key_mac[32]; //rpmb key,program rpmb key指令的时候会使用到
	u_int8_t  data[256];//对RPMB进行读写的数据
	u_int8_t  nonce[16];//一个随机数,可以不使用,如果使用,需要发起者生成随机数,RPMB硬件对随机数与其它数据一起做mac,发起者调用返回之后,需要验证mac与nonce,保证调用是新鲜的。相当于很多场景中challenge的意思。
	u_int32_t write_counter; //写操作的时候,counter标记,用户防止回放攻击
	u_int16_t addr; //读写RPMB的地址,块设备操作,每次操作256字节,因此这个地方可以是256的整数倍
	u_int16_t block_count;//每次读写几块RPMB数据,一块是256字节
	u_int16_t result; //操作之后的返回结果,对frameout的数据有效
	u_int16_t req_resp; //本次操作的CMD, 代表本次要做什么
};

RPMB program key

此动作可以在开机的时候自动完成,由bootloader来操作,也可以通过用户产线手动绑定。
注意

  • RPMB KEY大部分情况下与CPU进行绑定,也就是说,如果CPU损坏,那么在维修的时候,也需要更换EMMC或者UFS
  • 由于RPMB KEY与CPU进行绑定,所以大部分客户在使用RPMB的时候,都是使用工厂program key的方案。原因:降低成本。
  • 工厂需要进行CPU的老化测试,如果CPU与EMMC进行提前绑定,那么CPU坏的情况,会导致EMMC的浪费,因此大量生产的情况下,客户都会选择延迟绑定的方案来节省成本。

RPMB READ and WRITE原理

RPMB读写: 调用原理

4. RPMB实现参考

EMMC RPMB: 应用调用实现参考
UFS RPMB: 应用调用实现参考/dev/0:0:0:49476
trusty REE RPMB: REE端RPMB调用
trusty TEE RPMB: TEE端RPMB调用文章来源地址https://www.toymoban.com/news/detail-502336.html

到了这里,关于RPMB说明与使用(Replay Protected Memory Block)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 音频驱动嘴型的视频数字人虚拟主播工具motionface replay使用教程

    音频驱动嘴型的视频数字人虚拟主播工具motionface replay使用教程 软件运行支持32位/64位window 10/11系统,内存最低要求= 8Gb.无其他硬性要求。 打开百度网盘链接下载: 链接: 百度网盘 请输入提取码 提取码:5lht 软件为 绿色软件 ,下载 Replay.rar 解压,里面的replay.exe为软件运

    2024年01月22日
    浏览(26)
  • Solidity 关键词说明(payable transfer event modifier msg external public view pure memory)

    在 Solidity 中, payable 是一个,用于表示函数可以接收以太币(ether)的转账。如果一个函数被声明为 payable ,那么它就可以接收以太币的转账,而不仅仅是使用以太币作为参数进行函数调用。 例如,下面是一个声明了 payable 的函数: 在上面的代码中,函数 buy

    2024年02月04日
    浏览(30)
  • 阿里云服务器可以做什么?十大使用场景举例说明

    使用阿里云服务器可以做什么?阿里云百科分享使用阿里云服务器常用的十大使用场景,说是十大场景实际上用途有很多,阿里云百科分享常见的云服务器使用场景,如本地搭建ChatGPT、个人网站或博客、运维测试、学习Linux、跑Python、小程序服务器等等,阿小云分享使用阿里

    2024年02月10日
    浏览(43)
  • UFS 14 - UFS RPMB安全读写命令

    UFS 1-UFS架构简介1 UFS 2 -UFS架构简介2 UFS 3 - UFS RPMB UFS 4 - UFS Boot UFS 5 - UFS UIC Layer: MIPI M-PHY UFS 6 - UAP – SCSI Commands(1) UFS 7 - UAP – SCSI Commands(2) UFS 8 - UAP – SCSI Commands(3) UFS 9 - UAP – SCSI Commands(4) UFS 10 - UAP – SCSI Commands(5) UFS 11 - UFS RPMB分区功能验证 UFS 12 - UAP – SCSI C

    2024年02月16日
    浏览(25)
  • 网络安全-重放攻击(Replay Attack)

    API重放攻击(Replay Attacks)又称重播攻击、回放攻击,这种攻击会不断恶意或欺诈性地重复一个有效的API请求。攻击者利用网络监听或者其他方式盗取API请求,进行一定的处理后,再把它重新发给认证服务器,是黑客常用的攻击方式之一。 重放攻击的示意图如下所示: 从上面

    2024年02月13日
    浏览(34)
  • 学好虚拟化,首先要学Linux

    上次讲到了虚拟化的基础知识,比如虚拟化的应用、各个厂商都是通过何种技术路径来实现的等等,本篇想记录一下我学习到的CPU内存虚拟化和网络虚拟化相关知识,通过记录来制造反馈,让自己更有效地学习。需要注意的是,学习虚拟化就免不了和Linux打交道了。 在此之前

    2023年04月20日
    浏览(32)
  • chrome开发调试小技巧—Replay XHR(重新请求)

    一、需求 想要验证一个ajax请求,需要每次都需要在页面点几次才会触发或者刷新页面,着急调试看效果时,可以通过chrome的Replay XHR功能直接同参数重新请求ajax 二、实现 chrome调试工具network下找到要重新发起的ajax请求,右键找到Replay XHR点击即可重新请求  

    2024年02月12日
    浏览(31)
  • 加密项目是否采用DAO模式 首先考量这8个因素

    随着越来越多公司寻求管理和组织战略创新,我们看到市场对 DAO  的兴趣日益增长,同时也对人们的数字生活产生了巨大影响。不过, 并不是每个项目都适合采用 DAO 模式,在做出正确选择之前,你需要考虑以下 8 个要点: 1、集中服务和大规模项目不建议用 DAO 对于 Web3

    2024年01月22日
    浏览(35)
  • 【Unity学习】完全基于Ultimate Replay 2.0的UI回放系统

    前面两节已经介绍了本人在项目中使用的结合JSON和Ultimate Replay 2.0的UI回放系统,那是在项目结构特殊,代码不好更改的情况下,本人所做的些许调整。但在这几天的开发过程中,我发现通常情况下只使用Ultimate Replay 2.0即可实现大部分情况下的UI回放。 这在基于JSON的UI回放系

    2024年02月12日
    浏览(41)
  • 微信小程序中block和View组件的使用区别

    在微信小程序中,block和View组件都是用于布局的组件,但它们在使用方式和功能上有一些区别。 1. Block组件:    - Block组件是一个无实际显示效果的组件,它主要用于包裹一组组件,并提供了类似于div的作用。    - 使用Block组件可以将一组组件进行分组,便于样式的管理和

    2024年02月04日
    浏览(50)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包