Android 的安全模型与 UNIX 的有何不同?

信息安全 安卓
2021-09-09 22:05:25

在 UNIX 的安全模型中,您以用户身份登录,然后您启动的每个进程都可以访问属于您的用户帐户的所有内容——也就是说,信任基于用户帐户,而不是特定的可执行文件。

但在我的 Android 手机上,情况似乎略有不同——每个应用程序似乎都在自己的用户帐户下运行。那是对的吗?还是同一作者制作的应用程序在同一用户帐户下运行?作者的私人签名密钥是否允许访问用户帐户?

另外,我读到Linux 内核经过修改以适应 Android 的安全模型:

为了获得一个正常工作的 Android 系统,您需要他们创建的新锁类型,以及核心系统中用于其安全模型的钩子。为了编写一个让硬件在 Android 上工作的驱动程序,你需要正确地集成到这个新的锁中,有时还需要集成到奇怪的安全模型中。

我特别感兴趣的是这些内核更改是什么,为什么它们很奇怪?

1个回答

Android 本质上依赖于 Linux 内核的安全主题作为其安全模型:

  1. 基于用户的权限
  2. 进程隔离
  3. 进程间通信机制
  4. 可定制的模块化内核(删除/修改不安全的模块)

Bizarre 似乎是一个强有力的词,但通过将进程隔离与基于用户的权限相结合,Android 确实有点极端。你是绝对正确的,每个应用程序都会创建一个用户。它独立于程序的作者。如果有来自同一作者的多个应用程序,则每个应用程序都会为它创建一个用户。每个应用程序的私有数据都受到该用户权限的保护,进程空间也是如此。这样只有app可以访问它的私有数据,它的进程空间只能被app访问。

应用程序可以通过 IPC 相互通信,而内核在这方面的主要补充是Binder 类此添加允许后台服务与应用程序交互,并在进程之间传送数据。当以这种方式创建时,它不会在后台无限期地存在,而是以特定目的创建并在完成后被杀死。

有关更多详细信息,我建议阅读Android Security Overview