《optee系统架构从入门到精通》

CSDN学院课程连接:https://edu.csdn.net/course/detail/39573
在这里插入图片描述

讲师介绍

拥有 12 年手机安全、汽车安全、芯片安全开发经验,擅长 Trustzone/TEE/ 安全的设计与开发,对 ARM 架构的安全领域有着深入的研究和丰富的实践经验,能够将复杂的安全知识和处理器架构知识进行系统整理并清晰讲解,透过事务看本质,帮助学员快速入门和理解。

课程介绍

请添加图片描述
请添加图片描述

请添加图片描述
请添加图片描述
请添加图片描述

课程大纲

01-Trustzone简介

什么是TEE?TEE基础科普
TEE的生态介绍?有哪些TEE厂商?各有什么特点?

02-TEE技术简介

什么是TEE?TEE基础科普
TEE的生态介绍?有哪些TEE厂商?各有什么特点?

03-TEE的生态和应用

这么些年过来,TEE为什么一直不温不火?
TEE在手机生态中表现如何?发展趋势如何?
TEE在汽车电子领域又是怎样的?是否大有前途?
TEE在服务器领域是否有应用?
TEE在物联网IOT中是否有需求?
TEE还在哪些领域中有需求?(电视机/机顶盒…)

04-TrustzoneTEE的学习方法

什么是trustzone?什么是TEE?什么是架构?
Trustzone是硬件吗?是软件吗?
当前主流的软件和硬件是怎么样子的?有什么标准规范吗?
如何学习Trustzone/TEE? 学习Trustzone/TEE的最佳路径是怎样的?
什么是软硬件交互?软硬件是怎样交互的?如何学习软硬件交互的主流框架?

05-optee技术简介

什么是open tee?什么是optee?
什么是TEE?什么是optee?
optee是大的系统软件中扮演什么角色?
optee在架构生态中扮演什么角色?
optee是谁领导和维护的?

06-optee系统组件介绍

大系统里都有哪些组件?组件如何理解?
如何集成一家TEE?
TEE都有哪些组件?
组件之间如何交互?

07-optee系统启动流程

多系统如何理解?
boottime和runtime如何理解?
现在主流的系统是怎样的?

08-optee os启动流程

optee是如何启动的?
optee是如何被加载到安全内存的?
cpu是如何跳转到optee内核代码并开始执行的?
optee os的初始化都干了啥?
optee的单核启动和多核启动有什么区别?

09-optee os线程向量表及其作用

REE和TEE如何交互?
CPU是怎样切到TEE中去的?
CPU切到TEE后执行的第一行代码是什么?
在boottime阶段CPU是如何切到TEE中的?
在runtime阶段CPU是如何切到TEE中的?
在runtine阶段CPU切换到TEE后怎样找到需要执行的代码?
线程向量表是啥概念?

10-optee的进入和退出

cpu是如何进入optee的?进入optee的入口有哪些?如果一些入口没有实现是怎样的?
cpu是如何从optee中返回的?
fast smc call和std smc call有什么区别?是如何区分的?使用场景是怎样定义的?
多核启动是怎样换成optee os启动多核的?
optee os是如何响应外部系统中断的?

11-optee os的异常向量表和设计模型

异常中断如何学习?要想让异常中断机制正常工作需要注意哪些事项?
异常、中断、异常中断这些词汇如何理解?有何不同?
FIQ和IRQ有什么不同?
在optee中,针对FIQ和IRQ的设计有什么区别?
optee和商业TEE,在异常中断这块设计有什么区别吗?

12-optee的同步机制

optee都有哪些同步机制?有什么区别?
optee要操作uart外设,在开启uart的时候需要操作clk寄存器,而REE侧的驱动程序可能也会操作clk寄存器。两者如果同时修改了,冲突了,怎么办?
optee的spinlock和mutex有什么区别?
optee系统里没有sleep函数,也没有schedule函数,那optee的mutex会让出CPU吗

13-大系统的的同步机制

在不同的操作系统之间,如何实现spinlock?
在不同的master硬件之间,如何实现spinlock?

14-optee线程管理

