| 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/android_software_stack.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> |
| |
| |