Android安全机制介绍

Android的安全机制包括以下几个方面:

     • 进程沙箱隔离机制。

     • 应用程序签名机制。

     • 权限声明机制。

     • 访问控制机制。

     • 进程通信机制。

     • 内存管理机制。

     • SELinux

1.进程沙箱隔离机制

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

2.应用程序签名机制

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

签名的过程:

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

  • 对应用进行签名

  • 优化应用程序

签名的作用:

  • 识别代码的作者。

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

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

3.权限声明机制

应用程序需要显式声明权限、名称、权限组与保护级别。不同的级别要求应用程序行使此权限时的认证方式不同:

Normal级申请即可用;

Dangerous级需在安装时由用户确认才可用;

Signature与Signatureorsystem则必须是系统用户才可用。

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

 请求android:name对应的权限。

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

 

  xmlns:android="http://schemas.android.com/apk/res/android"

  android:name="com.test.android.ACCESS_FRIENDS_LIST"

  android:description="@string/permission_description"

  android:label="@string/permission_label"

  android:protectionLevel="normal" />

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

4.访问控制机制

 传统的Linux访问控制机制确保系统文件与用户数据不受非法访问。

    Linux用户与权限

    • 超级用户(root),具有最高的系统权限,UID为0。

    • 系统伪用户,Linux操作系统出于系统管理的需要,但又不愿赋予超级用户的权限,需要将某些关键系统应用,文件所有权赋予某些系统伪用户,其UID范围为1 499,系统的伪用户不能登录系统。

    • 普通用户,只具备有限的访问权限,UID 为 500 ~ 6000,可以登录系统获得 shell

    在Linux权限模型下,每个文件属于一个用户和一个组,由UID与GID标识其所有权。针对于文件的具体访问权限

    定义为可读(r)、可写(w)与可执行(x),并由三组读、写、执行组成的权限三元组来描述相关权限。

    第一组定义文件所有者(用户)的权限,第二组定义同组用户(GID相同但UID不同的用户)的权限,第三组定

    义其他用户的权限(GID与UID都不同的用户)。

5.进程通信机制

Binder进程通信机制提供基于共享内存的高效进程通信;Binder基于Client-Server模式,提供类似COM

    与CORBA的轻量级远程进程调用(RPC);通过接口描述语言(AIDL)定义接口与交换数据的类型,确保进程

    间通信的数据不会溢出越界,污染进程空间。

 Android安全机制介绍_第1张图片

6.内存管理机制

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

7.SELinux

SELinux 拥有三个基本的操作模式

• Disabled:禁用SELinux策略

• Permissive:在Permissive模式下,SELinux会被启用但不会实施安全性策略,而只会发出警告及记录行

  动。Permissive模式在排除SELinux的问题时很有用

• Enforcing:这个缺省模式会在系统上启用并实施SELinux的安全性策略,拒绝访问及记录行动

SELinux 拥有三种访问控制方法:

• 强制类型(TE):TE是针对型策略所采用的主要访问控制机制

• 基于角色的访问控制(RBAC):它以SELinux用户(未必等同Linux用户)为基础,但缺省的针对型策略并未采用它

• 多层保障(MLS):未被采用,而且经常隐藏在缺省的针对型策略内。

你可能感兴趣的:(Android安全机制介绍)