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

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

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

安全設(shè)備的硬件安全隔離 安全驅(qū)動(dòng)該怎么設(shè)計(jì)呢?

冬至子 ? 來(lái)源:TrustZone ? 作者:Hcoco ? 2023-11-14 17:26 ? 次閱讀

這里先來(lái)看看安全驅(qū)動(dòng)怎么設(shè)計(jì)。支持TruztZone技術(shù)的芯片可將某個(gè)特定外部設(shè)備配置成安全設(shè)備,使其只能被處于安全世界狀態(tài)(SWS)的ARM核訪問(wèn)。如果要在OP-TEE中使用安全設(shè)備, 需要在OP-TEE OS中集成該安全設(shè)備的驅(qū)動(dòng)程序 ,TA或OP-TEE OS可使用該安全驅(qū)動(dòng)提供的接口來(lái)使用該安全設(shè)備。

要完成一個(gè)驅(qū)動(dòng)的設(shè)計(jì):向外暴露被調(diào)用的接口,將驅(qū)動(dòng)集成。

在設(shè)計(jì)安全驅(qū)動(dòng)的時(shí)候,先回顧一下,為什么可將某個(gè)特定外部設(shè)備配置成安全設(shè)備?

1、安全設(shè)備的硬件安全隔離

系統(tǒng)的外部設(shè)備一般是通過(guò)APB總線掛接到AXI總線上的,APB總線不支持ARM核對(duì)設(shè)備訪問(wèn)時(shí)進(jìn)行安全檢查的功能,故如果要將某個(gè)外部設(shè)備配置成安全設(shè)備,則需在SOC中添加TZPC組件和AXI-to-APB橋。

image.png

TZPC組件負(fù)責(zé)將某個(gè)特定外部設(shè)備配置成安全設(shè)備,并為該安全設(shè)備提供額外的安全信號(hào), AXI-to-APB橋使用TZPC配置給該外部設(shè)備的安全信號(hào)來(lái)校驗(yàn)ARM核發(fā)送的訪問(wèn)請(qǐng)求中的安全狀態(tài)位(NS bit)是否與之匹配, 如果TZPC給外部設(shè)備提供的信號(hào)為安全信號(hào)而ARM核的訪問(wèn)請(qǐng)求是在正常世界狀態(tài)(NWS)發(fā)起的,則AXI-to-APB總線會(huì)判定訪問(wèn)失敗,從而實(shí)現(xiàn)系統(tǒng)對(duì)該外部設(shè)備的安全隔離。

TZPC組件主要有兩個(gè)作用,一是為TZMA提供安全區(qū)域大小配置信號(hào),用于TZMA來(lái)配置片上SRAMROM安全區(qū)域的大小,另外一個(gè)作用是接入到AXI-to-APB總線上,為外部設(shè)備提供安全信號(hào),將某個(gè)外部設(shè)備配置成安全設(shè)備。TZPC組件的信號(hào)連接圖如圖22-1所示。

image.png

TZPCR0SIZE信號(hào)線將被連接到TZMA組件上,用于TZMA配置片上SRAM、ROM安全區(qū)域的大小,

TZPCDECPROTx信號(hào)線將連接到AXI-to-APB橋上,用于配置某個(gè)外設(shè)是否為安全設(shè)備。

TZPC最多支持將24個(gè)外部設(shè)備設(shè)定為安全設(shè)備,且需將TZPC組件的寄存器地址設(shè)定在安全地址范圍內(nèi)。

TZPC提供了18個(gè)寄存器,這些寄存器用于配置安全信號(hào)。這些寄存器的相關(guān)信息如表22-1所示。

image.png

通過(guò)配置TZPC組件寄存器的值可設(shè)定特定的安全信號(hào)的輸出組合,用于將外部設(shè)備設(shè)定成安全設(shè)備。

TZPC的基地址并不固定,但需確保TZPC的基地址是在安全地址區(qū)域中的。

知道這個(gè)安全驅(qū)動(dòng)硬件是實(shí)現(xiàn)安全驅(qū)動(dòng)的基礎(chǔ),那么下一步就來(lái)看看怎么軟件實(shí)現(xiàn)安全驅(qū)動(dòng)。

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

