版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
手機安全和可信應用開發(fā)指南:TrustZone與OP-TEE技術詳解演講人2021-11-11手機安全和可信應用開發(fā)指南:TrustZone與OP-TEE101.02.03.04.目錄第一篇基礎技術篇第二篇系統(tǒng)集成篇第三篇OP-TEE內核篇第四篇應用開發(fā)篇01.02.03.04.目錄第一篇基礎技術篇第二篇系統(tǒng)集2第一篇基礎技術篇01第一篇基礎技術篇0131可信執(zhí)行環(huán)境1.4為什么選擇OP-TEE1.3現(xiàn)有TEE解決方案1.2TEE如何保護數(shù)據(jù)安全1.1系統(tǒng)存在的安全問題
1.3.1智能手機領域的TEE1.3.2智能電視領域的TEE1.3.3IoT領域及其他領域的TEE
1可信執(zhí)行環(huán)境1.4為什么選擇OP-TEE1.3現(xiàn)有T42ARM的TrustZone技術2.2ARM安全擴展組件2.4小結2.1TrustZone技術2.3TrustZone技術對資源隔離的實現(xiàn)2ARM的TrustZone技術2.2ARM安全擴展組件52ARM的TrustZone技術2.1TrustZone技術2.1.1片上系統(tǒng)硬件框架2.1.2ARMv7架構的TrustZone技術2.1.3ARMv8架構的TrustZone技術2ARM的TrustZone技術2.1TrustZone62ARM的TrustZone技術2.2ARM安全擴展組件2.2.1AXI總線上安全狀態(tài)位的擴展2.2.2AXI-to-APB橋的作用2.2.3TrustZone地址空間控制組件2.2.4TrustZone內存適配器組件2.2.5TrustZone保護控制器組件2.2.6TrustZone中斷控制器組件2.2.7Cache和MMU的擴展2ARM的TrustZone技術2.2ARM安全擴展組件72ARM的TrustZone技術2.3TrustZone技術對資源隔離的實現(xiàn)2.3.1中斷源的隔離2.3.2片上RAM和片上ROM的隔離2.3.3片外DRAM的隔離2.3.4外圍設備的隔離2ARM的TrustZone技術2.3TrustZone8第一篇基礎技術篇3ARM可信固件3.1為什么使用ATF3.2ATF的主要功能3.3ATF與TEE的關系3.4小結第一篇基礎技術篇3ARM可信固件3.1為什么使用ATF94OP-TEE運行環(huán)境的搭建及編譯4.5小結4.4OP-TEE編譯4.3OP-TEE源代碼結構4.2運行CA和TA示例4.1獲取OP-TEE代碼并搭建運行環(huán)境4OP-TEE運行環(huán)境的搭建及編譯4.5小結4.4OP104OP-TEE運行環(huán)境的搭建及編譯4.1獲取OP-TEE代碼并搭建運行環(huán)境4.1.1OP-TEE開發(fā)環(huán)境的搭建4.1.2獲取OP-TEE的源代碼4.1.3獲取編譯OP-TEE的toolchain4.1.4編譯QEMU4.1.5運行OP-TEE4.1.6運行xtest和optee_example_hello_world4OP-TEE運行環(huán)境的搭建及編譯4.1獲取OP-TEE114OP-TEE運行環(huán)境的搭建及編譯4.2運行CA和TA示例4.2.1示例代碼的獲取和集成4.2.2目錄和文件創(chuàng)建4.2.3CA端代碼的修改4.2.4TA端代碼的修改4.2.5TA和CA在OP-TEE的集成4OP-TEE運行環(huán)境的搭建及編譯4.2運行CA和TA示124OP-TEE運行環(huán)境的搭建及編譯4.4OP-TEE編譯4.4.1編譯目標的依賴關系4.4.2bios.bin鏡像的生成過程4.4.3run-only目標的執(zhí)行4OP-TEE運行環(huán)境的搭建及編譯4.4OP-TEE編譯13第二篇系統(tǒng)集成篇02第二篇系統(tǒng)集成篇02145QEMU運行OP-TEE的啟動過程第二篇系統(tǒng)集成篇5.2OP-TEE鏡像的加載和啟動5.4rootfs的掛載5.6tee_supplicant的啟動5.1bios.bin的入口函數(shù)5.3Linux內核鏡像的加載和啟動5.5OP-TEE驅動的啟動5QEMU運行OP-TEE的啟動過程第二篇系統(tǒng)集成篇5.15第二篇系統(tǒng)集成篇5QEMU運行OP-TEE的啟動過程5.7小結第二篇系統(tǒng)集成篇5QEMU運行OP-TEE的啟動過程5.166安全引導功能及ATF的啟動過程010203046.1安全引導的作用6.2安全引導的原理6.3ATF的啟動過程6.4小結6安全引導功能及ATF的啟動過程010203046.1安176安全引導功能及ATF的啟動過程6.2安全引導的原理6.2.1ARMv7安全引導的過程6.2.2ARMv8安全引導的過程6安全引導功能及ATF的啟動過程6.2安全引導的原理6.186安全引導功能及ATF的啟動過程6.3ATF的啟動過程6.3.1ATF中bl1的啟動6.3.2ATF中bl2的啟動6.3.3ATF中bl31的啟動6.3.4ATF中bl32的啟動6.3.5ATF啟動過程小結6安全引導功能及ATF的啟動過程6.3ATF的啟動過程6197OP-TEEOS的啟動過程7.1.1OP-TEEOS的入口函數(shù)7.1.2OP-TEE的內核初始化過程7.1.3OP-TEE服務項的啟動7.1.4OP-TEE驅動的掛載7.1OP-TEE鏡像啟動過程
7.2ARM64位與ARM32位OP-TEE啟動過程的差異
7.3小結7OP-TEEOS的啟動過程7.1.1OP-TEEO208OP-TEE在REE側的上層軟件8.1OP-TEE的軟件框架8.3REE側的守護進程——tee_supplicant8.5小結8.2REE側libteec庫提供的接口8.4各種RPC請求的處理8OP-TEE在REE側的上層軟件8.1OP-TEE的軟218OP-TEE在REE側的上層軟件8.2REE側libteec庫提供的接口8.2.1libteec庫提供的接口說明8.2.2CA調用libteec庫中接口的流程8OP-TEE在REE側的上層軟件8.2REE側libt228OP-TEE在REE側的上層軟件8.3REE側的守護進程——tee_supplicant8.3.1tee_supplicant編譯生成和自啟動8.3.2tee_supplicant入口函數(shù)8.3.3tee_supplicant存放RPC請求的結構體8.3.4tee_supplicant中的無限循環(huán)8.3.5tee_supplicant獲取TA的RPC請求8.3.6TARPC請求的解析8.3.7RPC請求的處理8.3.8回復RPC請求8OP-TEE在REE側的上層軟件8.3REE側的守護進238OP-TEE在REE側的上層軟件8.4各種RPC請求的處理8.4.1加載TA鏡像8.4.2操作REE側的文件系統(tǒng)8.4.3操作RPMB8.4.4分配共享內存8.4.5釋放共享內存8.4.6記錄程序執(zhí)行效率8.4.7網(wǎng)絡套接字操作8OP-TEE在REE側的上層軟件8.4各種RPC請求的249REE側OP-TEE的驅動9.1OP-TEE驅動模塊的編譯保存9.6libteec庫中的接口在驅動中的實現(xiàn)9.5OP-TEE驅動與OP-TEE之間共享內存的注冊和分配9.2REE側OP-TEE驅動的加載9.3REE側用戶空間對驅動的調用過程9.4OP-TEE驅動中重要的結構體變量9REE側OP-TEE的驅動9.1OP-TEE驅動模塊的259REE側OP-TEE的驅動9.8小結9.7tee_supplicant接口在驅動中的實現(xiàn)9REE側OP-TEE的驅動9.8小結9.7tee_s269REE側OP-TEE的驅動9.2REE側OP-TEE驅動的加載9.2.1設備號和class的初始化9.2.2optee_driver_init函數(shù)9.2.3掛載驅動的probe操作9.2.4獲取切換到Monitor模式或EL3的接口9.2.5驅動版本和API版本校驗9.2.6判定OP-TEE是否預留共享內存空間9REE側OP-TEE的驅動9.2REE側OP-TEE驅279REE側OP-TEE的驅動9.2REE側OP-TEE驅動的加載9.2.7配置驅動與OP-TEE之間的共享內存9.2.8分配和設置tee0和teepriv0的設備信息結構體變量9.2.9tee0和teepriv0設備的注冊9.2.10請求隊列的初始化9.2.11使能TEE中共享內存的緩存9.2.12OP-TEE驅動掛載的總結9REE側OP-TEE的驅動9.2REE側OP-TEE驅289REE側OP-TEE的驅動9.4OP-TEE驅動中重要的結構體變量9.4.1OP-TEE驅動的file_operation結構體變量tee_fops9.4.2tee0設備的tee_driver_ops結構體變量optee_ops9.4.3teepriv0設備的操作結構體變量optee_supp_ops9.4.4共享驅動緩存操作變量tee_shm_dma_buf_ops9REE側OP-TEE的驅動9.4OP-TEE驅動中重要299REE側OP-TEE的驅動9.6libteec庫中的接口在驅動中的實現(xiàn)9.6.1libteec庫中的open操作9.6.2libteec庫中的release操作9.6.3libteec執(zhí)行get_version操作9.6.4libteec庫中的opensession操作9.6.5libteec庫中的invoke操作9REE側OP-TEE的驅動9.6libteec庫中的接309REE側OP-TEE的驅動9.7tee_supplicant接口在驅動中的實現(xiàn)9.7.1接收OP-TEE的RPC請求9.7.2獲取OP-TEE的RPC請求9.7.3OP-TEE的RPC請求的返回9REE側OP-TEE的驅動9.7tee_supplic31第三篇OP-TEE內核篇03第三篇OP-TEE內核篇033210ARM核安全態(tài)和非安全態(tài)間的切換10.5小結10.4EL3的處理過程10.3ARMv8基本知識10.2Monitor模式下的處理過程10.1ARMv7基本知識10ARM核安全態(tài)和非安全態(tài)間的切換10.5小結10.43310ARM核安全態(tài)和非安全態(tài)間的切換10.1ARMv7基本知識10.1.1ARMv7運行模式擴展10.1.2安全狀態(tài)位擴展10.1.3重要寄存器10.1.4安全監(jiān)控模式調用的匯編指令10ARM核安全態(tài)和非安全態(tài)間的切換10.1ARMv7基3410ARM核安全態(tài)和非安全態(tài)間的切換10.2Monitor模式下的處理過程10.2.1Monitor模式對安全監(jiān)控模式調用的處理10.2.2正常世界狀態(tài)中觸發(fā)安全監(jiān)控模式調用的處理過程10.2.3安全世界狀態(tài)中觸發(fā)安全監(jiān)控模式調用的處理過程10ARM核安全態(tài)和非安全態(tài)間的切換10.2Monito3510ARM核安全態(tài)和非安全態(tài)間的切換10.3ARMv8基本知識10.3.1ARM核運行模式的新定義10.3.2ARMv8安全狀態(tài)位擴展10.3.3寄存器資源10.3.4安全監(jiān)控模式調用匯編指令10ARM核安全態(tài)和非安全態(tài)間的切換10.3ARMv8基3610ARM核安全態(tài)和非安全態(tài)間的切換10.4EL3的處理過程10.4.1ATF中EL3異常向量表的注冊10.4.2EL3處理安全監(jiān)控模式調用的流程10.4.3安全世界狀態(tài)中觸發(fā)安全監(jiān)控模式調用的處理過程10.4.4正常世界狀態(tài)中觸發(fā)安全監(jiān)控模式調用的處理過程10.4.5opteed_smc_handler函數(shù)10ARM核安全態(tài)和非安全態(tài)間的切換10.4EL3的處理3711OP-TEE對安全監(jiān)控模式調用的處理
11.1OP-TEE的線程向量表01
11.2ARMv7中Monitor模式對安全監(jiān)控模式調用的處理02
11.3ARMv8中EL3處理安全監(jiān)控模式調用的實現(xiàn)03
11.4OP-TEE對快速安全監(jiān)控模式調用的處理0411.5.1OP-TEE對RPC請求返回操作的處理11.5.2OP-TEE對libteec庫觸發(fā)的安全監(jiān)控模式調用的處理11.5OP-TEE對標準安全監(jiān)控模式調用的處理05
11.6小結0611OP-TEE對安全監(jiān)控模式調用的處理11.1OP-3812OP-TEE對中斷的處理12.2中斷控制器12.4OP-TEE的線程向量表12.6ARMv7Monitor對FIQ事件的處理12.1系統(tǒng)的中斷處理12.3異常向量表配置12.5全局handle變量的初始化12OP-TEE對中斷的處理12.2中斷控制器12.43912OP-TEE對中斷的處理12.8OP-TEE對FIQ事件的處理12.10小結12.7ARMv8EL3階段對FIQ事件的處理12.9OP-TEE對IRQ事件的處理12OP-TEE對中斷的處理12.8OP-TEE對FIQ4012OP-TEE對中斷的處理12.2中斷控制器12.2.1GIC寄存器12.2.2ARMv7SCR寄存器的設定12.2.3ARMv8SCR寄存器的設定12.2.4GICv2架構12.2.5GICv3架構12OP-TEE對中斷的處理12.2中斷控制器12.2.4112OP-TEE對中斷的處理12.3異常向量表配置12.3.1ARMv7中Monitor模式的異常向量表12.3.2ARMv8中EL3階段的異常向量表12.3.3OP-TEE異常向量的配置12OP-TEE對中斷的處理12.3異常向量表配置12.4213OP-TEE對TA操作的各種實現(xiàn)13.1創(chuàng)建會話在OP-TEE中的實現(xiàn)13.2調用TA命令操作在OP-TEE中的實現(xiàn)13.3關閉會話操作在OP-TEE中的實現(xiàn)13.4小結13.1.1靜態(tài)TA的創(chuàng)建會話操作13.1.2動態(tài)TA的創(chuàng)建會話操作13.3.1靜態(tài)TA的關閉會話操作13.3.2動態(tài)TA的關閉會話操作13.2.1靜態(tài)TA的調用命令操作的實現(xiàn)13.2.2動態(tài)TA的調用命令操作實現(xiàn)
13OP-TEE對TA操作的各種實現(xiàn)13.1創(chuàng)建會話在O4314OP-TEE的內存和緩存管理14.1物理內存和緩存數(shù)據(jù)的硬件安全保護14.3OP-TEE對內存區(qū)域的管理14.5OP-TEE內存安全權限檢查14.2ARM核對內存的訪問14.4MMU的初始化和映射頁表14.6系統(tǒng)的共享內存14OP-TEE的內存和緩存管理14.1物理內存和緩存數(shù)4414OP-TEE的內存和緩存管理14.7數(shù)據(jù)是否需要寫入Cache14.8小結14OP-TEE的內存和緩存管理14.7數(shù)據(jù)是否需要寫入4514OP-TEE的內存和緩存管理14.1物理內存和緩存數(shù)據(jù)的硬件安全保護14.1.1內存設備安全區(qū)域的隔離14.1.2MMU和緩存中數(shù)據(jù)的安全隔離14OP-TEE的內存和緩存管理14.1物理內存和緩存數(shù)4614OP-TEE的內存和緩存管理14.2ARM核對內存的訪問14.2.1ARM核獲取內存數(shù)據(jù)的過程14.2.2獲取緩存數(shù)據(jù)的過程14.2.3緩存和TLB中條目的一致性14OP-TEE的內存和緩存管理14.2ARM核對內存的4714OP-TEE的內存和緩存管理14.3OP-TEE對內存區(qū)域的管理14.3.1OP-TEE中內存區(qū)域的類型14.3.2內存區(qū)域編譯設置14OP-TEE的內存和緩存管理14.3OP-TEE對內4814OP-TEE的內存和緩存管理14.4MMU的初始化和映射頁表14.4.1MMU的初始化入口函數(shù)14.4.2物理地址到虛擬地址表的建立14.4.3MMU轉換頁表的創(chuàng)建14.4.4MMU寄存器配置14OP-TEE的內存和緩存管理14.4MMU的初始化和4914OP-TEE的內存和緩存管理14.6系統(tǒng)的共享內存14.6.1共享內存的配置14.6.2OP-TEE驅動與OP-TEE之間的共享內存14.6.3OP-TEE內核空間與用戶空間之間的共享內存14OP-TEE的內存和緩存管理14.6系統(tǒng)的共享內存15015OP-TEE中的線程管理15.6線程的死鎖15.5OP-TEE中線程的調度15.4線程運行時資源的使用關系15.3線程運行時的資源15.2線程狀態(tài)切換15.1OP-TEE中的線程15OP-TEE中的線程管理15.6線程的死鎖15.55115OP-TEE中的線程管理15.7小結15OP-TEE中的線程管理15.7小結5215OP-TEE中的線程管理15.2線程狀態(tài)切換15.2.1Free態(tài)到Active態(tài)的實現(xiàn)15.2.2Active態(tài)到Suspend態(tài)的實現(xiàn)15.2.3Suspend態(tài)到Active態(tài)的實現(xiàn)15.2.4Active態(tài)到Free態(tài)的實現(xiàn)15OP-TEE中的線程管理15.2線程狀態(tài)切換15.25315OP-TEE中的線程管理15.3線程運行時的資源15.3.1線程數(shù)據(jù)結構體15.3.2OP-TEE分配的內核棧15.3.3線程運行于用戶空間的資源15.3.4tee_ta_session結構體15OP-TEE中的線程管理15.3線程運行時的資源155415OP-TEE中的線程管理15.6線程的死鎖15.6.1死鎖的原理15.6.2防止死鎖15OP-TEE中的線程管理15.6線程的死鎖15.6.5516OP-TEE的系統(tǒng)調用16.3小結16.2OP-TEE系統(tǒng)調用的實現(xiàn)16.1OP-TEE系統(tǒng)調用的作用
16.2.1系統(tǒng)調用的整體流程16.2.2系統(tǒng)調用的定義16.2.3系統(tǒng)調用表tee_sv_syacall_table
16OP-TEE的系統(tǒng)調用16.3小結16.2OP-T5617OP-TEE的IPC機制17.1IPC機制的作用
17.2IPC機制的原理
17.4小結
17.3IPC的實現(xiàn)17.3.1TA調用其他TA的實現(xiàn)17.3.2TA調用系統(tǒng)服務和安全驅動的實現(xiàn)17.3.3TA對密碼學系統(tǒng)服務的調用實現(xiàn)17.3.4對SE功能模塊進行操作的系統(tǒng)服務17.3.5加載TA鏡像的系統(tǒng)服務17OP-TEE的IPC機制17.1IPC機制的作用157第四篇應用開發(fā)篇04第四篇應用開發(fā)篇045818TA鏡像的簽名和加載18.2TA鏡像的加載18.4加載TA鏡像到OP-TEE的用戶空間18.6小結18.1TA鏡像文件的編譯和簽名18.3TA鏡像合法性的驗證18.5TA運行上下文的初始化18TA鏡像的簽名和加載18.2TA鏡像的加載18.45918TA鏡像的簽名和加載18.1TA鏡像文件的編譯和簽名18.1.1TA鏡像文件的編譯18.1.2對TA鏡像文件的簽名18TA鏡像的簽名和加載18.1TA鏡像文件的編譯和簽名6018TA鏡像的簽名和加載18.2TA鏡像的加載18.2.1REE側獲取TA鏡像文件的內容18.2.2加載TA鏡像的RPC請求18.2.3RPC請求的發(fā)送18.2.4讀取TA鏡像文件內容到共享內存18TA鏡像的簽名和加載18.2TA鏡像的加載18.2.6118TA鏡像的簽名和加載18.3TA鏡像合法性的驗證18.3.1驗證TA鏡像合法性使用的RSA公鑰的產生和獲取18.3.2TA鏡像文件合法性的檢查18TA鏡像的簽名和加載18.3TA鏡像合法性的驗證186219OP-TEE中的密碼學算法19.1算法使用示例19.2OP-TEE中的SHA算法19.5小結19.4OP-TEE中的RSA算法19.3OP-TEE中的AES算法19OP-TEE中的密碼學算法19.1算法使用示例19.6319OP-TEE中的密碼學算法19.1算法使用示例19.1.1示例代碼獲取和集成19.1.2板級編譯文件的修改19.1.3通用編譯文件的修改19.1.4編譯運行19OP-TEE中的密碼學算法19.1算法使用示例19.6419OP-TEE中的密碼學算法19.2OP-TEE中的SHA算法19.2.1TA中使用SHA算法的實現(xiàn)19.2.2SHA算法實現(xiàn)接口說明19OP-TEE中的密碼學算法19.2OP-TEE中的S6519OP-TEE中的密碼學算法19.3OP-TEE中的AES算法19.3.1TA中使用AES算法的實現(xiàn)19.3.2AES算法實現(xiàn)接口說明19OP-TEE中的密碼學算法19.3OP-TEE中的A6619OP-TEE中的密碼學算法19.4OP-TEE中的RSA算法19.4.1TA中使用RSA算法的實現(xiàn)19.4.2RSA算法實現(xiàn)接口說明19OP-TEE中的密碼學算法19.4OP-TEE中的R6720OP-TEE的安全存儲ABCDEF20.1安全存儲簡介20.2安全存儲使用示例20.3安全存儲功能使用的密鑰20.4安全文件、dirf.db文件的數(shù)據(jù)格式和操作過程20.5安全存儲文件的創(chuàng)建20.6安全文件的打開操作20OP-TEE的安全存儲ABCDEF20.1安全存儲簡6820OP-TEE的安全存儲20.7安全文件的讀寫操作20.8安全文件中數(shù)據(jù)的加解密20.9小結20OP-TEE的安全存儲20.7安全文件的讀寫操作206920OP-TEE的安全存儲20.2安全存儲使用示例20.2.1示例代碼獲取和集成20.2.2板級編譯文件的修改20.2.3通用編譯文件的修改20.2.4編譯運行20OP-TEE的安全存儲20.2安全存儲使用示例20.7020OP-TEE的安全存儲20.3安全存儲功能使用的密鑰20.3.1安全存儲密鑰20.3.2可信應用的存儲密鑰20.3.3文件加密密鑰20OP-TEE的安全存儲20.3安全存儲功能使用的密鑰71第四篇應用開發(fā)篇21可信應用及客戶端應用的開發(fā)第四篇應用開發(fā)篇21可信應用及客戶端應用的開發(fā)72第四篇應用開發(fā)篇22安全驅動的開發(fā)第四篇應用開發(fā)篇22安全驅動的開發(fā)73第四篇應用開發(fā)篇23終端密鑰在線下發(fā)系統(tǒng)第四篇應用開發(fā)篇23終端密鑰在線下發(fā)系統(tǒng)74第四篇應用開發(fā)篇24基于OP-TEE的在線支付系統(tǒng)第四篇應用開發(fā)篇24基于OP-TEE的在線支付系統(tǒng)75第四篇應用開發(fā)篇25TEE可信應用的使用領域第四篇應用開發(fā)篇25TEE可信應用的使用領域76第四篇應用開發(fā)篇術語表第四篇應用開發(fā)篇術語表77感謝聆聽感謝聆聽78手機安全和可信應用開發(fā)指南:TrustZone與OP-TEE技術詳解演講人2021-11-11手機安全和可信應用開發(fā)指南:TrustZone與OP-TEE7901.02.03.04.目錄第一篇基礎技術篇第二篇系統(tǒng)集成篇第三篇OP-TEE內核篇第四篇應用開發(fā)篇01.02.03.04.目錄第一篇基礎技術篇第二篇系統(tǒng)集80第一篇基礎技術篇01第一篇基礎技術篇01811可信執(zhí)行環(huán)境1.4為什么選擇OP-TEE1.3現(xiàn)有TEE解決方案1.2TEE如何保護數(shù)據(jù)安全1.1系統(tǒng)存在的安全問題
1.3.1智能手機領域的TEE1.3.2智能電視領域的TEE1.3.3IoT領域及其他領域的TEE
1可信執(zhí)行環(huán)境1.4為什么選擇OP-TEE1.3現(xiàn)有T822ARM的TrustZone技術2.2ARM安全擴展組件2.4小結2.1TrustZone技術2.3TrustZone技術對資源隔離的實現(xiàn)2ARM的TrustZone技術2.2ARM安全擴展組件832ARM的TrustZone技術2.1TrustZone技術2.1.1片上系統(tǒng)硬件框架2.1.2ARMv7架構的TrustZone技術2.1.3ARMv8架構的TrustZone技術2ARM的TrustZone技術2.1TrustZone842ARM的TrustZone技術2.2ARM安全擴展組件2.2.1AXI總線上安全狀態(tài)位的擴展2.2.2AXI-to-APB橋的作用2.2.3TrustZone地址空間控制組件2.2.4TrustZone內存適配器組件2.2.5TrustZone保護控制器組件2.2.6TrustZone中斷控制器組件2.2.7Cache和MMU的擴展2ARM的TrustZone技術2.2ARM安全擴展組件852ARM的TrustZone技術2.3TrustZone技術對資源隔離的實現(xiàn)2.3.1中斷源的隔離2.3.2片上RAM和片上ROM的隔離2.3.3片外DRAM的隔離2.3.4外圍設備的隔離2ARM的TrustZone技術2.3TrustZone86第一篇基礎技術篇3ARM可信固件3.1為什么使用ATF3.2ATF的主要功能3.3ATF與TEE的關系3.4小結第一篇基礎技術篇3ARM可信固件3.1為什么使用ATF874OP-TEE運行環(huán)境的搭建及編譯4.5小結4.4OP-TEE編譯4.3OP-TEE源代碼結構4.2運行CA和TA示例4.1獲取OP-TEE代碼并搭建運行環(huán)境4OP-TEE運行環(huán)境的搭建及編譯4.5小結4.4OP884OP-TEE運行環(huán)境的搭建及編譯4.1獲取OP-TEE代碼并搭建運行環(huán)境4.1.1OP-TEE開發(fā)環(huán)境的搭建4.1.2獲取OP-TEE的源代碼4.1.3獲取編譯OP-TEE的toolchain4.1.4編譯QEMU4.1.5運行OP-TEE4.1.6運行xtest和optee_example_hello_world4OP-TEE運行環(huán)境的搭建及編譯4.1獲取OP-TEE894OP-TEE運行環(huán)境的搭建及編譯4.2運行CA和TA示例4.2.1示例代碼的獲取和集成4.2.2目錄和文件創(chuàng)建4.2.3CA端代碼的修改4.2.4TA端代碼的修改4.2.5TA和CA在OP-TEE的集成4OP-TEE運行環(huán)境的搭建及編譯4.2運行CA和TA示904OP-TEE運行環(huán)境的搭建及編譯4.4OP-TEE編譯4.4.1編譯目標的依賴關系4.4.2bios.bin鏡像的生成過程4.4.3run-only目標的執(zhí)行4OP-TEE運行環(huán)境的搭建及編譯4.4OP-TEE編譯91第二篇系統(tǒng)集成篇02第二篇系統(tǒng)集成篇02925QEMU運行OP-TEE的啟動過程第二篇系統(tǒng)集成篇5.2OP-TEE鏡像的加載和啟動5.4rootfs的掛載5.6tee_supplicant的啟動5.1bios.bin的入口函數(shù)5.3Linux內核鏡像的加載和啟動5.5OP-TEE驅動的啟動5QEMU運行OP-TEE的啟動過程第二篇系統(tǒng)集成篇5.93第二篇系統(tǒng)集成篇5QEMU運行OP-TEE的啟動過程5.7小結第二篇系統(tǒng)集成篇5QEMU運行OP-TEE的啟動過程5.946安全引導功能及ATF的啟動過程010203046.1安全引導的作用6.2安全引導的原理6.3ATF的啟動過程6.4小結6安全引導功能及ATF的啟動過程010203046.1安956安全引導功能及ATF的啟動過程6.2安全引導的原理6.2.1ARMv7安全引導的過程6.2.2ARMv8安全引導的過程6安全引導功能及ATF的啟動過程6.2安全引導的原理6.966安全引導功能及ATF的啟動過程6.3ATF的啟動過程6.3.1ATF中bl1的啟動6.3.2ATF中bl2的啟動6.3.3ATF中bl31的啟動6.3.4ATF中bl32的啟動6.3.5ATF啟動過程小結6安全引導功能及ATF的啟動過程6.3ATF的啟動過程6977OP-TEEOS的啟動過程7.1.1OP-TEEOS的入口函數(shù)7.1.2OP-TEE的內核初始化過程7.1.3OP-TEE服務項的啟動7.1.4OP-TEE驅動的掛載7.1OP-TEE鏡像啟動過程
7.2ARM64位與ARM32位OP-TEE啟動過程的差異
7.3小結7OP-TEEOS的啟動過程7.1.1OP-TEEO988OP-TEE在REE側的上層軟件8.1OP-TEE的軟件框架8.3REE側的守護進程——tee_supplicant8.5小結8.2REE側libteec庫提供的接口8.4各種RPC請求的處理8OP-TEE在REE側的上層軟件8.1OP-TEE的軟998OP-TEE在REE側的上層軟件8.2REE側libteec庫提供的接口8.2.1libteec庫提供的接口說明8.2.2CA調用libteec庫中接口的流程8OP-TEE在REE側的上層軟件8.2REE側libt1008OP-TEE在REE側的上層軟件8.3REE側的守護進程——tee_supplicant8.3.1tee_supplicant編譯生成和自啟動8.3.2tee_supplicant入口函數(shù)8.3.3tee_supplicant存放RPC請求的結構體8.3.4tee_supplicant中的無限循環(huán)8.3.5tee_supplicant獲取TA的RPC請求8.3.6TARPC請求的解析8.3.7RPC請求的處理8.3.8回復RPC請求8OP-TEE在REE側的上層軟件8.3REE側的守護進1018OP-TEE在REE側的上層軟件8.4各種RPC請求的處理8.4.1加載TA鏡像8.4.2操作REE側的文件系統(tǒng)8.4.3操作RPMB8.4.4分配共享內存8.4.5釋放共享內存8.4.6記錄程序執(zhí)行效率8.4.7網(wǎng)絡套接字操作8OP-TEE在REE側的上層軟件8.4各種RPC請求的1029REE側OP-TEE的驅動9.1OP-TEE驅動模塊的編譯保存9.6libteec庫中的接口在驅動中的實現(xiàn)9.5OP-TEE驅動與OP-TEE之間共享內存的注冊和分配9.2REE側OP-TEE驅動的加載9.3REE側用戶空間對驅動的調用過程9.4OP-TEE驅動中重要的結構體變量9REE側OP-TEE的驅動9.1OP-TEE驅動模塊的1039REE側OP-TEE的驅動9.8小結9.7tee_supplicant接口在驅動中的實現(xiàn)9REE側OP-TEE的驅動9.8小結9.7tee_s1049REE側OP-TEE的驅動9.2REE側OP-TEE驅動的加載9.2.1設備號和class的初始化9.2.2optee_driver_init函數(shù)9.2.3掛載驅動的probe操作9.2.4獲取切換到Monitor模式或EL3的接口9.2.5驅動版本和API版本校驗9.2.6判定OP-TEE是否預留共享內存空間9REE側OP-TEE的驅動9.2REE側OP-TEE驅1059REE側OP-TEE的驅動9.2REE側OP-TEE驅動的加載9.2.7配置驅動與OP-TEE之間的共享內存9.2.8分配和設置tee0和teepriv0的設備信息結構體變量9.2.9tee0和teepriv0設備的注冊9.2.10請求隊列的初始化9.2.11使能TEE中共享內存的緩存9.2.12OP-TEE驅動掛載的總結9REE側OP-TEE的驅動9.2REE側OP-TEE驅1069REE側OP-TEE的驅動9.4OP-TEE驅動中重要的結構體變量9.4.1OP-TEE驅動的file_operation結構體變量tee_fops9.4.2tee0設備的tee_driver_ops結構體變量optee_ops9.4.3teepriv0設備的操作結構體變量optee_supp_ops9.4.4共享驅動緩存操作變量tee_shm_dma_buf_ops9REE側OP-TEE的驅動9.4OP-TEE驅動中重要1079REE側OP-TEE的驅動9.6libteec庫中的接口在驅動中的實現(xiàn)9.6.1libteec庫中的open操作9.6.2libteec庫中的release操作9.6.3libteec執(zhí)行get_version操作9.6.4libteec庫中的opensession操作9.6.5libteec庫中的invoke操作9REE側OP-TEE的驅動9.6libteec庫中的接1089REE側OP-TEE的驅動9.7tee_supplicant接口在驅動中的實現(xiàn)9.7.1接收OP-TEE的RPC請求9.7.2獲取OP-TEE的RPC請求9.7.3OP-TEE的RPC請求的返回9REE側OP-TEE的驅動9.7tee_supplic109第三篇OP-TEE內核篇03第三篇OP-TEE內核篇0311010ARM核安全態(tài)和非安全態(tài)間的切換10.5小結10.4EL3的處理過程10.3ARMv8基本知識10.2Monitor模式下的處理過程10.1ARMv7基本知識10ARM核安全態(tài)和非安全態(tài)間的切換10.5小結10.411110ARM核安全態(tài)和非安全態(tài)間的切換10.1ARMv7基本知識10.1.1ARMv7運行模式擴展10.1.2安全狀態(tài)位擴展10.1.3重要寄存器10.1.4安全監(jiān)控模式調用的匯編指令10ARM核安全態(tài)和非安全態(tài)間的切換10.1ARMv7基11210ARM核安全態(tài)和非安全態(tài)間的切換10.2Monitor模式下的處理過程10.2.1Monitor模式對安全監(jiān)控模式調用的處理10.2.2正常世界狀態(tài)中觸發(fā)安全監(jiān)控模式調用的處理過程10.2.3安全世界狀態(tài)中觸發(fā)安全監(jiān)控模式調用的處理過程10ARM核安全態(tài)和非安全態(tài)間的切換10.2Monito11310ARM核安全態(tài)和非安全態(tài)間的切換10.3ARMv8基本知識10.3.1ARM核運行模式的新定義10.3.2ARMv8安全狀態(tài)位擴展10.3.3寄存器資源10.3.4安全監(jiān)控模式調用匯編指令10ARM核安全態(tài)和非安全態(tài)間的切換10.3ARMv8基11410ARM核安全態(tài)和非安全態(tài)間的切換10.4EL3的處理過程10.4.1ATF中EL3異常向量表的注冊10.4.2EL3處理安全監(jiān)控模式調用的流程10.4.3安全世界狀態(tài)中觸發(fā)安全監(jiān)控模式調用的處理過程10.4.4正常世界狀態(tài)中觸發(fā)安全監(jiān)控模式調用的處理過程10.4.5opteed_smc_handler函數(shù)10ARM核安全態(tài)和非安全態(tài)間的切換10.4EL3的處理11511OP-TEE對安全監(jiān)控模式調用的處理
11.1OP-TEE的線程向量表01
11.2ARMv7中Monitor模式對安全監(jiān)控模式調用的處理02
11.3ARMv8中EL3處理安全監(jiān)控模式調用的實現(xiàn)03
11.4OP-TEE對快速安全監(jiān)控模式調用的處理0411.5.1OP-TEE對RPC請求返回操作的處理11.5.2OP-TEE對libteec庫觸發(fā)的安全監(jiān)控模式調用的處理11.5OP-TEE對標準安全監(jiān)控模式調用的處理05
11.6小結0611OP-TEE對安全監(jiān)控模式調用的處理11.1OP-11612OP-TEE對中斷的處理12.2中斷控制器12.4OP-TEE的線程向量表12.6ARMv7Monitor對FIQ事件的處理12.1系統(tǒng)的中斷處理12.3異常向量表配置12.5全局handle變量的初始化12OP-TEE對中斷的處理12.2中斷控制器12.411712OP-TEE對中斷的處理12.8OP-TEE對FIQ事件的處理12.10小結12.7ARMv8EL3階段對FIQ事件的處理12.9OP-TEE對IRQ事件的處理12OP-TEE對中斷的處理12.8OP-TEE對FIQ11812OP-TEE對中斷的處理12.2中斷控制器12.2.1GIC寄存器12.2.2ARMv7SCR寄存器的設定12.2.3ARMv8SCR寄存器的設定12.2.4GICv2架構12.2.5GICv3架構12OP-TEE對中斷的處理12.2中斷控制器12.2.11912OP-TEE對中斷的處理12.3異常向量表配置12.3.1ARMv7中Monitor模式的異常向量表12.3.2ARMv8中EL3階段的異常向量表12.3.3OP-TEE異常向量的配置12OP-TEE對中斷的處理12.3異常向量表配置12.12013OP-TEE對TA操作的各種實現(xiàn)13.1創(chuàng)建會話在OP-TEE中的實現(xiàn)13.2調用TA命令操作在OP-TEE中的實現(xiàn)13.3關閉會話操作在OP-TEE中的實現(xiàn)13.4小結13.1.1靜態(tài)TA的創(chuàng)建會話操作13.1.2動態(tài)TA的創(chuàng)建會話操作13.3.1靜態(tài)TA的關閉會話操作13.3.2動態(tài)TA的關閉會話操作13.2.1靜態(tài)TA的調用命令操作的實現(xiàn)13.2.2動態(tài)TA的調用命令操作實現(xiàn)
13OP-TEE對TA操作的各種實現(xiàn)13.1創(chuàng)建會話在O12114OP-TEE的內存和緩存管理14.1物理內存和緩存數(shù)據(jù)的硬件安全保護14.3OP-TEE對內存區(qū)域的管理14.5OP-TEE內存安全權限檢查14.2ARM核對內存的訪問14.4MMU的初始化和映射頁表14.6系統(tǒng)的共享內存14OP-TEE的內存和緩存管理14.1物理內存和緩存數(shù)12214OP-TEE的內存和緩存管理14.7數(shù)據(jù)是否需要寫入Cache14.8小結14OP-TEE的內存和緩存管理14.7數(shù)據(jù)是否需要寫入12314OP-TEE的內存和緩存管理14.1物理內存和緩存數(shù)據(jù)的硬件安全保護14.1.1內存設備安全區(qū)域的隔離14.1.2MMU和緩存中數(shù)據(jù)的安全隔離14OP-TEE的內存和緩存管理14.1物理內存和緩存數(shù)12414OP-TEE的內存和緩存管理14.2ARM核對內存的訪問14.2.1ARM核獲取內存數(shù)據(jù)的過程14.2.2獲取緩存數(shù)據(jù)的過程14.2.3緩存和TLB中條目的一致性14OP-TEE的內存和緩存管理14.2ARM核對內存的12514OP-TEE的內存和緩存管理14.3OP-TEE對內存區(qū)域的管理14.3.1OP-TEE中內存區(qū)域的類型14.3.2內存區(qū)域編譯設置14OP-TEE的內存和緩存管理14.3OP-TEE對內12614OP-TEE的內存和緩存管理14.4MMU的初始化和映射頁表14.4.1MMU的初始化入口函數(shù)14.4.2物理地址到虛擬地址表的建立14.4.3MMU轉換頁表的創(chuàng)建14.4.4MMU寄存器配置14OP-TEE的內存和緩存管理14.4MMU的初始化和12714OP-TEE的內存和緩存管理14.6系統(tǒng)的共享內存14.6.1共享內存的配置14.6.2OP-TEE驅動與OP-TEE之間的共享內存14.6.3OP-TEE內核空間與用戶空間之間的共享內存14OP-TEE的內存和緩存管理14.6系統(tǒng)的共享內存112815OP-TEE中的線程管理15.6線程的死鎖15.5OP-TEE中線程的調度15.4線程運行時資源的使用關系15.3線程運行時的資源15.2線程狀態(tài)切換15.1OP-TEE中的線程15OP-TEE中的線程管理15.6線程的死鎖15.512915OP-TEE中的線程管理15.7小結15OP-TEE中的線程管理15.7小結13015OP-TEE中的線程管理15.2線程狀態(tài)切換15.2.1Free態(tài)到Active態(tài)的實現(xiàn)15.2.2Active態(tài)到Suspend態(tài)的實現(xiàn)15.2.3Suspend態(tài)到Active態(tài)的實現(xiàn)15.2.4Active態(tài)到Free態(tài)的實現(xiàn)15OP-TEE中的線程管理15.2線程狀態(tài)切換15.213115OP-TEE中的線程管理15.3線程運行時的資源15.3.1線程數(shù)據(jù)結構體15.3.2OP-TEE分配的內核棧15.3.3線程運行于用戶空間的資源15.3.4tee_ta_session結構體15OP-TEE中的線程管理15.3線程運行時的資源1513215OP-TEE中的線程管理15.6線程的死鎖15.6.1死鎖的原理15.6.2防止死鎖15OP-TEE中的線程管理15.6線程的死鎖15.6.13316OP-TEE的系統(tǒng)調用16.3小結16.2OP-TEE系統(tǒng)調用的實現(xiàn)16.1OP-TEE系統(tǒng)調用的作用
16.2.1系統(tǒng)調用的整體流程16.2.2系統(tǒng)調用的定義16.2.3系統(tǒng)調用表tee_sv_syacall_table
16OP-TEE的系統(tǒng)調用16.3小結16.2OP-T13417OP-TEE的IPC機制17.1IPC機制的作用
17.2IPC機制的原理
17.4小結
17.3IPC的實現(xiàn)17.3.1TA調用其他TA的實現(xiàn)17.3.2TA調用系統(tǒng)服務和安全驅動的
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 小學日出作文600字7篇
- 護理工作總結15篇
- 《寒冷的冬天》教案
- 工傷簡單辭職報告(集錦7篇)
- 網(wǎng)絡編程協(xié)議課程設計
- 2018年全國兩會學習解讀
- 消費電子行業(yè)專題報告:創(chuàng)新驅動需求復蘇 業(yè)績與估值有望修復
- 兒童看護服務合同(2篇)
- 河南省安陽市林州城郊鄉(xiāng)第六職業(yè)中學高二地理聯(lián)考試題含解析
- 煤炭經營場地出租合同范本
- 腳手架計算書-
- 部編版八年級語文上冊《句子的成分》定稿課件
- 清華大學《大學物理》習題庫試題及答案09磁學習題
- 目標成本限額指標
- 礦山測量課程設計
- 最易懂的杰普遜航圖學習課件
- 高速公路瀝青路面設計計算書(Word)
- 加油機拆卸安裝方案
- 國畫美術興趣小組活動記錄(共9頁)
- 環(huán)境隱患排查治理檔案臺賬
- 《輪滑》專項體育課教學大綱、教學計劃
評論
0/150
提交評論