OP-TEE安全存储安全文件的格式

安全文件、dirf.db文件的数据格式和操作过程op-tee的安全存储功能可满足用户保存敏感数据的需求,需要被保存的数据会被加 密保存到文件系统或rpmb分区中 。
当选择将数据保存到文件系统中时,默认情况下,加密后的数据会被保存在/data/tee目录中。
安全存储功能使用二叉树的方式来保存加密后的文件。
当第一次使用安全存储功能创建用于保存敏感数据的安全文件时,op-tee将会在/data/tee目录中生成两个文件:dirf.db文件和以数字命名的文件。
dirf.db文件保存的是整个安全存储功能管理的所有文件的目录信息和节点信息。 当用户使用某个已经存在的安全文件时,op-tee首先会读取dirf.db文件中的相关内容,然后根据需要操作的安全文件名字的哈希值在dirf.db文件中找到对应的文件编号,最终按照这个编号实现对文件的打开、关闭、写入、读出、重命名、裁剪等操作。(这里为什么要存hash,知道hash值和知道名字,安全性还是不一样,你知道怎么操作,但是不需要知道操作的本身?)
保存在/data/tee目录以数字命名的文件是被安全存储保护的用户文件。
该文件保存的是加密之后的用户数据, 加密使用的密钥则是对应的fek 。
dirf.db文件和安全文件的格式使用安全存储功能生成的文件都会使用相同的格式被保存,而且dirf.db文件与安全文件的格式也相同。
且dirf.db文件与安全文件的格式也相同。安全文件中的内容分为三个区域,分别用于保 存文件头、结点、数据,文件的内容 ,其格式如图所示。
安全文件将整个空间划分成相等大小的物理块,每个物理块的大小为4kb,其中文件头部分存放的是tee_fs_htree_image结构体的内容,该结构体定义如下:
struct tee_fs_htree_image { //加密iv+enc_fek时使用的iv值,每次保存head时会使用随机数更新 uint8_t iv[tee_fs_htree_iv_size]; uint8_t tag[tee_fs_htree_tag_size]; //加密iv+enc_fek生成的数据的tag部分 uint8_t enc_fek[tee_fs_htree_fek_size]; //使用tsk加密一个安全文件的fek生成的 //加密iv+enc_fek生成的数据的imeta部分 uint8_t imeta[sizeof(struct tee_fs_htree_imeta)]; uint32_t counter; //用于计算在保存tee_fs_htree_image时是存到ver0还是ver1 };节点部分存放的是tee_fs_htree_node_image结构体的内容,在保存数据到每个物理块之前都会使用fek和对应的iv值对需要被保存的数据进行加密,
而在打开读取文件时则会首先从文件头中读取enc_fek的值,然后使用 tsk做解密操作来获取fek ,最后从需要被解密的物理块对应的节点中获取到iv值。 tee_fs_htree_node_image的结构体的定义如下:
struct tee_fs_htree_node_image { //保存节点的哈希值,用于在操作文件时找到该文件的head uint8_t hash[tee_fs_htree_hash_size]; //加密安全文件数据区域中某一个块时使用的iv值,块数据的每次写入都会使用随机数更新 uint8_t iv[tee_fs_htree_iv_size]; uint8_t tag[tee_fs_htree_tag_size]; //加密安全数据区域中一个块数据时生成的tag uint16_t flags; //用于计算使用块中的那个ver };数据块 中保存的是密文数据 ,该密文数据是使用该文件对应的fek和块对应的iv值对需要被保存的数据进行加密操作来生成。
dirf.db文件的数据块区域保存的是所 有使用安全存储功能保存的文件的相关信息 ,在安全存储功能中 使用dirfile_entry结构体来表示每个安全文件的基本信息 ,该结构体定义如下:
struct dirfile_entry { tee_uuid uuid; //创建该安全文件的ta的uuid uint8_t oid[tee_object_id_max_len]; //安全文件的名字(使用安全存储操作时的名字) uint32_t oidlen; //文件名字的长度 //data/tee目录下安全文件的root node的哈希值 uint8_t hash[tee_fs_htree_hash_size]; uint32_t file_number; //保存在/data/tee目录下的文件编号 };

EMC计算方法和EMC仿真(1) ——计算方法简介
IGBT巨头林立,国产替代突围!
“云购物”等新消费新服务深刻改变了传统商业模式?
选购二手示波器需要注意哪些问题
简易的电源指示器欠压/过压检测
OP-TEE安全存储安全文件的格式
采用C8051F020单片机和模糊控制器实现便携式心电监护仪的应用方案
高通最强芯片骁龙8cx发布 比骁龙855更加强大
GPY-10(0~10T)安全型张力传感器
三星S8Edge最终曝光:外观美哭了!或将配无线蓝牙耳机
你不知道的秘密,浅谈Java注解上位之路
一汽意向授信高达10150亿元,转型之路还需坚持
CDMA的扩频增益,什么是扩频增益
限流灭弧保护-安科瑞电气防火限流式保护器
区块链已将是一种全新存储数据的方式
瑞萨电子推出SIL3认证解决方案
新iPhone芯片曝光:32nm工艺 功耗降50%
小众神机一加5怎么样?一加5评测:超强的国产旗舰,五大功能值得学习
Qualcomm宣布C-V2X正式获得欧洲无线电设备指令(RED)认证
让我们从ADAS开始来了解自动驾驶