內容簡介
《Android 安全架構深究》自底向上描述了Android 的安全架構,深入探究與安全相關的Android 子系統、設備和數據組件的內部實現。其中包括包和用戶管理,許可權和設備策略,以及一些特殊機制——密碼服務、憑據存儲和安全元件的支持等。
《Android 安全架構深究》面向所有對Android 安全體系架構感興趣的讀者,希望對Android 整體或子系統進行評估的安全研究員,以及致力於定製和擴展Android 的開發人員。讀者最好具有Linux 系統和安卓開發的相關知識。
目錄
引言 ................... XXV
第1 章 Android 安全模型 ........ 1
Android 體系結構 1
Linux 核心層 2
原生用戶空間層 ............. 3
Dalvik 虛擬機.................. 3
Java 運行時庫 ................. 4
系統服務 ...... 4
進程間通信 .. 4
Binder ........... 5
Android 框架庫 ............... 9
應用程式 .... 10
Android 的安全模型介紹 ..... 11
應用程式沙箱 ............... 12
許可權 ............ 14
IPC ............. 14
代碼簽名和平台密鑰 ... 15
多用戶支持 15
SELinux ...... 16
系統更新 .... 16
驗證啟動模式 ............... 17
總結 18
第2 章 許可權 ........ 19
許可權的本質 ........ 19
許可權申請 ............ 20
許可權管理 ............ 21
許可權的保護級別 22
許可權的賦予 ........ 24
許可權執行 ............ 29
核心層的許可權執行 ....... 29
原生守護進程級別的許可權執行 ....... 30
框架層的許可權執行 ....... 32
系統許可權 ............ 36
signature 許可權 ................ 37
development 許可權 .......... 38
共享用戶ID ....... 38
自定義許可權 ........ 41
公開和私有組件 42
activity 和service 許可權 ......... 43
廣播許可權 ............ 44
content provider 許可權 ............ 45
靜態provider 許可權 ........ 46
動態provider 許可權 ........ 47
pending intent ..... 48
總結 50
第3 章 包管理機制 ................ 51
Android 應用程式包檔案的格式 ............ 51
代碼簽名 ............ 53
Java 代碼簽名 ............... 53
Android 代碼簽名 ......... 59
APK 的安裝過程 .................. 61
應用程式包和數據的位置 ............... 62
活動組件 .... 63
安裝一個本地包 ........... 66
更新包 ........ 72
安裝加密的APK .......... 76
轉發鎖定 .... 79
Android 4.1 轉發鎖定實現 .............. 80
加密的App 和Google Play ............. 82
包驗證 ............... 83
Android 對包驗證的支持 ................ 84
Google Play 實現 ........... 85
總結 85
第4 章 用戶管理 . 87
多用戶支持概述 87
用戶類型 ............ 89
主用戶(持有者) ....... 89
次要用戶 .... 90
受限用戶 .... 91
訪客用戶 .... 93
用戶管理 ............ 93
命令行工具 94
用戶狀態和相關廣播 ... 94
用戶元數據 ........ 95
用戶清單檔案 ............... 95
用戶元數據檔案 ........... 96
用戶系統目錄 ............... 97
每個用戶的應用程式管理 ... 98
應用程式數據目錄 ....... 98
套用共享 .. 100
外存 ................. 102
外存實現 .. 103
多用戶外存 ................. 103
外存許可權 .. 109
其他多用戶特性 ................. 111
總結 ................. 111
第5 章 加密服務 .................. 112
JCA Provider 結構 ............... 112
加密服務Provider ....... 113
JCA 引擎類 ...... 115
獲得引擎類實例 ......... 115
算法名稱 .. 116
SecureRandom ............. 117
MessageDigest ............. 118
Signature ... 118
Cipher ....... 119
Mac ........... 123
Key ............ 124
SecretKey 和PBEKey . 124
PublicKey、PrivateKey 和KeyPair .................. 125
KeySpec .... 125
KeyFactory .................. 125
SecretKeyFactory ......... 126
KeyPairGenerator ........ 127
KeyGenerator ............... 127
KeyAgreement ............. 128
KeyStore ... 129
CertificateFactory 和CertPath........ 131
CertPathValidator 和CertPathBuilder ............... 132
Android 的JCA Provider .... 133
Harmony 加密Provider .................. 133
Android 的Bouncy Castle Provider .................. 133
AndroidOpenSSL Provider ............. 137
OpenSSL ... 139
使用定製的Provider ........... 140
Spongy Castle .............. 140
總結 ................. 141
第6 章 網路安全與PKI ....... 142
PKI 與SSL 概述 ................ 143
公鑰證書 .. 143
直接信任和Private CA .................. 145
公鑰基礎設施 ............. 145
證書撤銷 .. 147
JSSE 介紹 ........ 148
安全套接字 ................. 148
對等認證 .. 149
主機名認證 ................. 151
Android JSSE 的實現 .......... 152
證書管理與認證 ......... 152
證書黑名單 ................. 158
重新審視PKI 信任模型 ................ 161
總結 ................. 165
第7 章 憑據存儲 .................. 166
VPN 和Wi-Fi EAP 憑據..... 167
認證密鑰和證書 ......... 167
系統憑據庫 ................. 168
憑據存儲的具體實現 ......... 169
密鑰庫(keystore)服務 ............... 169
密鑰blob 的版本和類型 ............... 171
訪問限制 .. 171
keymaster 模組和密鑰庫服務的實現 .............. 172
Nexus 4 的基於硬體的實現 .......... 173
框架集成 .. 175
公開API ........... 175
密鑰鏈(KeyChain)API .............. 176
密鑰鏈API 的實現 ..... 180
控制對密鑰庫的訪問 . 181
Android 密鑰庫Provider ............... 183
總結 ................. 184
第8 章 線上賬戶管理 ........... 186
Android 賬戶管理概述 ....... 186
賬戶管理在Android 中的具體實現 ..... 187
AccountManagerService 與AccountManager .. 188
認證模組 .. 189
認證模組快取 ............. 189
賬戶管理服務的操作和許可權 ......... 190
賬戶資料庫 ................. 193
多用戶支持 ................. 196
增加一個認證器模組 . 197
Google 賬戶支持 ................. 200
Google 登錄服務 ......... 201
Google 服務認證和授權 ................ 203
Google Play 服務 ......... 206
總結 ................. 208
第9 章 企業安全 .................. 209
設備管理 .......... 209
實現方法 .. 211
添加設備管理員 ......... 217
企業賬戶集成 ............. 220
VPN 支持 ......... 223
PPTP ......... 223
L2TP/IPSec .................. 223
IPSec Xauth ................. 224
基於SSL 的VPN ........ 224
legacy VPN .................. 225
基於套用的VPN ........ 230
多用戶支持 ................. 233
Wi-Fi EAP ........ 236
EAP 認證方法 ............. 237
Android Wi-Fi 架構 ..... 238
EAP 憑據管理 ............. 239
使用WifiManager 添加EAP 網路 242
總結 ................. 244
第10 章 設備安全 ................ 245
控制系統的啟動和安裝 ... 246
引導載入程式 .......... 246
恢復系統 .................. 247
驗證啟動 ........ 247
dm-verity 簡介 ......... 248
Android 實現 ........... 249
打開驗證啟動 .......... 249
磁碟加密 ........ 251
密碼模式 .................. 252
密鑰生成 .................. 253
磁碟加密密碼 .......... 254
修改磁碟加密密碼 .. 255
啟用磁碟加密 .......... 256
啟動加密設備 .......... 259
螢幕安全 ........ 261
鎖屏實現 .................. 261
KeyGuard 解鎖方法 263
暴力破解保護 .......... 270
安全USB 調試 ................. 270
xxii Android 安全架構深究
ADB 簡介 ................ 271
對安全ADB 的需求 .................. 273
安全ADB ................ 273
安全ADB 實現 ....... 274
ADB 認證密鑰 ........ 275
驗證宿主密鑰指紋 .. 276
Android 備份 .. 277
Android 備份簡介 ... 277
備份檔案格式 .......... 278
備份加密 .................. 279
控制備份範圍 .......... 281
總結 ............... 281
第11 章 NFC 和安全元件 .... 283
NFC 簡介 ....... 283
Android 對NFC 的支持 ... 284
讀/寫模式 ................. 284
端對端模式 .............. 289
卡模擬模式 .............. 289
安全元件 ........ 290
移動設備中的SE 組件 .............. 290
訪問內嵌SE ............ 293
Android SE 執行環境 ................. 296
使用UICC 作為安全元件 ......... 299
軟體卡模擬 .... 303
Android 4.4 的HCE 架構 ........... 304
APDU 路由 .............. 304
編寫HCE 服務 ........ 309
HCE 套用的安全 ..... 311
總結 ............... 312
第12 章 SELinux ................. 313
SELinux 介紹 . 313
SELinux 架構........... 314
強制訪問控制 .......... 315
SELinux 模式........... 315
安全上下文 .............. 316
安全上下文的設定和保存 ......... 317
安全規則 .................. 318
策略聲明 .................. 318
類型轉換規則 .......... 321
域轉換規則 .............. 322
訪問向量規則 .......... 323
Android 實現 .. 324
核心修改 .................. 325
用戶空間修改 .......... 326
設備規則檔案 .......... 334
策略事件日誌 .......... 334
Android 4.4 的SELinux 策略 .............. 335
策略概述 .................. 335
強制域 ... 337
無限制域 .................. 338
套用域 ... 340
總結 ............... 341
第13 章 系統更新和root 訪問 ................ 342
引導載入程式 343
解鎖引導載入程式 .. 343
快速啟動模式 .......... 344
recovery .......... 347
原生恢復系統 .......... 347
定製恢復系統 .......... 357
root 許可權 ........ 359
工程機上的root 訪問 ................ 359
正式版本中的root 訪問 ... 363
通過修改boot 和system 鏡像獲取root ...... 364
通過刷入一個OTA 更新包來獲取root ....... 364
通過漏洞來獲取root ................. 371
總結 ............... 372