zoukankan      html  css  js  c++  java
  • 《Android安全机制解析与应用实践》笔记 第2章

    Android扩展了Linux内核安全模型的用户与权限机制,将多用户操作系统的用户隔离机制巧妙地移植为应用程序隔离。在linux中,一个用户标识(UID)识别一个给定用户;在Android上,一个UID则识别一个应用程序。在安装应用程序时向其分配UID。应用程序在设备上存续期间内,其UID保持不变。仅限用于允许或限制应用程序(而非用户)对设备资源的访问。如此,Android的安全机制与Linux内核的安全模型完美衔接!不同的应用程序分别属于不同的用户,因此,应用程序运行于自己独立的进程空间,与UID不同的应用程序自然形成资源隔离,如此便形成了一个操作系统级别的应用程序“沙箱”

    应用程序进程之间,应用程序与操作系统之间的安全性由Linux操作系统的标准进程级安全机制实现。在默认状态下,应用程序之间无法交互,运行在进程沙箱内的应用程序没有被分配权限,无法访问系统或资源。因此,无论是直接运行于操作系统之上的应用程序,还是运行于Dalvik虚拟机的应用程序都得到同样的安全隔离与保护,被限制在各自“沙箱”内的应用程序互不干扰,对系统与其他应用程序的损害可降至最低。Android应用程序的“沙箱”机制如下图,互相不具备信任关系的应用程序相互隔离,独自运行:

    在很多情况下,源自同一开发者同一开发机构的应用程序,相互间存在信任关系。Android系统提供一种所谓共享UID(SharedUserID)机制,使具备信任关系的应用程序可以运行于同一进程空间。通常 ,这种信任关系由应用程序的数字签名确定,并且需要应用程序在manifest文件中使用相同的UID。共享UID的应用程序进程空间如下图(应用程序数字签名将在后面详细讲述):

    应用程序安装时都分配有一个用户标志(UID)以区别于其他应用程序,保护自己的数据不被其他应用获取。Android根据不同的用户和组,

    分配不同权限,比如访问网络、访问GPS数据等,这些Android权限在底层映射为Linux的用户与组权限。

    权限的保护级别分为Normal、Danderous、Signature与Signatureorsystem四种,不同的级别限定了应用程序行使此权限时的认证方式。

    Normal:只要申请就可用

    Dangerous:在安装时经用户确认才可用

    Signature与Signatureorsystem 需要应用程序必须为系统用户,如OEM制造商或ODM制造商等

  • 相关阅读:
    C++学习 之 继承(笔记)
    C++学习 之 类中的特殊函数和this指针(笔记)
    C++学习 之 类的声明及成员的访问(笔记)
    C++学习 之 指针及动态内存分配(笔记)
    C++学习 之 函数的重载及内联(笔记)
    C++学习 之 控制程序流程 (笔记)
    pkg-config too old的解决方法
    编译中出现的undefined reference to XXX
    sourceInsight下标题栏显示文件完整路径
    linux下 sleep() 与 usleep()
  • 原文地址:https://www.cnblogs.com/maxiaodoubao/p/4601863.html
Copyright © 2011-2022 走看看