MTK 驱动(85)----RPMB key introduction
RPMB全称Replay Protected Memory Block, 重放保护存储块,用于存放一些重要的安全信息,eMMC和UFS都有这一区域.
RPMB防重放攻击的原理:
有两个条件决定了这一块内容具有这样的特性, 一是访问这一区域的数据需要获得授权, 二是有一个计数器记录每一次访问动作.
关于第一点, 如何给予和获得授权呢?
就需要在使用这一块区域之前, 预先烧写一把key进去, 那这把key就是RPMB key.
有了这把key, 在之后访问RPMB区域的时候, 都要用这把key生成Message Authentication Code(MAC), 用来鉴定授权,鉴权过程通常是TEE中使用每次开机生成的RPMB key得到MAC值和EMMC RPMB本身根据写入的RPMB key生成的MAC值做compare.
更多详细信息可以参考spec:eMMC 5.1 spec文档JESD84-B50-1.pdf, UFS 2.1 spec文档JESD220C.pdf
目前在mtk平台, 这把key的生成规则有两种, 一是common key, 另一种是per device key.
使用哪一种规则, 取决于是否开启宏RPMB_PER_DEVICE_KEY
Common key的内容可以在文件rpmb_cust_key.h中修改
Per device key的内容根据CPU的HRID生成, 会使得每一台机器的RPMB key都不同. 这样有一个结果是, 如果更换了CPU, 也要同时更换FLASH, 否则会无法访问RPMB区域.
3. How to program RPMB key?
那如何将这把RPMB key预先烧录到RPMB相应的寄存器中呢?
3.1 默认的方案, 如果有开宏CFG_TEE_SUPPORT && CFG_RPMB_SET_KEY, 会在第一次开机preloader阶段自动烧写.
但是由于per device key的CPU与FLASH绑定特性, 会造成工厂的维修成本增加, 所以提供了一种手动触发烧写RPMB key的方案.
3.2 在kernel阶段, 可以通过TEE, 在基本测试结束后手动触发. 详细信息可以参考文档MTK RPMB External User Guide_Android N.docx
- FAQ
Q: RPMB key可以重复写吗?
A: 不可以, 只能写一次且不能更改
Q: 可以不写RPMB key吗?
A: 如果要用RPMB这个分区, 就一定要写这把key
Q: RPMB分区中的内容可以重复写吗?
A: 可以. RPMB分区不可以擦除, 但可以覆盖
MTK 驱动(85)----RPMB key introduction相关推荐
- MTK 驱动(86)---更换CPU后,RPMB无法访问,必须同时更换eMMC
更换CPU后,RPMB无法访问,必须同时更换eMMC MTK平台的RPMB(Replay Protected Memory Block) solution中,rpmb key的生成是和CPU ID相绑 ...
- 详解关于MTK驱动开发学习教程
MTK驱动开发学习教程是本文要介绍的内容,主要是来了解MTK的驱动开发的过程,文章中很详细的讲解了这个问题,具体内容来看本文详解. 一.Charge Parameters. 1.相关文件chr_par ...
- MTK 驱动(62)---eMMC RPMB分区介绍
eMMC RPMB分区介绍 Partitions Overview eMMC标准中,将内部的 Flash Memory 划分为 4 类区域,最多可以支持 8 个硬件分区,如下图所示: 一般情况下,Bo ...
- MTK 驱动(67)---深入MTK平台bootloader启动之【 lk -amp;gt; kernel】分析笔记
Pre-loader 运行在ISRAM,待完成 DRAM 的初始化后,再将lk载入DRAM中,最后通过特殊sys call手段实现跳转到lk的执行入口,正式进入lk初始化阶段. 一.lk执行入口: 位 ...
- MTK 驱动(63)---MTK TP驱动移植
MTK TP驱动移植 对于MTK TP驱动移植一般分为六部分: 1.硬件IO口配置: 2.TP驱动移植: 3.I2C通信: 4.中断触发: 5.数据上报: 6.虚拟按键: 硬件电路: 1.GPIO配置 ...
- MTK 驱动(51)---TP 驱动移植
对于MTK TP驱动移植一般分为六部分: 1.硬件IO口配置: 2.TP驱动移植: 3.I2C通信: 4.中断触发: 5.数据上报: 6.虚拟按键: 硬件电路: 1.GPIO配置 打开 mediate ...
- MTK 驱动开发(41)---MTK 调试工具
MTK Android software Tools工具的说明 MTK发布的Android software Tools工具包,里面包含了很多的MTK工具,如下是简要说明及学习文档 MTK Andro ...
- MTK 驱动开发(29)---TP 驱动移植
对于MTK TP驱动移植一般分为六部分: 1.硬件IO口配置: 2.TP驱动移植: 3.I2C通信: 4.中断触发: 5.数据上报: 6.虚拟按键: 硬件电路: 1.GPIO配置 打开 mediate ...
- MTK 驱动开发(5)---bootloader
1.框架 MTK 平台的启动过程经过四个模块,分别是BootRom,Preloader,LK,Kernel. 2 .bootloader到kernel启动总逻辑流程图 3.Boot ROM Boot ...
最新文章
- 各方评论《面向儿童的人工智能北京共识》:这是中国人工智能发展轨迹中的一份关键文件...
- 2.12 Hivet中order by,sort by、distribute by和cluster by
- 线程间的协作(3)——管道输入/输出流
- Maven打包自动发布到nexus私服
- Python综合练习:学生信息管理(文件版)
- python链表怎么定义_Python数据结构之双向链表的定义与使用方法示例
- App后台开发运维和架构实践学习总结(1)——App后台核心技术之用户验证方案
- nusoap 与 CI框架不用WSDL
- “混合云产业推进联盟”成立,ZStack实力助推
- 郝斌c语言课程笔记,郝斌C语言详细笔记(附源码) - 图文
- 动态IP和静态IP地址
- Android陀螺仪传感器学习
- 国债(长短期)、财政赤字、利率、美元指数、国债收益率关系
- STM32 BKP备份寄存器介绍
- strcmp函数的分析及实现
- 敏捷项目用户故事地图
- 需要知道关于struct的一些事情
- C++/QT生成二维码和扫瞄二维码
- Halcon读图出错怎么办?ReadImage常见错误与处理方法(C++)
- 03-QNX Shell常用指令