OP-TEE中的安全驅(qū)動(dòng)是OP-TEE操作安全設(shè)備的載體。

TA通過(guò)調(diào)用某個(gè)安全驅(qū)動(dòng)的接口就可實(shí)現(xiàn)對(duì)特定安全設(shè)備的操作。安全驅(qū)動(dòng)在OP-TEE中的軟件框架如圖22-2所示。

image.png

(其實(shí)這里,你要搞清楚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)提供的操作接口統(tǒng)一集成到一個(gè)系統(tǒng)服務(wù)中,而上層用戶只需調(diào)用系統(tǒng)服務(wù)暴露的接口就可實(shí)現(xiàn)對(duì)硬件引擎的調(diào)用。(可能是通過(guò)輸入的參數(shù)進(jìn)行分發(fā))

下面展開(kāi)講講這個(gè)框架的細(xì)節(jié)。

2.1 系統(tǒng)服務(wù)層

系統(tǒng)服務(wù)層在OP-TEE啟動(dòng)過(guò)程中由initcall段的代碼進(jìn)行初始化和啟動(dòng),一個(gè)系統(tǒng)服務(wù)的初始化函數(shù)則是通過(guò)使用service_init宏來(lái)進(jìn)行定義并在編譯時(shí)鏈接到OP-TEE的鏡像文件中。

在編譯OP-TEE時(shí),該初始化函數(shù)將被保存到OP-TEE鏡像文件的initcall段中。

至于系統(tǒng)服務(wù)的初始化函數(shù)所要執(zhí)行的內(nèi)容則由開(kāi)發(fā)者自行決定,一般是在系統(tǒng)服務(wù)的初始化函數(shù)中進(jìn)行該 服務(wù)的配置 、狀態(tài)量的初始化以及系統(tǒng)服務(wù)提供給上層調(diào)用的 操作接口變量的初始化 ,系統(tǒng)服務(wù)提供的結(jié)構(gòu)體變量會(huì)包含 用于實(shí)現(xiàn)具體功能的函數(shù)指針變量 ,這些函數(shù)指針變量指向的函數(shù)就是安全驅(qū)動(dòng)提供給TA調(diào)用的操作接口。

2.2 驅(qū)動(dòng)層

OP-TEE啟動(dòng)過(guò)程中會(huì)執(zhí)行各安全驅(qū)動(dòng)的初始化 ,驅(qū)動(dòng)的初始化函數(shù)是在OP-TEE執(zhí)行initcall段中的內(nèi)容時(shí)被調(diào)用的,在OP-TEE中通過(guò)使用driver_init宏來(lái)告訴編譯器,在編譯時(shí)將driver_init宏傳入的函數(shù)作為某個(gè)驅(qū)動(dòng)的入口函數(shù)保存在鏡像文件的initcall段中。

安全驅(qū)動(dòng)的初始化主要用來(lái)完成安全設(shè)備的寄存器的配置以及私有數(shù)據(jù)的初始化。

如果某個(gè)安全驅(qū)動(dòng)需要系統(tǒng)服務(wù)的配合,則還需要將驅(qū)動(dòng)提供的操作接口連接到系統(tǒng)服務(wù)中的操作接口變量中。

若該驅(qū)動(dòng)不需以系統(tǒng)服務(wù)的方式向上層提供操作接口,則不用將對(duì)應(yīng)接口暴露給系統(tǒng)服務(wù),而是由TA通過(guò)系統(tǒng)調(diào)用的方式直接調(diào)用安全驅(qū)動(dòng)的接口來(lái)操作安全設(shè)備。

driver_init service_init

2.3 驅(qū)動(dòng)文件在源代碼中的位置

安全驅(qū)動(dòng)需要被編譯到OP-TEE鏡像文件中,OP-TEE中有專門的目錄來(lái)存放驅(qū)動(dòng)和系統(tǒng)服務(wù)的源代碼。

將驅(qū)動(dòng)編譯到OP-TEE鏡像文件之前還需修改對(duì)應(yīng)的sub.mk文件,OP-TEE中保存驅(qū)動(dòng)和系統(tǒng)服務(wù)源代碼的目錄對(duì)應(yīng)關(guān)系如表22-2所示。

image.png