optee os中是否有进程、线程的概念?
optee os中的thread该如何理解?
optee os中是否有调度?
optee os中线程是如何切换的?
线程切换或调度的本质是什么?它依托的硬件基础是什么?

15-optee中的线程调度

1、optee中支持多核吗?支持多线程吗?线程是怎样切换的?
2、TA中呢,TA中是否支持多线程?
3、你为什么会问TEE是否支持多线程?想必你想问的是TA中是否支持多线程吧。
4、optee侧的线程之前如何调度的呢?
5、你能举一个TEE侧线程调度的示例吗?
6、optee中支持多核吗?支持多线程吗?线程是怎样切换的?
7、TA中呢,TA中是否支持多线程?
8、你为什么会问TEE是否支持多线程?想必你想问的是TA中是否支持多线程吧。

16-optee之大系统调度

cpu是如何在REE/TEE之间来回调度的?
当CPU在TEE OS中执行的时候,此时来一个想给REE处理的中断(如蓝牙中断),此时CPU是如何响应的?
CPU切入到TEE后陷入死循环不回来了,会影响到REE的调度吗?
多系统下如何分配CPU资源?如何做到来回切换的?

17-optee os的MMU的使用

让MMU工作的五大步骤,optee os中都是怎样实现设计的?
设置页表基地址TTBR(translation table base address)
初始化MAIR_EL3 (Memory Attribute Indirection Register)
配置TCR_EL3 (Configure the translation regime)
创建页表 (Generate the translation tables)
Enable the MMU

18-optee os的根密钥(信任根)

HUK到底是什么?HUK有什么要求?有什么特性?
一般情况下HUK都是怎么获取?经典的HUK获取的示例都是怎样的?
你能想到哪些安全地获取HUK的方法?

19-optee的系统调用

系统调用的本质是啥?什么是系统调用?
syscall、system call、utee call有什么区别?
linux kernel和optee os的系统调用有什么区别?
在函数调用的时候,传入的参数尽量小于等于8个的原理是啥?
系统调用是如何实现的?

20-optee的存储系统

TA之间的安全内存是如何隔离的?
不同TA之间的存储是如何隔离的?
如果有一个需求,TA1和TA2想使用共同的证书怎么办?
TA存储的最终的路径是在哪里?
optee os支持多少种方式的存储?
TA支持多少种方式的存储?
GP规范里定义了多少种规范的存储?
存储的数据,重新开机后会丢失吗?刷机或OTA后会丢失吗?格式化后会丢失吗?
如果想刷机或OTA后不丢失怎么办?如果想丢失又怎么办?
如果想格式化不丢失怎么办?如果想格式化丢失又怎么办?
在linux内核态,你想存储一个文件,如何做得到呢?在optee的内核,是否可以调用存储接口?
TA的存储是怎样通过uuid隔离的?Tee os内核的存储,没有uuid怎么办?
TA存储的数据是怎样加密的?FEK是怎样生成的?
TA存储的数据能否防回滚?怎样做到的?

21-optee的Timer实现

什么是monotonic time ?什么是 utc time?
TEE_GetSystemTime和TEE_GetREETime有什么区别?
optee的TEE_GetSystemTime的实现是否有问题?是否follow了GP规范?
如果想把TEE_GetSystemTime实现为utc + monotonic time? 需要进行哪些考量?
如果TEE_GetSystemTime的时间来自REE,如何抵御时间回滚的攻击?
当前optee中TEE_GetSystemTime的具

22-optee中密码学函数的支持

optee支持哪些密码学算法?
在optee中如何新增一个密码学算法?
在optee中,如何基础一个crypto engine?
optee中的tomcrypt和mbedtls有什么关系?到底在使用的哪个?
Optee的密码学算法,是运行在用户空间的,还是运行在kernel空间的?
分别使用Libtomcrypt和libmbedtls实现的密码学算法,是运行在userspace还是kernel space
Cryptographic Operations API

23-optee中的service和init程序

24-optee中的 PTA

什么是PTA?PTA和TA有什么不同?
optee中有哪些PTA?分别都是什么功能?
如何编写一个PTA呢?
PTA存在的意义是什么?为什么说PTA是连接用户TA和secure driver的桥梁?

