ARM匯編編程(AArch64架構) - 第14課:安全擴展(ARM TrustZone)

目錄

    • 1. TrustZone基礎概念
      • 1.1 安全擴展架構
      • 1.2 關鍵組件
    • 2. 世界切換機制
      • 2.1 狀態切換流程
      • 2.2 關鍵寄存器配置
    • 3. SMC調用實現
      • 3.1 調用規范
      • 3.2 完整調用流程
    • 4. 實戰練習
      • 4.1 實驗:實現雙世界通信
      • 4.2 調試技巧

在這里插入圖片描述

1. TrustZone基礎概念

1.1 安全擴展架構

@startuml
rectangle "非安全世界(Non-secure)" as NS
rectangle "安全世界(Secure)" as SNS -[hidden]-> S
note right: 通過硬件隔離的并行執行環境
@enduml

1.2 關鍵組件

  • SCR_EL3:安全配置寄存器(Secure Configuration Register)
  • SMC:安全監控調用(Secure Monitor Call)指令
  • TZASC:TrustZone地址空間控制器

2. 世界切換機制

2.1 狀態切換流程

// 非安全世界觸發切換
smc #0  // 產生異常,EL3接管// EL3處理程序示例
monitor_handler:mrs x0, scr_el3orr x0, x0, #(1 << 0)  // 設置NS位msr scr_el3, x0eret

2.2 關鍵寄存器配置

寄存器位域功能描述
SCR_EL3.NSBit 0當前執行世界(0=安全,1=非安全)
SCR_EL3.SMDBit 7禁用SMC調用(調試用)
DAIF-中斷屏蔽狀態保存

3. SMC調用實現

3.1 調用規范

// 調用參數傳遞約定
struct smc_args {uint64_t x0;  // 功能IDuint64_t x1-x6; // 參數uint64_t x7;   // 調用類型(Fast/Standard)
};

3.2 完整調用流程

  1. 非安全世界準備參數并執行SMC指令
  2. 觸發異常進入EL3
  3. 根據功能ID路由到安全世界服務
  4. 結果通過x0-x3返回
@startuml
participant NW as 非安全世界
participant EL3
participant SW as 安全世界NW -> EL3: SMC指令
EL3 -> SW: 參數驗證+路由
SW --> EL3: 處理結果
EL3 --> NW: 返回結果
@enduml

4. 實戰練習

4.1 實驗:實現雙世界通信

# 編譯安全世界代碼
secure.bin: secure.Saarch64-linux-gnu-gcc -mcpu=cortex-a72 -nostdlib -Tsecure.lds $< -o $@# 編譯非安全世界代碼
nonsecure.elf: nonsecure.caarch64-linux-gnu-gcc -O0 -g $< -o $@

4.2 調試技巧

# QEMU調試命令
(qemu) info registers scr_el3
(qemu) xp/1x 0x8000FF00  # 查看安全內存區域# GDB斷點設置
(gdb) b *0x80010000 if $x0 == 0x1234

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

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

相關文章

OpenCV哈希算法------Marr-Hildreth 邊緣檢測哈希算法

操作系統&#xff1a;ubuntu22.04 OpenCV版本&#xff1a;OpenCV4.9 IDE:Visual Studio Code 編程語言&#xff1a;C11 算法描述 該類實現了 Marr-Hildreth 邊緣檢測哈希算法&#xff08;Marr-Hildreth Hash&#xff09;&#xff0c;用于圖像相似性比較。它基于 Marr-Hildreth …

【git#5】遠程操作 標簽管理

&#x1f4c3;個人主頁&#xff1a;island1314 ?? 歡迎關注&#xff1a;&#x1f44d;點贊 &#x1f442;&#x1f3fd;留言 &#x1f60d;收藏 &#x1f49e; &#x1f49e; &#x1f49e; 生活總是不會一帆風順&#xff0c;前進的道路也不會永遠一馬平川&#xff0c;如何面…

如何使用 Python 刪除 Excel 中的行、列和單元格 – 詳解

目錄 開發環境準備 使用 Python 刪除 Excel 表格中的行 刪除特定行 刪除空白行 刪除含指定數據的行 使用 Python 刪除 Excel 表格中的列 刪除特定列 刪除空白列 刪除含指定數據的列 使用 Python 刪除 Excel 中的單元格并自動移動剩余內容 刪除特定單元格 刪除空白單…

箭頭函數(Arrow Functions)和普通函數(Regular Functions)

在 JavaScript 中&#xff0c;箭頭函數&#xff08;Arrow Functions&#xff09;和普通函數&#xff08;Regular Functions&#xff09;有以下主要區別&#xff1a;1. 語法箭頭函數&#xff1a;使用 > 語法&#xff0c;更簡潔&#xff0c;可省略 function 和 return&#xf…

Spring Boot 配置注解處理器 - spring-boot-configuration-processor

前言 在 Spring Boot 開發中&#xff0c;配置屬性的管理是構建企業級應用的核心環節。Spring Boot 通過 ConfigurationProperties 注解提供了一種類型安全的方式&#xff0c;將配置文件中的屬性綁定到 Java 對象中。然而&#xff0c;開發者在使用過程中常會遇到配置屬性無自動補…

java: DDD using oracle 21c

項目結構&#xff1a;domain:/*** encoding: utf-8* 版權所有 2025 ©涂聚文有限公司 * 許可信息查看&#xff1a;言語成了邀功盡責的功臣&#xff0c;還需要行爲每日來值班嗎* 描述&#xff1a;* Author : geovindu,Geovin Du 涂聚文.* IDE : IntelliJ IDEA 2024…