下面開(kāi)始創(chuàng)建一個(gè)實(shí)例吧!

來(lái)看看基于上文的概念,創(chuàng)建一個(gè)安全驅(qū)動(dòng)的流程是什么?

3、來(lái)整個(gè)栗子--安全驅(qū)動(dòng)的開(kāi)發(fā)過(guò)程和示例

在OP-TEE中,若需要使用系統(tǒng)服務(wù)的方式為上層TA提供操作接口,則一個(gè)完整的安全驅(qū)動(dòng)需要實(shí)現(xiàn)TA接口部分、系統(tǒng)調(diào)用部分、系統(tǒng)服務(wù)部分、驅(qū)動(dòng)實(shí)現(xiàn)部分。本節(jié)將結(jié)合實(shí)際的示例介紹這四部分的開(kāi)發(fā)流程。

  • TA接口部分
  • 系統(tǒng)調(diào)用部分
  • 系統(tǒng)服務(wù)部分
  • 驅(qū)動(dòng)實(shí)現(xiàn)部分

如果不使用系統(tǒng)服務(wù),就少了一個(gè)步驟。

3.1 示例代碼獲取和集成

本示例中的驅(qū)動(dòng)只實(shí)現(xiàn)了對(duì)內(nèi)存的讀寫操作,并提供了測(cè)試使用的TA和CA。

讀者可使用如下指令從GitHub上獲取到示例源代碼:

git clone https://GitHub.com/shuaifengyun/opentee_driver.git

下載完代碼后就需要將該TA和CA集成到OP-TEE中,需修改OP-TEE源代碼build目錄下的qemu.mk(開(kāi)發(fā)者板級(jí)對(duì)應(yīng)的mk文件)和common.mk文件,同時(shí)也需要將安全驅(qū)動(dòng)集成到OP-TEE的內(nèi)核中。

然后編譯整體OP-TEE后就能夠使用該份示例代碼來(lái)驗(yàn)證本書提供的安全驅(qū)動(dòng)示例是否運(yùn)行正常。

獲取到示例代碼后將opentee_driver/my_test目錄全部復(fù)制到op-tee的根目錄下,再切換到根目錄的build目錄中,然后使用git apply命令合入補(bǔ)丁文件后就可完成測(cè)試使用的TA和CA集成到OP-TEE,合入全部補(bǔ)丁的操作步驟如下:

1)將示例代碼中的my_test_common_3.0.0.patch文件和my_test_qemu_3.0.0.patch文件復(fù)制到build目錄中,將0001-Integrate-secure-driver-test-into-op-tee.patch文件復(fù)制到optee_os目錄中。

2)切換到build目錄,使用如下命令合入補(bǔ)?。?/p>

git apply my_test_common_3.0.0.patch

3)切換到optee_os目錄,使用如下命令合入安全驅(qū)動(dòng)在內(nèi)核中的補(bǔ)?。?/p>

git am 0001-Integrate-secure-driver-test-into-op-tee.patch

將補(bǔ)丁合入完成后就可使用make -f qemu.mk all編譯整個(gè)工程,然后使用make -f qemu.mk run-only來(lái)啟動(dòng)OP-TEE,在啟動(dòng)的正常世界狀態(tài)的終端執(zhí)行secStorTest命令就能實(shí)現(xiàn)該示例的CA對(duì)TA的調(diào)用。示例代碼的運(yùn)行效果如圖22-3所示。

image.png

3.2 驅(qū)動(dòng)實(shí)現(xiàn)

開(kāi)發(fā)一個(gè)安全驅(qū)動(dòng)時(shí),需要在optee_os/core/drivers目錄中建立該安全驅(qū)動(dòng)的源文件,在源文件中實(shí)現(xiàn)驅(qū)動(dòng)的初始化函數(shù)、操作設(shè)備的接口函數(shù)(read、write、ioctl),具體的接口函數(shù)由開(kāi)發(fā)者自行定義。

若該驅(qū)動(dòng)需要在系統(tǒng)啟動(dòng)過(guò)程中執(zhí)行一些初始化操作則可使用driver_init宏進(jìn)行定義, 編譯完成后需要被執(zhí)行的內(nèi)容將會(huì)被保存到鏡像文件的initcall段中, 這些使用driver_init宏定義的內(nèi)容將在OP-TEE啟動(dòng)時(shí)被調(diào)用。 (相當(dāng)于提前為驅(qū)動(dòng)的調(diào)用準(zhǔn)備了環(huán)境與初始條件)

