[go: up one dir, main page]

If apps are required to verify the hardware, operating system and their app for regulatory reasons they should use an approach supporting arbitrary roots of trust and operating systems. Android already has a standard hardware attestation system usable for this.

Android鈥檚 documentation and sample libraries are biased towards Google by using them as the only valid root of trust and the API is biased towards stock operating systems but it鈥檚 better than a centralized API.

https://infosec.exchange/@rene_mobile/116286110700616525

Apps should only resort to this if they鈥檙e forced to do it. Root-based attestation provides minimal security and is easy to bypass. It鈥檚 inherently insecure due to trusting the weakest security systems. A leaked key from the TEE/SE on any device can be used to spoof attestations for any device.

Play Integrity permits a device with years of missing security patches. It isn鈥檛 a legitimate security feature. It checks for a device in compliance with Google鈥檚 Android business model, not security.

Unified Attestation is another anti-competitive system putting companies selling products in control of which devices and operating systems are allowed to be used. As with the Play Integrity API, it鈥檚 a phony security feature existing solely to get their products permitted while disallowing fair market competition.

Android鈥檚 hardware attestation API is problematic for a free and open market because it supports root-based attestation. However, it does at least support choosing arbitrary trusted roots and arbitrary trusted operating systems. It isn鈥檛 locked to Google鈥檚 roots or stock OSes they certify.

We made a proposal to Google for pinning-based attestation support for Android hardware attestation and they ended up implementing it. It can be used in combination with root-based attestation or without it. It doesn鈥檛 have the anti-competitive properties and provides far more actual security value.

Root-based attestation trusts the whole hardware attestation ecosystem. Leaked keys from any device can be used to bypass it. Pinning-based attestation starts trust from first use and then provides a high level of security based on the security of the device鈥檚 early boot chain and secure element.

Root-based attestation is mainly used to disallow an arbitary device, OS or modified app for control rather than security. Pinning-based attestation lacks those negatives and can be very secure. It can be bootstrapped by root-based attestation but it works without it and it鈥檚 not the only approach