《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硬核应用介绍

相关推荐
Feng.Lee13 小时前
性能优化中的系统架构优化
测试工具·性能优化·系统架构·可用性测试
王佑辉13 小时前
【系统架构设计师】体系结构文档化
系统架构
huaqianzkh1 天前
基于DeepSeek API和VSCode的自动化网页生成流程
人工智能·系统架构
道友老李2 天前
【高级架构师】计算机网络基础:第二章 计算机网络体系结构(下)
系统架构
静谧之心2 天前
深入理解k8s中的容器存储接口(CSI)
分布式·golang·系统架构·kubernetes·csi
图导物联3 天前
基于物联网技术的智能寻车引导系统方案:工作原理、核心功能及系统架构
物联网·系统架构·智慧城市·反向寻车·智慧停车·停车引导
weixin_307779135 天前
AWS门店人流量数据分析项目的设计与实现
python·数据分析·系统架构·云计算·aws
nbsaas-boot6 天前
人工智能赋能企业系统架构设计:以ERP与CRM系统为例
人工智能·系统架构
weixin_307779136 天前
Apache Hudi数据湖技术应用在网络打车系统中的系统架构设计、软硬件配置、软件技术栈、具体实现流程和关键代码
系统架构·云计算·aws