Introduction to the Trusted Services Project
目錄
- 1、Overview
- 2、What are Trusted Services?
- 3、Reference Deployment
- 4、Why have a separate Trusted Services project?
- 5、Project Goals
- 6、Project Structure
- 7、Building Trusted Services - deployments
- 8、Using Trusted Services - protocols
- 9、Common Layered Model
- 10、Test Strategy(測試策略)
- 11、Future steps
1、Overview
(1) Trusted Services (TS)是一個新的屬于trustedfirmware中的項目
(2) trustedfirmware的背景:
- 開放管理社區(qū)項目
- 為 Armv8-A 和 Armv8-M 提供安全世界固件的參考實現(xiàn)
- 為 SoC 開發(fā)人員和 OEM 提供符合 Arm 規(guī)范的參考代碼庫
(3) Trusted Services (TS)第一次released是在2020/11/26
(4) 起源于 Arm OSS firmware group在Cortex-A上提供的PSA Service
(5) Service有助于滿足 PSA 認證要求
(6) 補充現(xiàn)有的 trustfirmware.org 項目
2、What are Trusted Services?
(1) 在客戶端執(zhí)行安全相關(guān)操作的固件服務的通用術(shù)語
(2) Clients could be
- User-space applications
- Kernel drivers
- Other trusted services
(3) trusted service provider在安全的處理環(huán)境中運行,以保護安全敏感資產(chǎn)免受在環(huán)境外運行的惡意軟件的侵害
(4) 在 Arm Cortex-A SoC 上,可以使用一系列安全處理環(huán)境
- Secure partitions – managed by a Secure Partition Manager (SPM)
- Trusted applications – managed by a TEE
- Secure enclave – a secondary MCU
(5) Example service
- Crypto – provides cryptographic operations with a protected key store
- Protected storage – provides protected persistent storage
- fTPM – TPM 2.0 firmware, running as a trusted service
- UEFI Keystore – a protected persistent store for UEFI keys
3、Reference Deployment
4、Why have a separate Trusted Services project?
(1) Trusted Services 項目為服務相關(guān)組件提供了一個環(huán)境,這些組件可以集成和部署在不同的處理環(huán)境中
(2) 該項目獨立于任何特定的安全處理環(huán)境項目
(3) 一個集中的項目創(chuàng)造了很多機會:
- 采用具有標準約定和解決方案的通用框架
- 組件和測試用例重用
- 發(fā)布標準公共接口
- 共享安全增強功能
- 擁有用于構(gòu)建、測試和導出到客戶項目的通用解決方案
(4) 為使用通用核心組件在任何設備上運行可信服務創(chuàng)造機會
5、Project Goals
- 采用易于復用組件的項目結(jié)構(gòu)。
- 使服務接口易于客戶端使用。
- 采用穩(wěn)健的分層模型,允許替代層實現(xiàn)共存。
- 支持業(yè)務部署到不同的處理環(huán)境。
- 通過簡化添加和運行測試用例來鼓勵測試。
- 支持在原生PC 環(huán)境中進行測試和調(diào)試,以幫助應用程序開發(fā)人員。
- 重用外部項目中的組件,而無需維護分支。
- 使 SoC 和平臺開發(fā)人員能夠貢獻硬件特定代碼。
- 提供可擴展的構(gòu)建系統(tǒng),可與 Yocto 或 Buildroot 等 OS 構(gòu)建系統(tǒng)集成
6、Project Structure
7、Building Trusted Services - deployments
(1) A build of a binary, elf file, library (or whatever) is referred to as a deployment.
(2) 所有部署構(gòu)建文件都位于部署頂級目錄下
(3) 具體部署名稱由以下定義:
<descriptive-name>/<environment> + <platform> (if necessary)
(4) 所有的部署都使用CMake
(5) 源代碼的重用單元稱為組件。
(6) 一個 component.cmake 文件定義了一組可以作為一個單元重用的文件
(7) 部署的 CMakeLists.txt 文件結(jié)合了一組組件和一個環(huán)境,以定義可以構(gòu)建和使用的可執(zhí)行文件或庫。
8、Using Trusted Services - protocols
(1) 公共接口定義稱為協(xié)議
(2) 服務訪問協(xié)議定義
- 形成服務接口的一組操作
- 每個操作的輸入和輸出參數(shù)
- 服務特定狀態(tài)代碼
(3) 一個RPC協(xié)議的作用:遠程調(diào)用、返回結(jié)果
(4) Protocol definitions 通 code repo保持獨立。這有助于簡化外部客戶端項目對 TS 項目的依賴。
(5) 項目結(jié)構(gòu)允許替代協(xié)議定義和序列化方法。 目前支持:
- Protocol Buffers – 獨立于語言的接口定義。 方便非 C 客戶端。
- Packed-C – 擴展 SCMI 使用的現(xiàn)有約定以支持可變長度參數(shù)。
9、Common Layered Model
- 分層模型體現(xiàn)在項目結(jié)構(gòu)中。
- 保持層依賴盡可能簡單有助于重用和擴展新的服務和環(huán)境。
10、Test Strategy(測試策略)
(1) 從一開始就將測試納入項目。
(2) 不同類別的測試:
- 單元測試——子組件級別的測試。
- 組件測試——測試單個組件和組件。
- 服務測試——使用標準訪問協(xié)議的端到端服務測試。
- 環(huán)境測試——測試安全處理環(huán)境提供的低級服務
(3) TS 項目已采用 CppUtest 來運行 C/C++ 測試用例。
(4) 許多測試可能會在本地 PC 環(huán)境中運行:
- 快速方便的回歸檢查方法。
- 在 PC 環(huán)境中調(diào)試更直接
(5) 添加新測試并運行它們非常容易
11、Future steps
(1)添加對真實硬件平臺的支持——目前僅支持 Arm FVP (2020/11/26)
(2)添加新服務——目前支持加密和安全存儲。
(3)強化安全性——特別是客戶端身份和訪問控制。
(4)PSA 1 級和2 級認證硬件平臺。
將使 SoC 開發(fā)人員和 OEM 能夠在他們的平臺上使用 TS 作為 PSA RoT
(5)擴展測試以更好地代表現(xiàn)實生活中的用例
總結(jié)
以上是生活随笔為你收集整理的Introduction to the Trusted Services Project的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 01_SMC_Calling_Conve
- 下一篇: 物理攻击规避(Physical Atta