Android 安全机制
Android 是一个权限分离的系统 。 这是利用 Linux 已有的权限管理机制,通过为每一个 Application 分配不同的 uid 和 gid , 从而使得不同的 Application 之间的私有数据和访问( native 以及 java 层通过这种 sandbox 机制,都可以)达到隔离的目的 。 与此 同时, Android 还 在此基础上进行扩展,提供了 permission 机制,它主要是用来对 Application 可以执行的某 些具体操作进行权限细分和访问控制,同时提供了 per-URI permission 机制,用来提供对某些特 定的数据块进行 ad-hoc 方式的访问。 ### Android 安全机制详解 #### 一、Android安全机制概述 Android系统作为一个开放源代码的移动设备操作系统,其安全性尤为重要。为了确保系统的稳定性和用户的隐私安全,Android采用了基于Linux内核的权限分离机制,结合自身的一系列权限管理措施,构建了一个较为完善的多层安全体系。 **1.1 UID、GID、GIDS** - **UID (User ID)**: 每个Android应用在安装时都会被分配一个唯一的用户ID(UID),这通常是基于一个范围内的数值(例如从10000开始),以确保不同应用间的隔离性。这种机制能够有效防止恶意应用访问其他应用的敏感信息或执行危险操作。 - **GID (Group ID)**: 对于大多数应用程序而言,GID等于UID。这意味着每个应用不仅有自己的唯一UID,也拥有相应的GID,从而在Native层面上实现了应用间的隔离。此外,GID也是用于标识一个用户所属的主组。 - **GIDS (Additional Group IDs)**: GIDS则是一组额外的组ID,它们与应用程序请求的特定权限有关。当应用程序请求并获得特定权限时,相应的GIDS会被添加到该应用的GIDS列表中,以便于系统根据这些额外的组ID来授予或限制对特定资源的访问。 这些基础的身份标识信息是在Android安全模型中非常核心的部分,它们确保了不同应用程序之间数据的隔离,并且为后续更细粒度的权限管理奠定了基础。 **1.2 Permission机制** Android的Permission机制允许开发者声明应用程序需要哪些权限才能正常运行。每个权限都包含了三个主要组成部分: - **权限名称**:如`android.permission.SEND_SMS`。 - **权限组**:如`COST_MONEY`,包含了一系列与花费金钱相关的权限。 - **保护级别**:包括`normal`、`dangerous`、`signature`和`signatureOrSystem`四个等级。 这些保护级别决定了应用程序如何获取权限: - `normal`: 无需用户干预即可自动授予。 - `dangerous`: 需要在安装时由用户显式同意。 - `signature`: 必须由同一数字签名的应用程序持有。 - `signatureOrSystem`: 要么由同一数字签名的应用持有,要么必须是系统应用。 #### 二、Android权限管理机制 **2.1 Framework权限机制** Android系统内部有一套复杂的框架来管理应用程序的权限,主要包括权限的初始化、动态权限管理和权限验证等几个方面。 **2.1.1 安装入口** 权限的初始化通常发生在应用程序安装或升级的过程中,主要有以下几种安装途径: - **packageInstaller**: 当用户从商店下载并安装应用时触发。 - **pm命令**: 使用命令行工具安装应用。 - **adb install**: 通过开发者工具adb安装应用。 - **拷贝即安装**: PackageManagerService使用AppDirObserver监视/data/app/目录下的新应用。 所有这些安装方式最终都会调用PackageManagerService中的相应方法来完成安装过程,其中包括权限的初始化和设置。 **2.1.2 权限创建** 在应用程序安装过程中,系统会读取AndroidManifest.xml文件中的权限声明,并根据声明创建相应的权限实例。这一过程涉及到了对应用请求权限的解析和验证,确保只有符合要求的应用能够获取所需权限。 - **解析权限声明**:系统通过解析`<uses-permission>`、`<permission>`等标签来确定应用请求了哪些权限。 - **权限验证**:对应用请求的权限进行检查,包括是否属于`dangerous`类别以及是否已经获得了必要的用户许可。 - **权限授予**:根据验证结果,系统决定是否授予请求的权限,并记录相应的权限状态。 通过这种方式,Android系统确保了所有应用程序只能在其权限范围内执行操作,有效地提升了系统的整体安全性。 总而言之,Android的安全机制是围绕着权限分离的核心思想设计的,通过为每个应用程序分配独立的UID和GID来实现基本的隔离,并通过细致入微的权限管理机制进一步增强了系统的安全性和可控性。这些机制相互协作,共同构成了Android平台强大的安全防线。
剩余22页未读,继续阅读
- zhouqiuwen19862012-08-10挺好的文档,详细描述了安全机制,谢谢
- 粉丝: 1
- 资源: 5
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- YOLOv8完整网络结构图详细visio
- LCD1602电子时钟程序
- 西北太平洋热带气旋【灾害风险统计】及【登陆我国次数评估】数据集-1980-2023
- 全球干旱数据集【自校准帕尔默干旱程度指数scPDSI】-190101-202312-0.5x0.5
- 基于Python实现的VAE(变分自编码器)训练算法源代码+使用说明
- 全球干旱数据集【标准化降水蒸发指数SPEI-12】-190101-202312-0.5x0.5
- C语言小游戏-五子棋-详细代码可运行
- 全球干旱数据集【标准化降水蒸发指数SPEI-03】-190101-202312-0.5x0.5
- spring boot aop记录修改前后的值demo
- 全球干旱数据集【标准化降水蒸发指数SPEI-01】-190101-202312-0.5x0.5