精品国产人成在线_亚洲高清无码在线观看_国产在线视频国产永久2021_国产AV综合第一页一个的一区免费影院黑人_最近中文字幕MV高清在线视频

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

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

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

安全文件、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
收藏 人收藏

    評論

    相關推薦

    TEE解決了什么問題?

    一、引言近年來,可信執行的概念在物聯網安全領域也逐漸流傳。可信執行環境(TEE,Trusted Execution Environment)在智能手機中的應用非常廣泛,如OP-TEE[1
    發表于 02-16 06:03

    請問Beal環境下編譯OP-TEE后生成FIP需要哪些文件

    stm32mp157d-***-bl32.dtb fip.bin但是當我使用 OP-TEE 時,我使用以下命令:fiptool 創建 --tos-fw tee
    發表于 12-05 07:06

    請問HSE op-tee是什么關系?

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

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

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

    OP-TEE安全驅動的框架

    OP-TEE中的安全驅動是OP-TEE操作安全設備的載體。 TA通過調用某個安全驅動的接口就可實現對特定
    的頭像 發表于 10-30 16:04 ?794次閱讀
    <b class='flag-5'>OP-TEE</b>中<b class='flag-5'>安全</b>驅動的框架

    安全驅動示例代碼和實現

    的mk文件)和common.mk文件,同時也需要將安全驅動集成到OP-TEE的內核中。 然后編譯整體OP-TEE后就能夠使用該份示例代碼來驗
    的頭像 發表于 10-30 16:07 ?612次閱讀
    <b class='flag-5'>安全</b>驅動示例代碼和實現

    OP-TEE的內核初始化過程

    1 OP-TEE OS的入口函數 ? OP-TEE鏡像的入口函數是在編譯OP-TEE OS時通過鏈接文件來確定的, ? OP-TEE在編譯時
    的頭像 發表于 11-02 17:57 ?1341次閱讀
    <b class='flag-5'>OP-TEE</b>的內核初始化過程

    OP-TEE的內核初始化函數調用

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

    OP-TEE服務項的啟動

    OP-TEE服務項的啟動分為: service_init以及service_init_late ,需要被啟動的服務項通過使用這兩個宏,在編譯時,相關服務的內容將會被保存到initcall1
    的頭像 發表于 11-07 15:04 ?687次閱讀

    ARM64位與ARM32位OP-TEE啟動過程的差異

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

    OP-TEE安全存儲的簡介

    時,OP-TEE會對需要被保存的數據進行加密,且每次更新安全文件時所用的加密密鑰都會使用隨機數重新生成,用戶只要調用GP標準中定義的安全存儲相關接口就能使用
    的頭像 發表于 11-21 11:33 ?990次閱讀
    <b class='flag-5'>OP-TEE</b>的<b class='flag-5'>安全</b><b class='flag-5'>存儲</b>的簡介

    安全存儲密鑰是什么

    安全存儲密鑰 安全存儲密鑰(Secure Storage Key, SSK)在每臺設備中的值都不同。 OP-TEE啟動時會使用 芯片ID和H
    的頭像 發表于 11-21 11:37 ?714次閱讀

    安全存儲功能中使用的重要結構體

    。 ? tee_fs_htree_node_image:用于保存文件的節點信息,通過節點可找到對應文件的頭部或數據塊信息; ? tee_fs_htree_image:用于保存
    的頭像 發表于 11-21 14:36 ?474次閱讀
    <b class='flag-5'>安全</b><b class='flag-5'>存儲</b>功能中使用的重要結構體

    安全存儲文件的創建

    的dirf.db文件安全文件具有相同的格式。 所有對/data/tee目錄下的文件進行的操作都是通過T
    的頭像 發表于 11-21 15:02 ?532次閱讀
    <b class='flag-5'>安全</b><b class='flag-5'>存儲</b><b class='flag-5'>文件</b>的創建

    安全文件中數據的加解密

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