示例源代碼中的driver_test.c文件需要放在optee_os/core/drivers目錄中,然后修改optee_os/core/drivers目錄下的sub.mk文件,將driver_test.c文件添加編譯系統(tǒng)中。在sub. mk文件中添加如下內(nèi)容:

osrcs-y += driver_test.c

若需要使用宏的方式來(lái)控制該驅(qū)動(dòng)的編譯,可將添加到sub.mk的內(nèi)容修改成“srcs-$(CFG_XXX) += driver_test.c”,然后在optee_os/mk/config.mk文件中定義CFG_XXX變量,通過(guò)將CFG_XXX變量賦值成y或n來(lái)控制該驅(qū)動(dòng)是否需要被編譯進(jìn)系統(tǒng)。 (這個(gè)還是蠻有用的)

該驅(qū)動(dòng)對(duì)應(yīng)的頭文件driver_test.h文件需保存到optee_os/core/inlcude/drivers目錄中,該文件中聲明了該驅(qū)動(dòng)暴露給外界調(diào)用的接口和相關(guān)結(jié)構(gòu)體。

實(shí)現(xiàn)完驅(qū)動(dòng)接口實(shí)現(xiàn),現(xiàn)在來(lái)實(shí)現(xiàn)添加系統(tǒng)服務(wù)

3.3 添加系統(tǒng)服務(wù)

系統(tǒng)服務(wù)的添加不是必需的,為方便對(duì)底層驅(qū)動(dòng)的管理和對(duì)外部設(shè)備的擴(kuò)展,可將安全驅(qū)動(dòng)的接口接入到某個(gè)系統(tǒng)服務(wù)中,通過(guò)系統(tǒng)服務(wù)向外界暴露調(diào)用接口,以便上層TA可以使用該安全驅(qū)動(dòng)。

在本示例中建立的系統(tǒng)服務(wù)的源代碼為tee_test.c文件,需將該文件保存到optee_os/core/tee目錄中,同時(shí)將tee_test.h文件保存到optee_os/core/include/tee目錄中,然后修改optee_os/core/tee目錄中的sub.mk文件,添加“srcs-y += tee_test.c”,將tee_test.c集成到編譯系統(tǒng)中。

也可使用宏來(lái)控制該系統(tǒng)服務(wù)的編譯,其實(shí)現(xiàn)方法與上一節(jié)相同。

在tee_test.c文件中使用service_init宏來(lái)定義該系統(tǒng)服務(wù)的初始化函數(shù)(tee_test_init),該初始化函數(shù)將會(huì)被編譯到OP-TEE的初始化段中,OP-TEE啟動(dòng)時(shí)將會(huì)執(zhí)行服務(wù)段中包含的函數(shù),調(diào)用tee_test_init函數(shù)初始化該系統(tǒng)服務(wù)。

到這里明白了driver_init和service_init的差異。一個(gè)是直接注冊(cè)驅(qū)動(dòng)的系統(tǒng)調(diào)用,一個(gè)注冊(cè)到系統(tǒng)服務(wù)。

3.4 添加系統(tǒng)調(diào)用

上層的TA運(yùn)行于OP-TEE的用戶空間,如果上層的TA需要調(diào)用安全驅(qū)動(dòng),則需通過(guò)調(diào)用系統(tǒng)調(diào)用接口的方式來(lái)調(diào)用安全驅(qū)動(dòng)提供的操作接口。

若要在TA中使用本示例中的安全驅(qū)動(dòng),則還需在OP-TEE中增加該驅(qū)動(dòng)對(duì)應(yīng)的系統(tǒng)調(diào)用。包括用戶空間接口的定義和內(nèi)核空間接口的定義,關(guān)于OP-TEE中系統(tǒng)調(diào)用的實(shí)現(xiàn)原理可參閱第16章。(小的馬上后面補(bǔ)上)

image.png

1.用戶空間代碼的修改

修改optee_os/lib/libutee/arch/arm/utee_syscalls_asm.S文件,添加如下內(nèi)容:

