OPTEE RPMB文件系统
rpmb实际就是emmc中的一个独立分区,写rpmb需要rpmb key对包计算mac值,rpmb硬件内部会校验mac值正确才能正常写入数据,可以防止重要数据被破坏
底层rpmb相关函数:
static TEE_Result tee_rpmb_get_dev_info(uint16_t dev_id, struct rpmb_dev_info *dev_info)
获取硬件rpmb信息,包括cid和rpmb大小
static TEE_Result tee_rpmb_write_key(uint16_t dev_id)
若rpmb第一次使用,会调用该函数写入一把rpmb key,该key只能写一次,后续不能改变
static TEE_Result tee_rpmb_read(uint16_t dev_id, uint32_t addr, uint8_t *data,
uint32_t len, const uint8_t *fek,
const TEE_UUID *uuid)
读取rpmb包数据,校验包的mac值合法,解密数据
static TEE_Result tee_rpmb_write_blk(uint16_t dev_id, uint16_t blk_idx,
const uint8_t *data_blks, uint16_t blkcnt,
const uint8_t *fek, const TEE_UUID *uuid)
加密数据,打包数据,计算包的mac值,发送给硬件rpmb写入
static TEE_Result tee_rpmb_init_read_wr_cnt(uint16_t dev_id,
uint32_t *wr_cnt,
uint16_t *op_result)
读取rpmb写入计数器
文件系统结构:
/**
* RPMB_FS partition data
*/
struct rpmb_fs_partition {//offset 0 ; size 128 bytes
uint32_t rpmb_fs_magic;
uint32_t fs_version;
uint32_t write_counter;
uint32_t fat_start_address;
/* Do not use reserved[] for other purpose than partition data. */
uint8_t reserved[112];
};
//128-512预留
struct rpmb_fat_entry {//第一个文件头 offset 512 bytes ; size 256 bytes
uint32_t start_address;//记录第一个文件数据存储地址
uint32_t data_size;//文件大小
uint32_t flags;
uint32_t write_counter;
uint8_t fek[TEE_FS_KM_FEK_SIZE];//加密数据的密钥,该密钥已经被加过密了,可以直接存储
char filename[TEE_RPMB_FS_FILENAME_LENGTH];//文件名,用来查找文件的
};
struct rpmb_fat_entry {//第二个文件头 offset 512+256bytes ; size 256 bytes
uint32_t start_address;
uint32_t data_size;
uint32_t flags;
uint32_t write_counter;
uint8_t fek[TEE_FS_KM_FEK_SIZE];
char filename[TEE_RPMB_FS_FILENAME_LENGTH];
};
............
.............
.............
文件2数据
文件1数据
ps:新增一个文件时,文件头是从上向下增长,对应数据是从rpmb尾部从下向上增长,直到rpmb全部用完为止
OPTEE RPMB文件系统相关推荐
- OP-TEE内核学习笔记(一)(安全存储)—— 密钥和文件结构
这里写目录标题 一.存储机制介绍 二.OPTEE REE文件系统安全存储(OPTEE SFS机制) 2.1 OP-TEE 系统安全文件 2.2 GlobalPlatform 安全存储要求 2.3 Li ...
- OPTEE之安全存储详解
文章目录 安全存储是什么? 二.安全存储相关技术点 1.加载dirf.db文件 2. dirf.db文件和安全存储文件的格式 2.1 安全文件的三个区域 2.2 重要结构体的关系框图 2.3 FEK和 ...
- 38. OP-TEE中secure stroage------安全文件数据格式和操作过程
历经一年多时间的系统整理合补充,<手机安全和可信应用开发指南:TrustZone与OP-TEE技术详解 >一书得以出版,书中详细介绍了TEE以及系统安全中的所有内容,全书按照从硬件到软件, ...
- 22. OP-TEE中TA与CA执行流程-------tee-supplicant(一)
历经一年多时间的系统整理合补充,<手机安全和可信应用开发指南:TrustZone与OP-TEE技术详解 >一书得以出版,书中详细介绍了TEE以及系统安全中的所有内容,全书按照从硬件到软件, ...
- 【OP-TEE】安全存储
背景 OP-TEE中的安全存储是根据 GlobalPlatform 的 TEE 内部核心 API(这里称为可信存储)中定义的内容来实现的.本规范规定,应该可以存储通用数据和关键材料,以保证所存储数据的 ...
- 36. OP-TEE中secure stroage的使用
历经一年多时间的系统整理合补充,<手机安全和可信应用开发指南:TrustZone与OP-TEE技术详解 >一书得以出版,书中详细介绍了TEE以及系统安全中的所有内容,全书按照从硬件到软件, ...
- OPTEE TA介绍
前言 本文主要介绍OPTEE的TA(Trusted Applications),翻译自官方文档:Trusted Applications - OP-TEE documentation document ...
- OP-TEE基本的从芯片设计到给客户的安全问题浅析
0 preface 基本概念缩写 TEE Trusted Execution Environment 可信执行环境,通常用来进行数字版权管理(DRM : Digital Rights Man ...
- 1.OP-TEE代码结构
历经一年多时间的系统整理合补充,<手机安全和可信应用开发指南:TrustZone与OP-TEE技术详解 >一书得以出版,书中详细介绍了TEE以及系统安全中的所有内容,全书按照从硬件到软件, ...
最新文章
- 【Unity3D】资源对象、预设、查找对象、组合模式等知识点
- 如何写出安全的、基本功能完善的Bash脚本
- 【Spark Summit EU 2016】摆脱传统ETL,让我们走向Spark吧!
- linux常见问题解决方法,Ubuntu 下2个常见问题解决方法
- 机载 LiDAR 点云数据分类
- python开发企业微信应用,使用Python发送企业微信消息
- java根据模板导出pdf
- [血泪整理]为何加载EDEM和FLUENT耦合接口显示ERROR126
- React的消息订阅全过程
- Navicat 解决问题:提示No All Pattern Found File Already Patched?
- 获取一个月有多少天,生成日历
- 软件的基本是要处理好”算法“及其基础(一)流-字-字符(包括某个数字、字母、符号和某个汉字等)-字符串-字节动态数组-字节-整数之间的转化关系和算法
- android开发股票数据接口,股票数据接口-股票数据接口api
- 玩转代码|Google Map api国内正常使用该如何配置
- mysql在test库中创建表stu_数据库mysql练习
- Django项目实战——6—(退出登录、判断用户是否登录、QQ登录、QQ登录工具QQLoginTool、本机绑定域名)
- 《Effective Morden C++》Item 7: Distinguish between () and {} when creating objects
- JAVA 洗衣房管理系统 宿舍洗衣机管理系统
- 2019年11月14日
- 如何在excel中将两列数据匹配
热门文章
- Linux下使用rsync最快速删除大量文件的方法
- 基于SSM的网上水果生鲜超市商城
- 21. 罗列常见的几个运行时异常
- 华中科大微型计算机接口技术课后答案,2018考研华中科技大学811微机原理及接口技术考试大纲...
- CentOS下安装无线网卡驱动
- html5 获得窗口焦点和失去窗口焦点
- 模糊聚类分析和模式识别
- 九章算法面试题81 岛屿的个数
- kotlin教程4:函数进阶
- Flutter Could not resolve com.android.tools.build:gradle:xx.xx.xx