安全存储中的安全文件和dirf.db文件中的数据内容都是按照一定的格式保存的,主要由三部分组成:
• tee_fs_htree_image
• tee_fs_htree_node_image
• 数据区域块
tee_fs_htree_image和tee_fs_htree_node_image结构体中保存的是安全文件操作时使用到的重要数据的密文数据,
tee_fs_htree_image区域中的数据是对元数据经加密重要数据后生成的。
而数据区域块和tee_fs_htree_node_image中的数据则是对数据块数据经加密后获得的。
5.1、各种类型数据的组成及作用
tee_fs_htree_image
tee_fs_htree_image主要保存加密头部的IV值、加密安全文件的FEK使用的enc_fek以及加密之后生成的tag、imeta及标记两个tee_fs_htree_image哪个为最新的counter值。
tee_fs_htree_image中的imeta是按照元数据的方式经加密对应的数据获得
tee_fs_htree_node_image
tee_fs_htree_node_image保存节点的哈希值、加密数据块区域使用的IV值、标记使用哪个data
block的ver的flag值以及加密需要被保存的数据时生成的tag数据。
tee_fs_htree_node_imaget中的tag跟数据块中的数据则是按照数据块加密策略经加密后获得。
数据块区域
数据块区域保存的是需要被保存的数据的密文数据。
5.2、元数据的加密
tee_fs_htree_image区域中的数据是按照元数据方式经加密生成的,该加密过程如图所示。
上述加密操作过程中相关元素说明如下:
•FEK:安全文件和dirf.db文件在执行加密操作时使用的密钥,该值在文件创建时使用随机数的方式生成。对已经创建好的文件进行操作时,该值会从tee_fs_htree_image的enc_fek成员中使用TSK解密获得;
• TSK:使用SSK和UUID执行HMAC计算得到;
• AES_ECB:将FEK使用TSK经AES的ECB模式加密操作后生成enc_fek;
• Encrypted FEK:使用TSK加密FEK得到,保存在tee_fs_htree_image的enc_fek中,最终会被写入安全文件或者dirf.db文件头的头部中;
• Meta
IV:使用安全存储创建文件或将tee_fs_htree_image写入文件中都会被随机生成,最终会被写入安全文件或dirf.db文件头的头部中;
• 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成员中。
5.3、数据块区域的加密策略
数据块区域和tee_fs_htree_node_image中的数据是按照数据块区域的加密策略经加密明文数据生成的,数据块区域加密策略的加密过程如图所示。
上述加密操作过程中相关元素说明如下:
• Encrypted FEK:使用TSK加密FEK得到,保存在tee_fs_htree_image的enc_fek中,最终会被写入安全文件或者dirf.db文件头的头部中;
• TSK:使用SSK和UUID执行HMAC计算得到;
• AES_ECB:将Encrypted FEK使用TSK进行ECB模式的AES解密操作生成FEK;
• FEK:解密Encrypted FEK之后生成的FEK,用于加密需要被保存的数据块;
• Block IV:每次加密数据区域中每个数据块是都会随机生成,然后被保存tee_fs_htree_node_image变量的IV成员中;
• Block Data:将需要被保存的数据更新到对应的数据块区域,然后重新加密后生成新的数据块的密文数据;
全部0条评论
快来发表一下你的评论吧 !