UTEE_SYSCALL utee_testDriver_write, TEE_SCN_TESTDRIVER_WRITE, 3

utee_testDriver_xxx是在TA中調(diào)用該驅(qū)動(dòng)時(shí)使用的函數(shù),

TEE_SCN_TESTDRIVER_XXX是該系統(tǒng)調(diào)用對(duì)應(yīng)的索引值。

上層TA調(diào)用utee_testDriver_xxx函數(shù)后會(huì)進(jìn)入OP-TEE的內(nèi)核空間,系統(tǒng)通過(guò)查找TEE_SCN_TESTDRIVER_XXX對(duì)應(yīng)的接口來(lái)找到該功能在OP-TEE內(nèi)核中的實(shí)現(xiàn)。

最后的數(shù)字表示調(diào)用該接口時(shí)需要代入的參數(shù)的個(gè)數(shù)。

修改optee_os/lib/libutee/include/utee_syscalls.h文件,添加如下內(nèi)容,申明上述三個(gè)函數(shù)接口。在TA的源代碼中包含該頭文件后就可調(diào)用這三個(gè)接口來(lái)對(duì)該安全驅(qū)動(dòng)進(jìn)行調(diào)用。

TEE_Result utee_testDriver_write(void *buf, size_t blen, size_t offset);

修改optee_os/lib/libutee/include/tee_syscall_numbers.h文件,添加上述三個(gè)系統(tǒng)調(diào)用接口的索引值,并修改TEE_SCN_MAX的值,需要修改和添加的內(nèi)容如下:

#define TEE_SCN_TESTDRIVER_WRITE              71
2.內(nèi)核空間代碼的修改

修改optee_os/core/arch/arm/tee/arch_svc.c文件中系統(tǒng)調(diào)用數(shù)組變量tee_svc_syscall_table的內(nèi)容,將上述系統(tǒng)調(diào)用對(duì)應(yīng)的內(nèi)核層接口添加到該數(shù)組中,并包含申明這三個(gè)接口的頭文件,在該文件中添加的內(nèi)容如下:

SYSCALL_ENTRY(syscall_testDriver_write),

上述三個(gè)函數(shù)的具體實(shí)現(xiàn)在tee_test.c文件中,讀者可自行查閱這三個(gè)接口函數(shù)的實(shí)現(xiàn)。

3.5 測(cè)試使用的TA和CA

將該示例的測(cè)試TA和CA添加到OP-TEE中需要修改讀者開(kāi)發(fā)環(huán)境對(duì)應(yīng)的mk文件中。以使用QEMU方式運(yùn)行OP-TEE為例,則需要修改qemu.mk文件添加該示例代碼的編譯目標(biāo),修改步驟如下:

1)添加my_test的編譯目標(biāo):

############################################################################
        # secure driver test TA--my_test
        ############################################################################
        my_test: my_test-common
        my_test-clean: my_test-clean-common

2)將my_test和my_test-clean添加到全局的all和clean目標(biāo)依賴關(guān)系中:

all: bios-qemu qemu soc-term optee-examples my_test
        clean: bios-qemu-clean busybox-clean linux-clean optee-os-clean 
              optee-client-clean qemu-clean soc-term-clean check-clean 
              optee-examples-clean my_test-clean

添加部分的主要作用是定義my_test目標(biāo)并建立該編譯目標(biāo)與all的依賴關(guān)系,在編譯整個(gè)OP-TEE工程時(shí)會(huì)被使用到。修改完板級(jí)編譯的mk文件后,還需修改build/common.mk文件。修改的內(nèi)容主要是將my_test的編譯目標(biāo)集成到系統(tǒng)編譯中,需要修改的內(nèi)容如下:

1)定義my_test路徑變量:

MY_TEST_PATH  ? = $(ROOT)/my_test

2)添加my_test的目標(biāo)依賴,修改filelist-tee-common目標(biāo)的依賴關(guān)系如下:

filelist-tee-common: optee-client xtest optee-examples my_test

3)增加TA和CA的common目標(biāo):

