|
-- 會員 / 註冊 --
|
|
|
|
手機安全和可信應用開發指南:TrustZone與OP-TEE技術詳解 ( 簡體 字) |
作者:帥峰云 黃騰 宋洋 | 類別:1. -> 安全 -> 網路安全 -> 駭客攻擊與入侵 |
譯者: |
出版社:機械工業出版社 | 3dWoo書號: 50012 詢問書籍請說出此書號!【缺書】 NT售價: 395 元 |
出版日:10/10/2018 |
頁數:346 |
光碟數:0 |
|
站長推薦: |
印刷:黑白印刷 | 語系: ( 簡體 版 ) |
|
加入購物車 │加到我的最愛 (請先登入會員) |
ISBN:9787111609568 |
作者序 | 譯者序 | 前言 | 內容簡介 | 目錄 | 序 |
(簡體書上所述之下載連結耗時費功, 恕不適用在台灣, 若讀者需要請自行嘗試, 恕不保證) |
作者序: |
譯者序: |
前言: |
內容簡介:TrustZone技術是一種提高ARM芯片安全性的技術,OP-TEE是基于ARM的TrustZone技術搭建的可信執行環境。兩者的結合可為系統軟件提供硬件級別的安全保護。本書主要分為4篇,總計25章,第壹篇介紹了TrustZone技術的背景、實現原理、系統基本框架以及OP-TEE開發環境的搭建;第二篇分析了OP-TEE在REE和TEE中各組件的作用和聯系,為將OP-TEE集成到基于ARMv7/ARMv8處理器的開發平臺打下基礎;第三篇詳細介紹OP-TEE內核的中斷處理、線程管理和通信等主要功能的實現原理,使讀者對TEEOS的架構設計有進一步的認識;第四篇介紹基于OP-TEE在加密、解密、安全存儲、在線支付等方面的實際應用,以及如何開發基于OP-TEE的可信應用程序和安全驅動軟件。 |
目錄:推薦序 前言 致謝 第一篇 基礎技術篇 第1章 可信執行環境 2 1.1 系統存在的安全問題 2 1.2 TEE如何保護數據安全 2 1.3 現有TEE解決方案 3 1.3.1 智能手機領域的TEE 4 1.3.2 智能電視領域的TEE 4 1.3.3 IoT領域及其他領域的TEE 5 1.4 為什么選擇OP-TEE 5 第2章 ARM的TrustZone技術 2.1 TrustZone技術 6 2.1.1 片上系統硬件框架 6 2.1.2 ARMv7架構的TrustZone技術 7 2.1.3 ARMv8架構的TrustZone技術 8 2.2 ARM安全擴展組件 8 2.2.1 AXI總線上安全狀態位的擴展 9 2.2.2 AXI-to-APB橋的作用 9 2.2.3 TrustZone地址空間控制組件 9 2.2.4 TrustZone內存適配器組件 10 2.2.5 TrustZone保護控制器組件 11 2.2.6 TrustZone中斷控制器組件 12 2.2.7 Cache和MMU的擴展 12 2.3 TrustZone技術對資源隔離的實現 13 2.3.1 中斷源的隔離 13 2.3.2 片上RAM和片上ROM的隔離 13 2.3.3 片外DRAM的隔離 13 2.3.4 外圍設備的隔離 14 2.4 小結 14 第3章 ARM可信固件 15 3.1 為什么使用ATF 15 3.2 ATF的主要功能 15 3.3 ATF與TEE的關系 15 3.4 小結 16 第4章 OP-TEE運行環境的搭建及編譯 17 4.1 獲取OP-TEE代碼并搭建運行環境 17 4.1.1 OP-TEE開發環境的搭建 17 4.1.2 獲取OP-TEE的源代碼 17 4.1.3 獲取編譯OP-TEE的toolchain 18 4.1.4 編譯QEMU 19 4.1.5 運行OP-TEE 19 4.1.6 運行xtest和optee_example_hello_world 19 4.2 運行CA和TA示例 19 4.2.1 示例代碼的獲取和集成 20 4.2.2 目錄和文件創建 21 4.2.3 CA端代碼的修改 22 4.2.4 TA端代碼的修改 22 4.2.5 TA和CA在OP-TEE的集成 22 4.3 OP-TEE源代碼結構 24 4.4 OP-TEE編譯 25 4.4.1 編譯目標的依賴關系 25 4.4.2 bios.bin鏡像的生成過程 27 4.4.3 run-only目標的執行 28 4.5 小結 32 第二篇 系統集成篇 第5章 QEMU運行OP-TEE的啟動過程 34 5.1 bios.bin的入口函數 34 5.2 OP-TEE鏡像的加載和啟動 36 5.3 Linux內核鏡像的加載和啟動 37 5.4 rootfs的掛載 38 5.5 OP-TEE驅動的啟動 38 5.6 tee_supplicant的啟動 39 5.7 小結 39 第6章 安全引導功能及ATF的啟動過程 40 6.1 安全引導的作用 40 6.2 安全引導的原理 40 6.2.1 ARMv7安全引導的過程 41 6.2.2 ARMv8安全引導的過程 42 6.3 ATF的啟動過程 43 6.3.1 ATF中bl1的啟動 44 6.3.2 ATF中bl2的啟動 49 6.3.3 ATF中bl31的啟動 54 6.3.4 ATF中bl32的啟動 57 6.3.5 ATF啟動過程小結 59 6.4 小結 59 第7章 OP-TEE OS的啟動過程 60 7.1 OP-TEE鏡像啟動過程 60 7.1.1 OP-TEE OS的入口函數 60 7.1.2 OP-TEE的內核初始化過程 60 7.1.3 OP-TEE服務項的啟動 67 7.1.4 OP-TEE驅動的掛載 69 7.2 ARM64位與ARM32位OP-TEE啟動過程的差異 69 7.3 小結 71 第8章 OP-TEE在REE側的上層軟件 72 8.1 OP-TEE的軟件框架 72 8.2 REE側libteec庫提供的接口 73 8.2.1 libteec庫提供的接口說明 73 8.2.2 CA調用libteec庫中接口的流程 84 8.3 REE側的守護進程—tee_supplicant 84 8.3.1 tee_supplicant編譯生成和自啟動 84 8.3.2 tee_supplicant入口函數 85 8.3.3 tee_supplicant存放RPC請求的結構體 87 8.3.4 tee_supplicant中的無限循環 87 8.3.5 tee_supplicant獲取TA的RPC請求 89 8.3.6 TA RPC請求的解析 89 8.3.7 RPC請求的處理 90 8.3.8 回復RPC請求 90 8.4 各種RPC請求的處理 91 8.4.1 加載TA鏡像 91 8.4.2 操作REE側的文件系統 92 8.4.3 操作RPMB 93 8.4.4 分配共享內存 93 8.4.5 釋放共享內存 94 8.4.6 記錄程序執行效率 95 8.4.7 網絡套接字操作 97 8.5 小結 97 第9章 REE側OP-TEE的驅動 98 9.1 OP-TEE驅動模塊的編譯保存 98 9.2 REE側OP-TEE驅動的加載 99 9.2.1 設備號和class的初始化 100 9.2.2 optee_driver_init函數 101 9.2.3 掛載驅動的probe操作 101 9.2.4 獲取切換到Monitor模式或EL3的接口 103 9.2.5 驅動版本和API版本校驗 105 9.2.6 判定OP-TEE是否預留共享內存空間 106 9.2.7 配置驅動與OP-TEE之間的共享內存 106 9.2.8 分配和設置tee0和teepriv0的設備信息結構體變量 109 9.2.9 tee0和teepriv0設備的注冊 111 9.2.10 請求隊列的初始化 112 9.2.11 使能TEE中共享內存的緩存 112 9.2.12 OP-TEE驅動掛載的總結 113 9.3 REE側用戶空間對驅動的調用過程 113 9.4 OP-TEE驅動中重要的結構體變量 114 9.4.1 OP-TEE驅動的file_operation結構體變量tee_fops 114 9.4.2 tee0設備的tee_driver_ops結構體變量optee_ops 114 9.4.3 teepriv0設備的操作結構體變量optee_supp_ops 115 9.4.4 共享驅動緩存操作變量tee_shm_dma_buf_ops 115 9.5 OP-TEE驅動與OP-TEE之間共享內存的注冊和分配 116 9.6 libteec庫中的接口在驅動中的實現 117 9.6.1 libteec庫中的open操作 117 9.6.2 libteec庫中的release操作 118 9.6.3 libteec執行get_version操作 120 9.6.4 libteec庫中的open session操作 120 9.6.5 libteec庫中的invoke操作 122 9.7 tee_supplicant接口在驅動中的實現 123 9.7.1 接收OP-TEE的RPC請求 124 9.7.2 獲取OP-TEE的RPC請求 126 9.7.3 OP-TEE的RPC請求的返回 127 9.8 小結 128 第三篇 OP-TEE內核篇 第10章 ARM核安全態和非安全態間的切換 130 10.1 ARMv7基本知識 130 10.1.1 ARMv7運行模式擴展 130 10.1.2 安全狀態位擴展 130 10.1.3 重要寄存器 131 10.1.4 安全監控模式調用的匯編指令 132 10.2 Monitor模式下的處理過程 132 10.2.1 Monitor模式對安全監控模式調用的處理 133 10.2.2 正常世界狀態中觸發安全監控模式調用的處理過程 134 10.2.3 安全世界狀態中觸發安全監控模式調用的處理過程 136 10.3 ARMv8基本知識 136 10.3.1 ARM核運行模式的新定義 137 10.3.2 ARMv8 安全狀態位擴展 137 10.3.3 寄存器資源 137 10.3.4 安全監控模式調用匯編指令 138 10.4 EL3的處理過程 140 10.4.1 ATF中EL3異常向量表的注冊 140 10.4.2 EL3處理安全監控模式調用的流程 140 10.4.3 安全世界狀態中觸發安全監控模式調用的處理過程 141 10.4.4 正常世界狀態中觸發安全監控模式調用的處理過程 142 10.4.5 opteed_smc_handler函數 143 10.5 小結 145 第11章 OP-TEE對安全監控模式調用的處理 146 11.1 OP-TEE的線程向量表 146 11.2 ARMv7中Monitor模式對安全監控模式調用的處理 146 11.3 ARMv8中EL3處理安全監控模式調用的實現 147 11.4 OP-TEE對快速安全監控模式調用的處理 148 11.5 OP-TEE對標準安全監控模式調用的處理 150 11.5.1 OP-TEE對RPC請求返回操作的處理 152 11.5.2 OP-TEE對libteec庫觸發的安全監控模式調用的處理 152 11.6 小結 157 第12章 OP-TEE對中斷的處理 158 12.1 系統的中斷處理 158 12.2 中斷控制器 158 12.2.1 GIC 寄存器 159 12.2.2 ARMv7 SCR寄存器的設定 160 12.2.3 ARMv8 SCR寄存器的設定 160 12.2.4 GICv2架構 163 12.2.5 GICv3架構 163 12.3 異常向量表配置 164 12.3.1 ARMv7中Monitor模式的異常向量表 165 12.3.2 ARMv8中EL3階段的異常向量表 165 12.3.3 OP-TEE異常向量的配置 167 12.4 OP-TEE的線程向量表 170 12.5 全局handle變量的初始化 170 12.6 ARMv7 Monitor對FIQ事件的處理 172 12.7 ARMv8 EL3階段對FIQ事件的處理 173 12.8 OP-TEE對FIQ事件的處理 176 12.9 OP-TEE對IRQ事件的處理 177 12.10 小結 180 第13章 OP-TEE對TA操作的各種實現 181 13.1 創建會話在OP-TEE中的實現 181 13.1.1 靜態TA的創建會話操作 182 13.1.2 動態TA的創建會話操作 186 13.2 調用TA命令操作在OP-TEE中的實現 191 13.2.1 靜態TA的調用命令操作的實現 193 13.2.2 動態TA的調用命令操作實現 194 13.3 關閉會話操作在OP-TEE中的實現 195 13.3.1 靜態TA的關閉會話操作 197 13.3.2 動態TA的關閉會話操作 197 13.4 小結 197 第14章 OP-TEE的內存和緩存管理 198 14.1 物理內存和緩存數據的硬件安全保護 198 14.1.1 內存設備安全區域的隔離 198 14.1.2 MMU和緩存中數據的安全隔離 199 14.2 ARM核對內存的訪問 200 14.2.1 ARM核獲取內存數據的過程 200 14.2.2 獲取緩存數據的過程 201 14.2.3 緩存和TLB中條目的一致性 203 14.3 OP-TEE對內存區域的管理 204 14.3.1 OP-TEE中內存區域的類型 204 14.3.2 內存區域編譯設置 205 14.4 MMU的初始化和映射頁表 206 14.4.1 MMU的初始化入口函數 206 14.4.2 物理地址到虛擬地址表的建立 208 14.4.3 MMU轉換頁表的創建 211 14.4.4 MMU寄存器配置 212 14.5 OP-TEE內存安全權限檢查 213 14.6 系統的共享內存 214 14.6.1 共享內存的配置 215 14.6.2 OP-TEE驅動與OP-TEE之間的共享內存 215 14.6.3 OP-TEE內核空間與用戶空間之間的共享內存 216 14.7 數據是否需要寫入Cache 217 14.8 小結 218 第15章 OP-TEE中的線程管理 219 15.1 OP-TEE中的線程 219 15.2 線程狀態切換 220 15.2.1 Free態到Active態的實現 220 15.2.2 Active態到Suspend態的實現 221 15.2.3 Suspend態到Active態的實現 222 15.2.4 Active態到Free態的實現 222 15.3 線程運行時的資源 223 15.3.1 線程數據結構體 223 15.3.2 OP-TEE分配的內核棧 224 15.3.3 線程運行于用戶空間的資源 225 15.3.4 tee_ta_session結構體 226 15.4 線程運行時資源的使用關系 227 15.5 OP-TEE中線程的調度 228 15.6 線程的死鎖 228 15.6.1 死鎖的原理 229 15.6.2 防止死鎖 229 15.7 小結 229 第16章 OP-TEE的系統調用 230 16.1 OP-TEE系統調用的作用 230 16.2 OP-TEE系統調用的實現 230 16.2.1 系統調用的整體流程 230 16.2.2 系統調用的定義 232 16.2.3 系統調用表tee_sv_syacall_table 232 16.3 小結 233 第17章 OP-TEE的IPC機制 234 17.1 IPC機制的作用 234 17.2 IPC機制的原理 234 17.3 IPC的實現 234 17.3.1 TA調用其他TA的實現 235 17.3.2 TA調用系統服務和安全驅動的實現 240 17.3.3 TA對密碼學系統服務的調用實現 242 17.3.4 對SE功能模塊進行操作的系統服務 246 17.3.5 加載TA鏡像的系統服務 247 17.4 小結 247 第四篇 應用開發篇 第18章 TA鏡像的簽名和加載 250 18.1 TA鏡像文件的編譯和簽名 250 18.1.1 TA鏡像文件的編譯 250 18.1.2 對TA鏡像文件的簽名 251 18.2 TA鏡像的加載 253 18.2.1 REE側獲取TA鏡像文件的內容 253 18.2.2 加載TA鏡像的RPC請求 255 18.2.3 RPC請求的發送 256 18.2.4 讀取TA鏡像文件內容到共享內存 257 18.3 TA鏡像合法性的驗證 258 18.3.1 驗證TA鏡像合法性使用的RSA公鑰的產生和獲取 258 18.3.2 TA鏡像文件合法性的檢查 260 18.4 加載TA鏡像到OP-TEE的用戶空間 261 18.5 TA運行上下文的初始化 262 18.6 小結 263 第19章 OP-TEE中的密碼學算法 264 19.1 算法使用示例 264 19.1.1 示例代碼獲取和集成 264 19.1.2 板級編譯文件的修改 265 19.1.3 通用編譯文件的修改 266 19.1.4 編譯運行 267 19.2 OP-TEE中的SHA算法 267 19.2.1 TA中使用SHA算法的實現 267 19.2.2 SHA算法實現接口說明 268 19.3 OP-TEE中的AES算法 269 19.3.1 TA中使用AES算法的實現 269 19.3.2 AES算法實現接口說明 270 19.4 OP-TEE中的RSA算法 273 19.4.1 TA中使用RSA算法的實現 273 19.4.2 RSA算法實現接口說明 274 19.5 小結 277 第20章 OP-TEE的安全存儲 278 20.1 安全存儲簡介 278 20.2 安全存儲使用示例 278 20.2.1 示例代碼獲取和集成 279 20.2.2 板級編譯文件的修改 280 20.2.3 通用編譯文件的修改 280 20.2.4 編譯運行 281 20.3 安全存儲功能使用的密鑰 281 20.3.1 安全存儲密鑰 282 20.3.2 可信應用的存儲密鑰 282 20.3.3 文件加密密鑰 283 20.4 安全文件、dirf.db文件的數據格式和操作過程 284 20.4.1 dirf.db文件和安全文件的格式 285 20.4.2 安全存儲功能中使用的重要結構體 286 20.4.3 安全存儲中的文件節點組成 287 20.4.4 查詢安全文件中的特定數據塊 287 20.5 安全存儲文件的創建 288 20.5.1 安全存儲軟件框架 288 20.5.2 dirf.db文件的創建 289 20.5.3 安全文件的創建 290 20.6 安全文件的打開操作 291 20.6.1 安全文件的打開 291 20.6.2 打開dirf.db文件并建立節點樹 292 20.6.3 安全文件在/data/tee目錄下的文件編號 294 20.6.4 打開特定安全文件 295 20.7 安全文件的讀寫操作 295 20.7.1 安全文件中數據的讀取 295 20.7.2 安全文件中數據的寫入 297 20.8 安全文件中數據的加解密 298 20.8.1 各種類型數據的組成及作用 298 20.8.2 元數據的加密 298 20.8.3 數據塊區域的加密策略 299 20.9 小結 300 第21章 可信應用及客戶端應用的開發 301 21.1 TA及CA的基本概念 301 21.2 GP標準 302 21.3 GP標準對TA屬性的定義 302 21.4 GP標準定義的接口 303 21.4.1 GP定義的客戶端接口 303 21.4.2 GP定義的內部接口 304 21.5 TA和CA的實現 308 21.5.1 建立CA和TA的目錄結構 308 21.5.2 CA代碼的實現 308 21.5.3 TA代碼的實現 309 21.6 TA和CA的集成 309 21.6.1 CA和TA的Makefile的修改 309 21.6.2 OP-TEE中comm.mk和xxx.mk文件的修改 310 21.7 TA和CA的調試 310 21.8 TA和CA的使用 310 21.9 小結 311 第22章 安全驅動的開發 312 22.1 安全設備的硬件安全隔離 312 22.2 OP-TEE中安全驅動的框架 313 22.2.1 系統服務層 314 22.2.2 驅動層 314 22.2.3 驅動文件在源代碼中的位置 314 22.3 安全驅動的開發過程和示例 315 22.3.1 示例代碼獲取和集成 315 22.3.2 驅動實現 316 22.3.3 添加系統服務 317 22.3.4 添加系統調用 317 22.3.5 測試使用的TA和CA 318 22.4 安全驅動示例的測試 319 22.5 小結 321 第23章 終端密鑰在線下發系統 322 23.1 密鑰在線下發系統的框架 322 23.2 密鑰在線下發的數據包格式 323 23.3 密鑰在線下發系統示例 324 23.3.1 示例代碼獲取和集成 324 23.3.2 板級編譯文件的修改 325 23.3.3 通用編譯文件的修改 325 23.3.4 編譯運行 326 23.4 離線工具的使用 327 23.5 小結 327 第24章 基于OP-TEE的在線支付系統 328 24.1 在線支付系統的基本框架 328 24.2 可信通信通道 329 24.3 數據交互協議 329 24.3.1 數據頭部區域 330 24.3.2 數據區域 330 24.3.3 電子簽名區域 331 24.3.4 交互數據包的格式 331 24.4 在線支付系統示例的實現 331 24.4.1 第一次握手請求 332 24.4.2 第二次握手數據的解析 333 24.4.3 第三次握手請求 334 24.4.4 支付請求 334 24.4.5 支付反饋 335 24.5 示例的集成 336 24.5.1 示例代碼的獲取和集成 336 24.5.2 板級編譯文件的修改 338 24.5.3 通用編譯文件的修改 338 24.5.4 編譯運行 339 24.5.5 示例支持的命令說明 339 24.5.6 服務器端工具 340 24.6 組包操作嵌入內核 340 24.7 支付系統與生物特征的結合 340 24.8 小結 341 第25章 TEE可信應用的使用領域 342 25.1 在線支付 342 25.2 數字版權保護 342 25.3 身份驗證 343 25.4 其他領域 343 術語表 345 |
序: |
|