Android系统安全机制
考试要求: 熟悉     
知识路径:  > 网络信息安全概述  > 网络信息安全目标与功能  > 移动应用安全需求分析与安全保护工程  > Android系统安全与保护机制


 
       为保护Android系统及应用终端平台安全,Android系统在内核层、系统运行库层、应用程序框架层以及应用程序层等各个层面采取了相应的安全措施,以尽可能地保护移动用户数据、应用程序和设备安全,如下图所示。
       权限声明机制
       权限声明机制,为操作权限和对象之间设定了一些限制,只有把权限和对象进行绑定,才可以有权操作对象。当然,权限声明机制还制定了不同级别不同的认证方式的制度。在默认情况下Android应用程序不会被授予权限,其权限分配根据Android应用APK安装包中的Manifest文件确定。应用程序层的权限包括normal权限、dangerous权限、signature权限、signatureOrSystem权限。normal权限不会给用户带来实质性的伤害;dangerous权限可能会给用户带来潜在威胁,如读取用户位置信息,读取电话簿等,对于此类安全威胁,目前大多数手机会在用户安装应用时提醒用户;signature权限表示具有同一签名的应用才能访问;signatureOrSystem权限主要由设备商使用。
       
       Android系统安全系统结构示意图
       应用程序签名机制
       Android将应用程序打包成.APK文件,应用程序签名机制规定对APK文件进行数字签名,用来标识相应应用程序的开发者和应用程序之间存在信任关系。所有安装到Android系统中的应用程序都必须拥有一个数字证书,此数字证书用于标识应用程序的作者和应用程序之间的信任关系。
       沙箱机制
       沙箱隔离机制使应用程序和其相应运行的Dalvik虚拟机都运行在独立的Linux进程空间,不与其他应用程序交叉,实现完全隔离,如下图所示。Android沙箱的本质是为了实现不同应用程序和进程之间的互相隔离,即在默认情况下,应用程序没有权限访问系统资源或其他应用程序的资源。每个App和系统进程都被分配唯一并且固定的User ID,这个UID与内核层进程的UID对应。每个App在各自独立的Dalvik虚拟机中运行,拥有独立的地址空间和资源。运行于Dalvik虚拟机中的进程必须依托内核层Linux进程而存在,因此Android使用Dalvik虚拟机和Linux的文件访问控制来实现沙箱机制,任何应用程序如果想要访问系统资源或者其他应用程序的资源,必须在自己的Manifest文件中进行声明权限或者共享UID。
       网络通信加密
       Android支持使用SSL/TSL协议对网络数据进行传输加密,以防止敏感数据泄露。
       
       Android应用沙箱机制示意图
       内核安全机制
       Android系统的内核层采用分区和Linux ACL权限控制机制。Linux ACL权限控制机制是指每个文件的访问控制权限都由其拥有者、所属的组、读写执行三个方面共同控制。文件在创建时被赋予了不同的应用程序ID,只有拥有相同应用程序ID或被设置为全局可读写才能够被其他应用程序所访问。每个应用均具有自己的用户ID,有自己的私有文件目录。在系统运行时,最外层的安全保护由Linux提供,其中system.img所在的分区是只读的,不允许用户写入,data.img所在的分区是可读写的,用于存放用户的数据。
       除了Linux常见的安全措施外,Android后续版本不断增强抗攻击安全机制,在Android 2.3版本之后增加了基于硬件的NX(No eXecute)支持,不允许在堆栈中执行代码。在Android 4.0之后,增加了“地址空间布局随机化(Address Space Layout Randomization,ASLR)”功能,防止内存相关的攻击。Android进一步支持具有强制访问控制功能的SELinux,防止内核级提权攻击。
 

更多复习资料
请登录电脑版软考在线 www.rkpass.cn

京B2-20210865 | 京ICP备2020040059号-5
京公网安备 11010502032051号 | 营业执照
 Copyright ©2000-2025 All Rights Reserved
软考在线版权所有