############################################################################
        # my_test
        ###########################################################################
        MY_TEST_COMMON_FLAGS ? =     HOST_CROSS_COMPILE=$(CROSS_COMPILE_NS_USER)
            TA_CROSS_COMPILE=$(CROSS_COMPILE_S_USER) 
            TA_DEV_KIT_DIR=$(OPTEE_OS_TA_DEV_KIT_DIR) 
            TEEC_EXPORT=$(OPTEE_CLIENT_EXPORT)
        .PHONY: my_test-common
        my_test-common: optee-os optee-client
            $(MAKE) -C $(MY_TEST_PATH) $(MY_TEST_COMMON_FLAGS)
        MY_TEST_CLEAN_COMMON_FLAGS ? = TA_DEV_KIT_DIR=$(OPTEE_OS_TA_DEV_KIT_DIR)
        .PHONY: my_test-clean-common
        my_test-clean-common:
            $(MAKE) -C $(MY_TEST_PATH) $(MY_TEST_CLEAN_COMMON_FLAGS) clean

4)添加clean操作的依賴關(guān)系:

optee-os-clean-common: xtest-clean optee-examples-clean my_test-clean

5)在filelist-tee-common中添加TA和CA鏡像需要被打包到文件系統(tǒng)中的操作:

@echo#secure driver test TA“ > > $(fl)
        @if [ -e $(MY_TEST_PATH)/host/my_test ]; then 
            echo "file /bin/my_test" 
                "$(MY_TEST_PATH)/host/my_test 755 0 0" > > $(fl); 
            echo "file /lib/optee_armtz/9269fadd-99d5-4afb-a1dc-ee3e9c61b04c.ta" 
                "$(MY_TEST_PATH)/ta/9269fadd-99d5-4afb-a1dc-ee3e9c61b04c.ta 444 0 0" 
                > > $(fl); 
        fi

2.4 安全驅(qū)動(dòng)示例的測(cè)試

完成所有修改之后,編譯整個(gè)OP-TEE工程然后運(yùn)行。在OP-TEE的啟動(dòng)日志中能看見(jiàn)示例中的系統(tǒng)服務(wù)和驅(qū)動(dòng)啟動(dòng)的日志,啟動(dòng)的日志如圖22-4所示。

image.png

系統(tǒng)啟動(dòng)后,在REE側(cè)的終端中輸入對(duì)應(yīng)的指令就可通過(guò)TA調(diào)用到該示例的安全驅(qū)動(dòng),指令說(shuō)明如下。

1.向驅(qū)動(dòng)中寫入數(shù)據(jù)

my_test writeDev [offset] [len]

offset:表示需將數(shù)據(jù)寫入驅(qū)動(dòng)提供的buffer中的偏移位置。

len:表示需要寫入驅(qū)動(dòng)中數(shù)據(jù)的長(zhǎng)度。寫入驅(qū)動(dòng)中的數(shù)據(jù)在CA源代碼中被設(shè)定,讀者可通過(guò)修改CA源代碼中g(shù)_WriteData變量中的值將不同的內(nèi)容寫入該安全驅(qū)動(dòng)中。

2.讀取驅(qū)動(dòng)中的數(shù)據(jù)

my_test readDev [offset] [len]

offset:表示從驅(qū)動(dòng)中buffer的哪個(gè)位置開(kāi)始讀取。

len:表示需要從驅(qū)動(dòng)中讀取的內(nèi)容長(zhǎng)度。

3.打印出驅(qū)動(dòng)中的數(shù)據(jù)

my_test dumpDev [len]

len:表示需要打印的數(shù)據(jù)的長(zhǎng)度。

用于測(cè)試添加的模擬安全驅(qū)動(dòng)的TA和CA運(yùn)行的效果如圖22-5所示。

image.png

小結(jié)一下啦

前輩的《手機(jī)安全和可信應(yīng)用開(kāi)發(fā)指南》確實(shí)寫的很好啊,但是這里估計(jì)有l(wèi)inux的驅(qū)動(dòng)開(kāi)發(fā)經(jīng)歷,會(huì)更加深映像一些。這個(gè)part的學(xué)習(xí)解決了我的一些問(wèn)題。

一起學(xué)習(xí)了OP-TEE中安全設(shè)備驅(qū)動(dòng)的開(kāi)發(fā)以及實(shí)現(xiàn)安全設(shè)備的安全隔離的原理。

