En los Android más recientes hay una función llamada Randomización de la MAC de WiFi. En su forma básica, el mecanismo calcula la dirección MAC aleatoria para un determinado ESSID. Cada vez que te conectas al mismo WiFi, Android usará la MAC generada previamente. Incluso cuando olvidas la red WiFi y la agregas de nuevo, Android utilizará la misma MAC que antes. Entonces, ¿dónde exactamente se almacenan los datos de randomización de la MAC de WiFi?
Respuesta
¿Demasiados anuncios?Según la documentación de Android, la aleatorización persistente no se almacena en ningún lugar.
En su lugar, la "dirección MAC aleatoria" se genera cada vez que te conectas al Wifi. Esta generación se basa en los parámetros de la red Wifi:
Android genera una dirección MAC aleatoria persistente basada en los parámetros del perfil de red, incluido SSID, tipo de seguridad o FQDN (para redes Passpoint).
Y supongo que adicionalmente se incluye algún factor secreto único de tu dispositivo en el cálculo, de lo contrario cada dispositivo Android generaría la misma dirección MAC aleatoria para la misma red. No estoy seguro de qué usan en realidad, quizás ANDROID_ID o algún dato aleatorio de ~128 bits almacenado en algún lugar de tu perfil de usuario.
En tales situaciones, típicamente se utiliza un algoritmo HMAC para generar una salida seudorandom que luego se puede utilizar para los 46 bits de la MAC que se aleatorizan. Esto hace que sea casi imposible determinar la parte secreta utilizada en base a la dirección MAC aleatoria y calcular las direcciones MAC que se usarían en otras redes.
Ten en cuenta que esta respuesta es únicamente sobre AOSP. Los fabricantes de dispositivos Android pueden cambiar la aleatorización. Según un estudio sobre aleatorización de MAC de WiFi, Motorola, por ejemplo, implementa un esquema personalizado de aleatorización de MAC (no el esquema de 46 bits descrito en AOSP).