Android 采用业界领先的安全功能,并与开发者和设备实现人员密切合作,以确保 Android 平台和生态系统的安全。为打造由基于和围绕 Android 平台开发且由云服务提供支持的应用和设备组成的强大生态系统,稳定可靠的安全模型至关重要。因此,在整个开发生命周期内,Android 都遵循严格的安全计划。
Android 是一款开放的系统。Android 应用使用通过 Android 平台提供的先进硬件和软件以及本地数据和收到的数据,为消费者带来创新和价值。为了实现这一价值,Android 平台提供了一个可以保护用户、数据、应用、设备和网络的机密性、完整性与可用性的应用环境。
保障一个开放式平台的安全性需要强大的安全架构和严格的安全计划。Android 采用的多层安全模型非常灵活,能够在支持开放式平台的同时保护平台的所有用户。如需了解关于报告安全问题以及更新流程的信息,请参阅安全更新和资源。
Android 适合开发者使用。Android 中设计了多种旨在减轻开发者负担的安全控制机制。精通安全技术的开发者可以轻松使用并依赖灵活的安全控制机制。不太熟悉安全技术的开发者可以利用默认的安全机制。
除了提供一个稳定的平台供开发者开发应用之外,Android 还以多种方式为开发者提供其他支持。Android 安全团队会检查应用中是否存在潜在漏洞,并提出关于如何解决这些问题的建议。对于带有 Google Play 的设备,Play 服务会为关键软件库(例如,用于保障应用通信安全的 OpenSSL)提供安全更新。Android 安全团队发布了一款用于测试 SSL 的工具 (nogotofail),该工具可以协助开发者发现潜在的安全问题,无论他们使用什么平台进行开发。
Android 还利用底层硬件支持来增强安全性。例如,使用 ARM TrustZone 技术为加密密钥以及启动完整性证明提供安全的存储空间。此外,还利用 DICE 来衡量在启动 Android 之前加载的固件。这样可以远程验证固件是否受到已知严重漏洞的影响,攻击者可以利用此类漏洞来伤害开发者和用户。
如需了解面向 Android 应用开发者的更多信息,请访问 developer.android.com。
Android 适合用户使用。用户可以查看每个应用请求的权限,并可以对这些权限加以控制。这种设计考虑到了攻击者可能会尝试进行的一些常见攻击,例如,诱使设备用户安装恶意软件的社会工程攻击,以及对 Android 上的第三方应用的攻击。 Android 能够降低受到这些攻击的可能性,并能够大大降低攻击得逞时造成的影响。在设备到达用户手中后,Android 的安全性将会不断提升。Android 会与合作伙伴和公众密切合作,为在继续接收安全更新的所有 Android 设备提供补丁程序。
如需了解更多面向最终用户的信息,请访问 Nexus 帮助中心、Pixel 帮助中心或设备制造商的帮助中心。
本页概述了 Android 安全计划的目标,介绍了 Android 安全架构方面的基础知识,并解答了对系统架构师和安全分析人员来说最相关的问题。本页重点介绍 Android 核心平台的安全功能,而不是讨论具体应用特有的安全问题,例如与浏览器或短信应用相关的安全问题。
背景
Android 提供了一个适用于移动设备的开源平台和应用环境。
以下各个部分和页面介绍了 Android 平台的安全功能。图 1 说明了 Android 软件堆栈各个级别的安全组件和注意事项。每个组件都假定下面的组件均已采取适当的安全措施。除了作为 root 代码运行的少量 Android OS 代码外,Linux 内核之上的所有代码都受应用沙盒的限制。
Android 平台的主要构造块包括:
- 设备硬件:Android 能够在多种硬件配置上运行,其中包括手机、平板电脑、手表、汽车、智能电视、OTT 游戏盒和机顶盒。Android 独立于处理器,但它利用了一些针对硬件的安全功能,例如 ARM eXecute-Never。
- Android 操作系统:核心操作系统构建于 Linux 内核之上。所有设备资源(例如,相机功能、GPS 数据、蓝牙功能、电话功能和网络连接)都通过该操作系统访问。
- Android 应用运行时:Android 应用通常以 Java 编程语言编写,并在 Android 运行时 (ART) 中运行。不过,仍有许多应用(包括核心 Android 服务和应用)是原生应用或包含原生库。ART 和原生应用在相同的安全环境中运行(包含在应用沙盒中)。应用在文件系统中有一个专用部分,它们可以在其中写入私密数据,包括数据库和原始文件。
Android 应用扩展了 Android 核心操作系统。应用有两个主要来源:
- 预安装的应用:Android 包括一套预安装的应用,其中包括电话、电子邮件、日历、网络浏览器和通讯录应用。这些应用既可用作用户应用,又能提供可供其他应用访问的关键设备功能。预安装的应用可能是开源 Android 平台的一部分,也可能是由设备制造商为具体设备开发的应用。
- 用户安装的应用:Android 提供了一个支持任何第三方应用的开放式开发环境。Google Play 为用户提供了数十万款应用。
Google 安全服务
Google 提供了一套基于云的服务,用户可通过 Google 移动服务将这些服务安装到兼容的 Android 设备上。虽然这些服务不是 Android 开源项目 (AOSP) 的一部分,但它们包含在许多 Android 设备中。如需了解关于其中部分服务的更多信息,请参阅 Android 安全团队发布的 2018 年年度回顾报告。
Google 的主要安全服务包括:
- Google Play:Google Play 是一系列服务的总称。借助这些服务,用户可以通过 Android 设备或网络发现、安装和购买应用。Google Play 可让开发者轻松覆盖 Android 用户和潜在客户。此外,Google Play 还提供社区审核、应用许可验证、应用安全扫描和其他安全服务。
- Android 更新:Android 更新服务可为某些 Android 设备提供新功能和安全更新,其中包括通过网络或无线下载 (OTA) 方式提供的更新。
- 应用服务:一种框架,可让 Android 应用使用云端功能,例如应用数据和设置备份功能,以及用于推送消息的“云端至设备消息传递”(C2DM) 功能。
- 验证应用:在用户安装有害应用时发出警告或自动阻止安装;持续扫描设备上的应用,并在发现有害应用时发出警告或将其移除。
- SafetyNet:一款旨在保护隐私的入侵检测系统,能够帮助 Google 跟踪和解决已知安全威胁,并能发现新的安全威胁。
- SafetyNet Attestation:用于确定设备是否与 CTS 兼容的第三方 API。Attestation 还可识别与应用服务器通信的 Android 应用。
- Android 设备管理器:既是一款 Web 应用,也是一款 Android 应用,用于寻找丢失或被盗的设备。
安全计划概述
Android 安全计划的关键组成部分包括:
- 设计审核:Android 安全流程在开发生命周期的早期便开始了,并会在这一阶段创建大量的可配置安全模型和设计。平台的每项主要功能都会由工程和安全资源进行审核,并且适当的安全控制机制会被集成到系统架构中。
- 渗透测试和代码审核:在平台开发期间,Android 创建的组件和开源组件都要接受严格的安全审核。这些审核由 Android 安全团队、Google 的信息安全工程团队和独立的安全顾问进行。这些审核的目标是在主要版本发布之前找出存在的缺陷和可能的漏洞,并模拟外部安全专家将在平台发布时进行的各种类型的分析。
- 开放源代码和社区审核:AOSP 允许任何感兴趣者对其进行广泛的安全审核。Android 还使用已经过重要外部安全审核的开源技术,例如 Linux 内核。Google Play 面向用户和企业开设了一个论坛,以便直接向用户提供与具体应用相关的信息。
- 事件响应:即使采取了所有这些预防措施,平台发布后仍然可能出现安全问题,因此 Android 项目制定了全面的安全响应流程。Android 安全团队有全职成员负责监控 Android 专用安全社区和一般安全社区中有关潜在漏洞的讨论,并查看提交到 Android bug 数据库中的安全 bug。发现确实存在的问题后,Android 团队会启动响应流程,以便快速修复漏洞,确保将所有 Android 用户面临的潜在风险降至最低。这些云支持的响应可能包括更新 Android 平台(AOSP 更新)、从 Google Play 中移除应用以及从实际使用的设备中移除应用。
- 每月安全更新:Android 安全团队面向 Google Android 设备和所有设备制造合作伙伴提供每月更新。
平台安全架构
通过将传统的操作系统安全控制机制扩展到以下用途,Android 致力于成为最安全、最实用的移动平台操作系统:
- 保护应用和用户数据
- 保护系统资源(包括网络)
- 将应用同系统、其他应用和用户隔离开来
为了实现这些目标,Android 提供了以下关键安全功能:
- 通过 Linux 内核在操作系统级别提供的强大安全功能
- 强制所有应用使用应用沙盒
- 安全的进程间通信
- 应用签名
- 应用定义的权限和用户授予的权限