Android安全机制简述

作者: 鸿羽羽羽羽羽 | 来源:发表于2018-07-07 21:33 被阅读27次

    Android 系统组件及其作用

    1.Zygote:Android应用的孵化器,一切Android程序由此进程fork而来。

    2.Binder:Android的进程间通信机制,它是Android平台最核心的功能组件。

    3.Package Manager Service:应用安装包管理服务,不仅负责包的安装和卸载,更重要的是负责Android应用信息的查询和控制,例如Android权限管理。

    4.Activity Manager Service:管理Android框架层的进程,也包含了Android应用四大组件的逻辑实现。

    5.Dalvik,art虚拟机:android 系统的虚拟机,google自己编写的一个虚拟机.可执行文件是dex文件。

    Android安全机制    :

    1.进程沙箱隔离机制

    Android应用程序在安装时被赋予独特的用户标识(UID),并永久保持;应用程序及其运行的Dalvik虚拟机运行于独立的Linux进程空间,与UID不同的应用程序完全隔离。如下图:

    在特殊情况下,进程间还可以存在相互信任关系。如源自同一开发者或同一开发机构的应用程序,通过Android提供的共享UID(Shared UserId)机制,使得具备信任关系的应用程序可以运行在同一进程空间。

    2.应用程序签名机制

    应用程序包(.apk文件)必须被开发者数字签名;同一开发者可指定不同的应用程序共享UID,进而运行于同一进程空间,共享资源。

    签名的过程: 

        • 生成私有、公共密钥和公共密钥证书 

        • 对应用进行签名  

        • 优化应用程序​

    签名的作用:   

        • 识别代码的作者。

        • 检测应用程序是否发生了改变。  

        • 在应用程序之间建立信任,以便于应用程序可以安全地共享代码和数据。

    在安装应用程序APK时,系统安装程序首先检查APK是否被签名,有签名才能安装。当应用程序升级时,需要检查新版应用的数字签名与已安装的应用程序的签名是否相同,否则,会被当做一个新的应用程序。Android开发者有可能把安装包命名为相同的名字,通过不同的签名可以把他们区分开来,也保证签名不同的包不被替换,同时防止恶意软件替换安装的应用。 

    3.权限声明机制

    动态权限:

    要想获得在对象上进行操作,就需要把权限和此对象的操作进行绑定。不同级别要求应用程序行使权限的认证方式也不一样,Normal级申请就可以使用,Dangerous级需要安装时由用户确认,Signature和Signatureorsystem级则必须是系统用户才可用。一般我们接触的比较多的就是Normal的声明和Dangerous的动态权限申请 

    • 通过manifest文件中声明以下属性:

    • 通过以下属性添加自定义权限:

    • 系统组件权限,如activity组件:

    4.访问控制机制

            确保系统文件和用户数据不受非法访问。尽量控制系统和程序的访问权限。

    Linux用户权限:

    5.进程通信机制

    基于共享内存的Binder实现,提供轻量级的远程进程调用(RPC)。通过接口定义语言(AIDL)定义接口与交换数据的类型,确保进程间通信的数据不会溢出越界,污染进程空间。至于这一块具体的Bindler机制,自己也没有理解的太透彻,大家有兴趣可以去看其他文章

    6.内存管理机制

    基于标准 Linux的低内存管理机制(OOM),设计实现了独特的低内存清理(LMK)机制,将进程按重要性分级、分组,当内存不足时,自动清理最低级别进程所占用的内存空间;同时,引入不同于传统Linux共享内存机制的Android共享内存机制Ashmem,具备清理不再使用共享内存区域的能力。

    相关文章

      网友评论

        本文标题:Android安全机制简述

        本文链接:https://www.haomeiwen.com/subject/rcfnuftx.html