欧美性猛交xxxx免费看_牛牛在线视频国产免费_天堂草原电视剧在线观看免费_国产粉嫩高清在线观看_国产欧美日本亚洲精品一5区

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服務(wù)項(xiàng)的啟動(dòng)

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

OP-TEE服務(wù)項(xiàng)的啟動(dòng)分為: service_init以及service_init_late ,需要被啟動(dòng)的服務(wù)項(xiàng)通過(guò)使用這兩個(gè)宏,在編譯時(shí),相關(guān)服務(wù)的內(nèi)容將會(huì)被保存到initcall1和initcall2中。

1. service_init宏

在OP-TEE使用中使用service_init宏定義的服務(wù)項(xiàng)如下:

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

如果開發(fā)者有實(shí)際需求,可以將自己希望添加的服務(wù)項(xiàng)功能按照相同的方式添加到系統(tǒng)中。

在當(dāng)前的OP-TEE中默認(rèn)是啟動(dòng)上述四個(gè)服務(wù),分別定義在以下文件:

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部分:

該操作主要是注冊(cè)O(shè)P-TEE加載REE側(cè)的TA鏡像時(shí)需要使用的操作接口 ,當(dāng)REE側(cè)執(zhí)行open session操作時(shí),TEE側(cè)會(huì)根據(jù)UUID的值在REE側(cè)的文件系統(tǒng)中查找該文件,然后通過(guò)RPC請(qǐng)求通知tee_supplicant從REE的文件系統(tǒng)中讀取與UUID對(duì)應(yīng)的TA鏡像文件的內(nèi)容并傳遞到TEE側(cè)。

verify_pseudo_tas_conformance部分:

該函數(shù)主要是用來(lái)校驗(yàn)OP-TEE中靜態(tài)TA的合法性,需要檢查OP-TEE OS中靜態(tài)TA的UUID、函數(shù)指針以及相關(guān)的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;    //定義一個(gè)指向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函數(shù)指針是否為空和相關(guān)的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所有靜態(tài)TA的內(nèi)容,其值的定義見core/arch/arm/kernel/kern.ld.S文件,分別表示ta_head_section段的起始地址和末端地址。

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

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

共有六個(gè)靜態(tài)TA在OP-TEE編譯時(shí)會(huì)被打包進(jìn)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提供的密碼學(xué)接口功能的初始化操作,調(diào)用crypto_ops結(jié)構(gòu)體中的init進(jìn)行初始化操作,該結(jié)構(gòu)體變量定義在core/lib/libtomcrypt/src/tee_ltc_provider.c文件中,變量中定義了各種算法的操作函數(shù)指針。

完成注冊(cè)后,TA就可以通過(guò)調(diào)用該變量中的對(duì)應(yīng)函數(shù)指針來(lái)實(shí)現(xiàn)OP-TEE中各種密碼學(xué)算法接口的調(diào)用。

tee_se_manager_init部分:

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

2. service_init_late宏

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

