嵌入式开发论坛

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 65|回复: 0

41. OP-TEE中secure stroage------安全文件中数据的加密操作

[复制链接]

59

主题

62

帖子

249

积分

版主

Rank: 7Rank: 7Rank: 7

积分
249
发表于 2018-11-25 14:38:45 | 显示全部楼层 |阅读模式
secure storage中的安全文件和dirf.db文件都是按照一定的格式保存的,主要由三部分组成:tee_fs_htree_image, tee_fs_htree_node_image以及数据区域块data block。tee_fs_htree_image和tee_fs_htree_node_image结构体中保存的是安全文件操作时使用到的重要数据的密文数据,tee_fs_htree_image区域中的数据是按照OP-TEE官方文档给出的meta data的方式加密重要数据之后获得。而data block和tee_fs_htree_node_image中的数据则是按照OP-TEE官方文档给出的block data encryption方式加密数据后获得。
1. 各种类型数据的组成以及作用  关于安全文件中三种类型数据中的各个成员中的作用请参阅38. OP-TEE中secure storage------安全文件数据格式和操作过程中的第一章节。
  tee_fs_htree_image主要保存加密head的iv值和加密安全文件的fek的enc_fek以及加密之后生成的tag, imeta及标记两个tee_fs_htree_image哪个为最新的counter值。
  tee_fs_htree_node_image保存节点的hash值,加密data block使用的iv值,标记使用哪个data block的ver的flag值以及加密需要被保存的数据时生成的tag数据。
  data block区域保存的是加密需要保存的数据的密文数据。
  其中tee_fs_htree_image中的和imeta是按照meta data的方式加密对应的数据获得,tee_fs_htree_node_imaget中的ag跟data block中的数据则是按照block data encryption获得。
2. meta data加密  tee_fs_htree_image区域中的数据按照meta date方式加密生产,该加密的过程如下图所示:

  上述加密操作过程中相关元素说明如下:
FEK: 安全文件和dirf.db文件在执行加密操作时使用的key,该值在文件创建的时候使用随机数的方式生成,对已经创建好的文件进行操作时,该值会从tee_fs_htree_image中的enc_fek成员中使用TSK解密获得。
TSK: TA Applicant storage key, 使用Ssk和UUID执行HMAC计算得到
AES_ECB: 将FEK使用TSK进行AES的ECB模式进行加密操作生成enc_fek
Encrypted FEK: 使用TSK加密FEK得到,保存在tee_fs_htree_image的enc_fek中,最终会被写入到安全文件或者dirf.db文件头的head中
Meta IV: 使用secure storage创建文件或者将tee_fs_htree_image写入到文件中是都会被随机生成,最终会被写入到安全文件或者dirf.db文件头的head中
Meta Data: /data/tee目录下每个文件中存放的tee_fs_htree_node_Image的个数相关的数据
AES_GCM: 将enc_fek+meta iv+meta data使用FEK和meta IV进行AES的GCM模式进行加密操作生成Tag和Encryption Meta Data数据
Tag: 加密enc_fek+meta iv+meta data时生成的tag值,数据会被保存在tee_fs_htree_image中的tag成员中
Encryptoed Meta Data: 加密enc_fek+meta iv+meta data时生成的imeta值,数据会被保存在tee_fs_htree_image中的imeta成员中
3. block data encryption加密  data block和tee_fs_htree_node_image中的数据按照block data encryption的方式加密数据块生成,block data encryption方式的加密过程如下:

  上述加密操作过程中相关元素说明如下:
Encrypted FEK: 使用TSK加密FEK得到,保存在tee_fs_htree_image的enc_fek中,最终会被写入到安全文件或者dirf.db文件头的head中
TSK: TA Applicant storage key, 使用Ssk和UUID执行HMAC计算得到
AES_ECB: 将Encrypted FEK使用TSK进行AES的ECB模式进行解密操作生成fek
FEK: 解密Encrypted FEK之后生成的fek,用于加密需要被保存的数据block
Block IV: 每次加密数据区域中每个block是都会随机生成,然后被保存到tee_fs_htree_node_image变量的iv成员中
Block Data: 将需要被保存的数据更新到对应的block的数据的正确位置之后生成的新的block的完成明文数据
AES_GCM: 将Block IV+Block data使用FEK和Block IV进行AES的GCM模式进行加密操作生成Tag和Encryption Block Data数据
Tag: 加密Block IV+Block data时生成的tag值,数据会被保存在tee_fs_htree_node_image中的tag成员中
Encryption Block Data: 加密Block IV+Block data时生成的Encryption Block Data值,数据会被保存在文件中的数据区域对应的block中。

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|TEE and Virtualization

GMT+8, 2019-3-19 00:25 , Processed in 0.087480 second(s), 19 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表