从技术架构角度来看,Android安全模型基于强健的Linux操做系统内核安全性,经过进程沙箱机制隔离进程资源,而且辅以独特的内存管理技术与安全高效的进程间通讯机制,适应嵌入式移动端处理器性能与内存容量的限制。在应用层面,使用显式定义且经用户受权的应用权限控制机制等,系统化地规范并强制各种应用程序的行为准则与权限许可;引入应用程序签名机制定义应用程序之间的信任关系与资源共享的权限。Android应用程序基于Android特有的应用框架(Framework),由Java语言编写,运行于Dalvik Java虚拟机。同时,部分底层应用仍可由C/C++语言设计实现,以原生库形式直接运行于操做系统的用户空间。应用程序及其Dalvik虚拟机运行环境都被限制在“进程沙箱”的隔离环境下,自行拥有专用的文件系统区域,独享私有数据。安全
Android安全模型的设计特色可归纳为:架构
采用多层架构,在保护用户信息安全的同时,保证开放平台上各类应用的灵活性。框架
既容许经验丰富的开发者充分利用安全架构的灵活性,也为熟悉安全架构的开发者提供更多能够信赖的默认安全性设置。性能
鼓励用户了解应用程序是如何工做的,并鼓励用户对所持设备进行安全控制。spa
不但要面对恶意软件的威胁,并且还要考虑第三方应用程序的恶意攻击。操作系统
安全保护与风险控制同在,在安全防御失效时,尽可能减小损害,并尽快恢复使用。设计
Android安全模型主要提供如下几种安全机制:orm
进程沙箱隔离机制:Android应用程序在安装时被赋予独特的用户标识(UID),并永久保持; 应用程序及其运行的Dalvik虚拟机运行于独立的Linux进程空间,与UID不一样的应用程序彻底隔离。接口
应用程序签名机制:应用程序包(.apk文件)必须被开发者数字签名;同一开发者可指定不一样的应用程序共享UID,进而运行于同一进程空间,共享资源。进程
权限声明机制:应用程序须要显式声明权限,名称,权限组与保护级别 。不一样的级别要求应用程序行使此权限时的认证方式不一样:Normal级申请便可用;Dangerous级需在安装时由用户确认才可用; Signature与Signatureorsystem则必须是系统用户才可用。
访问控制机制:传统的Linux访问控制机制确保系统文件与用户数据不受非法访问。
进程通讯机制:Binder进程通讯机制提供基于共享内存的高效进程通讯;Binder基于Client-Server模型,提供相似COM与CORBA的轻量级远程进程调用(RPC);经过接口描述语言(AIDL)定义接口与交换数据的类型,确保进程间通讯的数据不会溢出越界,污染进程空间。
内存管理机制:基于标准Linux的低内存管理机制(OOM),设计实现了独特的低内存清理(LMK)机制,将进程按重要性分级,分组,当内存不足时,自动清理最低级别进程所占用的内存空间;同时,引入不一样于传统Linux共享内存机制的Android共享内存机制Sshmem,具有清理再也不使用共享内存区域的能力。