| page.title=Security | |
| @jd:body | |
| <!-- | |
| Copyright 2015 The Android Open Source Project | |
| Licensed under the Apache License, Version 2.0 (the "License"); | |
| you may not use this file except in compliance with the License. | |
| You may obtain a copy of the License at | |
| http://www.apache.org/licenses/LICENSE-2.0 | |
| Unless required by applicable law or agreed to in writing, software | |
| distributed under the License is distributed on an "AS IS" BASIS, | |
| WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | |
| See the License for the specific language governing permissions and | |
| limitations under the License. | |
| --> | |
| <div id="qv-wrapper"> | |
| <div id="qv"> | |
| <h2>In this document</h2> | |
| <ol id="auto-toc"></ol> | |
| </div> | |
| </div> | |
| <h2 id="introduction">Introduction</h2> | |
| <p>Android is a modern mobile platform that was designed to be truly open. Android | |
| applications make use of advanced hardware and software, as well as local and | |
| served data, exposed through the platform to bring innovation and value to | |
| consumers. To protect that value, the platform must offer an application | |
| environment that ensures the security of users, data, applications, the device, | |
| and the network.</p> | |
| <p>Securing an open platform requires a robust security architecture and | |
| rigorous security programs. Android was designed with multi-layered | |
| security that provides the flexibility required for an open platform, while | |
| providing protection for all users of the platform. For information about | |
| reporting security issues and the update process, | |
| see <a href="{@docRoot}devices/tech/security/overview/updates-resources.html">Security Updates and Resources</a>.</p> | |
| <p>Android was designed with developers in mind. Security controls were designed | |
| to reduce the burden on developers. Security-savvy developers can easily work | |
| with and rely on flexible security controls. Developers less familiar with | |
| security will be protected by safe defaults.</p> | |
| <p>Android was designed with device users in mind. Users are provided visibility | |
| into how applications work, and control over those applications. This design | |
| includes the expectation that attackers would attempt to perform common | |
| attacks, such as social engineering attacks to convince device users to install | |
| malware, and attacks on third-party applications on Android. Android was | |
| designed to both reduce the probability of these attacks and greatly limit the | |
| impact of the attack in the event it was successful.</p> | |
| <p>This documentation outlines the goals of the Android security program, describes the | |
| fundamentals of the Android security architecture, and answers the most | |
| pertinent questions for system architects and security analysts. This document | |
| focuses on the security features of Android's core platform and does not | |
| discuss security issues that are unique to specific applications, such as those | |
| related to the browser or SMS application. Recommended best practices for | |
| building Android devices, deploying Android devices, or developing applications | |
| for Android are not the goal of this document and are provided elsewhere.</p> | |
| <h2 id="background">Background</h2> | |
| <p>Android provides an open source platform and application environment for mobile | |
| devices.</p> | |
| <p>The sections and pages below describe the security features of the Android | |
| platform. <em>Figure 1</em> summarizes the security components and considerations of | |
| the various levels of the Android software stack. Each component assumes that | |
| the components below are properly secured. With the exception of a small amount | |
| of Android OS code running as root, all code above the Linux Kernel is | |
| restricted by the Application Sandbox.</p> | |
| <p><img alt="Figure 1: Android software stack" src="images/image00.png" /></p> | |
| <p><em>Figure 1: Android software stack.</em></p> | |
| <p>The main Android platform building blocks are:</p> | |
| <ul> | |
| <li> | |
| <p><strong>Device Hardware</strong>: Android runs on a wide range of hardware configurations | |
| including smart phones, tablets, and set-top-boxes. Android is | |
| processor-agnostic, but it does take advantage of some hardware-specific | |
| security capabilities such as ARM v6 eXecute-Never.</p> | |
| </li> | |
| <li> | |
| <p><strong>Android Operating System</strong>: The core operating system is built on top of | |
| the Linux kernel. All device resources, like camera functions, GPS data, | |
| Bluetooth functions, telephony functions, network connections, etc. are | |
| accessed through the operating system.</p> | |
| </li> | |
| <li> | |
| <p><strong>Android Application Runtime</strong>: Android applications are most often written | |
| in the Java programming language and run in the Dalvik virtual machine. | |
| However, many applications, including core Android services and applications | |
| are native applications or include native libraries. Both Dalvik and native | |
| applications run within the same security environment, contained within the | |
| Application Sandbox. Applications get a dedicated part of the filesystem in | |
| which they can write private data, including databases and raw files.</p> | |
| </li> | |
| </ul> | |
| <p>Android applications extend the core Android operating system. There are two | |
| primary sources for applications:</p> | |
| <ul> | |
| <li> | |
| <p><strong>Pre-Installed Applications</strong>: Android includes a set of pre-installed | |
| applications including phone, email, calendar, web browser, and contacts. These | |
| function both as user applications and to provide key device capabilities that | |
| can be accessed by other applications. Pre-installed applications may be part | |
| of the open source Android platform, or they may be developed by an OEM for a | |
| specific device.</p> | |
| </li> | |
| <li> | |
| <p><strong>User-Installed Applications</strong>: Android provides an open development | |
| environment supporting any third-party application. Google Play offers | |
| users hundreds of thousands of applications.</p> | |
| </li> | |
| </ul> | |
| <p>Google provides a set of cloud-based services that are available to any | |
| compatible Android device. The primary services are:</p> | |
| <ul> | |
| <li> | |
| <p><strong>Google Play</strong>: Google Play is a collection of services that | |
| allow users to discover, install, and purchase applications from their Android | |
| device or the web. Google Play makes it easy for developers to reach Android | |
| users and potential customers. Google Play also provides community review, | |
| application <a href="https://developer.android.com/guide/publishing/licensing.html">license | |
| verification</a>, application security scanning, and other security services.</p> | |
| </li> | |
| <li> | |
| <p><strong>Android Updates</strong>: The Android update service delivers new capabilities and | |
| security updates to Android devices, including updates through the web or over | |
| the air (OTA).</p> | |
| </li> | |
| <li> | |
| <p><strong>Application Services</strong>: Frameworks that allow Android applications to use | |
| cloud capabilities such as (<a href="https://developer.android.com/guide/topics/data/backup.html">backing | |
| up</a>) application | |
| data and settings and cloud-to-device messaging | |
| (<a href="https://developers.google.com/android/c2dm/">C2DM</a>) | |
| for push messaging.</p> | |
| </li> | |
| </ul> | |
| <p>These services are not part of the Android Open Source Project and are out | |
| of scope for this document. But they are relevant to the security of most | |
| Android devices, so a related security document titled “Google Services for | |
| Android: Security Overview” is available.</p> | |