第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
AndroidOpenSSLProvider 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
AndroidJSSE的实现 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
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