25-optee中的 secure driver

什么是安全驱动程序?如何开发一个安全驱动程序?
安全驱动程序和普通的linux kernel的驱动程序有什么不同?
在安全驱动程序中,可以读写文件吗?可以调用加解密算法吗?

26-optee中的 Early TA

什么是Early TA?
Early TA和普通的TA有什么不同?
Early TA如何开发?如何使用?它的应用场景什么?
Early TA是如何打包的?如何启动的?
Early TA和embed TA有什么不同?

27-optee的栈指针和栈内存的介绍

什么是栈?什么是栈指针?什么是栈内存?
什么是栈溢出?
optee有哪些栈内存?分别是什么作用?
optee使用了哪些栈指针?为什么要这样设计?
optee有哪些类栈内存?分别都是多大?
堆和栈有什么区别?
在optee中是否有堆的概念?

28-optee中使用虚函数(平台客制化)的设计模型

什么是虚函数?
虚函数在操作系统中的意义什么?
在optee为何大量使用了虚函数?

29-optee的panic的实现

TEE_Panic函数是给谁用的?
TEE_Panic函数的具体实现是什么?
tee有没有主动panic的函数?

30-optee的socket的实现

optee是否支持socket接口?是如何实现的呢
optee是否支持TLS?是如何实现的?

31-optee的RPC技术

CA可以调用TA?那TA可以主动调用CA吗?
optee os内的程序是如何反向调用REE,其技术原理是什么?
为什么会有TA反向调用REE的需求?
optee反向调用REE的接口是否开放给TA?
在TA程序中如何实现反向调用?

32-optee的RPMB的实现

什么是RPMB?RPMB的重要意义是什么?
在optee os中如何集成RPMB?
RPMB的硬件工作原理是什么?
一般的TEE和TA中都是如何使用RPMB的?有什么标准规范吗?

33-RPMB协议

RPMB的读写最终落盘是在TEE中还是在REE中?
为什么说任何人任何程序都可以读RPMB?
写入RPMB的数据会被自动加密吗?
读写RPMB有什么标准规范吗?

34-RPMBmmc-util代码导读

35-optee的RPMB实现代码导读

36-CA_TA的开发模型

什么是TA?TA如何开发?TA可以第三方独立开发吗?
如何开发一个TA? sdk又是什么?
如何写一个TA的hello world程序?
第三方TEE如何开发TA?

37-CA到TA的调用

【面试必考题】CA到TA的调用流程是什么?
GP client API和GP internal API有什么不同?
在不同的TEE OS操作系统上都是如何开发CA/TA的?

38-TA和PTA的调用

什么是early TA?使用场景如何?
什么是PTA?什么是secstor TA? 什么是User TA ?什么是REE_FS TA?
CA如何调用到TA的?CA可以直接调用PTA吗?
TA如何调用到TA的?TA如何调用到PTA的?
PTA可以调用TA吗?
PTA可以调用CA吗?
TA可以调用CA吗?
TA或PTA想去调用Linux kernel space如何实现?
TA或PTA想去调用Linux Userspacce space如何实现?

39-uboot和TA的通信

uboot可以和optee通信吗?
uboot可以和TA通信吗?
uboot是如何调用optee或TA的?有没有标准的API?

40-linux kernel和TA的通信

在linux kernel中如何调用TA?有哪些API函数呢?

41-TEE虚拟化技术简介(场景)

单VM调用TEE模型
多VM调用TEE模型-直通
多VM调用TEE模型-代理
多VM调用多TEE模型
单VM调用多TEE模型
硬件隔离的多VM调用多TEE模型

42-TEE安全内存的保护

TEE怎么就是安全操作系统了的?
TEE所在的内存怎么就安全了呢?
TEE的安全内存是怎样硬件隔离的?
为什么说TEE是安全系统?TEE怎么就安全的?TEE是如何跑到安全内存中的?
TEE能够访问安全内存?那能否访问非安全内存呢?
在一个大系统中,哪些内存是安全的?
安全内存是如何划分的?由谁来管控的?
说一说以下的概念:安全内存、安全寄存器、安全外设

