0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

OP-TEE安全存儲(chǔ)安全文件的格式

麥辣雞腿堡 ? 來(lái)源:TrustZone ? 作者:Hcoco ? 2023-11-21 11:49 ? 次閱讀

安全文件、dirf.db文件的數(shù)據(jù)格式和操作過程

OP-TEE的安全存儲(chǔ)功能可滿足用戶保存敏感數(shù)據(jù)的需求,需要被保存的數(shù)據(jù)會(huì)被加 密保存到文件系統(tǒng)或RPMB分區(qū)中 。

當(dāng)選擇將數(shù)據(jù)保存到文件系統(tǒng)中時(shí),默認(rèn)情況下,加密后的數(shù)據(jù)會(huì)被保存在/data/tee目錄中。

安全存儲(chǔ)功能使用二叉樹的方式來(lái)保存加密后的文件。

當(dāng)?shù)谝淮问褂冒踩鎯?chǔ)功能創(chuàng)建用于保存敏感數(shù)據(jù)的安全文件時(shí),OP-TEE將會(huì)在/data/tee目錄中生成兩個(gè)文件:dirf.db文件和以數(shù)字命名的文件。

dirf.db文件保存的是整個(gè)安全存儲(chǔ)功能管理的所有文件的目錄信息和節(jié)點(diǎn)信息。 當(dāng)用戶使用某個(gè)已經(jīng)存在的安全文件時(shí),OP-TEE首先會(huì)讀取dirf.db文件中的相關(guān)內(nèi)容,然后根據(jù)需要操作的安全文件名字的哈希值在dirf.db文件中找到對(duì)應(yīng)的文件編號(hào),最終按照這個(gè)編號(hào)實(shí)現(xiàn)對(duì)文件的打開、關(guān)閉、寫入、讀出、重命名、裁剪等操作。(這里為什么要存hash,知道hash值和知道名字,安全性還是不一樣,你知道怎么操作,但是不需要知道操作的本身?)

保存在/data/tee目錄以數(shù)字命名的文件是被安全存儲(chǔ)保護(hù)的用戶文件。

該文件保存的是加密之后的用戶數(shù)據(jù), 加密使用的密鑰則是對(duì)應(yīng)的FEK 。

dirf.db文件和安全文件的格式

使用安全存儲(chǔ)功能生成的文件都會(huì)使用相同的格式被保存,而且dirf.db文件與安全文件的格式也相同。

且dirf.db文件與安全文件的格式也相同。安全文件中的內(nèi)容分為三個(gè)區(qū)域,分別用于保 存文件頭、結(jié)點(diǎn)、數(shù)據(jù),文件的內(nèi)容 ,其格式如圖所示。

圖片

安全文件將整個(gè)空間劃分成相等大小的物理塊,每個(gè)物理塊的大小為4KB,其中文件頭部分存放的是tee_fs_htree_image結(jié)構(gòu)體的內(nèi)容,該結(jié)構(gòu)體定義如下:

struct tee_fs_htree_image {
            //加密iv+enc_fek時(shí)使用的iv值,每次保存head時(shí)會(huì)使用隨機(jī)數(shù)更新
            uint8_t iv[TEE_FS_HTREE_IV_SIZE];
            uint8_t tag[TEE_FS_HTREE_TAG_SIZE];       //加密iv+Enc_fek生成的數(shù)據(jù)的tag部分
            uint8_t enc_fek[TEE_FS_HTREE_FEK_SIZE];  //使用TSK加密一個(gè)安全文件的fek生成的
            //加密iv+Enc_fek生成的數(shù)據(jù)的imeta部分
            uint8_t imeta[sizeof(struct tee_fs_htree_imeta)];
            uint32_t counter;   //用于計(jì)算在保存tee_fs_htree_image時(shí)是存到ver0還是ver1
        };

節(jié)點(diǎn)部分存放的是tee_fs_htree_node_image結(jié)構(gòu)體的內(nèi)容,在保存數(shù)據(jù)到每個(gè)物理塊之前都會(huì)使用FEK和對(duì)應(yīng)的IV值對(duì)需要被保存的數(shù)據(jù)進(jìn)行加密,

而在打開讀取文件時(shí)則會(huì)首先從文件頭中讀取enc_fek的值,然后使用 TSK做解密操作來(lái)獲取FEK ,最后從需要被解密的物理塊對(duì)應(yīng)的節(jié)點(diǎn)中獲取到IV值。 tee_fs_htree_node_image的結(jié)構(gòu)體的定義如下:

