安全文件、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目錄下的文件編號
};
-
數據庫
+關注
關注
7文章
3765瀏覽量
64274 -
文件
+關注
關注
1文章
561瀏覽量
24697 -
數據格式
+關注
關注
0文章
29瀏覽量
8886
發布評論請先 登錄
相關推薦
評論