20.10.2015 Views

Compatibility Definition

2f44OdUf0

2f44OdUf0

SHOW MORE
SHOW LESS

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

MUST maintain compatibility with existing applications.<br />

MUST NOT have a visible user interface when a security violation is detected and<br />

successfully blocked, but MAY have a visible user interface when an unblocked security<br />

violation occurs resulting in a successful exploit.<br />

SHOULD NOT be user or developer configurable.<br />

If any API for configuration of policy is exposed to an application that can affect another application<br />

(such as a Device Administration API), the API MUST NOT allow configurations that break<br />

compatibility.<br />

Devices MUST implement SELinux or, if using a kernel other than Linux, an equivalent mandatory<br />

access control system. Devices MUST also meet the following requirements, which are satisfied by the<br />

reference implementation in the upstream Android Open Source Project.<br />

Device implementations:<br />

MUST set SELinux to global enforcing mode.<br />

MUST configure all domains in enforcing mode. No permissive mode domains are allowed,<br />

including domains specific to a device/vendor.<br />

MUST NOT modify, omit, or replace the neverallow rules present within the<br />

external/sepolicy folder provided in the upstream Android Open Source Project (AOSP)<br />

and the policy MUST compile with all neverallow rules present, for both AOSP SELinux<br />

domains as well as device/vendor specific domains.<br />

Device implementations SHOULD retain the default SELinux policy provided in the external/sepolicy<br />

folder of the upstream Android Open Source Project and only further add to this policy for their own<br />

device-specific configuration. Device implementations MUST be compatible with the upstream Android<br />

Open Source Project.<br />

9.8. Privacy<br />

If the device implements functionality in the system that captures the contents displayed on the screen<br />

and/or records the audio stream played on the device, it MUST continuously notify the user whenever<br />

this functionality is enabled and actively capturing/recording.<br />

If a device implementation has a mechanism that routes network data traffic through a proxy server or<br />

VPN gateway by default (for example, preloading a VPN service with<br />

android.permission.CONTROL_VPN granted), the device implementation MUST ask for the user's<br />

consent before enabling that mechanism.<br />

If a device implementation has a USB port with USB peripheral mode support, it MUST present a user<br />

interface asking for the user's consent before allowing access to the contents of the shared storage<br />

over the USB port.<br />

9.9. Full-Disk Encryption<br />

Optional for Android device implementations without a lock screen.<br />

If the device implementation supports a secure lock screen reporting "true" for<br />

KeyguardManager.isDeviceSecure() [Resources, 131], and is not a device with restricted memory as<br />

reported through the ActivityManager.isLowRamDevice() method, then the device MUST support fulldisk<br />

encryption [Resources, 132] of the application private data (/data partition), as well as the<br />

application shared storage partition (/sdcard partition) if it is a permanent, non-removable part of the<br />

device.<br />

For device implementations supporting full-disk encryption and with Advanced Encryption Standard<br />

(AES) crypto performance above 50MiB/sec, the full-disk encryption MUST be enabled by default at<br />

the time the user has completed the out-of-box setup experience. If a device implementation is<br />

Page 64 of 74

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!