一、目录介绍
第1章 Android安全模型
Android体系结构1
Linux内核层2
原生用户空间层3
Dalvik虚拟机3
Java运行时库4
系统服务4
进程间通信4
Binder5
Android框架库9
应用程序10
Android的安全模型介绍11
应用程序沙箱12
权限14
IPC14
代码签名和平台密钥15
多用户支持15
SELinux16
系统更新16
验证启动模式17
总结18
第2章 权限
权限的本质19
权限申请20
权限管理21
权限的保护级别22
权限的赋予24
权限执行29
内核层的权限执行29
原生守护进程级别的权限执行30
框架层的权限执行32
系统权限36
signature权限37
development权限38
共享用户ID38
自定义权限41
公开和私有组件42
activity和service权限43
广播权限44
contentprovider权限45
静态provider权限46
动态provider权限47
pendingintent48
总结50
第3章 包管理机制
Android应用程序包文件的格式51
代码签名53
Java代码签名53
Android代码签名59
APK的安装过程61
应用程序包和数据的位置62
活动组件63
安装一个本地包66
更新包72
安装加密的APK76
转发锁定79
Android41转发锁定实现80
加密的App和GooglePlay82
包验证83
Android对包验证的支持84
GooglePlay实现85
总结85
第4章 用户管理
多用户支持概述87
用户类型89
主用户(持有者)89
次要用户90
受限用户91
访客用户93
用户管理93
命令行工具94
用户状态和相关广播94
用户元数据95
用户清单文件95
用户元数据文件96
用户系统目录97
每个用户的应用程序管理98
应用程序数据目录98
应用共享100
外存102
外存实现103
多用户外存103
外存权限109
其他多用户特性111
总结111
第5章 加密服务
JCAProvider结构112
加密服务Provider113
JCA引擎类115
获得引擎类实例115
算法名称116
SecureRandom117
MessageDigest118
Signature118
Cipher119
Mac123
Key124
SecretKey和PBEKey124
PublicKey、PrivateKey和KeyPair125
KeySpec125
KeyFactory125
SecretKeyFactory126
KeyPairGenerator127
KeyGenerator127
KeyAgreement128
KeyStore129
CertificateFactory和CertPath131
CertPathValidator和CertPathBuilder132
Android的JCAProvider133
Harmony加密Provider133
Android的BouncyCastleProvider133
AndroidOpenSSLProvider137
OpenSSL139
使用定制的Provider140
SpongyCastle140
总结141
第6章 网络安全与PKI
PKI与SSL概述143
公钥证书143
直接信任和PrivateCA145
公钥基础设施145
证书撤销147
JSSE介绍148
安全套接字148
对等认证149
主机名认证151
AndroidJSSE的实现152
证书管理与认证152
证书黑名单158
重新审视PKI信任模型161
总结165
第7章 凭据存储
VPN和Wi-FiEAP凭据167
认证密钥和证书167
系统凭据库168
凭据存储的具体实现169
密钥库(keystore)服务169
密钥blob的版本和类型171
访问限制171
keymaster模块和密钥库服务的实现172
Nexus4的基于硬件的实现173
框架集成175
公开API175
密钥链(KeyChain)API176
密钥链API的实现180
控制对密钥库的访问181
Android密钥库Provider183
总结184
第8章 在线账户管理
Android账户管理概述186
账户管理在Android中的具体实现187
AccountManagerService与AccountManager188
认证模块189
认证模块缓存189
账户管理服务的操作和权限190
账户数据库193
多用户支持196
增加一个认证器模块197
Google账户支持200
Google登录服务201
Google服务认证和授权203
GooglePlay服务206
总结208
第9章 企业安全
设备管理209
实现方法211
添加设备管理员217
企业账户集成220
VPN支持223
PPTP223
L2TP/IPSec223
IPSecXauth224
基于SSL的VPN224
legacyVPN225
基于应用的VPN230
多用户支持233
Wi-FiEAP236
EAP认证方法237
AndroidWi-Fi架构238
EAP凭据管理239
使用WifiManager添加EAP网络242
总结244
第10章 设备安全
控制系统的启动和安装246
引导加载程序246
恢复系统247
验证启动247
dm-verity简介248
Android实现249
打开验证启动249
磁盘加密251
密码模式252
密钥生成253
磁盘加密密码254
修改磁盘加密密码255
启用磁盘加密256
启动加密设备259
屏幕安全261
锁屏实现261
KeyGuard解锁方法263
暴力破解保护270
安全USB调试270
xxiiAndroid安全架构深究
ADB简介271
对安全ADB的需求273
安全ADB273
安全ADB实现274
ADB认证密钥275
验证宿主密钥指纹276
Android备份277
Android备份简介277
备份文件格式278
备份加密279
控制备份范围281
总结281
第11章 NFC和安全元件
NFC简介283
Android对NFC的支持284
读/写模式284
端对端模式289
卡模拟模式289
安全元件290
移动设备中的SE组件290
访问内嵌SE293
AndroidSE执行环境296
使用UICC作为安全元件299
软件卡模拟303
Android44的HCE架构304
APDU路由304
编写HCE服务309
HCE应用的安全311
总结312
第12章 SELinux
SELinux介绍313
SELinux架构314
强制访问控制315
SELinux模式315
安全上下文316
安全上下文的设定和保存317
安全规则318
策略声明318
类型转换规则321
域转换规则322
访问向量规则323
Android实现324
内核修改325
用户空间修改326
设备规则文件334
策略事件日志334
Android44的SELinux策略335
策略概述335
强制域337
无限制域338
应用域340
总结341
第13章 系统更新和root访问
引导加载程序343
解锁引导加载程序343
快速启动模式344
recovery347
原生恢复系统347
定制恢复系统357
root权限359
工程机上的root访问359
正式版本中的root访问363
通过修改boot和system镜像获取root364
通过刷入一个OTA更新包来获取root364
通过漏洞来获取root371
总结372