RK3568 Trust

文章目錄

  • 1、環境介紹
  • 2、前言
  • 3、ARM TrustZone
    • 3.1、什么是ARM TrustZone
    • 3.2、cpu特權等級
    • 3.3、ARM Trusted Firmware
  • 4、Rockchip 平臺的 Trust
    • 4.1、實現機制
    • 4.2、啟動流程
    • 4.3、生命周期
    • 4.4、Trust 編譯打包流程分析
  • 5、總結

1、環境介紹

硬件:飛凌ok3568-c開發板

軟件:原廠rk356x sdk(Linux)

2、前言

最開始的目的是為了了解 RK3568 的安全啟動,但在學習過程中不小心先了解了 Rockchip Trust。后來發現,安全啟動本身的實現并不依賴 Trust。不過,Trust 的存在可以在系統運行時提供更細粒度的安全保障,使得整體安全策略更完善。

關于 Rockchip 平臺上 Trust 的實現和作用,在官方文檔《Rockchip_Developer_Guide_Trust_CN.pdf》已有詳細介紹。本文主要記錄個人學習后的總結。

3、ARM TrustZone

在此之前,需要先理清ARM TrustZone、cpu特權等級、ARM Trusted Firmware、OP-TEE OS等名詞概念,可以直接參考《Rockchip_Developer_Guide_Trust_CN.pdf》,本章節僅做個小結。

3.1、什么是ARM TrustZone

ARM TrustZone是一個硬件機制,是ARM公司在CPU和SoC中提供的一種硬件安全擴展機制

核心思想就是把一個系統劃分成安全世界 (Secure World) 和非安全世界 (Normal World)。安全世界可以訪問所有資源(安全 + 非安全),非安全世界只能訪問屬于自己的資源,嘗試訪問安全資源會被硬件阻止。

3.2、cpu特權等級

CPU 特權等級(Exception Level,EL) 定義了 CPU 執行代碼的權限級別。系統中運行的每個任務都有一個對應的特權等級,用來表示它的權限大小。不同 EL 可以訪問的資源和可執行的指令不同,EL 越高權限越大。對于 AArch64(64 位 ARM)架構,CPU 特權等級主要分為 EL0~EL3:

  • EL0:用戶態應用,權限最小,只能訪問普通資源。
  • EL1:內核態,權限較高,可訪問系統資源和控制硬件。
  • EL2:Hypervisor(虛擬化管理),管理虛擬機。
  • EL3:Secure Monitor,權限最高,負責安全/非安全世界切換。

3.3、ARM Trusted Firmware

上面提到ARM TrustZone是硬件層面的,有了硬件隔離,還需要軟件來管理和使用:

  • ARM Trusted Firmware (TF-A): 是 ARM 官方提供的一套開源固件,運行在 EL3(最高特權級),提供“世界切換”的管理程序 Secure Monitor。
  • OP-TEE OS: 是一個輕量級操作系統,專門運行在安全世界 EL1,提供安全服務,比如密鑰管理、加密、認證。
  • 普通 OS(Linux/Android):運行在非安全世界,只能通過調用(SMC 指令)去請求安全服務。

所以,TrustZone 提供硬件隔離。TF-A 和 OP-TEE 在這個硬件基礎上,形成了安全執行環境。

4、Rockchip 平臺的 Trust

首先,如何理解 Trust 呢? Trust 是一套安全機制和軟件實現,它基于 ARM TrustZone 的硬件隔離特性,將系統劃分為安全世界和非安全世界,也就是上面提到的那些內容。因此,在討論 Rockchip 平臺的 Trust 時,實際上就是在討論 Rockchip 對安全世界的實現及管理方式。

4.1、實現機制

目前 Rockchip 平臺上的 64 位 SoC 平臺上使用的是 ARM Trusted Firmware + OP-TEE OS 的組合;32位 SoC 平臺上使用的是 OP-TEE OS。

4.2、啟動流程

ARM Trusted Firmware 的體系架構里將整個系統分成四種安全等級,分別為:EL0、EL1、EL2、EL3。將整個安全啟動的流程階段定義為:BL1、BL2、BL31、BL32、BL33,其中 ARM Trusted Firmware 自身的源代碼里提供了 BL1、BL2、BL31 的功能。Rockchip 平臺僅使用了其中的 BL31 的功能,BL1 和 BL2 是rk自己實現的一套方案。所以在 Rockchip 平臺上我們一般也可以“ 默認” ARM Trusted Firmware 指的就是 BL31,而 BL32 使用的則是 OP-TEE OS。

如果把上述這種階段定義映射到 Rockchip 的平臺各級固件上,對應關系為:Maskrom(BL1)、Loader (BL2)、Trust(BL31:ARM Trusted Firmware + BL32:OP-TEE OS)、U-Boot(BL33)。