當(dāng)需要在系統(tǒng)中增加安全設(shè)備時(shí),除了需在OP-TEE中開(kāi)發(fā)該設(shè)備對(duì)應(yīng)的安全驅(qū)動(dòng)之外,還需修改TZPC的配置為該設(shè)備提供安全信號(hào)。

TA通過(guò)調(diào)用系統(tǒng)調(diào)用接口的方式陷入OP-TEE的內(nèi)核空間來(lái)使用驅(qū)動(dòng),如需對(duì)多個(gè)安全設(shè)備進(jìn)行統(tǒng)一管理,則可添加一個(gè)系統(tǒng)服務(wù),將各安全驅(qū)動(dòng)提供的接口集成到該系統(tǒng)服務(wù)中,使該系統(tǒng)服務(wù)封裝接口暴露給上層使用。

聲明:本文內(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)投訴
  • 驅(qū)動(dòng)器
    +關(guān)注

    關(guān)注

    52

    文章

    8054

    瀏覽量

    145615
  • 寄存器
    +關(guān)注

    關(guān)注

    31

    文章

    5268

    瀏覽量

    119640
  • 狀態(tài)機(jī)
    +關(guān)注

    關(guān)注

    2

    文章

    489

    瀏覽量

    27433
  • SRAM控制器
    +關(guān)注

    關(guān)注

    0

    文章

    11

    瀏覽量

    5885
