Auditor (attestation.app/about) uses very dense QR codes for response from the Auditee device to the challenge from the Auditor device. It relies on specialized certificate chain compression with a pre-shared DEFLATE dictionary for the attestation to fit into a QR code at all.
In order to improve security of chaining trust from hardware attestation to the app, Auditor uses the very niche android:useEmbeddedDex="true" feature to disable on-device ahead-of-time compilation for the app's Kotlin/Java code. It makes the QR scanning harder on GrapheneOS.
Android uses a mix of on-device ahead-of-time (AOT) compilation and just-in-time (JIT) compilation for Java/Kotlin.
GrapheneOS disables JIT to improve security. It compensates by using full AOT compilation which results in better overall Java/Kotlin performance and battery life.
Since Auditor uses a niche feature to disable on-device AOT, the app code ends up fully interpreted on GrapheneOS.
The library for QR code scanning (zxing) is a pure Java library and it can't process nearly as many frames. Tricky to make it work well with the dense QR codes.
If Auditor wasn't using android:useEmbeddedDex="true", it would be able to process substantially more frames on GrapheneOS until Android eventually ends up fully AOT compiling the hot zxing code based on JIT profiles. A high performance Rust library would work a lot better...
• • •
Missing some Tweet in this thread? You can try to
force a refresh
microG does NOT provide an open source implementation of Play services. Apps using Play services integrate the closed source Google libraries which are fully capable of contacting Google services regardless of whether Play services is present, and also do so in practice too.
The implementation of the services is also still closed source. It's only an open source middleman and the Google libraries are perfectly capable of communicating with the Google services without it. It doesn't provide better privacy or security and doesn't make Play open source.
It's not as secure as the official Play services implementation and doesn't provide comparable privacy for user data. It leaks user data across apps, doesn't properly enforce the API security model and doesn't provide comparable transport security via pinning and other measures.
App sandbox on GrapheneOS also leaks significantly less data to apps. Most of our privacy improvements are under the hood and don't require user-facing interfaces.
Our improvements requiring configuration are natively integrated into the Settings app and match the standard UI.
Sensors/Network toggles are part of the standard permission UI.
Sensors toggle disables access to all sensors not covered by existing permissions and returns zeroed data.
Network toggle fully disables both direct network access and indirect via APIs requiring the permission.
Those other operating systems don't improve resistance against exploitation and won't provide more resistance against an exploit working against AOSP/stock.
@GrassFedBitcoin@CalyxOS The vast majority of remote code execution exploits are based on memory corruption bugs. Defending against those is a major focus of GrapheneOS. A lot of the bugs won't be exploitable beyond denial of service. In most cases, the exploits will need substantial changes at minimum.
@GrassFedBitcoin@CalyxOS If they specifically target GrapheneOS and put work into adjusting their exploit chains and finding new bugs as necessary, then they could certainly develop an exploit working against GrapheneOS. Costs will be higher and they'll usually need to specifically take it into account.
See the linked release notes for an overview of the changes since the previous release.
This release adds an experimental version of the highly anticipated feature for running Play services and friends as sandboxed apps without any special privileges.
Secondary user support and dynamite module compatibility is coming soon.
Once dynamite module compatibility is implemented, nearly all the APIs will be working. This doesn't work yet because it has no special SELinux MAC/MLS policy due to being in the normal app sandbox. We need to add shims on both ends sending the modules via standard file sharing.
Play services compatibility layer in active development and an early prototype has the basics working.
It will allow users to install Play services as a regular app in specific profiles without granting it any special privileges. Most functionality can work with this approach.
Play services won't be bundled with the OS. It will be up to users to choose to install Play services in a profile.
It won't be part of the upcoming July security update release but there will likely be an initial experimental implementation ready for testing by the end of July.
This approach will be drastically more maintainable than attempting to reimplement the APIs. It will be much easier to port to new major OS versions and will provide much more of the functionality. It will also have all the usual security checks and component/server key pinning.
Next release of GrapheneOS will finally have a fix for IPv6 privacy addresses to prevent them being used to track users not only across connections to the same network but across networks.
Future devices won't have this particular kind of issue anymore due to upstream fixes.
All of the blatant issues with Wi-Fi anonymity should be resolved now. Hardware/firmware on the supported devices has done things properly for a while but there were higher-level anonymity issues. Of course, it would be a good idea to go over everything from the bottom up again.
It won't be possible to provide the same kind of Wi-Fi anonymity on other hardware unless it goes out of the way to minimize leaked information and randomize sequence numbers, etc. in the same way.
Should be possible to properly do this on most modern Snapdragon devices though.