在OP-TEE啟動(dòng)時(shí)被調(diào)用,用來(lái)生成或讀取OP-TEE在使用時(shí)會(huì)使用到的key,該函數(shù)內(nèi)容如下:

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)];
            /* 獲取機(jī)器唯一的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));
            /*  調(diào)用HMAC算法,以獲取到的message作為參數(shù)傳入來(lái)計(jì)算出一串字符串作為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將會(huì)在使用安全存儲(chǔ)功能時(shí)用到,用于生成加密、解密安全文件的FEK,其中tee_otp_get_hw_unique_key函數(shù)可根據(jù)不同的平臺(tái)進(jìn)行修改 ,只要保證讀取到的值的唯一性且安全即可,當(dāng)前一般做法是讀取一次性編程區(qū)域(One Time Programmable, OTP)或efuse中的值,該值將在芯片生產(chǎn)或者工廠整機(jī)生產(chǎn)時(shí)燒錄到OTP中,當(dāng)然也有其他的實(shí)現(xiàn)方式。

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 編譯
    +關(guān)注

    關(guān)注

    0

    文章

    662

    瀏覽量

    33070
  • 宏定義
    +關(guān)注

    關(guān)注

    0

    文章

    51

    瀏覽量

    9059
收藏 人收藏

    評(píng)論

    相關(guān)推薦

    TEE解決了什么問(wèn)題?

    一、引言近年來(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)問(wèn)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

    如何將大量電源管理和計(jì)時(shí)工作從ATF轉(zhuǎn)移到OP-TEE上呢

    你好!據(jù)我了解,ST 正在將大量電源管理和計(jì)時(shí)工作從 ATF 轉(zhuǎn)移到 OP-TEE。為了準(zhǔn)備這次轉(zhuǎn)變,我和我的合作開發(fā)人員已經(jīng)開始嘗試在 STM32MP157F-DK2 上構(gòu)建和運(yùn)行以下軟件
    發(fā)表于 12-07 06:01

    如何在不使用op-tee的情況下進(jìn)行編譯?

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

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

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

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

    我們已經(jīng)設(shè)置了一個(gè)帶有 HABv4 引導(dǎo)鏈的 i.MX6UL 板。SPL --> U-boot --> OP-TEE --> LinuxOP-TEE 和 Linux 內(nèi)核來(lái)自
    發(fā)表于 04-17 07:31

    用于1028A系列的Yocto Layerscape安全啟動(dòng)是怎么操作的?

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

    物聯(lián)網(wǎng)終端應(yīng)用TEE的一些思考

    一、引言近年來(lái),可信執(zhí)行的概念在物聯(lián)網(wǎng)安全領(lǐng)域也逐漸流傳??尚艌?zhí)行環(huán)境(TEE,Trusted Execution Environment)在智能手機(jī)中的應(yīng)用非常廣泛,如OP-TEE[1
    發(fā)表于 12-17 18:21 ?12次下載
    物聯(lián)網(wǎng)終端應(yīng)用<b class='flag-5'>TEE</b>的一些思考

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

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

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

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

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

    generic_boot_init_primary函數(shù)內(nèi)容 generic_boot_init_primary函數(shù)是OP-TEE建立系統(tǒng)運(yùn)行環(huán)境的入口函數(shù),該函數(shù)會(huì)進(jìn)行建立線程運(yùn)行空間、初始化
    的頭像 發(fā)表于 11-02 18:18 ?832次閱讀
    <b class='flag-5'>OP-TEE</b>的內(nèi)核初始化函數(shù)調(diào)用

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

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

    ATF中bl32的啟動(dòng)方法

    ATF中bl32的啟動(dòng) bl31中的runtime_svc_init函數(shù)會(huì)初始化OP-TEE對(duì)應(yīng)的服務(wù),通過(guò)調(diào)用該服務(wù)項(xiàng)的初始化函數(shù)來(lái)完成
    的頭像 發(fā)表于 11-07 16:32 ?731次閱讀
    ATF中bl32的<b class='flag-5'>啟動(dòng)</b>方法

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

    OP-TEE的安全存儲(chǔ)的簡(jiǎn)介 OP-TEE的安全存儲(chǔ)功能是OP-TEE為用戶提供的安全存儲(chǔ)機(jī)制。用戶可使用安全存儲(chǔ)功能來(lái)保存敏感數(shù)據(jù)、密鑰等信息。 使用OP-TEE安全存儲(chǔ)功能保存數(shù)據(jù)
    的頭像 發(fā)表于 11-21 11:33 ?1152次閱讀
    <b class='flag-5'>OP-TEE</b>的安全存儲(chǔ)的簡(jiǎn)介

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

    安全文件、dirf.db文件的數(shù)據(jù)格式和操作過(guò)程 OP-TEE的安全存儲(chǔ)功能可滿足用戶保存敏感數(shù)據(jù)的需求,需要被保存的數(shù)據(jù)會(huì)被加 密保存到文件系統(tǒng)或RPMB分區(qū)中 。 當(dāng)選擇將數(shù)據(jù)保存到文件系統(tǒng)中
    的頭像 發(fā)表于 11-21 11:49 ?920次閱讀
    <b class='flag-5'>OP-TEE</b>安全存儲(chǔ)安全文件的格式