收藏 人收藏

    評(píng)論

    相關(guān)推薦

    請(qǐng)問(wèn)搭建智能硬件安全實(shí)驗(yàn)室需要什么設(shè)備或者是技術(shù)?求大神指教

    請(qǐng)問(wèn)搭建智能硬件安全實(shí)驗(yàn)室需要什么設(shè)備或者是技術(shù)?求大神指教
    發(fā)表于 07-30 14:02

    硬件安全是什么?

    硬件安全技術(shù)系列課程詳細(xì)介紹硬件安全相關(guān)的攻擊技術(shù)和抗攻擊設(shè)計(jì)技術(shù),包括芯片的安全架構(gòu)設(shè)計(jì)和安全認(rèn)證。硬件安全是什么?傳統(tǒng)意義上的
    發(fā)表于 07-29 09:25

    介紹一種基于硬件安全模塊

    英飛凌科技開(kāi)發(fā)了一種基于硬件安全模塊,通過(guò)其全新的 OPTIGA TPM 2.0 保護(hù)聯(lián)網(wǎng)汽車與汽車制造商之間的通信,模塊是一種可信平臺(tái)模塊 (TPM),制造商可以在其中整合敏感的安全
    發(fā)表于 02-11 07:41

    白皮書:PSA Certified 的10個(gè)安全目標(biāo)和 Microsoft 的高安全設(shè)備的7個(gè)屬性

    認(rèn)為是高安全設(shè)備的七個(gè)屬性。研究的結(jié)果記錄在“高安全設(shè)備的七個(gè)屬性”文 中。PSA 認(rèn)證的10 個(gè)安全目標(biāo)和Microsoft 的七項(xiàng)屬性都旨在推動(dòng)物聯(lián)網(wǎng)
    發(fā)表于 04-18 10:18

    Arm的***是怎樣保證硬件安全

    Arm的***是怎樣保證硬件安全的?正好看到有人問(wèn)這個(gè)問(wèn)題,所以來(lái)找專家咨詢一下,謝謝
    發(fā)表于 08-15 15:12

    面向安全設(shè)備的網(wǎng)絡(luò)安全管理平臺(tái)

    本文通過(guò)比較通用網(wǎng)絡(luò)管理軟件和面向安全設(shè)備的網(wǎng)絡(luò)管理,得出了設(shè)計(jì)面向安全設(shè)備的網(wǎng)絡(luò)管理的必要性。然后提出了一種新的面向安全設(shè)備的網(wǎng)絡(luò)管理的系統(tǒng)結(jié)構(gòu),并詳細(xì)介紹
    發(fā)表于 08-28 09:10 ?4次下載

    Fortinet發(fā)布新款企業(yè)安全設(shè)備FortiGate-62

    Fortinet發(fā)布新款企業(yè)安全設(shè)備FortiGate-620B Fortinet公司宣布推出新款多重威脅安全設(shè)備FortiGate-620B,可讓企業(yè)擁有更高效能的防護(hù)能力。FortiGate
    發(fā)表于 01-27 17:55 ?1049次閱讀

    清華大學(xué)首次提出用獨(dú)立的芯片“動(dòng)態(tài)”監(jiān)測(cè)硬件安全

    技術(shù)首次提出用獨(dú)立的芯片“動(dòng)態(tài)”監(jiān)測(cè)硬件安全,讓CPU硬件安全的保障手段從以傳統(tǒng)的流程管控和靜態(tài)檢測(cè)為主的“事前預(yù)防”,擴(kuò)大到了“事中監(jiān)測(cè)”和“管控危害”,從而構(gòu)建起了完善的CPU硬件安全
    的頭像 發(fā)表于 11-12 14:26 ?3102次閱讀

    Cocoon的家居安全設(shè)備,可智能檢測(cè)侵入者

    對(duì)于你的家來(lái)說(shuō),由于智能家居市場(chǎng)的整體優(yōu)勢(shì),加上因集資增加驅(qū)動(dòng)硬件復(fù)興,目前并不缺少“智能”安全設(shè)備。
    發(fā)表于 12-17 14:33 ?1019次閱讀

    工業(yè)安全設(shè)備的用處是什么

    現(xiàn)代社會(huì)工業(yè)為人們生活提供的便利實(shí)在是太多確實(shí)已經(jīng)必不可少,但是與此同時(shí)也為人們帶來(lái)了一系列的工業(yè)威脅,為了能夠避免這種威脅需要一些工業(yè)安全設(shè)備的使用來(lái)發(fā)揮作用,為了加深大家的了解,下面我為大家來(lái)介紹一下工業(yè)安全設(shè)備有哪些用處。
    發(fā)表于 05-18 17:48 ?1879次閱讀

    常見(jiàn)的安全設(shè)備盤點(diǎn)

    有用來(lái)監(jiān)控網(wǎng)絡(luò)安全設(shè)備的snmp服務(wù)器,它同時(shí)監(jiān)控多個(gè)網(wǎng)絡(luò)安全設(shè)備。
    發(fā)表于 05-22 17:04 ?3928次閱讀

    如何將硬件安全模塊功能直接集成到車輛的安全概念中?

    在帶有嵌入式硬件安全模塊的 CPU 上運(yùn)行的安全堆棧如今被認(rèn)為是汽車網(wǎng)絡(luò)安全的核心。 因此,它們也是車輛功能安全的關(guān)鍵先決條件。 在最壞的情況下,針對(duì)網(wǎng)絡(luò)攻擊的
    的頭像 發(fā)表于 08-20 09:22 ?6371次閱讀

    聊聊硬件安全設(shè)計(jì)以及硬件安全機(jī)制相關(guān)的內(nèi)容

    在系統(tǒng)開(kāi)發(fā)階段,我們細(xì)化了功能安全需求FSR,得到了技術(shù)層面可實(shí)施的技術(shù)安全需求TSR,并將其分配至系統(tǒng)架構(gòu)中的硬件(HW)和軟件(SW)組件,接下來(lái)就需要根據(jù)硬件相關(guān)的TSR進(jìn)行
    發(fā)表于 09-26 11:27 ?4760次閱讀

    學(xué)習(xí)筆記|硬件安全屬性介紹

    學(xué)習(xí)筆記|硬件安全屬性介紹
    的頭像 發(fā)表于 09-26 17:16 ?699次閱讀
    學(xué)習(xí)筆記|<b class='flag-5'>硬件安全</b>屬性介紹

    安全設(shè)備硬件安全隔離

    和AXI-to-APB橋。 TZPC組件負(fù)責(zé)將某個(gè)特定外部設(shè)備配置成安全設(shè)備,并為安全設(shè)備提供額外的安全信號(hào),AXI-to-APB橋使用T
    的頭像 發(fā)表于 10-30 16:01 ?478次閱讀
    <b class='flag-5'>安全設(shè)備</b>的<b class='flag-5'>硬件安全</b><b class='flag-5'>隔離</b>