43-大系统的MMU隔离机制

在一个大系统中,有多少个MMU?
MMU和translation regime两者有什么区别?
当REE和TEE同时使用MMU的时候两者会不会冲突?
当软件强制修改MMU页表中的NS比特属性的时候,是否有安全攻击的可能性?

44-大系统的cache隔离机制

cache是否分为安全cache和非安全cache?
非安全数据的访问是否可以命中安全的cache?
非安全的cache和安全的cache是如何靠硬件隔离的?
cache里都有啥?TLB里都有啥?

45-TA的加载过程

TA是如何被加载到安全内存的?
TA是如何被验签的?

46-optee中属性的介绍

optee中也有属性的概念?都有哪些属性呢?
optee中的属性都是怎么使用的呢,常见的使用场景有哪些呢?

47-TA是如何校验CA的

TA也是可以校验CA的,常见的方法有哪些?
什么是LOGIN Flag,都有哪些用法?
如何设置TA只允许某个TA的调用?

48-共享内存的介绍

什么是共享内存?
共享内存的本质是怎样的?
optee中如何实现和REE的共享内存的?
什么是静态共享内存?什么是动态共享内存?
共享内存有多大?在使用时有什么上限吗?

49-TA链接静态库的方法

optee os支持静态库吗?
TA支持静态库吗?
在编译TA的时候如何link一个静态库?
如何讲一段代码编译出静态库?

50-optee支持动态库

optee os支持动态库吗?
TA支持动态库吗?
在编译TA的时候如何link一个动态库?
如何讲一段代码编译出动态库?

51-TA的签名和验签

optee中的TA是如何签名的?支持哪些签名算法?
TEE OS中是如何打包验签使用的公钥的?
能否同时支持多把签名密钥?

52-optee的标准错误码

optee os中的标准错误码是谁定义的?遵循什么规范?
CA侧和TA侧都有标准错误码,两者有何区别?
每家TEE厂商都是否完全follow标准错误码呢?

53-optee的TA防回滚技术

什么是放回滚技术?
optee_os是否支持防回滚?
TA是否支持防回滚?
storage是否支持防回滚?
secure time是否支持防回滚?
RPMB对防回滚的支持?

54-Multi instance和Multi Session

不同的CA调用同一个TA,会怎样?怎样迸发的?
什么是multi instance?什么是multi session?
什么是single instance?什么是single session?
如果配置multi instance或single instance?
如果是multi instance的TA,那么不同的instance TA之间能够共享数据吗?
不同的TA调用同时访问存储接口,是如何互斥的?
同一个TA的不同的instance,能够访问同一个存储吗?
对于一个single instance TA而言,是如何保障opensession不被调用两次的?
对于一个single instance TA而言,在CA的主线程重调用opensession后,然后多个线程开始同时调用invoke,这时TEE是如何互斥的,保障只有一个invoke能进来?
对于一个single instance TA, CA端同时发起两次的opensession的调用,第二次调用的结果如何?是卡住,还是报错?

55-optee plugins

什么是optee plugins?
optee plugins的本质和原理是什么?
optee plugins为得是解决哪些问题?

56-TEE LOG是如何打印的

optee的打印log是如何实现的?
在optee_os中的打印log函数是啥?有几种log输出级别控制?能否动态控制?
在TA中的打印log函数是啥?有几种log输出级别控制?能否动态控制?
那如何控制optee os的log输出呢?如何控制TA的log输出呢?
除了uart打印log方案,还有别的方案吗?
uart打印log方案中,串口终端会不会出现乱码,如何解决呢?
在optee启动很早期的,uart driver还没初始化呢,这个时候如果需要看log有什么办法实现?
在TA中关闭log后,TA调用到optee_os后,optee_os的log级别是否受TA的trace_level控制?
在TA中控制log的输出,到底是怎样控制的?是靠宏比较?还是靠底层C语言代码检查flag?
如何自己实现一套TA log的输出机制?尽量不依赖平台、不依赖os。

57-optee的dump stack

optee os有哪些调试技术?是否支持dump stack?

58-optee ftrace

