色哟哟视频在线观看-色哟哟视频在线-色哟哟欧美15最新在线-色哟哟免费在线观看-国产l精品国产亚洲区在线观看-国产l精品国产亚洲区久久

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

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

3天內不再提示

OP-TEE服務項的啟動

麥辣雞腿堡 ? 來源:TrustZone ? 作者:TrustZone ? 2023-11-07 15:04 ? 次閱讀

OP-TEE服務項的啟動分為: service_init以及service_init_late ,需要被啟動的服務項通過使用這兩個宏,在編譯時,相關服務的內容將會被保存到initcall1和initcall2中。

1. service_init宏

在OP-TEE使用中使用service_init宏定義的服務項如下:

service_init(register_supplicant_user_ta);
        service_init(verify_pseudo_tas_conformance);
        service_init(tee_cryp_init);
        service_init(tee_se_manager_init);

如果開發者有實際需求,可以將自己希望添加的服務項功能按照相同的方式添加到系統中。

在當前的OP-TEE中默認是啟動上述四個服務,分別定義在以下文件:

register_supplicant_user_ta: core/arch/arm/kernel/ree_fs_ta.c
        verify_pseudo_tas_conformance: core/arch/arm/kernel/pseudo_ta
        tee_cryp_init: core/tee/tee_cryp_utl.c
        tee_se_manager_init: core/tee/se/manager.c

register_supplicant_user_ta部分:

該操作主要是注冊OP-TEE加載REE側的TA鏡像時需要使用的操作接口 ,當REE側執行open session操作時,TEE側會根據UUID的值在REE側的文件系統中查找該文件,然后通過RPC請求通知tee_supplicant從REE的文件系統中讀取與UUID對應的TA鏡像文件的內容并傳遞到TEE側。

verify_pseudo_tas_conformance部分:

該函數主要是用來校驗OP-TEE中靜態TA的合法性,需要檢查OP-TEE OS中靜態TA的UUID、函數指針以及相關的flag。該段代碼如下:

static TEE_Result verify_pseudo_tas_conformance(void)
        {
            //獲取存放psedo TAs的head info的段起始地址
            const struct pseudo_ta_headstart = &__start_ta_head_section;
            //獲取存放psedo TAs的head info的段末尾地址
            const struct pseudo_ta_headend = &__stop_ta_head_section;
            const struct pseudo_ta_headpta;    //定義一個指向TA head的變量指針
            for (pta = start; pta < end; pta++) {
                const struct pseudo_ta_headpta2;
            /* 檢查psedo TAs的head info中包含的UUID信息是否有相同的 */
                for (pta2 = pta + 1; pta2 < end; pta2++)
                    if (! memcmp(&pta- >uuid, &pta2- >uuid, sizeof(TEE_UUID)))
                            goto err;
                /* 檢查invoke函數指針是否為空和相關的flag是否合法 */
                    if (! pta- >name ||
                        (pta- >flags & PTA_MANDATORY_FLAGS) ! = PTA_MANDATORY_FLAGS ||
                        pta- >flags & ~PTA_ALLOWED_FLAGS ||
                        !pta- >invoke_command_entry_point)
                        goto err;
                }
                return TEE_SUCCESS;
            err:
                DMSG("pseudo TA error at %p", (void *)pta);
                panic("pta");
            }

OP-TEE OS鏡像文件中的__start_ta_head_section與__stop_ta_head_section之間保存的是OP-TEE所有靜態TA的內容,其值的定義見core/arch/arm/kernel/kern.ld.S文件,分別表示ta_head_section段的起始地址和末端地址。

在編譯OP-TEE的靜態TA時,使用pseudo_ta_register宏來告知編譯器將靜態TA的內容保存到ta_head_section段中,該宏定義在core/arch/arm/include/kernel/pseudo_ta.h文件中,內容如下:

#define pseudo_ta_register(...) static const struct pseudo_ta_head __head 
                    __used __section("ta_head_section") = { __VA_ARGS__ }

共有六個靜態TA在OP-TEE編譯時會被打包進OP-TEE的鏡像文件中,分別如下:

gprof: core/arch/arm/pta/gprof.c
        interrupt_tests.ta: core/arch/arm/pta/Iiterrupt_tests.c
        stats.ta: core/arch/arm/pta/stats.c
        se_api_self_tests.ta: core/arch/arm/pta/se_api_self_tests.c
        socket: core/arch/arm/tee/pta_socket.c
        invoke_tests.pta: core/arch/arm/pta/pta_invoke_test.c

