新書推薦:
《
心智的构建:大脑如何创造我们的精神世界
》
售價:HK$
81.4
《
美国小史(揭秘“美国何以成为美国”,理解美国的经典入门读物)
》
售價:HK$
81.4
《
中国古代北方民族史丛书——东胡史
》
售價:HK$
87.8
《
巨人传(插图珍藏本)
》
售價:HK$
705.6
《
地下(村上春树沙林毒气事件的长篇纪实)
》
售價:HK$
76.7
《
偿还:债务与财富的阴暗面
》
售價:HK$
80.2
《
清华大学藏战国竹简校释(壹):《命训》诸篇
》
售價:HK$
94.4
《
封建社会农民战争问题导论(光启文库)
》
售價:HK$
68.4
|
編輯推薦: |
如今大约有十亿台安卓设备正在被世界各地的人们使用着,而每台设备都可能是潜在的被攻击目标。但不幸的是,现在安卓安全专家之外的很多人对很多安卓安全基础特性的理解程度近乎黑盒。在本书中,**安全专家Nikolay Elenkov带领我们一起挖掘安卓安全系统的细节。本书自底向上描述了Android的安全架构,并探索安全相关组件和子系统,比如Binder进程间通信、权限、加密提供者和设备管理等。
你将从本书中学到:
1 Android系统如何声明、使用并保护权限。
2 Android系统如何进行应用包管理并使用代码签名验证。
3 Android系统如何实现Java密码体系(JCA)和Java安全套接字扩展(JSSE)框架。
4 Android的凭据存储系统和API,用于应用安全地保存密钥。
5 在线账户管理框架和Google账户与安卓系统的集成。
6 验证启动、磁盘加密、锁屏和其他设备安全特性的实现。
7 Android的引导加载程序和恢复系统如何完成完整系统更新,以及如何获取root权限。
《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账户管理概述 .............................
|
內容試閱:
|
推荐序
《Android 安全架构深究》一书正如其书名一样,着重从架构角度介绍Android 平台的安全机制。近几年,Android 安全研究的热点一直围绕着恶意软件攻防、应用加固与逆向、支付安全、应用层与框架层漏洞挖掘和内核漏洞挖掘利用这几个方向。目前,已有数位研究者将应用逆向和应用层漏洞评估整理成书籍,但其他安全研究方向仍以碎片化的形式存在于各大安全会议或部分书籍之中。究其原因,我认为是一些高级的安全问题需要必要的平台安全机制方面的知识做铺垫,不然,初学者会感到难以上手。《Android 安全架构深究》一书介绍的正是铺垫性的知识。
该书自底向上地描述了Android 的安全体系架构,深入探究与安全相关的Android 子系统、设备和数据组件的内部实现,并介绍了新引入的安全特性,如受限用户支持、全盘加密、硬件支持的凭据存储和集中式设备管理的支持。
本书前4 章首先简要介绍Android 的体系结构和安全模型。体系结构方面与其他书籍无异,介绍Android 系统重要组件的基本概念,包括Linux 内核层、Dalvik 虚拟机、Java运行时库、Binder 机制和Android 框架库,其中对Binder 机制的介绍较为详细。安全模型方面简要介绍了沙箱机制、应用层权限、IPC 通信、多用户支持和SELinux 机制,尤其在SELinux 机制中,介绍了引入MAC 机制的必要性和DAC 机制的先天不足;并详细讲解了Android 权限的声明、使用和执行过程。开发过简单的Android 程序的人明白权限声明是怎么一回事儿,但这一部分具体阐述了当安装App 时,包管理器是如何将App 声明的权限标识记录到已安装包的核心数据库datasystempackage.xml 文件中的。对于权限赋予,先将系统所有程序分为两类:高层组件(安装的App 和系统服务)和低层组件(本地进程),高层组件的权限赋予仍以包管理器通过package.xml 数据库来决定,低层组件的权限赋予依赖进程UID、GID 和补充GID 来决定。在权限执行的讲解中,作者还是按照自底向上的结构讲解内核层权限的执行、原生守护进程级别权限的执行和框架层权限的执行。实现内核层权限执行的关键在于Android 内核在普通Linux 内核访问控制机制的基础上,又增加了一些特有的访问控制机制,如对网络的访问,上层App 申请了Internet 权限后,内核层才能判断App 对应的进程是属于inet 组的(属于该组才能访问Internet)。原生守护进程的权限执行采用标准文件系统权限机制进行权限控制。框架层权限执行正是我们熟知的AndroidManifest.xml 配置文件机制。该部分接着对四大组件的权限执行、共享用户ID、自定义权限、四大组件声明权限进行了介绍,与基本的Android 开发无异;然后,作者详细讲解了Android 的包管理机制,包管理机制主要负责APK 包的安装和校验。在介绍APK的安装过程之前,先介绍了APK 文件的格式和APK 文件的签名,这一部分已是老生常谈。之后针对APK 安装包的安装形式, 介绍了其安装步骤: 解析和验证包( 从AndroidManifest.xml 中提取信息和包签名,验证APK 完整性)→接受权限和启动安装进程(显示应用申请的权限)→复制到应用程序目录(data)→包扫描→创建数据目录(由installd 进程负责)→生成Optimized DEX 文件(installd 运行dexopt 命令)→文件和目录结构→添加到package.xml 数据库(包名、包属性、路径、权限……)→签名验证,一个APK的安装过程大致如此;*后,介绍了Android 的多用户支持,并描述了在多用户设备上数据隔离的实现。多用户机制在Android 4.2 中就已经加入,但只支持平板模式;在Android L中,多用户机制已支持手机模式。在该部分中,详细介绍了用户类型,每个用户类型所对应的用户元数据及对用户所有的应用程序的管理。
第5 章和第6 章介绍的是加密服务和PKI 机制,这两部分作为安全架构的重要组成部分同时也是Android 安全开发所关注的内容。Android 上的加密服务主要依赖JCA 引擎,在介绍加密服务的章节中,该书对JCA 引擎类中重要的类方法进行了较为细致的介绍,如安全随机数SecureRandom、消息摘要MessageDigest、签名Signature、加密算法Cipher 和密钥Key 等。PKI 机制一直在网络安全中扮演重要角色,在Java 语言中,Java 安全套接字扩展JSSE 实现了SSL 和TLS 协议,并提供数据加密、服务器验证、消息完整性和可选客户端验证等机制。Android 上JSSE 的实现极大地方便了开发人员在Android App 中部署PKI方案。该章节对Android JSSE 实现的描述,对开发人员有着重要的参考意义。
接下来,该书详细介绍了Android 系统中引入的新的安全特性,比如硬件支持的凭据存储、集中式设备管理的支持和全盘加密技术的实现。在凭据存储部分,介绍了Android的凭据存储,并介绍了提供给应用的安全存储密钥的API。对于在线账户管理,本书详细分析了账户管理在Android 系统中的具体实现和认证模块的具体细节。在集中式设备管理方面,本书详细介绍了Android VPN 技术的各个细节和Wi-Fi EAP 认证的具体方法,这对开发企业安全应用有着重要的参考价值。随后的设备安全部分,介绍了验证启动(verifiedboot)、磁盘加密和Android 锁屏的实现,并展示了安全USB 调试和设备加密备份的实现。接着概述了Android 的NFC 栈,深入探究了安全元件(SE)的集成及其API,并介绍了基于主机的卡模拟(HCE)。以上介绍的安全机制被引入Android 系统的时间并不长,而且,目前对这些技术的公开详细介绍并不多见。该书对这些新的安全机制的介绍不仅为安全研究人员提供了新的研究方向,还为开发人员运用这些新的安全机制提供了重要的参考。
在该书的*后一部分,作者详述了Android 平台引入的*为重要的安全机制——SELinux。众所周知,SELinux 是Linux 2.6 内核引入的一个全新的安全机制,不同于Linux DAC 机制,它是一种强制访问控制MAC 机制。从Android 4.3 开始,Android 基于SELinux 机制,实现了SEAndroid 机制来加强系统安全性。为了能让读者对SEAndroid 有更细致的了解,作者先对SELinux 的实现细节做了详细描述,包括SELinux 的架构、SELinux模式、安全上下文、策略声明、类型转换和域转换等。接着描述了Android 上的实现,*后介绍了Android 4.4 的SELinux 策略。至此,从简要介绍SELinux 的架构和策略语言开始,详细讲解为集成进Android,SELinux 所做的改进,并概述了Android 基础的SELinux 策略,一步一步让读者对Android 平台的SELinux 机制有更清晰的认识。
总的来说,《Android 安全架构深究》一书对Android 平台的安全机制做了较为细致的剖析。全书专注于对Android 平台重要安全机制的分析,尤其对新引进的安全机制的分析弥补了该方面的空白,这无论是对新手还是对安全有一定研究的人员和开发者都具有重要的参考价值。
Only_Guest(张瑞冬)
四川无声双螺旋安全研究院院长、攻防实验室负责人
|
|