About

The Auditor app uses hardware-based security features to validate the identity of a device along with authenticity and integrity of the operating system. It will verify that the device is running the stock operating system with the bootloader locked and that no tampering with the operating system has occurred. A downgrade to a previous version will also be detected. It builds upon the hardware-based verification of the operating system by chaining verification to the app to perform software-based sanity checks and gather additional information about device state and configuration beyond what the hardware can attest to directly.

The foundation of the Auditor app is generating a persistent key in the hardware-backed keystore for verifying the identity of the device and providing assurance that the operating system hasn't been tampered with or downgraded via verified boot. It performs a pairing process between the device performing verification (Auditor) and the device being verified (Auditee) to implement a Trust On First Use (TOFU) model. The device performing verification can either be another Android device running the app in the Auditor mode or the https://attestation.app/ service for automated verification on a regular schedule with support for email alerts. See the tutorial for usage instructions. The protocol used for both local and remote attestation is documented in the source code.

Verified boot validates the integrity and authenticity of firmware and the entire operating system (both the kernel and userspace) from an immutable hardware root of trust. The results are passed along to the hardware-backed keystore and used to protect the keys.

The key attestation feature provided by the hardware-backed keystore provides direct support for attesting to device properties and bootstrapping the Trust On First Use model of the Auditor app with a basic initial verification chained up to a known root certificate. The latest version of key attestation provides a signed result with the verified boot state, verified boot key, a hash of all data protected by verified boot and the version of the operating system partitions among other properties. It also has support for chaining trust to the application performing the attestation checks, which is used by the Auditor app for bootstrapping checks at the software layer.

Devices shipping with Android 9 or later may ship a StrongBox Keymaster implementation, allowing the Auditor app to keep the keys used by the attestation protocol in the dedicated Hardware Security Module (HSM) (such as the Titan M in Pixel phones) rather than using the Trusted Execution Environment (TEE) on the main processor. This can provide substantial attack surface reduction.

Security enhancements offered by future generations of hardware and future Android releases will be closely tracked by these projects. The core workflow and feature set is already implemented but the foundation will be regularly improved along with major improvements to the user interface and documentation. The app and service are designed to be forwards and backwards compatible via a versioned protocol to permit substantial changes down the road.

Device support

Any device with Android 7.0 or later can run the Auditor app and use it to verify other devices. However, only devices launched with Android 8.0 or later have the necessary hardware support for being verified. Each device model also needs to be explicitly integrated into the app. The following devices are currently supported by the most recent stable release:

The following devices provide an HSM with StrongBox support used by Auditor:

The Auditor app also has support for verifying alternative operating systems on devices supporting it. It can verify GrapheneOS running on the following devices:

Alternative operating systems need their verified boot key included in the Auditor app and Attestation Server. The app and service display the name of the operating system being verified on the device. Unfortunately, most alternative operating systems lack support for full verified boot and most devices don't support using verified boot with a custom key. The app also depends on the OS preserving the core security model for extensions beyond the baseline hardware-based attestation support.

GrapheneOS is a hardened mobile OS with Android compatibility in early development and has full support for verified boot, rollback protection and attestation as part of preserving all the standard baseline security features. Releases are available on the GrapheneOS releases page and can be used with the Auditor app and server.