固件啟動順序:

Maskrom -> Loader -> Trust -> U-Boot -> kernel

4.3、生命周期

Trust 自上電初始化之后就始終常駐于內存之中,完成著自己的使命。

4.4、Trust 編譯打包流程分析

rk提供了閉源的BL31(ATF)、BL32(OP-TEE),位于:

# BL31
<sdk>/rkbin/bin/rk35/rk3568_bl31_v1.44.elf
# BL32
<sdk>/rkbin/bin/rk35/rk3568_bl32_v2.11.bin

<sdk>/rkbin/RKTRUST/RK3568TRUST.ini指定,uboot編譯過程中會用到該文件:

目前,rk uboot鏡像默認打包方式走的是FIT(Flattened Image Tree),即根據.its文件打包成.itb

its文件位于:

<sdk>/u-boot/fit/u-boot.its
/** Copyright (C) 2020 Rockchip Electronic Co.,Ltd** Simple U-boot fit source file containing ATF/OP-TEE/U-Boot/dtb/MCU*//dts-v1/;/ {description = "FIT Image with ATF/OP-TEE/U-Boot/MCU";#address-cells = <1>;images {uboot {description = "U-Boot";data = /incbin/("u-boot-nodtb.bin");type = "standalone";arch = "arm64";os = "U-Boot";compression = "none";load = <0x00a00000>;hash {algo = "sha256";};};atf-1 {description = "ARM Trusted Firmware";data = /incbin/("./bl31_0x00040000.bin");type = "firmware";arch = "arm64";os = "arm-trusted-firmware";compression = "none";load = <0x00040000>;hash {algo = "sha256";};};atf-2 {description = "ARM Trusted Firmware";data = /incbin/("./bl31_0xfdcc1000.bin");type = "firmware";arch = "arm64";os = "arm-trusted-firmware";compression = "none";load = <0xfdcc1000>;hash {algo = "sha256";};};atf-3 {description = "ARM Trusted Firmware";data = /incbin/("./bl31_0x0006b000.bin");type = "firmware";arch = "arm64";os = "arm-trusted-firmware";compression = "none";load = <0x0006b000>;hash {algo = "sha256";};};atf-4 {description = "ARM Trusted Firmware";data = /incbin/("./bl31_0xfdcd0000.bin");type = "firmware";arch = "arm64";os = "arm-trusted-firmware";compression = "none";load = <0xfdcd0000>;hash {algo = "sha256";};};atf-5 {description = "ARM Trusted Firmware";data = /incbin/("./bl31_0xfdcce000.bin");type = "firmware";arch = "arm64";os = "arm-trusted-firmware";compression = "none";load = <0xfdcce000>;hash {algo = "sha256";};};atf-6 {description = "ARM Trusted Firmware";data = /incbin/("./bl31_0x00069000.bin");type = "firmware";arch = "arm64";os = "arm-trusted-firmware";compression = "none";load = <0x00069000>;hash {algo = "sha256";};};optee {description = "OP-TEE";data = /incbin/("tee.bin");type = "firmware";arch = "arm64";os = "op-tee";compression = "none";load = <0x8400000>;hash {algo = "sha256";};};fdt {description = "U-Boot dtb";data = /incbin/("./u-boot.dtb");type = "flat_dt";arch = "arm64";compression = "none";hash {algo = "sha256";};};};configurations {default = "conf";conf {description = "rk3568-evb";rollback-index = <0x0>;firmware = "atf-1";loadables = "uboot", "atf-2", "atf-3", "atf-4", "atf-5", "atf-6", "optee";fdt = "fdt";signature {algo = "sha256,rsa2048";key-name-hint = "dev";sign-images = "fdt", "firmware", "loadables";};};};
};

最后將構建出的u-boot.itb生成成uboot.img:

u-boot.its -> u-boot.itb -> uboot.img

整個uboot的編譯涉及的編譯腳本如下,可自行分析:

<sdl>/u-boot/make.sh					
<sdk>/u-boot/scripts/fit.sh

關于uboot鏡像的打包方式在uboot menuconfig中有如下宏開關進行選擇:

# FIT打包。默認開啟。最后生成uboot.img和loader.bin,其中uboot.img已經包括了ATF和OPTEE
CONFIG_ROCKCHIP_FIT_IMAGE_PACK=y		
# DECOMP打包。
CONFIG_SPL_DECOMP_HEADER=n					
# 若以上兩個選項都不啟用,最后生成uboot.img、trust.img、loader.bin。即把trust.img獨立了出來。

5、總結

