书籍详情
《Android安全架构深究》[20M]百度网盘|亲测有效|pdf下载
  • Android安全架构深究

  • 出版社:电子工业出版社
  • 出版时间:2016-03
  • 热度:11152
  • 上架时间:2024-06-30 09:08:33
  • 价格:0.0
书籍下载
书籍预览
免责声明

本站支持尊重有效期内的版权/著作权,所有的资源均来自于互联网网友分享或网盘资源,一旦发现资源涉及侵权,将立即删除。希望所有用户一同监督并反馈问题,如有侵权请联系站长或发送邮件到ebook666@outlook.com,本站将立马改正

内容介绍

编辑推荐

适读人群 :对于所有具有安全意识Android开发者来说,本书都是不可或缺的。
  如今大约有十亿台安卓设备正在被世界各地的人们使用着,而每台设备都可能是潜在的被攻击目标。但不幸的是,现在安卓安全专家之外的很多人对很多安卓安全基础特性的理解程度近乎黑盒。在本书中,安全专家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 系统和安卓开发的相关知识。

作者简介

  Nikolay Elenkov,过去十年一直致力于企业安全的项目,开发过从智能卡、HSM 到Windows 平台、Linux 服务器等各种平台下的安全软件。Android 面世之后,他便很快对Android 产生了浓厚的兴趣,并且在Android 1.5 版本发布之后一直在开发Android 应用。Android 4.0 发布之后,Nikolay 更加关注Android 系统内部实现细节,并且在过去的三年中,他一直在其博客上整理发布他的发现并撰写与Android 安全相关的文章。
  本书的译者从事多年系统研究,具有丰富的理论知识和实践经验。译者对待翻译工作极其认真,不但文笔流畅,而且对书中的程序实例都进行过实际测试,并修改了其中的错误。

精彩书评

  本书全面介绍了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 thenhack it”,只有对一个事物足够了解,你才有能力hack 它,突破更多的限制,希望大家可以循着作者的思路对安卓安全有更进一步的了解。
  ——宋申雷 360 安全技术经理

目录

引言XXV
第1章Android安全模型1
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
权限的本质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章包管理机制51
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
多用户支持概述87
用户类型89
主用户(持有者)89
次要用户90
受限用户91
访客用户93
用户管理93
命令行工具94
用户状态和相关广播94
用户元数据95
用户清单文件95
用户元数据文件96
用户系统目录97
每个用户的应用程序管理98
应用程序数据目录98
应用共享100
外存102
外存实现103
多用户外存103
外存权限109
其他多用户特性111
总结111
第5章加密服务112
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章网络安全与PKI142
PKI与SSL概述143
公钥证书143
直接信任和PrivateCA145
公钥基础设施145
证书撤销147
JSSE介绍148
安全套接字148
对等认证149
主机名认证151
AndroidJSSE的实现152
证书管理与认证152
证书黑名单158
重新审视PKI信任模型161
总结165
第7章凭据存储166
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章在线账户管理186
Android账户管理概述186
账户管理在Android中的具体实现187
AccountManagerService与AccountManager188
认证模块189
认证模块缓存189
账户管理服务的操作和权限190
账户数据库193
多用户支持196
增加一个认证器模块197
Google账户支持200
Google登录服务201
Google服务认证和授权203
GooglePlay服务206
总结208
第9章企业安全209
设备管理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章设备安全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
xxiiAndroid安全架构深究
ADB简介271
对安全ADB的需求273
安全ADB273
安全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
访问内嵌SE293
AndroidSE执行环境296
使用UICC作为安全元件299
软件卡模拟303
Android44的HCE架构304
APDU路由304
编写HCE服务309
HCE应用的安全311
总结312
第12章SELinux313
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访问342
引导加载程序343
解锁引导加载程序343
快速启动模式344
recovery347
原生恢复系统347
定制恢复系统357
root权限359
工程机上的root访问359
正式版本中的root访问363
通过修改boot和system镜像获取root364
通过刷入一个OTA更新包来获取root364
通过漏洞来获取root371
总结372

前言/序言

  推荐序
  《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(张瑞冬)
  四川无声双螺旋安全研究院院长、攻防实验室负责人