赞
踩
提示:本文只是结合网上内容进行大概整理,并未深究
Android Permission权限机制是对Android安全机制的一个重要补充,控制了应用对于系统接口或者对外接口的访问。
Android 是一个权限分离的系统。这是利用 Linux 已有的权限管理机制,通过为每一个 Application 分配不同的 uid 和 gid,从而使得不同的 Application 之间的私有数据和访问(native 以及 Java 层通过这种机制,都可以)达到隔离的目的。与此同时,Android 还在此基础上进行扩展,提供了permission机制,它主要是用来对 Application 可以执行的某些具体操作进行权限细分和访问控制,同时提供了URI permission机制,用来提供对某些特定的数据块进行专门权限进行限制。
描述权限中隐含的潜在风险,并指示系统在确定是否将权限授予请求它的应用程序时应遵循的程序。Standard permissions具有预定义的永久保护级别。如果您在应用程序中创建自定义权限,您可以使用下面列出的值之一定义 protectionLevel 属性。如果没有为自定义权限定义 protectionLevel,则系统分配默认值(“normal”)。每个保护级别由基本权限类型和零个或多个标志组成(5个基本类型, 22个附加类型)。
Android应用程序在安装时被赋予独特的用户标识(UID),并永久保持;应用程序及其运行的Dalvik虚拟机运行于独立的Linux进程空间,与UID不同的应用程序完全隔离。
应用程序包(.apk文件)必须被开发者数字签名;同一开发者可指定不同的应用程序共享UID,进而运行于同一进程空间,共享资源。
签名的过程:
• 生成私有、公共密钥和公共密钥证书
• 对应用进行签名
• 优化应用程序
签名的作用:
• 识别代码的作者。
• 检测应用程序是否发生了改变。
• 在应用程序之间建立信任,以便于应用程序可以安全地共享代码和数据。
权限声明机制,要想获得在对象上进行操作,就需要把权限和此对象的操作进行绑定。不同级别要求应用程序行使权限的认证方式也不一样,Normal级申请就可以使用,Dangerous级需要安装时由用户确认,Signature和Signatureorsystem级则必须是系统用户才可用。
确保系统文件和用户数据不受非法访问。
基于共享内存的Binder实现,提供轻量级的远程进程调用(RPC)。通过接口描述语言(AIDL)定义接口与交换数据的类型,确保进程间通信的数据不会溢出越界。
Linux进程视角
应用程序视角
内存管理机制,基于Linux的低内存管理机制,设计实现了独特的LMK,将进程重要性分级、分组,当内存不足时,自动清理级别进程所占用的内存空间。同时,引入的Ashmem内存机制,使得Android具备清理不再使用共享内存区域的能力。正是因为Android采用多层架构,在保护信息安全的同时,也保证开放平台的灵活性。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。