TrustZone 提供了系統運行時的可信執行環境,使得開發者可以保護敏感數據和關鍵操作。理解 Trust 的存在與作用,有助于開發更安全的應用,也讓對芯片安全特性的理解更加完整。

參考文章:

https://zhuanlan.zhihu.com/p/23529470235

rk3568安全啟動功能實踐_rk3568 安全啟動-CSDN博客

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/921427.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/921427.shtml
英文地址,請注明出處:http://en.pswp.cn/news/921427.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

C語言數據結構——詳細講解《二叉樹與堆的基本概念》

C語言數據結構——詳細講解《二叉樹與堆的基本概念》前言一、樹的基礎概念1.1 為什么需要樹&#xff1f;1.2 樹的定義與結構1.3 樹的核心術語1.3 樹的核心術語1.4 樹的表示方法&#xff08;孩子兄弟表示法&#xff09;結構定義為什么用孩子兄弟表示法&#xff1f;1.5 樹的實際應…

STAR-CCM+|雷諾數回顧

【1】引言 前序已經學習了K-epsilon湍流模型溯源的基礎知識&#xff0c;今天再學習一些更為基礎的知識&#xff0c;回顧一下雷諾數ReReRe。 【2】雷諾數定義 雷諾數公式為&#xff1a; ReρvDμRe\frac{\rho vD}{\mu}ReμρvD? 式中&#xff0c; ρ\rhoρ——流體密度&…

Java中的死鎖

鎖的合理使用能夠保證共享數據的安全性&#xff0c;但是 使用不當也會可能引起死鎖。1. 死鎖概念 死鎖是指兩個或兩個以上的線程在執行過程中,因爭奪資源而造成的一種互相等待的現象,若無外力干涉那它們都將無法推進下去&#xff0c;如果系統資源充足&#xff0c;進程的資源請求…

基于STM32F103C8T6的智能家居健康環境監測系統

項目開發背景 隨著城市化進程加速和居民生活水平提升&#xff0c;人們對家居環境健康與安全的需求日益增強。現代住宅常因裝修材料、密閉空間及外部污染導致甲醛超標、PM2.5濃度升高、溫濕度失衡等問題&#xff0c;長期暴露此類環境中易引發呼吸道疾病、過敏反應等健康隱患。傳…

2025職場進階:B端產品經理必備的計算機專業技能精要

當前企業級服務市場競爭日益激烈&#xff0c;2025年的B端產品經理不僅需要深厚的行業認知&#xff0c;還必須具備扎實的計算機專業技能&#xff0c;才能設計出真正符合技術趨勢與業務需求的企業級產品。而其中&#xff0c;人工智能技術已經成為B端產品不可或缺的組成部分&#…

有效三角形的個數(數組單調性)

目錄 一&#xff1a;題目鏈接 二&#xff1a;題目思路 三&#xff1a;代碼實現 一&#xff1a;題目鏈接 題目的要求是找出當前數組能組成三角形三元組的個數。 二&#xff1a;題目思路 有一種暴力枚舉解法&#xff0c;利用三層 for 循環來一一枚舉三元組的情況&#xff0c;如…

Rust在醫療系統中的應用:安全、性能與合規性實踐(上)

Rust在醫療系統中的應用:安全、性能與合規性實踐 摘要 醫療系統對軟件安全與性能存在嚴苛雙重需求,既需抵御內存漏洞、數據加密風險等安全威脅(如歷史醫療設備因軟件問題召回案例所示),又需滿足電子健康記錄(EHR)系統、醫學影像處理等高并發數據場景的性能要求,同時需…

讀寫鎖 shared_mutex 共享互斥量介紹

文章目錄讀數據對數據沒有影響&#xff0c;為什么還需要shared_mutex1. 保證讀取數據的“一致性”和“時效性”2. 協調“讀”與“寫”的競爭關系總結好的&#xff0c;我們來詳細介紹 C17 中的 std::shared_mutex&#xff08;共享互斥量&#xff0c;俗稱讀寫鎖&#xff09;的使用…

Nestjs框架: 基于裝飾器與Guards的完成RBAC權限系統設計與實現

概述 在現代權限管理系統中&#xff0c;RBAC&#xff08;基于角色的訪問控制&#xff09;是廣泛采用的一種模型RBAC 核心思想是通過角色來管理用戶權限通過角色綁定用戶、資源和權限&#xff0c;實現細粒度的訪問控制為了實現這一目標&#xff0c;我們需要在數據庫中設計合理的…

機器學習如何精準預測高值

一、概念理解“機器學習對于高值的預測保守”&#xff0c;這是建模里很常見的現象&#xff0c;尤其在生態、氣候、遙感這類數據分布高度偏斜的場景。通常可以從以下幾個角度理解&#xff1a;1. 數據分布與樣本稀缺在訓練集里&#xff0c;高值樣本往往非常少&#xff0c;遠低于中…

