描述
开 本: 16开纸 张: 胶版纸包 装: 平装国际标准书号ISBN: 9787121279447
你将从本书中学到:
1 Android系统如何声明、使用并保护权限。
2 Android系统如何进行应用包管理并使用代码签名验证。
3 Android系统如何实现Java密码体系(JCA)和Java安全套接字扩展(JSSE)框架。
4 Android的凭据存储系统和API,用于应用安全地保存密钥。
5 在线账户管理框架和Google账户与安卓系统的集成。
6 验证启动、磁盘加密、锁屏和其他设备安全特性的实现。
7 Android的引导加载程序和恢复系统如何完成完整系统更新,以及如何获取root权限。
《Android安全架构深究》拥有着极高的知识深度和极多的知识细节,必将是心系安全的安卓开发者的书籍。
本书面向所有对Android 安全体系架构感兴趣的读者,希望对Android 整体或子系统进行评估的安全研究员,以及致力于定制和扩展Android 的开发人员。读者**具有Linux 系统和安卓开发的相关知识。
第 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 ……………………………………
本书全面介绍了 Android体系架构的攻防,涉及 root、SEAndroid的加密解密等核心安全问题,是为数不多的深入讲解安卓底层安全的书籍。作者和译者都是业界资深专家,原文精彩、译文流畅,相关从业者均值得一读。
——乌云知识库
国内安全圈对攻防的热衷程度很高,但经典的安全架构大多来自国外,实际上攻防和安全建设并不能画等号,这也是国内安全设计人才极少的原因。而这本书正是从经典安全设计的角度,提供了较为系统化的分析,对于想积累软件安全体系架构的视野以及从事安全架构设计的从业人员来说都是很好的参考书,对移动安全领域的研究者或移动平台开发者同样适用。
——赵彦 华为云安全首席架构师
Android安全作为近年来的热门领域涌现出了大批优秀书籍,而本书则是其中新出现的佼佼者。本书在高层次上对 Android安全的上层架构做了详细介绍,是安全研究人员挖掘分析漏洞的优秀学习参考资料,ROM开发人员和 App开发者也可以通过阅读本书加深对 Android安全体系这个复杂而庞大结构的认识,从而减少漏洞的产生,设计出更安全的系统和 App,从而给用户以更好的保护。作者和译者均在 Android领域有着丰富的经验,相信会让读者受益良多。
——何淇丹(Flanker) KeenLab(原KeenTeam)高级研究员、谷歌 Android安全名人堂成员、Blackhat演讲者
通过本书,我们可以深度了解 Android的整个体系结构,并从中找到读者在研发及安全加固时所需要的资料与知识。如本书中的 EAP可扩展认证协议部分,通过对此架构的理解,你将对 Android对企业安全的支持有更深刻的认识,对研发以 Android为平台的企业安全产品有指导性的作用。本书关于 Android的 NFC协议栈的知识,建议各位读者认真阅读,这将是 Android体系中*有趣的部分,通过对该协议栈的掌握,你或许可以实现利用一台 Android手机的 NFC模块模拟一张自己的门禁卡这样炫酷的事情。
——杨卿(Ir0nSmith) 360独角兽团队(UnicornTeam)创始人
《Android安全架构深究》这本书一直是学习安卓安全的图书之一,很荣幸读到中文版。这本书深入讲解了 Android的安全架构,从 Android安全模型的介绍到相关权限、签名、用户管理、更新等机制无所不包。推荐每个学习安卓安全的读者都能好好阅读本书,相信对大家在 Android安全方面的技术进阶**能起到极大助益。
——张祖优(Fooying) 知道创宇安全研究员、Sebug 负责人
作为当今*流行的开放操作系统平台,Android驱动着数以亿计的设备工作。这样一个充满魅力的系统,一定拥有完善的安全体系。本书对 Android安全体系的架构做了详细介绍,如果你对 Android实现感兴趣,那么这本书一定会适合你。
——钱文祥 腾讯浏览器安全研究员,《白帽子讲浏览器安全》作者
新的信息技术给信息安全带来了新的研究方向,我们既感叹需要更新的知识越来越多,新的知识也让多年的信息安全从业者和热爱学习的新锐们又重新站在了同一起跑线上,这成为改变格局的机会。
Android的流行让我们很难忽视它可能存在的安全问题,《Android安全架构深究》能让我们快速了解它的整体架构,也能在我们需要的时候查找更底层的安全细节,无论是深度阅读,还是作为工具书偶尔查阅,这本书都是难能可贵的。作为一个希望能不断更新自身技术知识的信息安全从业人员,通过阅读本书的样章能够使我快速并愉快地了解一些之前觉得毫无头绪的内容。如果还有什么感慨,就是等本书正式发行的时候,迅速地去买一本,细细阅读。
——郝轶 百度云安全部资深安全专家
这本书对于致力于安卓安全研究和深入安卓系统开发的读者有非常大的参考价值,可以帮助大家了解和学习安卓的安全体系架构。在安全攻防圈子里流行着一句话“know it then hack it”,只有对一个事物足够了解,你才有能力 hack它,突破更多的限制,希望大家可以循着作者的思路对安卓安全有更进一步的了解。
——宋申雷 360安全技术经理
推荐序
《Android安全架构深究》一书正如其书名一样,着重从架构角度介绍 Android平台的安全机制。近几年,Android安全研究的热点一直围绕着恶意软件攻防、应用加固与逆向、支付安全、应用层与框架层漏洞挖掘和内核漏洞挖掘利用这几个方向。目前,已有数位研究者将应用逆向和应用层漏洞评估整理成书籍,但其他安全研究方向仍以碎片化的形式存在于各大安全会议或部分书籍之中。究其原因,我认为是一些高级的安全问题需要必要的平台安全机制方面的知识做铺垫,不然,初学者会感到难以上手。《Android安全架构深究》一书介绍的正是铺垫性的知识。
该书自底向上地描述了 Android的安全体系架构,深入探究与安全相关的 Android子系统、设备和数据组件的内部实现,并介绍了新引入的安全特性,如受限用户支持、全盘加密、硬件支持的凭据存储和集中式设备管理的支持。
本书前 4章首先简要介绍 Android的体系结构和安全模型。体系结构方面与其他书籍无异,介绍 Android系统重要组件的基本概念,包括 Linux内核层、Dalvik虚拟机、Java运行时库、Binder机制和 Android框架库,其中对 Binder机制的介绍较为详细。安全模型方面简要介绍了沙箱机制、应用层权限、IPC通信、多用户支持和 SELinux机制,尤其在 SELinux机制中,介绍了引入 MAC机制的必要性和 DAC机制的先天不足;并详细讲解了 Android权限的声明、使用和执行过程。开发过简单的 Android程序的人明白权限声明是怎么一回事儿,但这一部分具体阐述了当安装 App时,包管理器是如何将 App声明的权限标识记录到已安装包的核心数据库/data/system/package.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认证的具体方法,这对开发企业安全应用有着重要的参考价值。随后的设备安全部分,介绍了验证启动( verified boot)、磁盘加密和 Android锁屏的实现,并展示了安全 USB调试和
——乌云知识库
国内安全圈对攻防的热衷程度很高,但经典的安全架构大多来自国外,实际上攻防和安全建设并不能画等号,这也是国内安全设计人才极少的原因。而这本书正是从经典安全设计的角度,提供了较为系统化的分析,对于想积累软件安全体系架构的视野以及从事安全架构设计的从业人员来说都是很好的参考书,对移动安全领域的研究者或移动平台开发者同样适用。
——赵彦 华为云安全首席架构师
Android 安全作为近年来的热门领域涌现出了大批优秀书籍,而本书则是其中新出现的佼佼者。本书在高层次上对Android 安全的上层架构做了详细介绍,是安全研究人员挖掘分析漏洞的优秀学习参考资料,ROM 开发人员和App 开发者也可以通过阅读本书加深对Android 安全体系这个复杂而庞大结构的认识,从而减少漏洞的产生,设计出更安全的系统和App,从而给用户以更好的保护。作者和译者均在Android 领域有着丰富的经验,相信会让读者受益良多。
——何淇丹(Flanker) KeenLab(原KeenTeam)高级研究员、谷歌Android 安全名人堂成员、Blackhat 演讲者
通过本书,我们可以深度了解Android 的整个体系结构,并从中找到读者在研发及安全加固时所需要的资料与知识。如本书中的EAP 可扩展认证协议部分,通过对此架构的理解,你将对Android 对企业安全的支持有更深刻的认识,对研发以Android 为平台的企业安全产品有指导性的作用。本书关于Android 的NFC 协议栈的知识,建议各位读者认真阅读,这将是Android 体系中*有趣的部分,通过对该协议栈的掌握,你或许可以实现利用一台Android 手机的NFC 模块模拟一张自己的门禁卡这样炫酷的事情。
——杨卿(Ir0nSmith) 360 独角兽团队(UnicornTeam)创始人
《Android 安全架构深究》这本书一直是学习安卓安全的图书之一,很荣幸读到中文版。这本书深入讲解了Android 的安全架构,从Android 安全模型的介绍到相关权限、签名、用户管理、更新等机制无所不包。推荐每个学习安卓安全的读者都能好好阅读本书,相信对大家在Android 安全方面的技术进阶**能起到极大助益。
——张祖优(Fooying) 知道创宇安全研究员、Sebug 负责人
作为当今*流行的开放操作系统平台,Android 驱动着数以亿计的设备工作。这样一个充满魅力的系统,一定拥有完善的安全体系。本书对Android 安全体系的架构做了详细介绍,如果你对Android 实现感兴趣,那么这本书一定会适合你。
——钱文祥 腾讯浏览器安全研究员,《白帽子讲浏览器安全》作者
新的信息技术给信息安全带来了新的研究方向,我们既感叹需要更新的知识越来越多,新的知识也让多年的信息安全从业者和热爱学习的新锐们又重新站在了同一起跑线上,这成为改变格局的机会。
Android 的流行让我们很难忽视它可能存在的安全问题,《Android 安全架构深究》能让我们快速了解它的整体架构,也能在我们需要的时候查找更底层的安全细节,无论是深度阅读,还是作为工具书偶尔查阅,这本书都是难能可贵的。作为一个希望能不断更新自身技术知识的信息安全从业人员,通过阅读本书的样章能够使我快速并愉快地了解一些之前觉得毫无头绪的内容。
如果还有什么感慨,就是等本书正式发行的时候,迅速地去买一本,细细阅读。
——郝轶 百度云安全部资深安全专家
这本书对于致力于安卓安全研究和深入安卓系统开发的读者有非常大的参考价值,可以帮助大家了解和学习安卓的安全体系架构。在安全攻防圈子里流行着一句话“know it thenhack it”,只有对一个事物足够了解,你才有能力hack 它,突破更多的限制,希望大家可以循着作者的思路对安卓安全有更进一步的了解。
——宋申雷 360 安全技术经理
《Android 安全架构深究》一书正如其书名一样,着重从架构角度介绍Android 平台的安全机制。近几年,Android 安全研究的热点一直围绕着恶意软件攻防、应用加固与逆向、支付安全、应用层与框架层漏洞挖掘和内核漏洞挖掘利用这几个方向。目前,已有数位研究者将应用逆向和应用层漏洞评估整理成书籍,但其他安全研究方向仍以碎片化的形式存在于各大安全会议或部分书籍之中。究其原因,我认为是一些高级的安全问题需要必要的平台安全机制方面的知识做铺垫,不然,初学者会感到难以上手。《Android 安全架构深究》一书介绍的正是铺垫性的知识。
该书自底向上地描述了Android 的安全体系架构,深入探究与安全相关的Android 子系统、设备和数据组件的内部实现,并介绍了新引入的安全特性,如受限用户支持、全盘加密、硬件支持的凭据存储和集中式设备管理的支持。
本书前4 章首先简要介绍Android 的体系结构和安全模型。体系结构方面与其他书籍无异,介绍Android 系统重要组件的基本概念,包括Linux 内核层、Dalvik 虚拟机、Java运行时库、Binder 机制和Android 框架库,其中对Binder 机制的介绍较为详细。安全模型方面简要介绍了沙箱机制、应用层权限、IPC 通信、多用户支持和SELinux 机制,尤其在SELinux 机制中,介绍了引入MAC 机制的必要性和DAC 机制的先天不足;并详细讲解了Android 权限的声明、使用和执行过程。开发过简单的Android 程序的人明白权限声明是怎么一回事儿,但这一部分具体阐述了当安装App 时,包管理器是如何将App 声明的权限标识记录到已安装包的核心数据库/data/system/package.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(张瑞冬)
四川无声双螺旋安全研究院院长、攻防实验室负责人
评论
还没有评论。