在Android系统的应用层中,提供了如下两个安全机制模型:
1.使用显示定义,经用户授权的应用权限控制机制。系统规范并强制各类应用程序的行为准则与权限许可。
2.提供了应用程序的签名机制,实现了应用程序之间的信息信任和资源共享。
根据上述模型,Android安全系统提供了如下的安全机制
- 内存管理 -- LMK(低内存清理)
- Android内存管理机制基于Linux的OOM(out of memory killer)机制,实现了LMK(low memory killer)机制。将所有的进程按照重要性进行分级,系统会自动清理最低级别的进程所占用的内存空间。
- 同时引入Android独有的共享内存机制Ashmen,该机制具有清理不在使用的共享内存区域的能力。
- 访问控制 -- DAC(自主访问控制)
- Linux系统默认采用ACM(访问控制机制)为DAC(自主访问控制)。
- Android直接继承了Linux的访问控制机制。确保系统同文件与用户数据不受非法访问。
- 沙箱隔离
- 不同于访问控制,针对的是系统内文件(Linux系统中,设备资源也是文件);沙箱隔离概念,是针对运行中的进程。
- Linux是一个多用户的操作系统,一个UID标识一个用户。用户之间是相互隔离的(这种隔离是建立在访问控制的基础上实现),用户有各自独立的所属资源和权限范围。当多用户登录Linux系统时,每个用户的活动都在各自独立的环境中进行,互不干扰。
- Android将Linux系统的用户隔离机制巧妙地移植为应用程序隔离。在安装应用程序时向其分配UID。在Android上,一个UID则识别一个应用程序(应用程序在设备上存续期间内,其UID保持不变)。
- 权限声明
- 上面已经说明,Android程序默认无法访问系统和资源,所以Android应用程序需要显示声明权限、名称、权限组与保护级别。只有这样,程序才能访问所需的资源,完成既定功能。在Android系统中规定,不同级别应用程序的使用全权限是的认证方式不同。
1.Normal级:申请后即可使用;
2.Dangerous级:在安装时由用户确认才可用;
3.Signature和Signatureorsystem级:必须系统用户才可用;