什么是optee ftrace?
如何开启optee ftrace?
optee ftrace和linux ftrace有什么不同?

59-optee gprof

什么是optee Gprof?
如何开启optee gprof?
optee gprof和linux gprof有什么不同?

60-大系统的标准规范介绍

当前的主流软件框架是怎样的?有什么标准规范吗?
不同的SOC系统启动时有什么标准规范吗?
在运行状态跨系统进行电源管理时有什么标准规范吗

61-GP规范的支持

62-PSCI规范的支持

63-SEDI的支持

64-SCMI的支持

65-FF-A架构的支持

66-optee HSM硬核应用介绍

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/16202.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

jupyter notebook中3种读图片的方法_与_图片翻转(上下翻转,左右翻转,上下左右翻转)

已有图片cat.jpg 相对于代码的位置,可以用./cat.jpg进行读取。 下面是3种读图片的方法。 1.python读图片-pillow 图片文件不适合用open去读取 用open读图片,易引发UnicodeDecodeError: gbk codec cant decode byte 0xff in position 0: illegal multib…

文理医院预约挂号系统的设计与实现(代码+数据库+LW)

摘要 近年来,信息化管理行业的不断兴起,使得人们的日常生活越来越离不开计算机和互联网技术。首先,根据收集到的用户需求分析,对设计系统有一个初步的认识与了解,确定文理医院预约挂号系统的总体功能模块。然后&#…

从MySQL优化到脑力健康:技术人与效率的双重提升

文章目录 零:前言一:MySQL性能优化的核心知识点1. 索引优化的最佳实践实战案例: 2. 高并发事务的处理机制实战案例: 3. 查询性能调优实战案例: 4. 缓存与连接池的优化实战案例: 二:技术工作者的…

本地部署DeepSeek R1 + 界面可视化open-webui

本地部署DeepSeek R1 界面可视化open-webui ollama是物理机本地安装 open-webui是容器启动 另外,用docker 部署ollama也很方便ollama docker 安裝部署ollama ollama官网 安装 Linux上安装: curl -fsSL https://ollama.com/install.sh | sh使用命令行管理 拉…

Oracle常用导元数据方法

1 说明 前两天领导发邮件要求导出O库一批表和索引的ddl语句做国产化测试,涉及6个系统,6千多张表,还好涉及的用户并不多,要不然很麻烦。 如此大费周折原因,是某国产库无法做元数据迁移。。。额,只能我手动导…

win32汇编环境,对线程的创建与操作示例二

;运行效果 ;win32汇编环境,对线程的创建与操作示例二 ;本文主要是实现用CreateThread创建线程时,如何把参数传入进去 ;以下举3个例子说明,如何把数值、字符串和自定义结构传入线程之中 ;下面为asm文件 ;>>>>>>>>>>>>>>>>>…

【Obsidian】当笔记接入AI,Copilot插件推荐

当笔记接入AI,Copilot插件推荐 自己的知识库笔记如果增加AI功能会怎样?AI的回答完全基于你自己的知识库余料,是不是很有趣。在插件库中有Copilot插件这款插件,可以实现这个梦想。 一、什么是Copilot? 我们知道githu…

【DeepSeek】deepseek可视化部署

目录 1 -> 前文 2 -> 部署可视化界面 1 -> 前文 【DeepSeek】DeepSeek概述 | 本地部署deepseek 通过前文可以将deepseek部署到本地使用,可是每次都需要winR输入cmd调出命令行进入到命令模式,输入命令ollama run deepseek-r1:latest。体验很…

html为<td>添加标注文本

样式说明: /*为td添加相对定位点*/ .td_text {position: relative; }/*为p添加绝对坐标(相对于父元素中的定位点)*/ .td_text p {position: absolute;top: 80%;font-size: 8px; }参考资料:

操作系统常见调度算法的详细介绍

目录 1. 先进先出算法(FIFO) 2. 前后台调度算法 3. 最短处理机运行期优先调度算法(短进程优先算法) 4. 最高响应比优先调度算法(HRRN) 5. 优先级调度算法 6. 时间片轮转调度算法 7. 多级反馈队列轮转…

