01-Secure Payload Dispatcher (SPD)
引流關(guān)鍵詞: TF-A,TF-M,ATF,TrustedFirmware,trustzone,TEE,optee,trusty,tlk,lk,armv8,armv9,arm,secureboot,BL31,BL32,BL1,BL2,hypervisor,終端安全,secureboot,security,virtulization
快速鏈接:
.
👉👉👉 個(gè)人博客筆記導(dǎo)讀目錄(全部) 👈👈👈
👉[專欄目錄](méi)-ATF/FF-A/specification學(xué)習(xí)👈
目錄
- 1.1. OP-TEE Dispatcher
- 1.2.
- 1.2.1. Trusted Little Kernel (TLK)
- 1.2.2. Build TLK
- 1.2.3. Input parameters to TLK
- 1.3. Trusty Dispatcher
- 1.3.1. Boot parameters
- 1.3.2. Supported platforms
1.1. OP-TEE Dispatcher
opteed (optee dispatcher) 負(fù)責(zé)調(diào)度 optee os程序,它的介紹如下:
OP-TEE(Open Portable Trusted Execution Environment)
OP-TEE 是一種可信執(zhí)行環(huán)境 (TEE),旨在作為在 Arm 上運(yùn)行的伴隨著非安全 Linux 內(nèi)核的操作系統(tǒng), Cortex-A 內(nèi)核使用 TrustZone 技術(shù)。 OP-TEE 實(shí)現(xiàn)了TEE Internal Core API v1.1.x,它是公開(kāi)給可信應(yīng)用程序的 API 和 TEE 客戶端 API v1.0,它是描述如何與 TEE 通信的 API。 這些 API 在 GlobalPlatform API 規(guī)范中定義。
OP-TEE 是實(shí)現(xiàn) Arm TrustZone 技術(shù)的開(kāi)源可信執(zhí)行環(huán)境 (TEE)。 OP-TEE 已被移植到許多 Arm 設(shè)備和平臺(tái)。最初它是由 ST-Ericsson 開(kāi)發(fā)的專有 TEE 解決方案,后來(lái)轉(zhuǎn)移到 STMicroelectronics。
早在 2013 年,Linaro 就成立了安全工作組 (SWG : Security Working Group):SWG 最初的主要任務(wù)之一是開(kāi)展開(kāi)源 TEE 項(xiàng)目。在與各種 TEE 供應(yīng)商交談后,Linaro 開(kāi)始與 STMicroelectronics 合作,將他們的 TEE 解決方案從專有 TEE 轉(zhuǎn)變?yōu)殚_(kāi)源 TEE。經(jīng)過(guò)幾個(gè)月的重構(gòu)和重寫(xiě)代碼的主要部分,使其與 BSD 2-Clause 許可證兼容,它于 2014 年夏天左右向公眾發(fā)布。
2015 年,OP-TEE 項(xiàng)目的所有權(quán)從 STMicroelectronics 轉(zhuǎn)移到 Linaro。 2015 年至 2019 年期間,Linaro 是該項(xiàng)目的所有者,維護(hù)工作與 Linaro 的成員一起共享。 2019 年末,Linaro 將 OP-TEE 項(xiàng)目轉(zhuǎn)移到 TrustedFirmware.org 項(xiàng)目,該項(xiàng)目從那時(shí)起一直是管理機(jī)構(gòu)。 Linaro 仍然負(fù)責(zé)安排發(fā)布、處理安全事件等。但是在開(kāi)發(fā)和功能方面,有許多公司為該項(xiàng)目做出了貢獻(xiàn)。
1.2.
(TLK) Dispatcher
TLK dispatcher (TLK-D) 增加了對(duì) NVIDIA 可信小內(nèi)核 (TLK) 的支持,以與可信固件-A (TF-A) 配合使用。 TLK-D 可以通過(guò)將其包含在平臺(tái)的 makefile 中進(jìn)行編譯。 TLK 主要用于 Tegra SoC,因此雖然 TF-A 僅支持 Tegra 上的 TLK,但調(diào)度程序代碼只能為其他平臺(tái)編譯。
為了編譯 TLK-D,我們需要一個(gè) BL32 鏡像。 因?yàn)?#xff0c;TLKD 只需要編譯,任何 BL32 鏡像都可以。 要將 TLK 用作 BL32,請(qǐng)參閱“構(gòu)建 TLK”部分。
一旦 BL32 準(zhǔn)備就緒,就可以通過(guò)在構(gòu)建命令中添加“SPD=tlkd”來(lái)將 TLKD 包含在映像中。
1.2.1. Trusted Little Kernel (TLK)
TLK 是作為安全 EL1 運(yùn)行的可信操作系統(tǒng)。 它是 NVIDIA? 可信小內(nèi)核 (TLK) 技術(shù)的免費(fèi)開(kāi)源軟件 (FOSS) 版本,它擴(kuò)展了隨著小內(nèi)核 (LK) 的開(kāi)發(fā)而可用的技術(shù)。 您可以從 https://github.com/travisg/lk 下載用于 Arm、x86 和 AVR32 系統(tǒng)的 LK 模塊化嵌入式搶占式內(nèi)核
NVIDIA 實(shí)施了其 Trusted Little Kernel (TLK) 技術(shù),該技術(shù)設(shè)計(jì)為免費(fèi)和開(kāi)源的可信執(zhí)行環(huán)境 (OTE)。
TLK 功能包括:
- Small, pre-emptive kernel
- Supports multi-threading, IPCs, and thread scheduling
- Added TrustZone features
- Added Secure Storage
- Under MIT/FreeBSD license
- NVIDIA extensions to Little Kernel (LK) include:
- User mode
- Address-space separation for TAs
- TLK Client Application (CA) library
- TLK TA library
- Crypto library (encrypt/decrypt, key handling) via OpenSSL
- Linux kernel driver
- Cortex A9/A15 support
- Power Management
- TrustZone memory carve-out (reconfigurable)
- Page table management
- Debugging support over UART (USB planned)
TLK 由 NVIDIA 在 http://nv-tegra.nvidia.com 上的 3rdparty/ote_partner/tlk.git 存儲(chǔ)庫(kù)下托管。 有關(guān) TLK 和 OTE 的詳細(xì)信息可以在位于“文檔”目錄_下的 Tegra_BSP_for_Android_TLK_FOSS_Reference.pdf 手冊(cè)中找到。
1.2.2. Build TLK
要構(gòu)建和執(zhí)行 TLK,請(qǐng)按照 Tegra_BSP_for_Android_TLK_FOSS_Reference.pdf手冊(cè)中“構(gòu)建 TLK 設(shè)備”部分的說(shuō)明進(jìn)行操作。
1.2.3. Input parameters to TLK
TLK 需要 TZDRAM 大小和包含引導(dǎo)參數(shù)的結(jié)構(gòu)。 BL2 將此信息作為 bl32_ep_info 結(jié)構(gòu)的成員傳遞給 EL3 軟件,其中 bl32_ep_info 是 bl31_params_t 的一部分(由 BL2 在 X0 中傳遞)
example:
bl32_ep_info->args.arg0 = TZDRAM size available for BL32 bl32_ep_info->args.arg1 = unused (used only on Armv7-A) bl32_ep_info->args.arg2 = pointer to boot args1.3. Trusty Dispatcher
Trusty 是一組軟件組件,支持移動(dòng)設(shè)備上的可信執(zhí)行環(huán)境 (TEE),由 Google 發(fā)布和維護(hù)。
可在托管于 https://source.android.com/security/trusty 的 Trusty 的 Android 開(kāi)源項(xiàng)目 (AOSP) 網(wǎng)頁(yè)上找到詳細(xì)信息和構(gòu)建說(shuō)明
1.3.1. Boot parameters
通過(guò)提供特定于平臺(tái)的函數(shù),可以將自定義引導(dǎo)參數(shù)傳遞給 Trusty:
void plat_trusty_set_boot_args(aapcs64_params_t *args)如果提供此函數(shù),則必須將 args->arg0 設(shè)置為分配給 trusty 的內(nèi)存大小。 如果平臺(tái)不提供此函數(shù),但定義了 TSP_SEC_MEM_SIZE,則默認(rèn)實(shí)現(xiàn)將從 TSP_SEC_MEM_SIZE 傳遞內(nèi)存大小。 args->arg1 可以設(shè)置為特定于平臺(tái)的參數(shù)塊,然后 args->arg2 應(yīng)設(shè)置為該塊的大小。
1.3.2. Supported platforms
在 Trusted Firmware-A 支持的所有平臺(tái)中,Trusty 只在 NVIDIA 的 Tegra SoC 驗(yàn)證和支持。
總結(jié)
以上是生活随笔為你收集整理的01-Secure Payload Dispatcher (SPD)的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: seL4 microkernel学习资料
- 下一篇: 02-Activity Monitors