历经一年多时间的系统整理合补充,《手机安全和可信应用开发指南:TrustZone与OP-TEE技术详解 》一书得以出版,书中详细介绍了TEE以及系统安全中的所有内容,全书按照从硬件到软件,从用户空间到内核空间的顺序对TEE技术详细阐述,读者可从用户空间到TEE内核一步一步了解系统安全的所有内容,同时书中也提供了相关的示例代码,读者可根据自身实际需求开发TA。目前该书已在天猫、京东、当当同步上线,链接如下(麻烦书友购书时能给予评论,多谢多谢):
非常感谢在此期间大家的支持以及各位友人的支持和帮助!!!。 若觉得书中内容有错误的地方,欢迎大家指出,私信或者在博文中留言联系方式亦可发邮件至:shuaifengyun@126.com,多谢各位了!!!!我会第一时间处理。书中最新的勘误会发布在《手机安全和可信应用开发指南:TrustZone与OP-TEE技术详解》 勘误一文中
如果系统芯片支持trustzone技术且支持TEE,那么TEE将在系统中提供一个安全的运行环境,用于保护系统中的重要数据和安全操作。通常一个完成的系统除了有bootloader和kernel,recovery以及上层android系统之外还需要有TEE OS。系统启动的时候使用secure boot功能来保护整个系统的image不被恶意篡改。OP-TEE是借助trustzone技术实现的一种TEE方案。而TEE又属于整个系统中的一个部分,可以看作是与linux kernel同一个层面。本文将介绍如何有序的阅读OP-TEE相关的文章以便理解整个OP-TEE的具体实现。本系列的所有code和demo都是基于OP-TEE 2.4版本,不同版本的OP-TEE可能目录结果或者内容有所不同,所以在使用本博文中的用例时,请务必核对版本
本专栏中所有的示例代码中都有相关的patch,读者只需合入build/qemu.mk和build/common.mk的补丁就可以完成相关的集成操作
由于OP-TEE的更新导致示例代码无法正常运行,读者可按照《0.使用Qemu运行OP-TEE》一文中的配置获取到代码,提供的示例代码的补丁已经在op-tee tag 3.0.0中更新
1. 环境搭建篇
2. OP-TEE的使用篇
3. OP-TEE编译篇
《3.OP-TEE+qemu的编译--工程编译target依赖关系》
《4.OP-TEE+qemu的编译--bios.bin镜像的编译》
4. qemu运行OP-TEE的启动过程篇
《5.OP-TEE+qemu的启动过程分析--run-only目标执行》
《6.OP-TEE+qemu的启动过程分析--加载bios.bin》
《7.OP-TEE+qemu的启动过程分析--加载optee_os和rootfs》
《8.OP-TEE+qemu的启动过程分析--启动linux-kernel》
5. OP-TEE OS的启动过程篇
《12.OP-TEE-OS启动(三)--service-init》
《13.OP-TEE-OS启动(四)--service-init_late》
《14.OP-TEE-OS启动(五)--driver-init和driver-init_late》
6. OP-TEE实现的硬件基础篇
7. ATF的启动以及OP-TEE的加载篇
《1.ATF(ARM-Trusted-firmware)完成启动流程》
《2.ATF(ARM-Trusted-firmware)启动---bl1》
《3.ATF(ARM-Trusted-firmware)启动---bl2》
《4.ATF(ARM-Trusted-firmware)启动---bl2到bl31的跳转》
《5.ATF(ARM-Trusted-firmware)启动---bl31》
《6.ATF(ARM-Trusted-firmware)启动---bl32(OP-TEE)》
8. secure world与normal world执行流程篇
《9.OP-TEE中CA接口调用的完整流程----系统各层面关系》
9. REE侧userspace接口篇
《19.OP-TEE中TA与CA执行流程详解-------软件架构篇》
《20.OP-TEE中TA与CA执行流程-------CA部分的代码篇》
《21.OP-TEE中TA与CA执行流程-------libteec介绍》
《22.OP-TEE中TA与CA执行流程-------tee-supplicant(一)》
《23.OP-TEE中TA与CA执行流程-------tee-supplicant(TA请求具体请求的处理)》
10 REE侧op-tee驱动篇
《24.OP-TEE驱动篇----驱动编译,加载和初始化(一)》
《25.OP-TEE驱动篇----驱动编译,加载和初始化(二)》
《26.OP-TEE驱动篇----libteec和tee_supplicant调用驱动流程和重要结构体》
《27.OP-TEE驱动篇----libteec接口在驱动中的实现》
《28.OP-TEE驱动篇----tee_supplicant接口在驱动中的实现》
11. normal world与secure world切换过程篇
《18.OP-TEE中secur-world和non-secure-world的切换过程》
12. REE和TEE对中断的处理篇
《15.OP-TEE中的中断处理(一)------中断配置和向量表的配置》
《16.OP-TEE中的中断处理(二)------系统FIQ事件的处理》
《17.OP-TEE中的中断处理(三)------系统IRQ事件的处理》
13.TEE侧对smc的处理篇
《29.secure-world对smc请求的处理------monitor模式中的处理》
《30.secure-world对smc请求的处理------OP-TEE对fast-smc请求的处理》
《31.secure-world对smc请求的处理------OP-TEE对标准smc(std-smc)请求的处理》
14. REE侧userspace的请求在TEE侧的实现篇
《32.secure-world对smc请求的处理------open-session操作在OP-TEE中的实现》
《33.secure-world对smc请求的处理------invoke-command操作在OP-TEE中的实现》
15. TEE侧userspace与kernelspace调用篇
16. OP-TEE中的安全存储的实现
《37.OP-TEE中secure-stroage------安全存储使用的key的产生》
《38.OP-TEE中secure-stroage------安全文件数据格式和操作过程》
《39.OP-TEE中secure-stroage------安全文件数据的打开过程(open)》
《40.OP-TEE中secure-stroage------读写安全文件数据(read and write)》
《41.OP-TEE中secure-stroage------安全文件中数据的加密操作》
《42.OP-TEE中secure-stroage------安全文件的创建》
17. TA镜像文件的签名和验签