Android安全模型之介绍

为什么80%的码农都做不了架构师?>>>   hot3.png

从技术架构角度来看,Android安全模型基于强健的Linux操作系统内核安全性,通过进程沙箱机制隔离进程资源,并且辅以独特的内存管理技术与安全高效的进程间通信机制,适应嵌入式移动端处理器性能与内存容量的限制。在应用层面,使用显式定义且经用户授权的应用权限控制机制等,系统化地规范并强制各类应用程序的行为准则与权限许可;引入应用程序签名机制定义应用程序之间的信任关系与资源共享的权限。Android应用程序基于Android特有的应用框架(Framework),由Java语言编写,运行于Dalvik Java虚拟机。同时,部分底层应用仍可由C/C++语言设计实现,以原生库形式直接运行于操作系统的用户空间。应用程序及其Dalvik虚拟机运行环境都被限制在“进程沙箱”的隔离环境下,自行拥有专用的文件系统区域,独享私有数据。

Android安全模型的设计特点可概括为:

  • 采用多层架构,在保护用户信息安全的同时,保证开放平台上各种应用的灵活性。

  • 既允许经验丰富的开发者充分利用安全架构的灵活性,也为熟悉安全架构的开发者提供更多可以信赖的默认安全性设置。

  • 鼓励用户了解应用程序是如何工作的,并鼓励用户对所持设备进行安全控制。

  • 不但要面对恶意软件的威胁,而且还要考虑第三方应用程序的恶意攻击。

  • 安全保护与风险控制同在,在安全防护失效时,尽量减少损害,并尽快恢复使用。

Android安全模型主要提供以下几种安全机制:

  • 进程沙箱隔离机制: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,具备清理不再使用共享内存区域的能力。

转载于:https://my.oschina.net/fhd/blog/350468

你可能感兴趣的:(Android安全模型之介绍)