
Today, I’d like to share a few notes about GrapheneOS and Wi-Fi privacy. When connecting to a new Wi-Fi network for the first time, ‘normal’ Android devices I use generate a per-Wi-Fi network randomized MAC layer 2 address and then keep using this MAC address for this network. While this prevents tracking a device between different networks, an individual network can still track a device forever. Not ideal.
GrapheneOS fortunately goes a different way! Instead of using a per-network MAC address, the default is to use per-connection randomized MAC address. This removes traceability over time even in a single network.
I gave this a try at the local Ikea store that has an extensive Wi-Fi network in the building. With the ‘normal’ Android device, one is ‘encouraged’ to consent to tracking when connecting to the network for the first time. All future connections are then automatically recognized and no sign-in process is necessary anymore. With my GrapheneOS smartphone, I am asked to sign-in, i.e. press the ‘consent’ button on their web page, every time I connect to the network. In practice, that is of course not as convenient as the auto sign-in that is based on tracking. But I’m the sort of person that is willing to make that tradeoff. I then checked if I would have this per-connection MAC address also on a ‘normal’ Android phone. At least on the one I checked, such an option is not available. A very nice privacy enhancement, thank you very much! Also note the ‘send device name’ slider that is off-by default. Again, just nice to see no private info is leaking out.
There is one little catch, however: Per-connection MAC addresses are used by default in all Wi-Fi networks, i.e. also in my home network. I had a look at my home network configuration and sure enough, the list of currently ‘not-connected’ devices for which IP addresses are reserved is rather long. The default setting in my router for keeping those MAC address to IP address relationships is 10 days. That’s perhaps a bit too long, given that I only have 254 IP addresses in the local subnet. Fortunately, I could change the retention time to 1 day. That should be enough. Alternatively, I could have changed the setting for my home Wi-fi network in the smartphone. However, I think I like it better this way.