struct tee_fs_htree_node_image {
            //保存節(jié)點(diǎn)的哈希值,用于在操作文件時(shí)找到該文件的head
            uint8_t hash[TEE_FS_HTREE_HASH_SIZE];
            //加密安全文件數(shù)據(jù)區(qū)域中某一個(gè)塊時(shí)使用的iv值,塊數(shù)據(jù)的每次寫入都會(huì)使用隨機(jī)數(shù)更新
              uint8_t iv[TEE_FS_HTREE_IV_SIZE];
              uint8_t tag[TEE_FS_HTREE_TAG_SIZE]; //加密安全數(shù)據(jù)區(qū)域中一個(gè)塊數(shù)據(jù)時(shí)生成的tag
              uint16_t flags;                        //用于計(jì)算使用塊中的那個(gè)ver
          };

數(shù)據(jù)塊 中保存的是密文數(shù)據(jù) ,該密文數(shù)據(jù)是使用該文件對(duì)應(yīng)的FEK塊對(duì)應(yīng)的IV值對(duì)需要被保存的數(shù)據(jù)進(jìn)行加密操作來(lái)生成。

dirf.db文件的數(shù)據(jù)塊區(qū)域保存的是所 有使用安全存儲(chǔ)功能保存的文件的相關(guān)信息 ,在安全存儲(chǔ)功能中 使用dirfile_entry結(jié)構(gòu)體來(lái)表示每個(gè)安全文件的基本信息 ,該結(jié)構(gòu)體定義如下:

struct dirfile_entry {
            TEE_UUID uuid;                          //創(chuàng)建該安全文件的TA的UUID
            uint8_t oid[TEE_OBJECT_ID_MAX_LEN]; //安全文件的名字(使用安全存儲(chǔ)操作時(shí)的名字)
            uint32_t oidlen; //文件名字的長(zhǎng)度
                                                  //data/tee目錄下安全文件的root node的哈希值
            uint8_t hash[TEE_FS_HTREE_HASH_SIZE];
            uint32_t file_number;                   //保存在/data/tee目錄下的文件編號(hào)
        };
聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 數(shù)據(jù)庫(kù)
    +關(guān)注

    關(guān)注

    7

    文章

    3711

    瀏覽量

    64023
  • 文件
    +關(guān)注

    關(guān)注

    1

    文章

    551

    瀏覽量

    24559
  • 數(shù)據(jù)格式
    +關(guān)注

    關(guān)注

    0

    文章

    28

    瀏覽量

    8872