蜂窩物聯網模組:智能門禁產品上的關鍵部件

隨著物聯網技術的快速發展&#xff0c;蜂窩物聯網模組正逐步成為智能門禁系統的關鍵通信組件。蜂窩模組憑借其廣覆蓋、高可靠性和低功耗特性&#xff0c;正從傳統門禁系統的補充角色轉變為智能門禁的核心通信組件&#xff0c;尤其在智慧社區、商業樓宇和政府機構等場景中展現出…

[光學原理與應用-417]:非線性光學 - 線性光學(不引發頻率的變化)與非線性光學(引發頻率變化)的異同

一、定義與物理機制&#xff1a;線性響應 vs 非線性響應線性光學定義&#xff1a;光與物質相互作用時&#xff0c;介質的極化強度與入射光電場強度呈線性關系&#xff08;P?0?χ(1)E&#xff09;&#xff0c;輸出光強與輸入光強成正比&#xff08;Iout?∝Iin?&#xff09;-…

深入探討AI在三大核心測試場景中的應用

隨著人工智能&#xff08;AI&#xff09;技術的迅猛發展&#xff0c;軟件測試領域正經歷深刻變革。傳統手動測試和基于規則的自動化測試已難以應對日益復雜的系統架構與海量用戶行為。AI測試通過引入機器學習、自然語言處理、計算機視覺等技術&#xff0c;顯著提升了測試效率、…

[linux倉庫]性能加速的隱形引擎:深度解析Linux文件IO中的緩沖區奧秘

&#x1f31f; 各位看官好&#xff0c;我是egoist2023&#xff01; &#x1f30d; Linux Linux is not Unix &#xff01; &#x1f680; 今天來學習C語言緩沖區和內核緩存區的區別以及緩存類型。 &#x1f44d; 如果覺得這篇文章有幫助&#xff0c;歡迎您一鍵三連&#xff0c…

一、計算機的數據存儲

計算機的世界只有0和1。 1.1 進制 十進制整數->二進制整數&#xff1a;除2倒取余二進制->十進制&#xff1a;權值相加法 結論&#xff1a;1位8進制值 3位二進制值&#xff0c;1位十六進制值 4位二進制值 public class JinZhiDemo {public static void main(String[]…

SpringBoot集成XXL-JOB保姆教程

第一步&#xff1a; 下載xxl-job源碼到本地&#xff0c;地址如下&#xff1a; xxl-job: 一個分布式任務調度平臺&#xff0c;其核心設計目標是開發迅速、學習簡單、輕量級、易擴展。現已開放源代碼并接入多家公司線上產品線&#xff0c;開箱即用。 第二步&#xff1a; 創建…

Debezium日常分享系列之:Debezium 3.2.2.Final發布

Debezium日常分享系列之&#xff1a;Debezium 3.2.2.Final發布Debezium CoreConnector啟動時出現難以理解的錯誤臨時阻塞快照失敗可能導致數據丟失的問題修復Debezium for OracleDebezium CoreConnector 啟動時出現難以理解的錯誤 我們解決了一個問題&#xff0c;即連接器會因…

Zoom AI 技術架構研究:聯合式方法與多模態集成

一、研究背景與概述 在當今數字化轉型加速的背景下,人工智能技術正深刻改變企業協作與溝通方式。作為全球領先的視頻會議平臺,Zoom 已從單純的通信工具轉型為全面的生產力平臺,而其 AI 技術架構是這一轉變的核心驅動力。本報告將深入分析 Zoom 的 AI 技術架構,特別是其創新…

排序-快速排序 O(n log n)

快排&#xff1a;1、設定一個中間值 q[ lr >>1 ] , 讓左右區間來比較2、左邊通過 i 依次比較&#xff0c;如果比這個中間值小&#xff0c;就繼續 , 直到不符合3、右邊通過 j-- 依次比較&#xff0c;如果比這個中間值大&#xff0c;就繼續 &#xff0c;直到不符合4、兩邊…

【Proteus仿真】定時器控制系列仿真——LED小燈閃爍/流水燈/LED燈帶控制/LED小燈實現二進制

目錄 0案例視頻效果展示 0.1例子1&#xff1a;基于AT89C51單片機的定時器控制小燈閃爍 0.2例子2&#xff1a;基于AT89C51單片機的定時器T0流水燈 0.3例子3&#xff1a;基于AT89C51單片機的定時器控制LED燈帶 0.4例子4&#xff1a;基于AT89C51單片機的定時器控制LED閃爍 0…