安卓系统安全特性

目前android系统提供了一套比较完成的安全体系,只要有以下几个特性组成

应用沙盒

Android 平台利用基于用户的 Linux 保护机制识别和隔离应用资源,为此,Android 会为每个 Android 应用分配一个独一无二的用户 ID (UID),并在自己的进程中运行。Android 会使用此 UID 设置一个内核级应用沙盒。

应用签名

通过应用签名,开发者可以标识应用创作者并更新其应用,而无需创建复杂的接口和权限。在 Android 平台上运行的每个应用都必须有开发者的签名。

身份验证

Android 采用通过用户身份验证把关的加密密钥机制,该机制需要加密密钥存储区以及服务提供商和用户身份验证程序。

在配有指纹传感器的设备上,用户可以注册一个或多个指纹,并使用这些指纹解锁设备以及执行其他任务。Gatekeeper 子系统会在可信执行环境 (TEE) 中执行设备解锁图案/密码身份验证。

Android 9 及更高版本包含 Android 受保护的确认功能,使用户能够正式确认关键交易(如付款)。

生物识别

Android 9 及更高版本包含一个 BiometricPrompt API,应用开发者可以使用该 API 采用与设备和模态无关的方式将生物识别身份验证集成到其应用中。只有极为安全的生物识别技术才能与 BiometricPrompt 集成。

加密

设备经过加密后,所有由用户创建的数据在存入磁盘之前都会自动加密,并且所有读取操作都会在将数据返回给调用进程之前自动解密数据。加密可确保未经授权方在尝试访问相应数据时无法读取数据。

密钥库

Android 提供了一个由硬件支持的密钥库,以提供生成密钥、导入和导出非对称密钥、导入原始对称密钥、使用适当的填充模式进行非对称加密和解密等功能。

SELinux

作为 Android 安全模型的一部分,Android 使用安全增强型 Linux (SELinux) 对所有进程强制执行强制访问控制 (MAC)(SELinux是MAC的一种实现),甚至包括以 Root/超级用户权限运行的进程(Linux 功能)。

这个要重点做说明

三个对象

可以看到Android给所有应用分配一个一个u的用户名, 这里角色也不是很重要,重点关注域。 域的访问规则由策略文件提供

Trusty 可信执行环境 (TEE)

Trusty 是一种安全的操作系统 (OS),可为 Android 提供可信执行环境 (TEE)。Trusty 操作系统与 Android 操作系统在同一处理器上运行,但 Trusty 通过硬件和软件与系统的其余组件隔离开来。