tee_cryp_init部分:

該部分主要完成OP-TEE提供的密碼學接口功能的初始化操作,調用crypto_ops結構體中的init進行初始化操作,該結構體變量定義在core/lib/libtomcrypt/src/tee_ltc_provider.c文件中,變量中定義了各種算法的操作函數指針。

完成注冊后,TA就可以通過調用該變量中的對應函數指針來實現OP-TEE中各種密碼學算法接口的調用。

tee_se_manager_init部分:

該部分主要完成對SE模塊的管理,為上層提供對SE模塊的操作接口。

2. service_init_late宏

service_init_late宏定義的內容將會在編譯時被鏈接到OP-TEE鏡像文件的initcall2段中 , OP-TEE中使用該宏來定義OP-TEE中使用的密鑰管理操作 ,在core/tee/tee_fs_key_manager.c文件中,使用該宏來將tee_fs_key_manager函數保存到initcall2段中,

在OP-TEE啟動時被調用,用來生成或讀取OP-TEE在使用時會使用到的key,該函數內容如下:

static TEE_Result tee_fs_init_key_manager(void)
        {
            int res = TEE_SUCCESS;
            struct tee_hw_unique_key huk;
            uint8_t chip_id[TEE_FS_KM_CHIP_ID_LENGTH];
            uint8_t message[sizeof(chip_id) + sizeof(string_for_ssk_gen)];
            /* 獲取機器唯一的key作為salt值 */
            tee_otp_get_hw_unique_key(&huk);
            /* 獲取chip ID值 */
            tee_otp_get_die_id(chip_id, sizeof(chip_id));
            /* 將unique key和chip id存放到message變量中 */
            memcpy(message, chip_id, sizeof(chip_id));
            memcpy(message + sizeof(chip_id), string_for_ssk_gen,
                    sizeof(string_for_ssk_gen));
            /*  調用HMAC算法,以獲取到的message作為參數傳入來計算出一串字符串作為key存放到tee_
            fs_ssk變量中的key成員中 */
            res = do_hmac(tee_fs_ssk, key, sizeof(tee_fs_ssk.key),
                    huk.data, sizeof(huk.data),
                    message, sizeof(message));
            if (res == TEE_SUCCESS)
                tee_fs_ssk.is_init = 1;
            return res;
        }

這些key將會在使用安全存儲功能時用到,用于生成加密、解密安全文件的FEK,其中tee_otp_get_hw_unique_key函數可根據不同的平臺進行修改 ,只要保證讀取到的值的唯一性且安全即可,當前一般做法是讀取一次性編程區域(One Time Programmable, OTP)或efuse中的值,該值將在芯片生產或者工廠整機生產時燒錄到OTP中,當然也有其他的實現方式。

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 編譯
    +關注

    關注

    0

    文章

    659

    瀏覽量

    32890
  • 宏定義
    +關注

    關注

    0

    文章

    50

    瀏覽量

    9028
