← Back to context

Comment by grapheneos

5 days ago

It's very difficult to convince these apps to officially support a single alternative to Apple and Google Mobile Services devices. Once they're convinced to it and have committed to it, it's much easier to convince them to support more alternatives. Many of these apps are required to check device and app integrity by government regulations or industry standards. The EU has defined multiple standards requiring it. Multiple of the EU standards have at least initially explicitly referred to the Apple App Attest API and Google Play Integrity API as ways to verify device and app integrity. People were unable to convince them not to do it. We convinced them to remove references to specific Apple and Google APIs from several standards. We were unable to convince them to define any actual requirements or especially to require permitting any OS or hardware meeting those requirements. We tried very hard to convince them to do that and were unsuccessful.

GrapheneOS has heavily pushed back against using attestation to permit only specific software and hardware for running apps and using services. We've convinced dozens of apps to stop doing it altogether. We haven't had much success convincing banking apps to stop using the Play Integrity API to enforce Google certification, but we have convinced at least around 6 companies published at least around 12 apps to use the Android key attestation API to permit GrapheneOS. Those apps can now also easily add other operating systems supporting verified boot too. They're now aware of this being a choice and are considering how to handle it instead of simply going along with the typical approach of permitting only Google certified hardware running the stock OS.

We defined a signed JSON format for distributing verified boot key hashes for use with the Android key attestation API. This can be implemented by other operating systems implementing verified boot, a mandatory app sandbox and support for passing the signing key hashes and version of an app using it to the standard hardware keystores. It can be implemented beyond Android-based operating systems.

Unless people can convince the EU and other regulators to move in the opposite direction, this is where things are headed for access to many important government, banking and other services. We've tried our best to convince the EU and others to stop heading down this path and to start forbidding apps and services from doing this instead. They've continued heading down this path and we're working hard to keep apps working and to roll back the gradual loss in compatibility with banking apps gradually adopting the Play Integrity API. We need our community to help heavily pressure apps using it to stop or provide an alternative. We're gradually having success due to our growing userbase and influence. Perhaps one day we can convince the EU and many countries around the world to forbid using attestation to limit which OS or hardware can be used but right now they're doing the opposite.