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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈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行到最…