收藏 人收藏

    評論

    相關推薦

    TEE解決了什么問題?

    一、引言近年來,可信執行的概念在物聯網安全領域也逐漸流傳??尚艌绦协h境(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

    如何將大量電源管理和計時工作從ATF轉移到OP-TEE上呢

    你好!據我了解,ST 正在將大量電源管理和計時工作從 ATF 轉移到 OP-TEE。為了準備這次轉變,我和我的合作開發人員已經開始嘗試在 STM32MP157F-DK2 上構建和運行以下軟件
    發表于 12-07 06:01

    如何在不使用op-tee的情況下進行編譯?

    我按照本指南使用自定義 DTS 文件(按步驟操作)并出現以下錯誤,如何在不使用 op-tee 的情況下進行編譯?ERROR: optee-os-stm32mp-3.12.0.r1-r0
    發表于 12-28 10:01

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

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

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

    我們已經設置了一個帶有 HABv4 引導鏈的 i.MX6UL 板。SPL --> U-boot --> OP-TEE --> LinuxOP-TEE 和 Linux 內核來自
    發表于 04-17 07:31

    用于1028A系列的Yocto Layerscape安全啟動是怎么操作的?

    我目前正在嘗試熟悉 Layerscape 處理器上的安全啟動實現。最近幾天我一直在閱讀文檔但我仍然不清楚一切是如何工作的。 據我了解,這些是啟動階段: BL1:BootROM 代碼 BL2:預引導加載程序 BL31:EL3 運行時固件 BL32:
    發表于 05-31 08:19

    物聯網終端應用TEE的一些思考

    一、引言近年來,可信執行的概念在物聯網安全領域也逐漸流傳。可信執行環境(TEE,Trusted Execution Environment)在智能手機中的應用非常廣泛,如OP-TEE[1
    發表于 12-17 18:21 ?12次下載
    物聯網終端應用<b class='flag-5'>TEE</b>的一些思考

    OP-TEE中安全驅動的框架

    linux kernel與驅動的關系,那真的還是蠻簡單好理解的。但是我不知道~嚶嚶嚶) 系統服務層并非必需的,主要是為方便管理和上層使用。例如OP-TEE提供了各種各樣的密碼學算法,每一種算法的實現可通過不同的硬件引擎來完成。 為統一管理,可將這些硬件引擎驅動提供的操
    的頭像 發表于 10-30 16:04 ?839次閱讀
    <b class='flag-5'>OP-TEE</b>中安全驅動的框架

    OP-TEE的內核初始化過程

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

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

    generic_boot_init_primary函數內容 generic_boot_init_primary函數是OP-TEE建立系統運行環境的入口函數,該函數會進行建立線程運行空間、初始化
    的頭像 發表于 11-02 18:18 ?766次閱讀
    <b class='flag-5'>OP-TEE</b>的內核初始化函數調用

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

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

    ATF中bl32的啟動方法

    ATF中bl32的啟動 bl31中的runtime_svc_init函數會初始化OP-TEE對應的服務,通過調用該服務的初始化函數來完成
    的頭像 發表于 11-07 16:32 ?647次閱讀
    ATF中bl32的<b class='flag-5'>啟動</b>方法

    OP-TEE的安全存儲的簡介

    OP-TEE的安全存儲的簡介 OP-TEE的安全存儲功能是OP-TEE為用戶提供的安全存儲機制。用戶可使用安全存儲功能來保存敏感數據、密鑰等信息。 使用OP-TEE安全存儲功能保存數據
    的頭像 發表于 11-21 11:33 ?1076次閱讀
    <b class='flag-5'>OP-TEE</b>的安全存儲的簡介

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

    安全文件、dirf.db文件的數據格式和操作過程 OP-TEE的安全存儲功能可滿足用戶保存敏感數據的需求,需要被保存的數據會被加 密保存到文件系統或RPMB分區中 。 當選擇將數據保存到文件系統中
    的頭像 發表于 11-21 11:49 ?835次閱讀
    <b class='flag-5'>OP-TEE</b>安全存儲安全文件的格式
    主站蜘蛛池模板: 国产精品成人A蜜柚在线观看 | 97无码欧美熟妇人妻蜜桃天美| 亚洲精品久久久无码| 小黄鸭YELLOWDUCK7596| 午夜国产精品免费观看| 性生大片免费看| 中文字幕一区二区三区在线不卡 | 99国产精品久久| xxxx69动漫| 国产成人v视频在线观看| 国产午夜亚洲精品区| 久久精品中文騷妇女内射| 全黄h全肉细节文在线观看| 熟女强奷系列中文字幕| 阴茎插入阴道| 东京热一本无码av| 久久亚洲午夜牛牛影视| 欧美亚洲精品真实在线| 亚洲成人在线免费观看| 45分钟做受片免费观看| 都市妖奇谈有声| 精品99久久久久成人网站| 日本久久精品毛片一区随边看| 亚洲AV美女成人网站P站| 菠萝菠萝蜜免费播放高清| 精品久久久久中文字幕日本 | 草莓国产视频免费观看| 久久国产精品高清一区二区三区 | A片毛片免费视频在线看| 精品久久香蕉国产线看观看麻豆| 日韩欧美中文字幕一区| 99久视频只有精品2019| 久久内在线视频精品mp4| 小xav导航| 成人国内精品久久久久影| 美女脱18以下禁止看免费| 亚洲精品久久7777777| 国产精品日本不卡一区二区| 欧美日韩在线亚洲一| 把她带到密室调教性奴| 欧洲美女高清一级毛片|