(定时器,绘制事件,qt简单服务器的搭建)2025.2.11

作业 笔记&#xff08;复习补充&#xff09; 1> 制作一个闹钟软件 头文件 #ifndef WIDGET_H #define WIDGET_H#include <QWidget> #include <QPushButton> //按钮类 #include <QTimer> //定时器类 #include <QTime> //…

评估多智能体协作网络(MACNET)的性能:COT和AUTOGPT基线方法

评估多智能体协作网络(MACNET)的性能 方法选择:选择COT(思维链,Chain of Thought)、AUTOGPT等作为基线方法。 COT是一种通过在推理过程中生成中间推理步骤,来增强语言模型推理能力的方法,能让模型更好地处理复杂问题,比如在数学问题求解中,展示解题步骤。 AUTOGPT则是…

5-R循环

R 循环 ​ 有的时候&#xff0c;我们可能需要多次执行同一块代码。一般情况下&#xff0c;语句是按顺序执行的&#xff1a;函数中的第一个语句先执行&#xff0c;接着是第二个语句&#xff0c;依此类推。 编程语言提供了更为复杂执行路径的多种控制结构。 循环语句允许我们多…

用Python编写经典《贪吃蛇》小游戏

文章目录 环境准备依赖库 实现思路核心模块设计 代码框架运行效果优化建议总结通过本框架可实现基础版贪吃蛇游戏&#xff0c;关键点在于&#xff1a;典型问题解决方案&#xff1a; 环境准备 依赖库 主要依赖 Python 3.6pygame 2.1.2 # 用于图形界面渲染 安装命令 pip ins…

IDEA接入DeepSeek

IDEA 目前有多个途径可以接入deepseek&#xff0c;比如CodeGPT或者Continue&#xff0c;这里借助CodeGPT插件接入&#xff0c;CodeGPT目前用的人最多&#xff0c;相对更稳定 一、安装 1.安装CodeGPT idea插件市场找到CodeGPT并安装 2.创建API Key 进入deepseek官网&#xf…

aspectFill(填充目标区域的同时保持图像的原有宽高比 (aspect ratio)图像不会被拉伸或压缩变形

“aspectFill” 是一个常用于图像和视频处理的术语&#xff0c;尤其是在用户界面 (UI) 设计和图形编程领域。它描述的是一种图像缩放或调整大小的方式&#xff0c;旨在填充目标区域的同时保持图像的原有宽高比 (aspect ratio)。 更详细的解释: Aspect Ratio (宽高比): 指的是图…

在 Windows 系统中如何快速进入安全模式的两种方法

在使用电脑的过程中&#xff0c;有时我们可能会遇到一些需要进入“安全模式”来解决的问题。安全模式是一种特殊的启动选项&#xff0c;它以最小化配置启动操作系统&#xff0c;仅加载最基本的驱动程序和服务&#xff0c;从而帮助用户诊断和修复系统问题。本文中简鹿办公将详细…

CNN-LSTM卷积神经网络长短期记忆神经网络多变量多步预测,光伏功率预测

CNN-LSTM卷积神经网络长短期记忆神经网络多变量多步预测&#xff0c;光伏功率预测 一、引言 1.1、研究背景和意义 光伏发电作为一种清洁能源&#xff0c;对于实现能源转型和应对气候变化具有重要意义。然而&#xff0c;光伏发电的输出功率具有很强的间歇性和波动性&#xff…

Matlab工具包安装

一&#xff0c;直接下载源码并配置方式 tensortoolbox地址&#xff1a;https://www.tensortoolbox.org/ 参考地址&#xff1a;https://blog.csdn.net/qq_37637914/article/details/116016157 二&#xff0c;从官方商店下载-需要登录

单片机之基本元器件的工作原理

一、二极管 二极管的工作原理 二极管是一种由P型半导体和N型半导体结合形成的PN结器件&#xff0c;具有单向导电性。 1. PN结形成 P型半导体&#xff1a;掺入三价元素&#xff0c;形成空穴作为多数载流子。N型半导体&#xff1a;掺入五价元素&#xff0c;形成自由电子作为多…