收藏 人收藏

    評(píng)論

    相關(guān)推薦

    TEE解決了什么問題?

    一、引言近年來(lái),可信執(zhí)行的概念在物聯(lián)網(wǎng)安全領(lǐng)域也逐漸流傳??尚艌?zhí)行環(huán)境(TEE,Trusted Execution Environment)在智能手機(jī)中的應(yīng)用非常廣泛,如OP-TEE[1
    發(fā)表于 02-16 06:03

    請(qǐng)問Beal環(huán)境下編譯OP-TEE后生成FIP需要哪些文件

    stm32mp157d-***-bl32.dtb fip.bin但是當(dāng)我使用 OP-TEE 時(shí),我使用以下命令:fiptool 創(chuàng)建 --tos-fw tee
    發(fā)表于 12-05 07:06

    請(qǐng)問HSE op-tee是什么關(guān)系?

    我有個(gè)問題。S32G同時(shí)支持HSE和op-tee。S32G的安全加解密和證書管理是通過HSE完成的嗎?op-tee 和 HSE 只是其中之一嗎?有沒有相關(guān)的設(shè)計(jì)文檔?謝謝
    發(fā)表于 04-06 06:26

    OP-TEE無(wú)法在鎖定的i.MX6UL上初始化JR怎么解決?

    imx 存儲(chǔ)庫(kù),而 U-boot 來(lái)自主線存儲(chǔ)庫(kù) (2023.1)在我們鎖定設(shè)備之前,這似乎工作正常。鎖定設(shè)備后,我們?cè)?OP-TEE 初始化時(shí)得到以下輸出(啟用了一些額外的跟蹤消息):E/TC:0 0
    發(fā)表于 04-17 07:31

    OP-TEE安全驅(qū)動(dòng)的框架

    OP-TEE中的安全驅(qū)動(dòng)是OP-TEE操作安全設(shè)備的載體。 TA通過調(diào)用某個(gè)安全驅(qū)動(dòng)的接口就可實(shí)現(xiàn)對(duì)特定
    的頭像 發(fā)表于 10-30 16:04 ?687次閱讀
    <b class='flag-5'>OP-TEE</b>中<b class='flag-5'>安全</b>驅(qū)動(dòng)的框架

    安全驅(qū)動(dòng)示例代碼和實(shí)現(xiàn)

    的mk文件)和common.mk文件,同時(shí)也需要將安全驅(qū)動(dòng)集成到OP-TEE的內(nèi)核中。 然后編譯整體OP-TEE后就能夠使用該份示例代碼來(lái)驗(yàn)
    的頭像 發(fā)表于 10-30 16:07 ?526次閱讀
    <b class='flag-5'>安全</b>驅(qū)動(dòng)示例代碼和實(shí)現(xiàn)

    OP-TEE的內(nèi)核初始化過程

    1 OP-TEE OS的入口函數(shù) ? OP-TEE鏡像的入口函數(shù)是在編譯OP-TEE OS時(shí)通過鏈接文件來(lái)確定的, ? OP-TEE在編譯時(shí)
    的頭像 發(fā)表于 11-02 17:57 ?1089次閱讀
    <b class='flag-5'>OP-TEE</b>的內(nèi)核初始化過程

    OP-TEE的內(nèi)核初始化函數(shù)調(diào)用

    用init_primary_helper函數(shù)來(lái)完成系統(tǒng)運(yùn)行環(huán)境的建立 ,如果系統(tǒng)支持ATF,則該函數(shù)會(huì)返回OP-TEE的處理句柄,該處理句柄主要包含 ? 各種安全監(jiān)控模式調(diào)用的處理函數(shù)、 ? 安全世界狀態(tài)(SWS)的中斷 ? 以
    的頭像 發(fā)表于 11-02 18:18 ?575次閱讀
    <b class='flag-5'>OP-TEE</b>的內(nèi)核初始化函數(shù)調(diào)用

    OP-TEE服務(wù)項(xiàng)的啟動(dòng)

    OP-TEE服務(wù)項(xiàng)的啟動(dòng)分為: service_init以及service_init_late ,需要被啟動(dòng)的服務(wù)項(xiàng)通過使用這兩個(gè)宏,在編譯時(shí),相關(guān)服務(wù)的內(nèi)容將會(huì)被保存到initcall1
    的頭像 發(fā)表于 11-07 15:04 ?555次閱讀

    ARM64位與ARM32位OP-TEE啟動(dòng)過程的差異

    ARM32的OP-TEE與ARM64的OP-TEE啟動(dòng)過程大致相同。ARM64的OP-TEE的_start函數(shù)定義在generic_entry_a64.S文件中,而且該函數(shù)不像ARM3
    的頭像 發(fā)表于 11-07 15:12 ?590次閱讀

    OP-TEE安全存儲(chǔ)的簡(jiǎn)介

    時(shí),OP-TEE會(huì)對(duì)需要被保存的數(shù)據(jù)進(jìn)行加密,且每次更新安全文件時(shí)所用的加密密鑰都會(huì)使用隨機(jī)數(shù)重新生成,用戶只要調(diào)用GP標(biāo)準(zhǔn)中定義的安全存儲(chǔ)相關(guān)接口就能使用
    的頭像 發(fā)表于 11-21 11:33 ?814次閱讀
    <b class='flag-5'>OP-TEE</b>的<b class='flag-5'>安全</b><b class='flag-5'>存儲(chǔ)</b>的簡(jiǎn)介

    安全存儲(chǔ)密鑰是什么

    安全存儲(chǔ)密鑰 安全存儲(chǔ)密鑰(Secure Storage Key, SSK)在每臺(tái)設(shè)備中的值都不同。 OP-TEE啟動(dòng)時(shí)會(huì)使用 芯片ID和H
    的頭像 發(fā)表于 11-21 11:37 ?578次閱讀

    安全存儲(chǔ)功能中使用的重要結(jié)構(gòu)體

    。 ? tee_fs_htree_node_image:用于保存文件的節(jié)點(diǎn)信息,通過節(jié)點(diǎn)可找到對(duì)應(yīng)文件的頭部或數(shù)據(jù)塊信息; ? tee_fs_htree_image:用于保存
    的頭像 發(fā)表于 11-21 14:36 ?387次閱讀
    <b class='flag-5'>安全</b><b class='flag-5'>存儲(chǔ)</b>功能中使用的重要結(jié)構(gòu)體

    安全存儲(chǔ)文件的創(chuàng)建

    的dirf.db文件安全文件具有相同的格式。 所有對(duì)/data/tee目錄下的文件進(jìn)行的操作都是通過T
    的頭像 發(fā)表于 11-21 15:02 ?418次閱讀
    <b class='flag-5'>安全</b><b class='flag-5'>存儲(chǔ)</b><b class='flag-5'>文件</b>的創(chuàng)建

    安全文件中數(shù)據(jù)的加解密

    安全存儲(chǔ)中的安全文件和dirf.db文件中的數(shù)據(jù)內(nèi)容都是按照一定的格式保存的,主要由三部分組成: ? t
    的頭像 發(fā)表于 11-21 15:49 ?325次閱讀
    <b class='flag-5'>安全文件</b>中數(shù)據(jù)的加解密