- Edited
There are various ways that apps in different profiles can get indication they are running on the same device. Private Space is another type of profile as are work, user and cloned profiles.
Some techniques work better if profiles are running at the same time. Others would require recording the data over time to provide a strong correlation. It would not take long.
If its the same app, same appID and apk signature, in different profiles DRM ID gives a strong proof.
These are quick lists of data points that could be used to provide an indication that apps are on the same device. These lists are incomplete. Collecting more of these and/or logging them over time can increase confidence.
If the profiles are not running at the same time there is -
- how many battery charge cycles on phone since battery was new
- date and time apps are installed and updated on the device : apps in any profile can see when each non-system app was first installed on the device and when it was updated on the device for all apps in the same profile
- The OS update that is running
- Free storage available https://github.com/GrapheneOS/os-issue-tracker/issues/4164
- Time since device booted
- Mobile data used since last boot
- Wifi data used since last boot
- Time zone that is set for device
- Locale if set for the device
- Country code for active SIM card.
- Detected country : this issue has some details its related to various data sources including timezone, set locale and country code https://github.com/GrapheneOS/os-issue-tracker/issues/502
- Developer options enabled
- adb enabled
Its possible for users to currently mitigate some of these with careful app selection and opsec, for example changing timezones etc. before starting different profiles.
The following can also be used If profiles are running at the same time. Remember owner profile is always running -
- Battery %, temp and voltage
- Free memory
- Amount of work each CPU core is doing
- Time screen off and on
- Time device connected to or disconnected from charger
- Screen brightness
Both fingerprintjs and TrustDevice offer open source libraries to app developers which can be easily included in their app to allow them to fingerprint the device their app is running on. They both have apps to test the fingerprinting techniques they offer. The open source apps which will both work without a network connection are
https://github.com/fingerprintjs/fingerprintjs-android
https://github.com/trustdecision/trustdevice-android
It is worth noting that for many of the data points these apps collect results will be the same for every device of the same model. For many other data points it will be the same for devices on the same OS update.
Also various data points listed above are not collected by these apps.
Ongoing research is required to identify all possible ways apps could fingerprint that they are running on the same device. Potential methods apps can use will change as AOSP changes.
Currently GrapheneOS is disinclined to provide blocking for only one or a few of these, in an attempt to stop fingerprinting, as it would still be relatively trivial for apps to continue to achieve strong confidence that they are running on the same device if they so desire. It may also give the impression to users that they can not do that. There may be other reasons to block some of these data points besides blocking device fingerprinting.
As with all features added to GrapheneOS anything done to block ways apps can collect data about the device on which they are running will require maintaining over time as AOSP changes.