兩張圖片對比clip功能

<!DOCTYPE html> <html lang"zh-CN"> <head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><title>圖片拖動Clip對比功能</title><style&g…

7.11 dp 圖

lcr148.棧按放入順序推棧&#xff0c;能彈出的就及時彈出&#xff0c;最后棧空則符合要求。判斷 takeOut 序列是否符合棧的操作邏輯&#xff0c;因為題目中“特殊的數據結構”其實就是棧&#xff08;先進后出&#xff09;。思路如下&#xff1a;1. 用一個棧來模擬圖書放入的過程…

react16-react19都更新哪些內容?

React 16 到 React 19 是 React 發展非常關鍵的階段&#xff0c;每個版本都帶來了深遠影響。以下是 React 16 → 19 的重要更新列表&#xff0c;按版本詳細說明每一代的核心特性、重要變化、對開發者的意義&#xff0c;并附簡評&#xff1a;? React 16&#xff08;2017 年&…

【AI大模型】RAG系統組件:向量數據庫(ChromaDB)

RAG 系統中的關鍵組件&#xff1a;向量數據庫&#xff08;Vector Database&#xff09;&#xff0c;并以 ChromaDB 為例進行說明。什么是向量數據庫&#xff1f;核心概念&#xff1a; 向量數據庫是一種專門設計用于高效存儲、索引和檢索高維向量的數據庫。向量是什么&#xff1…

006_測試評估與安全實踐

測試評估與安全實踐 目錄 建立成功標準評估方法測試策略安全最佳實踐隱私保護性能監控 建立成功標準 定義原則 1. 具體明確 清晰定義精確目標避免模糊表述如"良好性能"制定可操作的標準 不好的標準&#xff1a; 模型應該表現良好好的標準&#xff1a; 情感分…

時序預測 | Pytorch實現CNN-KAN電力負荷時間序列預測模型

預測效果 代碼功能 該代碼實現了一個結合卷積神經網絡&#xff08;CNN&#xff09;和Kolmogorov–Arnold網絡&#xff08;KAN&#xff09;的混合模型&#xff08;CNN-KAN&#xff09;&#xff0c;用于時間序列預測任務。核心功能包括&#xff1a; 數據加載與預處理&#xff1…

UI前端與數字孿生結合實踐探索:智慧物流的倉儲優化與管理系統

hello寶子們...我們是艾斯視覺擅長ui設計和前端數字孿生、大數據、三維建模、三維動畫10年經驗!希望我的分享能幫助到您!如需幫助可以評論關注私信我們一起探討!致敬感謝感恩!一、引言&#xff1a;倉儲管理的 “數字孿生革命”傳統物流倉儲正面臨 “效率瓶頸、可視化差、響應滯…

【Android】在平板上實現Rs485的數據通訊

前言 在工業控制領域&#xff0c;Android 設備通過 RS485 接口與 PLC&#xff08;可編程邏輯控制器&#xff09;通信是一種常見的技術方案。最近在實現一個項目需要和plc使用485進行通訊&#xff0c;記錄下實現的方式。 我這邊使用的從平的Android平板&#xff0c;從平里面已經…

MySQL技術筆記-備份與恢復完全指南

目錄 前言 一、備份概述 &#xff08;一&#xff09;備份方式 &#xff08;二&#xff09;備份策略 二、物理備份及恢復 &#xff08;一&#xff09;備份操作 &#xff08;二&#xff09;恢復操作 三、邏輯備份及恢復 &#xff08;一&#xff09;邏輯備份 &#xff0…

SpringBoot或OpenFeign中 Jackson 配置參數名蛇形、小駝峰、大駝峰、自定義命名

SpringBoot或OpenFeign中 Jackson 配置參數名蛇形、小駝峰、大駝峰、自定義命名 前言 在調用外部接口時&#xff0c;對方給出的接口文檔中&#xff0c;入參參數名一會大寫加下劃線&#xff0c;一會又是駝峰命名。 示例如下&#xff1a; {"MOF_DIV_CODE": "xx…

uni-app 途徑站點組件開發與實現分享

在移動應用開發中&#xff0c;涉及到出行、物流等場景時&#xff0c;途徑站點的展示是一個常見的需求。本文將為大家分享一個基于 uni-app 開發的途徑站點組件&#xff0c;該組件能夠清晰展示路線中的各個站點信息&#xff0c;包括站點名稱、到達時間、是否已到達等狀態&#x…

kotlin中集合的用法

從一個實際應用看起以下kotlin中代碼語法正確嗎 var testBeanAIP0200()var testList:List<AIP0200> ArrayList()testList.add(testBean)這段Kotlin代碼存在語法錯誤&#xff0c;主要問題在于&#xff1a;List<AIP0200> 是Kotlin中的不可變集合接口&#xff0c;不能…

深入理解 Java Map 與 Set

文章目錄前言1. 搜索樹1.1 什么是搜索樹1.2 查找1.3 插入1.4 刪除情況一&#xff1a;cur 沒有子節點&#xff08;即為葉子節點&#xff09;情況二&#xff1a;cur 只有一個子節點&#xff08;只有左子樹或右子樹&#xff09;情況三&#xff1a;cur 有兩個子節點&#xff08;左右…

excel如何只保留前幾行

方法一&#xff1a;手動刪除多余行 選中你想保留的最后一行的下一行&#xff08;比如你只保留前10行&#xff0c;那選第11行&#xff09;。按住 Shift Ctrl ↓&#xff08;Windows&#xff09;或 Shift Command ↓&#xff08;Mac&#xff09;&#xff0c;選中從第11行到最…