移动安全
optee系统安全从入门到精通
课程大纲 * 01-Trustzone简介 <https://blog.csdn.net/weixin_42135087/article/details/144961843>什么是TEE?TEE基础科普TEE的生态介绍? 有哪些TEE厂商?各有什么特点? * 02-TEE技术简介 <https://blog.csdn.net/weixin_42135087/article/details/144962050>什么是TEE?TEE基础科普TEE的生态介绍? 有哪些TEE厂商?各有什么特点? * 03-TEE的生态和应用 <https://blog.csdn.net/weixin_42135087/article/details/144962201>这么些年过来,TEE为什么一直不温不火?TEE在手机生态中表现如何?发展趋势如何?TEE在汽车电子领域又是怎样的? 是否大有前途?TEE在服务器领域是否有应用?TEE在物联网IOT中是否有需求?TEE还在哪些领域中有需求?(电视机/机顶盒…) * 04-TrustzoneTEE的学习方法 <https://blog.csdn.net/weixin_42135087/article/details/144962376>什么是trustzone? 什么是TEE? 什么是架构?Trustzone是硬件吗?是软件吗?当前主流的软件和硬件是怎么样子的?有什么标准规范吗?如何学习Trustzone/TEE? 学习Trustzone/TEE的最佳路径是怎样的?什么是软硬件交互?软硬件是怎样交互的?如何学习软硬件交互的主流框架? * 05-optee技术简介 <https://blog.csdn.net/weixin_42135087/article/details/144962976>什么是open tee? 什么是optee?什么是TEE? 什么是optee?optee是大的系统软件中扮演什么角色?optee在架构生态中扮演什么角色?optee是谁领导和维护的? * 06-optee系统组件介绍 <https://blog.csdn.net/weixin_42135087/article/details/144966427>大系统里都有哪些组件?组件如何理解?如何集成一家TEE?TEE都有哪些组件?组件之间如何交互? * 07-optee系统启动流程 <https://blog.csdn.net/weixin_42135087/article/details/144966783>多系统如何理解?boottime和runtime如何理解?现在主流的系统是怎样的? * 08-optee os启动流程 <https://blog.csdn.net/weixin_42135087/article/details/144966875>optee是如何启动的?optee是如何被加载到安全内存的?cpu是如何跳转到optee内核代码并开始执行的?optee os的初始化都干了啥?optee的单核启动和多核启动有什么区别? * 09-optee os线程向量表及其作用 <https://blog.csdn.net/weixin_42135087/article/details/144966962>REE和TEE如何交互?CPU是怎样切到TEE中去的?CPU切到TEE后执行的第一行代码是什么?在boottime阶段CPU是如何切到TEE中的?在runtime阶段CPU是如何切到TEE中的?在runtine阶段CPU切换到TEE后怎样找到需要执行的代码?线程向量表是啥概念? * 10-optee的进入和退出 <https://blog.csdn.net/weixin_42135087/article/details/144967050>cpu是如何进入optee的? 进入optee的入口有哪些?如果一些入口没有实现是怎样的?cpu是如何从optee中返回的?fast smc call和std smc call有什么区别?是如何区分的?使用场景是怎样定义的?多核启动是怎样换成optee os启动多核的?optee os是如何响应外部系统中断的? * 11-optee os的异常向量表和设计模型 <https://blog.csdn.net/weixin_42135087/article/details/144984923>异常中断如何学习? 要想让异常中断机制正常工作需要注意哪些事项?异常、中断、异常中断这些词汇如何理解?有何不同?FIQ和IRQ有什么不同?在optee中,针对FIQ和IRQ的设计有什么区别?optee和商业TEE,在异常中断这块设计有什么区别吗? * 12-optee的同步机制 <https://blog.csdn.net/weixin_42135087/article/details/144985146>optee都有哪些同步机制?有什么区别?optee要操作uart外设,在开启uart的时候需要操作clk寄存器,而REE侧的驱动程序可能也会操作clk寄存器。两者如果同时修改了,冲突了,怎么办?optee的spinlock和mutex有什么区别?optee系统里没有sleep函数,也没有schedule函数,那optee的mutex会让出CPU吗 * 13-大系统的的同步机制 <https://blog.csdn.net/weixin_42135087/article/details/144985226>在不同的操作系统之间,如何实现spinlock?在不同的master硬件之间,如何实现spinlock? * 14-optee线程管理 <https://blog.csdn.net/weixin_42135087/article/details/144985280>optee os中是否有进程、线程的概念?optee os中的thread该如何理解?optee os中是否有调度?optee os中线程是如何切换的?线程切换或调度的本质是什么?它依托的硬件基础是什么? * 15-optee中的线程调度 <https://blog.csdn.net/weixin_42135087/article/details/144985315>1、optee中支持多核吗?支持多线程吗?线程是怎样切换的?2、TA中呢,TA中是否支持多线程?3、你为什么会问TEE是否支持多线程?想必你想问的是TA中是否支持多线程吧。4、optee侧的线程之前如何调度的呢?5、你能举一个TEE侧线程调度的示例吗?6、optee中支持多核吗?支持多线程吗?线程是怎样切换的?7、TA中呢,TA中是否支持多线程?8、你为什么会问TEE是否支持多线程?想必你想问的是TA中是否支持多线程吧。 * 16-optee之大系统调度 <https://blog.csdn.net/weixin_42135087/article/details/144985355>cpu是如何在REE/TEE之间来回调度的?当CPU在TEE OS中执行的时候,此时来一个想给REE处理的中断(如蓝牙中断),此时CPU是如何响应的?CPU切入到TEE后陷入死循环不回来了,会影响到REE的调度吗?多系统下如何分配CPU资源?如何做到来回切换的? * 17-optee os的MMU的使用 <https://blog.csdn.net/weixin_42135087/article/details/144985390>让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的根密钥(信任根) <https://blog.csdn.net/weixin_42135087/article/details/144985535>HUK到底是什么? HUK有什么要求?有什么特性?一般情况下HUK都是怎么获取? 经典的HUK获取的示例都是怎样的?你能想到哪些安全地获取HUK的方法? * 19-optee的系统调用 <https://blog.csdn.net/weixin_42135087/article/details/144985577>系统调用的本质是啥?什么是系统调用?syscall、system call、utee call有什么区别?linux kernel和optee os的系统调用有什么区别?在函数调用的时候,传入的参数尽量小于等于8个的原理是啥?系统调用是如何实现的? * 20-optee的存储系统 <https://blog.csdn.net/weixin_42135087/article/details/144985678>TA之间的安全内存是如何隔离的?不同TA之间的存储是如何隔离的?如果有一个需求,TA1和TA2想使用共同的证书怎么办?TA存储的最终的路径是在哪里?optee os支持多少种方式的存储?TA支持多少种方式的存储?GP规范里定义了多少种规范的存储?存储的数据,重新开机后会丢失吗? 刷机或OTA后会丢失吗?格式化后会丢失吗?如果想刷机或OTA后不丢失怎么办?如果想丢失又怎么办?如果想格式化不丢失怎么办?如果想格式化丢失又怎么办?在linux内核态,你想存储一个文件,如何做得到呢?在optee的内核,是否可以调用存储接口?TA的存储是怎样通过uuid隔离的? Tee os内核的存储,没有uuid怎么办?TA存储的数据是怎样加密的?FEK是怎样生成的?TA存储的数据能否防回滚?怎样做到的? * 21-optee的Timer实现 <https://blog.csdn.net/weixin_42135087/article/details/144986135>什么是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中密码学函数的支持 <https://blog.csdn.net/weixin_42135087/article/details/144986215>optee支持哪些密码学算法?在optee中如何新增一个密码学算法?在optee中,如何基础一个crypto engine?optee中的tomcrypt和mbedtls有什么关系?到底在使用的哪个?Optee的密码学算法,是运行在用户空间的,还是运行在kernel空间的?分别使用Libtomcrypt和libmbedtls实现的密码学算法,是运行在userspace还是kernel spaceCryptographic Operations API * 23-optee中的service和init程序 <https://blog.csdn.net/weixin_42135087/article/details/144986264> * 24-optee中的 PTA <https://blog.csdn.net/weixin_42135087/article/details/145005405>什么是PTA? PTA和TA有什么不同?optee中有哪些PTA?分别都是什么功能?如何编写一个PTA呢?PTA存在的意义是什么?为什么说PTA是连接用户TA和secure driver的桥梁? * 25-optee中的 secure driver <https://blog.csdn.net/weixin_42135087/article/details/145005414>什么是安全驱动程序?如何开发一个安全驱动程序?安全驱动程序和普通的linux kernel的驱动程序有什么不同?在安全驱动程序中,可以读写文件吗?可以调用加解密算法吗? * 26-optee中的 Early TA <https://blog.csdn.net/weixin_42135087/article/details/145005423>什么是Early TA?Early TA和普通的TA有什么不同?Early TA如何开发?如何使用?它的应用场景什么?Early TA是如何打包的?如何启动的?Early TA和embed TA有什么不同? * 27-optee的栈指针和栈内存的介绍 <https://blog.csdn.net/weixin_42135087/article/details/145005435>什么是栈? 什么是栈指针? 什么是栈内存?什么是栈溢出?optee有哪些栈内存? 分别是什么作用?optee使用了哪些栈指针? 为什么要这样设计?optee有哪些类栈内存?分别都是多大?堆和栈有什么区别?在optee中是否有堆的概念? * 28-optee中使用虚函数(平台客制化)的设计模型 <https://blog.csdn.net/weixin_42135087/article/details/145005445>什么是虚函数?虚函数在操作系统中的意义什么?在optee为何大量使用了虚函数? * 29-optee的panic的实现 <https://blog.csdn.net/weixin_42135087/article/details/145005494>TEE_Panic函数是给谁用的?TEE_Panic函数的具体实现是什么?tee有没有主动panic的函数? * 30-optee的socket的实现 <https://blog.csdn.net/weixin_42135087/article/details/145005532>optee是否支持socket接口?是如何实现的呢optee是否支持TLS?是如何实现的? * 31-optee的RPC技术 <https://blog.csdn.net/weixin_42135087/article/details/145106024>CA可以调用TA? 那TA可以主动调用CA吗?optee os内的程序是如何反向调用REE,其技术原理是什么?为什么会有TA反向调用REE的需求?optee反向调用REE的接口是否开放给TA?在TA程序中如何实现反向调用? * 32-optee的RPMB的实现 <https://blog.csdn.net/weixin_42135087/article/details/145106060>什么是RPMB?RPMB的重要意义是什么?在optee os中如何集成RPMB?RPMB的硬件工作原理是什么?一般的TEE和TA中都是如何使用RPMB的?有什么标准规范吗? * 33-RPMB协议 <https://blog.csdn.net/weixin_42135087/article/details/145106083>RPMB的读写最终落盘是在TEE中还是在REE中?为什么说任何人任何程序都可以读RPMB?写入RPMB的数据会被自动加密吗?读写RPMB有什么标准规范吗? * 34-RPMBmmc-util代码导读 <https://blog.csdn.net/weixin_42135087/article/details/145106096> * 35-optee的RPMB实现代码导读 <https://blog.csdn.net/weixin_42135087/article/details/145106108> * 36-CA_TA的开发模型 <https://blog.csdn.net/weixin_42135087/article/details/145106117>什么是TA?TA如何开发?TA可以第三方独立开发吗?如何开发一个TA? sdk又是什么?如何写一个TA的hello world程序?第三方TEE如何开发TA? * 37-CA到TA的调用 <https://blog.csdn.net/weixin_42135087/article/details/145106128>【面试必考题】CA到TA的调用流程是什么?GP client API和GP internal API有什么不同?在不同的TEE OS操作系统上都是如何开发CA/TA的? * 38-TA和PTA的调用 <https://blog.csdn.net/weixin_42135087/article/details/145106139>什么是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的通信 <https://blog.csdn.net/weixin_42135087/article/details/145106154>uboot可以和optee通信吗?uboot可以和TA通信吗?uboot是如何调用optee或TA的?有没有标准的API? * 40-linux kernel和TA的通信 <https://blog.csdn.net/weixin_42135087/article/details/145106169>在linux kernel中如何调用TA? 有哪些API函数呢? * 41-TEE虚拟化技术简介(场景) <https://blog.csdn.net/weixin_42135087/article/details/145115139>单VM调用TEE模型多VM调用TEE模型-直通多VM调用TEE模型-代理多VM调用多TEE模型单VM调用多TEE模型硬件隔离的多VM调用多TEE模型 * 42-TEE安全内存的保护 <https://blog.csdn.net/weixin_42135087/article/details/145115157>TEE怎么就是安全操作系统了的?TEE所在的内存怎么就安全了呢?TEE的安全内存是怎样硬件隔离的?为什么说TEE是安全系统?TEE怎么就安全的?TEE是如何跑到安全内存中的?TEE能够访问安全内存?那能否访问非安全内存呢?在一个大系统中,哪些内存是安全的?安全内存是如何划分的?由谁来管控的?说一说以下的概念:安全内存、安全寄存器、安全外设 * 43-大系统的MMU隔离机制 <https://blog.csdn.net/weixin_42135087/article/details/145115180>在一个大系统中,有多少个MMU?MMU和translation regime两者有什么区别?当REE和TEE同时使用MMU的时候两者会不会冲突?当软件强制修改MMU页表中的NS比特属性的时候,是否有安全攻击的可能性? * 44-大系统的cache隔离机制 <https://blog.csdn.net/weixin_42135087/article/details/145115194>cache是否分为安全cache和非安全cache?非安全数据的访问是否可以命中安全的cache?非安全的cache和安全的cache是如何靠硬件隔离的?cache里都有啥? TLB里都有啥? * 45-TA的加载过程 <https://blog.csdn.net/weixin_42135087/article/details/145115212>TA是如何被加载到安全内存的?TA是如何被验签的? * 46-optee中属性的介绍 <https://blog.csdn.net/weixin_42135087/article/details/145115238>optee中也有属性的概念?都有哪些属性呢?optee中的属性都是怎么使用的呢,常见的使用场景有哪些呢? * 47-TA是如何校验CA的 <https://blog.csdn.net/weixin_42135087/article/details/145115244>TA也是可以校验CA的,常见的方法有哪些?什么是LOGIN Flag,都有哪些用法?如何设置TA只允许某个TA的调用? * 48-共享内存的介绍 <https://blog.csdn.net/weixin_42135087/article/details/145115263>什么是共享内存?共享内存的本质是怎样的?optee中如何实现和REE的共享内存的?什么是静态共享内存?什么是动态共享内存?共享内存有多大?在使用时有什么上限吗? * 49-TA链接静态库的方法 <https://blog.csdn.net/weixin_42135087/article/details/145115282>optee os支持静态库吗?TA支持静态库吗?在编译TA的时候如何link一个静态库?如何讲一段代码编译出静态库? * 50-optee支持动态库 <https://blog.csdn.net/weixin_42135087/article/details/145115302>optee os支持动态库吗?TA支持动态库吗?在编译TA的时候如何link一个动态库?如何讲一段代码编译出动态库? * 51-TA的签名和验签 <https://blog.csdn.net/weixin_42135087/article/details/145120474>optee中的TA是如何签名的?支持哪些签名算法?TEE OS中是如何打包验签使用的公钥的?能否同时支持多把签名密钥? * 52-optee的标准错误码 <https://blog.csdn.net/weixin_42135087/article/details/145120495>optee os中的标准错误码是谁定义的?遵循什么规范?CA侧和TA侧都有标准错误码,两者有何区别?每家TEE厂商都是否完全follow标准错误码呢? * 53-optee的TA防回滚技术 <https://blog.csdn.net/weixin_42135087/article/details/145120530>什么是放回滚技术?optee_os是否支持防回滚?TA是否支持防回滚?storage是否支持防回滚?secure time是否支持防回滚?RPMB对防回滚的支持? * 54-Multi instance和Multi Session <https://blog.csdn.net/weixin_42135087/article/details/145120543>不同的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 <https://blog.csdn.net/weixin_42135087/article/details/145120557>什么是optee plugins?optee plugins的本质和原理是什么?optee plugins为得是解决哪些问题? * 56-TEE LOG是如何打印的 <https://blog.csdn.net/weixin_42135087/article/details/145120602>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 <https://blog.csdn.net/weixin_42135087/article/details/145120616>optee os有哪些调试技术?是否支持dump stack? * 58-optee ftrace <https://blog.csdn.net/weixin_42135087/article/details/145120645>什么是optee ftrace?如何开启optee ftrace?optee ftrace和linux ftrace有什么不同? * 59-optee gprof <https://blog.csdn.net/weixin_42135087/article/details/145120665>什么是optee Gprof?如何开启optee gprof?optee gprof和linux gprof有什么不同? * 60-大系统的标准规范介绍 <https://blog.csdn.net/weixin_42135087/article/details/145120685>当前的主流软件框架是怎样的?有什么标准规范吗?不同的SOC系统启动时有什么标准规范吗?在运行状态跨系统进行电源管理时有什么标准规范吗 * 61-GP规范的支持 <https://editor.csdn.net/md/?articleId=144962769> * 62-PSCI规范的支持 <https://editor.csdn.net/md/?articleId=144962769> * 63-SEDI的支持 <https://editor.csdn.net/md/?articleId=144962769> * 64-SCMI的支持 <https://editor.csdn.net/md/?articleId=144962769> * 65-FF-A架构的支持 <https://editor.csdn.net/md/?articleId=144962769> * 66-optee HSM硬核应用介绍 <https://editor.csdn.net/md/?articleId=144962769>
共92节 54人已学习¥1999.0 免费试学驱动/内核开发
嵌入式学习规划(第三期)
课程大纲:01-嵌入式学习和发展路线(小白入门到专家)02-嵌入式学习方向总结03-嵌入式大学生择业规划03-0基础可以学习嵌入式吗?04-非科班可以学习嵌入式吗? 如和入门呢?05-专科还有必要去做嵌入式吗?06-35岁了还能转行去做嵌入式吗?07-FAE能不能干?FAE的优劣有哪些?08-测试能不能干?测试的优劣有哪些?09-C语言学习方法和建议10-嵌入式Linux方向的学习路线图11-嵌入式程序员一定得干到领导位置吗?(一)11-程序员真的有35岁危机吗?13-嵌入式程序员一定得干到领导位置吗?14-嵌入式程序员如何进大厂?15-渣学历是否有机会进大厂?
共16节 250人已学习¥12.0 免费试学驱动/内核开发
aarch64汇编基础入门
共34节 203人已学习¥199.0 免费试学嵌入式
嵌入式学习规划(第三期)-FAE有话说
课程大纲FAE有话说:01-FAE能不能干?02-FAE工作的一天?03-FAE能不能干?随到随叫,除了擦屎擦尿,几乎啥都干04-FAE能不能干?人与人之间的尊重都没有了?(甲方的不尊重,认为你技术不行的不尊重)05-FAE能不能干? 一份丧失了尊严的工作06-FAE能不能干?干的都是垃圾活,学不到技术07-FAE能不能干?FAE如何利用自己的优势,扬长避短08-FAE能不能干?工作学不到东西,职业生涯是不是完了09-FAE能不能干?在自家研发面前没地位?(啥是技术的收割)10-FAE能不能干?不掌握核心技术,早晚被开除?FAE优势:11-时间充足,有时候等于不上班。 拥有更多的时间做自己的事情。12-一定程度的自由,想干啥就干啥,可以写博客,可以兼职。公司没约束。13-工作环境不受本公司约束,资料可以自由的拷贝。14-收割研发,收割客户,收割一切技术。15-认识更多更多的新朋友,格局也会打开。
共12节 184人已学习¥12.0 免费试学移动安全
TEE安全面试高频28问
学习目标和收益 * 快速掌握TEE的基本概念、系统架构、安全知识、使用场景。 * 快速掌握工程细节,包括但不限于如何集成、如何设计、分工合作等 * 快速掌握TEE在大系统中的作用,多系统之间交互,相互影响等。适用人群 * 1、电子大类专业学生、计算机大类专业学生; * 2、嵌入式开发者、软件开发者、系统开发者、ASIC硬件开发者; * 3、安全开发者,虚拟化开发者、系统架构师; * 4、汽车行业、物联网IOT、手机、PC、服务器行业开发者; 课程大纲 * TEE组件的介绍 * TEE OS hwkey的介绍 * 基于TEE的安全存储系统简介 * 基于TEE的密码学算法系统介绍 * TEE OS内实现的多核多线程 * TEE LOG如何打印 * TEE Share memory的一般设计 * CA到TA的全流程调用 * 从REE(Linux Kernel)角度来看TEE调度 * 有关TEE的迸发:两个CA同时调用一个TA的场景 * TA对CA鉴权的逻辑有哪些 * TA是怎样被加载到安全内存的? * 集成一家TEE都需要干哪些活?TEE厂/SOC厂/OEM各方职责? * 如何开发一个TA? sdk又是什么? * 开发一个TA的流程是怎样的?How to do? * 有关TA的签名介绍 * TEE开发Secure driver介绍 * RPMB的简介以及开发流程 * 共享内存的最大限制是什么?TA的栈内存/堆内存又有哪些限制 * TA都支持哪些密码学算法? * TA都可以使用哪些存储接口?分别都存放在了哪里? * 如何设计TA的跨平台能力? * 什么是Trustzone?什么是TEE? * 除了Trustzone,还有哪些安全架构技术? * TEE的生态介绍?有哪些TEE厂商?各有什么特点? * TEE与HSM有什么区别?各有什么应用场景? * optee为例软硬件架构的简单介绍 * Crypto engine硬件加速引擎的简单介绍 * GlobalPlatform的简介 * Android安全生态的介绍
共28节 151人已学习¥300.0 免费试学驱动/内核开发
Cache架构深度解析
本课程属于Arm三期课程的一部分。建议购买Arm三期课程。
共22节 120人已学习¥499.0 免费试学驱动/内核开发
ARM架构快速扫盲
【学习对象】 * [行业]:汽车电子、手机、服务器、云计算、物联网、人工智能; * [人群]:本科/研究生/博士、初级工程师、中级工程师、资深工程师、行业大佬,即适合小白入门,也适合大佬查缺补漏; * [方向]:电子/计算机专业、芯片架构设计、芯片底层软件、芯片验证、BSP软件开发、内核驱动开发、固件开发、bootrom/bootloader开发、安全、虚拟化、大系统开发等; * [行业链]:主机厂、OEM、OEM、tier1、SOC厂家、各级供应商; 【课程特色】 * 1、全网最全最新,真正的Armv8和Armv9架构(注:这不是25年前的ARM9, 这也不是15年前的A9, 这里也不讲汇编,这里讲的是架构/架构/架构); * 2、这里不读PPT,70%的原创彩色框架图。 * 3、批判性:指出各种互联网中司空见惯的错误。(如FIQ不是快速中断,是转发中断,F是Forward;VIVT根本没人再用...); * 4、实事求是:有理有据,尽量不瞎说,不编造,一切有源头可查,有文档可参考; * 5、白话、通俗易懂。课堂不参水分。 【学员收益】 * 1、知道我学习什么,我要怎么去学习,从此之后有了一个明确的学习路线。 * 2、认识一些共同目标的人,相互讨论问题,共同进步。勤学、共学、助学。 * 3、ARM不再神秘,SOC不在神秘,让您短期内就能cover住全局 * 4、熟悉ARM Architecture架构知识 * 5、熟悉SOC架构知识 * 6、熟悉主流的系统软件框架 * 7、熟悉各项硬件原理和机制,如异常中断、MMU、cache、TLB、VMSA、Trustzone * 6、深入了解当前的系统架构、软硬件架构,能够看懂这些大家,将来也能够自己设计。 * 7、熟悉系统的启动流程、Secureboot等 * 8、熟悉各类标准和规范 * 9、能够进入芯片厂商干活、能够在非芯片产生成为技术担当。 * 10、全体系的掌握ARMv8/ARMv9的核心知识点(ARM基础、异常中断GIC、MMU/Cache、architecture、SOC架构、Trustzone、虚拟化...); * 11、掌握ARM架构、掌握SOC架构、掌握常规IP(gic、smmu、timer、AXI/ACE/CHI、TZC400、CCI/CMN...); * 12、快速熟悉常规系统软件(bootrom、spl、ATF、TEE、bootloader、kernel...), Secureboot安全启动... * 13、扎实自己的基础知识,技术水平提升N个level, 掌握快速的学习方法;
共13节 381人已学习¥12.0 免费试学嵌入式
Armv8/Armv9架构从入门到精通(三期)
共150节 515人已学习¥2399.0 免费试学移动安全
Trustzone/TEE/系统安全开发速成班
# 课程背景 2021年ARM又推出了ARMv9架构,系统软件架构也在悄无声息地发生变化。在这种架构中,强调的是隔离技术,包括资源的隔离、运行时隔离,特权操作系统的权限也变得越来越小… 不管您是什么领域,ARM服务器、汽车电子、手机或者是其它设备终端,安全都是其中的一个重要环节。我们常说的安全一般是只网络安全/业务安全/App安全,这些安全依赖的正是操作系统安全,操作系统安全所依赖的就是安全架构技术,在该安全架构中,首当要学习的就是Trustzone/TEE技术。只有设备安全/操作系统安全/APP安全/网络安全/服务器安全整个一条链都安全了,那么你的业务才算得上的安全. 不管您是做什么的,您做不做安全或虚拟化,掌握整个系统软件架构也是一件必要的事情。您只有掌握了安全架构,你才具有全局的视野,才能进行全局的软件设计,才称得上架构师。 安全不仅仅是架构安全,安全还是一种生态,安全还产生一类标准。安全出现在产品声明周期的任何一个角落,它可能零碎地出现在硬件中、零碎地出现在软件代码中。如果你不了解安全,你可能无法进行优秀的产品设计,你甚至无法去正确的阅读代码。# 课程介绍 (1) 讲解ARM最新硬件架构(ARM Core、ARM Architecture)、SOC架构 (2) 讲解最新的Trustzone安全架构、TEE架构、Secureboot等 (3) 讲解软件组件:TF-A(ATF)、optee_os、Linux Kernel、CA/TA应用程序等,及其交互模型、设计模型 (4) 多系统交互代码导读、安全论证实践、CA/TA示例实践、安全业务设计实践 (5) 我们学习的是全部硬件、全部系统,软硬结合,或者是大系统的软硬件融合 # 课程收益 1、安全不再神秘,能cover住全局 2、熟悉ARM Architecture架构知识 3、熟悉SOC架构知识 4、熟悉主流的系统软件框架 5、知道多系统之间是如何交互的,也能够进行系统级的设计 6、深入了解当前的系统安全架构以及未来安全架构趋势 7、熟悉基础的安全业务设计方法 8、熟悉系统的启动流程、Secureboot等 9、知道Linux Kernel在大系统中的位置,以及与其它系统交互的方法 10、熟悉各类标准和规范 11、学习资料的获取方法 # 课程大纲 《Trustzone/TEE/系统安全开发速成班》 --当前48节课/19小时 说明: 本视频会持续更新,购买时请以课程目录为主。本EXCEL一个月更新一次。 章节 编号 课程 时常 第一章 基础和简介 1 课程介绍 8:33 2 ARM和SOC的架构简介 60:13 第二章 软硬件基础 3 armv8/armv9基础概念 26:20 4 ARMv8/ARMv9的Trustzone技术 77:56 5 ARMv7的Trustzone技术 8:37 6 安全架构及其未来趋势(FF-A/SPM/CCA) 6:41 7 ARMv9 CCA机密计算框架底层核心原理简介 20:44 8 ARMv9 RME安全扩展详解 61:29 9 ATF Quick Start01 61:27 10 Optee Quick Start 49:34 11 系统软件Quick Start 21:04 12 Secureboot原理深度讲解 60:28 13 Android AVB的介绍 26:09 14 TZC400详解 17:56 15 TZC400代码导读之ATF 13:44 16 RPMB详解 30:06 17 RPMB代码导读之optee 14:03 18 efuse详解 12:19 19 Anti-Rollback的介绍 11:33 第三章 软件架构 20 TEE的组件介绍 67:59 21 TEE的RPC反向调用 31:14 22 TEE的调度模型 21:32 23 各类标准和规范 22:17 第四章 软件架构(高级) 24 多系统之间的管理模型(ABI/标准) 10:30 25 多系统之间的调度 12:21 26 多系统之间的中断(不含虚拟化) 61:47 27 多系统之间的中断(虚拟化) 6:57 28 再谈多系统之间的调度(多核多线程) 10:31 29 其它(内存管理/PSCI...) 10:12 第五章 安全应用开发基础 30 安全应用开发基础 5:37 31 TEE环境:qemu_V8环境的使用 4:20 32 TEE环境:编写一个CA和TA程序 11:04 33 TEE环境:编写漂亮的文档 4:14 34 TEE环境:搭建阅读代码神器opengrok 3:26 35 TEE环境(必看):使用集成好的qemu_v8镜像程序 20:29 36 [CA/TA开发]CA到TA的通信 9:18 37 [CA/TA开发]CA到TA的传参 27:16 38 [CA/TA开发]TEE中的存储系统 20:57 39 [CA/TA开发]TEE中的密码学系统简介 12:37 40 [CA/TA开发]TEE中的密码学系统简介-数字摘要Hash等 33:21 41 [CA/TA开发]TEE中的密码学系统简介-对称密码学算法AES等 12:20 42 [CA/TA开发]TEE中的密码学系统简介-消息摘要算法HMAC等 15:48 43 [CA/TA开发]TEE中的密码学系统简介-非对称密码学算法RSA等 7:33 第六章 安全业务设计高级 44 Gatekeeper的介绍 29:32 45 keymaster/keymint/keystore/keystore2 13:27 46 生物认证(指纹/人脸) 13:57 47 DRM的介绍 21:37 48 TUI的介绍 17:03 总计时统计(分钟) 1128:12 说明: 本课程会持续更新…
共48节 202人已学习¥1999.0 免费试学移动安全
8天入门Trustzone/TEE/安全
共13节 259人已学习¥299.0 免费试学驱动/内核开发
8天入门ARM架构
共14节 403人已学习¥128.0 免费试学移动安全
Secureboot从入门到精通
【课程简介】Secureboot从入门到精通,全网最全最详细最系统讲解secureboot核心知识点。业务安全的基石是APP安全,APP安全的基石是操作系统安全,操作系统安全的基石是SecureBoot安全。不理解SecureBoot安全无法深入理解业务的安全性,也无法进行良好的安全业务设计。 SecureBOOT安全涉及方方面面的知识,掌握Secureboot后,对整个大系统就有了一个宏观的概念,对整个大系统的其它模块学习都有帮助。Secureboot也是一个高门槛的知识点,涉及到密码学基础知识、ARM硬件基础知识、SOC硬件基础知识(如SOC内集成的efuse、crypto engine、RPMB等)、BootRom的实现、emmc/ufs/nand/nor等知识、各种规范和标准、ATF(TF-A)等软件、安全业务的设计模式…所以当我们充分理解了Secureboot,再回头学习其它知识点是,就会变得比较容易.本课程200多页的PPT,手把手教大家Secureboot的理解和各种安全基础知识。【课程收益】掌握当前主流的多样化的硬件架构示例、软件架构示例、启动示例、刷机示例。从根本掌握Secureboot的核心原理,包括但不限于密码学基础知识、Trustzone架构原理、efuse、RPMB、anti-rollback、crypto engine彻底学会SOC大系统启动流程、刷机流程,熟练掌握ATF核心代码,熟悉相关规范手册。学习六种主流的安全启动经典案例,全面掌握Secureboot的设计模型,能否分析其优缺点,能够独立设计其方案【学习对象】1、大学学生、研究生,科研人员;2、嵌入式开发者、底层开发者、芯片开发者3、汽车电子、手机、服务器等。【课程优势】全网唯一全网最全全网最系统 【课程大纲】 【其它课程】
共34节 477人已学习¥1299.0 免费试学移动安全
CA/TA可信安全应用开发
课程亮点: 从无到有、手把手教你编写CA/TA,快速上手,快速部署项目 标准的开发,开发一套CA/TA,可部署到不同的TEE OS上。 受益人群: 汽车行业主机厂、tier1、SOC芯片公司的安全部门同事 手机行业,ODM/OEM、SOC芯片公司的安全部门同事 学生 课程收益: 熟悉CA/TA开发的步骤和流程。快速上手,快速搭建自己开发环境。 熟悉各类TEE、基于各类TEE的CA/TA开发步骤。搭建自己的安全平台 熟悉各类常规安全应用 熟悉tee密码学算法、tee存储 课程大纲 Hello大家好,上架一门新的视频课程,课程主要包含两大部分,第一部分搭建环境,第二部分从无到有的编写代码。带领大家"手把手"编写。 具体大纲如下: (1)qemu v8环境搭建 - 搭建一个qemu_v8的环境,用于跑BL1-->BL2-->BL31-->BL32-->BL33-->Linux kernel; - 直接使用已搭建好的镜像 - 工程使用以及说明 (2)CA/TA开发编程实践 从无到有编写代码,已完成的大纲如下: - 2秒钟快速编写(clone)一组CA/TA程序 - 安全存储详解以及代码示例 - CA到TA双向传参数的四种方式(value、temref、memref),区别?优缺点? - 对称密码学算法aes的使用,CBC/ECB/CTR/XTS分组密码的使用,加密解密,pending等 - aeskey的操作,如何随机生成aeskey(TEE_GenerateKey),objectHandle和aesbuf有什么区别? 如何将handle - 认证加密算法,如aes-GCM的使用 - 非对称密码学算法RSA的使用,包括加密、解密、签名、验签 - RSA key的处理,包含如何生成RSA KEY,rsakey object如何转换成可见的数组,如何转换der,如何转换pem,反向又如何转换 - ECC/ECDSA的使用 - 国密sm2 sm3 sm4的使用. 其中sm4包含加密、解密、签名、验签等 - encode和decode的实现 - TA属性的定制以及API的使用 - 数字摘要 SHA1 sha224 sha256 sha384 sha512等 - 消息认证码 HMAC - TEE侧获取时间的函数有哪些(TEE_GetSystemTime、TEE_GetREETime),有什么区别?分别是怎样使用的? - 如何获取随机数(TEE_GenerateRandom)? - TA调用TA的示例和演示 后续可能继续补充的如下(也欢迎大家提需求): - multi-session和multi-instance的使用 - CA LOGIN flag的使用
共29节 269人已学习¥899.0 免费试学嵌入式
嵌入式职业规划
写个想做嵌入式同学们的一个学习线路图和发展线路图 FAE的坑要不要入? 测试的坑要不要入? ....
共11节 797人已学习¥12.0 免费试学嵌入式
Armv8/Armv9架构】-GIC/异常中断专题
本章是《Armv8/Armv9架构深度学习 第二版》的五章,建议购买大课程。 做过arm底层安全的人(或终端安全)也许会知道,学习安全其实就是学习arm架构,而学习arm架构最核心的是什么? 最核心的就是学习和理解异常/中断。ARM有4个异常级别、2个执行状态、2个安全状态(armv9则变成4个),在这些Exception Level、Ecution State、Security之间是怎样切换的? 其实就是利用的异常和中断。另外多系统之间的切换/交互,核心的思想也都是通过异常/中断.... 所以理解异常中断后,对整个架构的学习是非常重要的。
共24节 225人已学习¥499.0 免费试学云平台
《手把手教你玩转CSDN云服务器》
课程大纲1、购买CSDN云服务器2、使用CSDN云服务器:终端登录以及与本地共享文件3、安装HTTP服务4、当作网盘存放一些资料4、搭建一个网页5、搭建寄存器速查网站、指令速查网站6、搭建Arm在线笔记文档7、安装Mysql数据库8、搭建博客9、搭建论坛10、搭建opengrok代码导读服务器11、购买域名/域名备案以下是展示部分内容的截图:
共13节 252人已学习¥99.0 免费试学嵌入式
《Armv8/Armv9架构从入门到精通 第二期》
《Armv8/Armv9架构深度学习 第二版》只做专业课程,精益求精、长期迭代、有问必达、多多交流。课程目录大纲(更新与2023年9月20,持续更新中), 国庆期间也会进行大的更新。
共87节 664人已学习¥1999.0 免费试学嵌入式
【Armv8/Armv9架构】-architecture
本章是《Armv8/Armv9架构深度学习 第二版》的十章,建议购买大课程。 只做专业课程,精益求精、长期迭代、有问必达、多多交流。
共6节 137人已学习¥399.0 免费试学嵌入式
【Armv8/Armv9架构】-Cache专题
本章是《Armv8/Armv9架构深度学习 第二版》的五章,建议购买大课程。 【学员收益】 1、深入学习和理解armv8/armv9架构体现的cache工作原理,cache的软硬件相关知识; 2、掌握cache核心知识点,包含但不限于:cache架构知识、cache层级关系、cache组织形式、cache查询过程、cache缓存策略、cache snoop机制、MESI协议、硬件自动维护的缓存一致性、软件手动维护的缓存一致性、软件维护cache的API、big.Little架构、dynamIQ架构、SCU/DSU、CCI/CMN; 3、掌握多硬件系统(Application Processor、SMMU、other Masters)、多软件系统(Linux Kernel、optee、TF-A、hafnium、xen、uboot)对cacche的使用,以及设计的考量; 4、全面学习armv8/armv9架构知识, 熟悉SOC架构知识;
共10节 198人已学习¥399.0 免费试学嵌入式
【Armv8/Armv9架构】-MMU专题
【课程简介】本课程是《Armv8/Armv9架构从入门到精通 第二期》中的第四章。建议购买大课程。本课程以为armv8-aarch64、armv9为基准,不涉及armv7及其以前的版本,也不涉及aarch32。本课程包含但不限于以下内容MMU的基础学习:啥是MMU?工作原理?MMU和cache之间的关系?及其怎样相互影响的?哪些是MMU硬件自动的行为?哪些是软件可配置的行为?地址空间基础:啥是虚拟地址空间?啥是物理地址空间?啥时memory-map? 代码程序中的虚拟地址空间是怎样的?arm core硬件决定的物理地址空间是怎样的?SOC memory-map时的地址空间是怎样的?具体的外设又是怎样的地址空间?Translation Regime:系统里有多少个MMU?系统里有多少个Translation Regime?他们之间的关系是怎样的?页表翻译:MMU是怎样翻译的?页表有几级?这些信息是怎么告诉MMU的,MMU又是怎样工作的,软件又需要怎样设计?stage1和stage2的区别和使用?Descriptor:啥是Descriptor、页表项、entry、条目、页表条目? Descriptor的格式是怎样的?每一个属性位是怎样的?MMU除了完成地址转换,属性权限的控制/cache的缓存策略是怎样配置的?optee中使用MMU的示例MMU深度思考篇:开启MMU瞬间可能出现的问题以及多种常用的解决方案。注意这里提到的是多种方案,绝大多数人只知道第一种,除此之外还有没有其它的设计方式? MMU关闭时cache的缓存策略会怎样?【思考】01、一个大系统中有多少个MMU ?02、一个ARM Core中有多少个Translation regime?03、EL1&0 Translation regime Stage2、EL2 Translation regime stage1、EL2&0 Translation regime stage1 这三者的区别是什么?04、TTBR1_EL2寄存器有啥特殊性,这个寄存器是给谁使用的?05、有没有TTBR1_EL3寄存器?为什么?06、什么是memory-map? 一个ARM的系统中,有几套物理地址空间?07、页表到底有几级? 页表最少可以有几级?页表最多可以有几级?08、页表有多大? 页表存放在哪里?页表由谁来管理?09、页表是否能放在cache中?10、什么是Translation Table walk? 什么是TLB?11、请简述页表查询的过程?12、在一个大系统中,物理地址是多少位的? 物理地址是多少位指的是什么?虚拟地址又是多少位的? 物理地址的位数和虚拟地址的位数都是由谁来决定的?13、请说明entry、descriptor、页表项、条目 这个四个词汇的由来?14、TCR中有缓存属性和共享属性、页表的entry中也有缓存属性和共享属性,这俩有什么区别?15、请简述TTBR0和TTBR1的概念和意义?16、请简述cacheability和shareability属性的含义?17、stage1和stage2有何区别?18、stage1和stage2的descriptor中,有很多重复的属性,当两者属性有冲突了怎么办?19、L1、L2、L2的descriptor中也有部分相同的属性,重复时怎么办?20、Descriptor的格式有哪几种?21、Descriptor的类型有哪几种?22、简述您所观察到的系统软件中(操作系统或hypervisor)的shareability和cacheability一般都是怎样配置的?23、开启一个MMU的步骤是怎样的?24、啥是flat map? 啥是full level table?25、页表中的AF属性位、DBM属性位分别是干啥的?26、页表中的nG属性位是干啥的?27、页表中的Contiguous属性位是干啥的?28、在开启MMU的瞬间会考虑哪些事情?【课程目录】当前21节课,6.8小时
共20节 245人已学习¥399.0 免费试学
- 1
- 2

周贺贺
首席安全架构专家
十年手机安全/SOC底层安全开发经验。擅长trustzone/tee安全产品的设计和开发; (咨询vx:coding_the_world)
课程数 31 学生数 16972