01-Secure Payload Dispatcher (SPD)
引流關鍵詞: TF-A,TF-M,ATF,TrustedFirmware,trustzone,TEE,optee,trusty,tlk,lk,armv8,armv9,arm,secureboot,BL31,BL32,BL1,BL2,hypervisor,終端安全,secureboot,security,virtulization
快速鏈接:
.
👉👉👉 個人博客筆記導讀目錄(全部) 👈👈👈
👉[專欄目錄]-ATF/FF-A/specification學習👈
目錄
- 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) 負責調度 optee os程序,它的介紹如下:
OP-TEE(Open Portable Trusted Execution Environment)
OP-TEE 是一種可信執行環境 (TEE),旨在作為在 Arm 上運行的伴隨著非安全 Linux 內核的操作系統, Cortex-A 內核使用 TrustZone 技術。 OP-TEE 實現了TEE Internal Core API v1.1.x,它是公開給可信應用程序的 API 和 TEE 客戶端 API v1.0,它是描述如何與 TEE 通信的 API。 這些 API 在 GlobalPlatform API 規范中定義。
OP-TEE 是實現 Arm TrustZone 技術的開源可信執行環境 (TEE)。 OP-TEE 已被移植到許多 Arm 設備和平臺。最初它是由 ST-Ericsson 開發的專有 TEE 解決方案,后來轉移到 STMicroelectronics。
早在 2013 年,Linaro 就成立了安全工作組 (SWG : Security Working Group):SWG 最初的主要任務之一是開展開源 TEE 項目。在與各種 TEE 供應商交談后,Linaro 開始與 STMicroelectronics 合作,將他們的 TEE 解決方案從專有 TEE 轉變為開源 TEE。經過幾個月的重構和重寫代碼的主要部分,使其與 BSD 2-Clause 許可證兼容,它于 2014 年夏天左右向公眾發布。
2015 年,OP-TEE 項目的所有權從 STMicroelectronics 轉移到 Linaro。 2015 年至 2019 年期間,Linaro 是該項目的所有者,維護工作與 Linaro 的成員一起共享。 2019 年末,Linaro 將 OP-TEE 項目轉移到 TrustedFirmware.org 項目,該項目從那時起一直是管理機構。 Linaro 仍然負責安排發布、處理安全事件等。但是在開發和功能方面,有許多公司為該項目做出了貢獻。
1.2.
(TLK) Dispatcher
TLK dispatcher (TLK-D) 增加了對 NVIDIA 可信小內核 (TLK) 的支持,以與可信固件-A (TF-A) 配合使用。 TLK-D 可以通過將其包含在平臺的 makefile 中進行編譯。 TLK 主要用于 Tegra SoC,因此雖然 TF-A 僅支持 Tegra 上的 TLK,但調度程序代碼只能為其他平臺編譯。
為了編譯 TLK-D,我們需要一個 BL32 鏡像。 因為,TLKD 只需要編譯,任何 BL32 鏡像都可以。 要將 TLK 用作 BL32,請參閱“構建 TLK”部分。
一旦 BL32 準備就緒,就可以通過在構建命令中添加“SPD=tlkd”來將 TLKD 包含在映像中。
1.2.1. Trusted Little Kernel (TLK)
TLK 是作為安全 EL1 運行的可信操作系統。 它是 NVIDIA? 可信小內核 (TLK) 技術的免費開源軟件 (FOSS) 版本,它擴展了隨著小內核 (LK) 的開發而可用的技術。 您可以從 https://github.com/travisg/lk 下載用于 Arm、x86 和 AVR32 系統的 LK 模塊化嵌入式搶占式內核
NVIDIA 實施了其 Trusted Little Kernel (TLK) 技術,該技術設計為免費和開源的可信執行環境 (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 存儲庫下托管。 有關 TLK 和 OTE 的詳細信息可以在位于“文檔”目錄_下的 Tegra_BSP_for_Android_TLK_FOSS_Reference.pdf 手冊中找到。
1.2.2. Build TLK
要構建和執行 TLK,請按照 Tegra_BSP_for_Android_TLK_FOSS_Reference.pdf手冊中“構建 TLK 設備”部分的說明進行操作。
1.2.3. Input parameters to TLK
TLK 需要 TZDRAM 大小和包含引導參數的結構。 BL2 將此信息作為 bl32_ep_info 結構的成員傳遞給 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 是一組軟件組件,支持移動設備上的可信執行環境 (TEE),由 Google 發布和維護。
可在托管于 https://source.android.com/security/trusty 的 Trusty 的 Android 開源項目 (AOSP) 網頁上找到詳細信息和構建說明
1.3.1. Boot parameters
通過提供特定于平臺的函數,可以將自定義引導參數傳遞給 Trusty:
void plat_trusty_set_boot_args(aapcs64_params_t *args)如果提供此函數,則必須將 args->arg0 設置為分配給 trusty 的內存大小。 如果平臺不提供此函數,但定義了 TSP_SEC_MEM_SIZE,則默認實現將從 TSP_SEC_MEM_SIZE 傳遞內存大小。 args->arg1 可以設置為特定于平臺的參數塊,然后 args->arg2 應設置為該塊的大小。
1.3.2. Supported platforms
在 Trusted Firmware-A 支持的所有平臺中,Trusty 只在 NVIDIA 的 Tegra SoC 驗證和支持。
總結
以上是生活随笔為你收集整理的01-Secure Payload Dispatcher (SPD)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: seL4 microkernel学习资料
- 下一篇: 02-Activity Monitors