| 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> |
| |
| <p> |
| Android incorporates industry-leading security features and works with |
| developers and device implementers to keep the Android platform and ecosystem |
| safe. A robust security model is essential to enable a vigorous ecosystem of |
| applications and devices built on and around the Android platform and supported |
| by cloud services. As a result, through its entire development lifecycle, |
| Android has been subject to a rigorous security program. |
| </p> |
| <p> |
| <strong>Android is designed to be open</strong>. Android applications use |
| advanced hardware and software, as well as local and served data, exposed |
| through the platform to bring innovation and value to consumers. To realize that |
| value, the platform offers an application environment that protects the |
| confidentiality, integrity, and availability of users, data, applications, the |
| device, and the network. |
| </p> |
| <p> |
| Securing an open platform requires a strong security architecture and rigorous |
| security programs. Android was designed with multi-layered security that is |
| flexible enough to support an open platform while still protecting all users of |
| the platform. For information about reporting security issues and the update |
| process, see <a href="{@docRoot}security/overview/updates-resources.html">Security |
| Updates and Resources</a>. |
| </p> |
| <p> |
| <strong>Android is designed for developers</strong>. 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> |
| In addition to providing a stable platform to build upon, Android gives |
| additional support to developers in a number of ways. The Android security team |
| looks for potential vulnerabilities in apps and suggests ways to fix those |
| issues. For devices with Google Play, Play Services delivers security updates |
| for critical software libraries, such as OpenSSL, which is used to secure |
| application communications. Android security released a tool for testing SSL |
| (<a href="https://github.com/google/nogotofail">nogotofail</a>) that helps |
| developers find potential security issues on whichever platform they are |
| developing. |
| </p> |
| <p> |
| More information for Android app developers can be found on |
| <a href="https://developer.android.com/training/best-security.html">developer.android.com</a>. |
| </p> |
| <p> |
| <strong>Android is designed for users</strong>. Users are provided visibility |
| into permissions requested by each application and control over those |
| permissions. 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. Android security |
| continues to progress once the device is in the user's hands: Android works with |
| <a href="{@docRoot}security/overview/acknowledgements.html">partners and the |
| public</a> to provide patches for any Android device that is continuing to |
| receive security updates. |
| </p> |
| <p> |
| More information for end users can be found in the <a |
| href="https://support.google.com/nexus/answer/6172890">Nexus help center</a> or |
| your device manufacturer’s help center. |
| </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. It 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. |
| </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 class="img-caption"> |
| <strong>Figure 1</strong>. Android software stack. |
| </p> |
| <p> |
| The main Android platform building blocks are: |
| </p> |
| <ul> |
| <li><strong>Device hardware</strong>: Android runs on a wide range of hardware |
| configurations including smart phones, tablets, watches, automobiles, smart TVs, |
| OTT gaming boxes, and set-top-boxes. Android is processor-agnostic, but it does |
| take advantage of some hardware-specific security capabilities such as ARM |
| eXecute-Never.</li> |
| <li><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.</li> |
| <li><strong>Android Application Runtime</strong>: Android applications are most |
| often written in the Java programming language and run in the Android runtime |
| (ART). However, many applications, including core Android services and |
| applications, are native applications or include native libraries. Both ART 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.</li> |
| </ul> |
| <p> |
| Android applications extend the core Android operating system. There are two |
| primary sources for applications: |
| </p> |
| <ul> |
| <li><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 a device manufacturer for a specific device.</li> |
| <li><strong>User-installed applications</strong>: Android provides an open |
| development environment that supports any third-party application. Google Play |
| offers users hundreds of thousands of applications.</li> |
| </ul> |
| |
| <h2 id="google-security-services">Google security services</h2> |
| <p> |
| Google provides a set of cloud-based services that are available to compatible |
| Android devices with <a href="https://www.android.com/gms/">Google Mobile |
| Services</a>. While these services are not part of the Android Open Source |
| Project, they are included on many Android devices. For more information on |
| some of these services, see Android Security’s |
| <a href="http://static.googleusercontent.com/media/source.android.com/en//security/reports/Google_Android_Security_2015_Report_Final.pdf">2015 |
| Year in Review</a>. |
| </p> |
| <p> |
| The primary Google security services are: |
| </p> |
| <ul> |
| <li><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.</li> |
| <li><strong>Android updates</strong>: The Android update service delivers new |
| capabilities and security updates to selected Android devices, including updates |
| through the web or over the air (OTA).</li> |
| <li><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/cloud-messaging/">C2DM</a>) for push |
| messaging.</li> |
| <li><strong>Verify Apps</strong>: Warn or automatically block the installation |
| of harmful applications, and continually scan applications on the device, |
| warning about or removing |
| <a href="https://support.google.com/accounts/answer/2812853">harmful apps</a>. |
| </li> |
| <li><strong>SafetyNet</strong>: A privacy preserving intrusion detection system |
| to assist Google tracking and mitigating known security threats in addition to |
| identifying new security threats.</li> |
| <li><strong>SafetyNet Attestation</strong>: Third-party API to determine |
| whether the device is CTS compatible. <a |
| href="http://developer.android.com/training/safetynet/index.html">Attestation</a> |
| can also assist identify the Android app communicating with the app server.</li> |
| <li><strong>Android Device Manager</strong>: A |
| <a href="https://www.google.com/android/devicemanager">web app</a> and |
| <a href="https://play.google.com/store/apps/details?id=com.google.android.apps.adm">Android |
| app</a> to locate lost or stolen device.</li> |
| </ul> |
| |
| <h2 id="security-program-overview">Security program overview</h2> |
| <p> |
| The key components of the Android Security Program include: |
| </p> |
| <ul> |
| <li><strong>Design review</strong>: The Android security process begins early in |
| the development lifecycle with the creation of a rich and configurable security |
| model and design. Each major feature of the platform is reviewed by engineering |
| and security resources, with appropriate security controls integrated into the |
| architecture of the system.</li> |
| <li><strong>Penetration testing and code review</strong>: During the development |
| of the platform, Android-created and open source components are subject to |
| vigorous security reviews. These reviews are performed by the Android Security |
| Team, Google’s Information Security Engineering team, and independent security |
| consultants. The goal of these reviews is to identify weaknesses and possible |
| vulnerabilities well before major releases, and to simulate the types of |
| analysis that will be performed by external security experts upon release.</li> |
| <li><strong>Open source and community review</strong>: The Android Open Source |
| Project enables broad security review by any interested party. Android also uses |
| open source technologies that have undergone significant external security |
| review, such as the Linux kernel. Google Play provides a forum for users and |
| companies to provide information about specific applications directly to users.</li> |
| <li><strong>Incident Response</strong>: Even with all of these precautions, |
| security issues may occur after shipping, which is why the Android project has |
| created a comprehensive security response process. Full-time Android security |
| team members monitor Android-specific and the general security community for |
| discussion of potential vulnerabilities and review |
| <a href="{@docRoot}security/overview/updates-resources.html#android_security_bug_lifecycle">security |
| bugs</a> filed on the Android bug database. Upon the discovery of legitimate |
| issues, the Android team has a response process that enables the rapid |
| mitigation of vulnerabilities to ensure that potential risk to all Android users |
| is minimized. These cloud-supported responses can include updating the Android |
| platform (over-the-air updates), removing applications from Google Play, and |
| removing applications from devices in the field.</li> |
| <li><strong>Monthly security updates</strong>: The Android security team |
| provides <a href="{@docRoot}security/bulletin/index.html">monthly |
| updates</a> to Google Nexus devices and all of our device manufacturing |
| partners.</li> |
| </ul> |
| |
| <h2 id="platform-security-architecture">Platform security architecture</h2> |
| <p> |
| Android seeks to be the most secure and usable operating system for mobile |
| platforms by re-purposing traditional operating system security controls to: |
| </p> |
| <ul> |
| <li>Protect application and user data</li> |
| <li>Protect system resources (including the network)</li> |
| <li>Provide application isolation from the system, other applications, and from |
| the user</li> |
| </ul> |
| <p> |
| To achieve these objectives, Android provides these key security features: |
| </p> |
| <ul> |
| <li>Robust security at the OS level through the Linux kernel</li> |
| <li>Mandatory application sandbox for all applications</li> |
| <li>Secure interprocess communication</li> |
| <li>Application signing</li> |
| <li>Application-defined and user-granted permissions</li> |
| </ul> |
| |