在操作系统层面,Android 平台提供 Linux 内核的安全性,以及安全的进程间通信 (IPC) 工具,以实现不同进程中运行的应用之间的安全通信。操作系统层面的这些安全功能可确保即使是原生代码也受到应用沙盒的约束。无论该代码是包含的应用行为的结果,还是应用漏洞利用的结果,系统都旨在防止恶意应用损害其他应用、Android 系统或设备本身。请参阅Android 兼容性定义文档 (CDD),了解所需设置。
Linux 安全性
Android 平台的基础是 Linux 内核。Linux 内核已得到广泛使用多年,并应用于数百万个安全敏感型环境。凭借其不断被数千名开发者研究、攻击和修复的历史,Linux 已成为一个稳定且安全的内核,深受众多企业和安全专业人士的信任。
作为移动计算环境的基础,Linux 内核为 Android 提供了多项关键安全功能,包括:
- 基于用户的权限模型
- 进程隔离
- 用于安全 IPC 的可扩展机制
- 移除内核中不必要且可能不安全的部分的功能
作为多用户操作系统,Linux 内核的基本安全目标是将用户资源彼此隔离。Linux 的安全理念是保护用户资源彼此隔离,Linux
- 阻止用户 A 读取用户 B 的文件
- 确保用户 A 不会耗尽用户 B 的内存
- 确保用户 A 不会耗尽用户 B 的 CPU 资源
- 确保用户 A 不会耗尽用户 B 的设备(例如,电话、GPS 和蓝牙)
应用沙盒
Android 的应用安全由应用沙盒强制执行,该沙盒将应用彼此隔离,并保护应用和系统免受恶意应用的侵害。如需了解详情,请参阅应用沙盒。
系统分区和安全模式
各种受完整性保护的分区包含 Android 的内核以及操作系统库、应用运行时、应用框架和应用。此分区设置为只读。当用户将设备启动到安全模式时,第三方应用可以由设备所有者手动启动,但默认情况下不会启动。
文件系统权限
在 UNIX 风格的环境中,文件系统权限确保一个用户无法更改或读取另一个用户的文件。在 Android 中,每个应用都以自己的用户身份运行。除非开发者明确与其他应用共享文件,否则一个应用创建的文件无法被另一个应用读取或更改。
安全增强型 Linux
Android 使用安全增强型 Linux (SELinux) 来应用访问控制政策,并在进程上建立强制访问控制 (mac)。请参阅Android 中的安全增强型 Linux,了解详情。
Verified Boot
Android 7.0 及更高版本支持严格强制执行的 Verified Boot,这意味着受损设备无法启动。Verified Boot 保证设备软件的完整性,从硬件信任根到系统分区。在启动期间,每个阶段都会以加密方式验证下一阶段的完整性和真实性,然后再执行下一阶段。
请参阅Verified Boot,了解更多详情。
密码学
Android 提供了一组加密 API,供应用使用。其中包括标准和常用加密原语的实现,例如 AES、RSA、DSA 和 SHA。此外,还为更高级别的协议(例如 SSL 和 HTTPS)提供了 API。
Android 4.0 引入了 KeyChain 类,允许应用使用系统凭据存储来存储私钥和证书链。
设备 Root
默认情况下,在 Android 上,只有内核和一小部分核心服务以 Root 权限运行。SELinux 仍然约束以 Root 身份运行的用户空间进程。Verified Boot 可防止具有 Root 权限的用户或服务永久修改操作系统。
修改用户拥有的 Android 设备的能力对于使用 Android 平台的开发者来说非常重要。在许多 Android 设备上,用户可以解锁启动加载程序,以便安装备用操作系统。这些备用操作系统可能允许所有者获得 Root 访问权限,以便调试应用和系统组件,或访问 Android API 未向应用公开的功能。
在某些设备上,物理控制设备并拥有 USB 连接线的人员能够安装新的操作系统,从而为用户提供 Root 权限。为了保护任何现有的用户数据免遭泄露,启动加载程序解锁机制要求启动加载程序在解锁步骤中擦除任何现有的用户数据。通过利用内核漏洞或安全漏洞获得的 Root 访问权限可以绕过此保护。
使用存储在设备上的密钥加密数据无法保护应用数据免受已 Root 设备的 Root 用户的侵害。应用可以使用密钥存储在设备外(例如服务器或用户密码)的加密来添加数据保护层。这种方法可以在密钥不存在时提供临时保护,但在某些时候,必须将密钥提供给应用,然后 Root 用户就可以访问该密钥。
保护数据免受 Root 用户侵害的更强大方法是使用硬件解决方案。OEM 厂商可以选择实施硬件解决方案,以限制对特定类型内容的访问,例如用于视频播放的 DRM 或用于 Google 钱包的 NFC 相关可信存储。如果设备丢失或被盗,存储加密可确保在不知道用户锁屏凭据的情况下无法访问用户数据。
用户安全功能
存储加密
CDD 要求所有搭载 Android 10 或更高版本的新设备,以及大多数搭载 Android 6.0 或更高版本的新设备,都必须开箱即用即启用存储加密。
Android 当前的存储加密实现是基于文件的加密与元数据加密相结合。基于文件的加密使用不同的密钥透明地加密 userdata 分区上的文件内容和名称,用于不同的目录。它为每个用户(包括工作资料)提供凭据加密和设备加密的存储目录。
元数据加密是对基于文件加密的补充。它使用未绑定到任何用户锁屏凭据但仍受 Verified Boot 保护的密钥,加密 userdata 分区上尚未通过基于文件加密进行加密的所有块。
锁屏凭据保护
可以将 Android 配置为在提供设备访问权限之前验证用户提供的锁屏凭据(PIN 码、密码或图案)。除了防止未经授权使用设备外,锁屏凭据还可以保护凭据加密数据的加密密钥。设备管理员可以要求使用锁屏凭据和/或凭据复杂度规则。
设备管理
Android 2.2 及更高版本提供了 Android 设备管理 API,该 API 在系统级别提供设备管理功能。例如,内置的 Android 电子邮件应用使用这些 API 来改进 Exchange 支持。通过电子邮件应用,Exchange 管理员可以跨设备强制执行锁屏凭据政策(包括字母数字密码或数字 PIN 码)。管理员还可以远程擦除(即,将设备恢复为出厂默认设置)丢失或被盗的手机。
除了 Android 系统附带的应用中使用外,这些 API 也可供设备管理解决方案的第三方提供商使用。有关 API 的详细信息,请访问设备管理。