¿Dónde se almacenan los datos de aleatorización WiFi MAC?

En los Android más nuevos hay una función llamada WiFi MAC Randomization. En su forma básica, el mecanismo calcula el MAC aleatorio para un ESSID determinado. Cada vez que te conectes a la misma WiFi, Android utilizará la MAC generada previamente. Incluso cuando olvide la red WiFi y la agregue de nuevo, Android usará la misma MAC que antes. Entonces, ¿dónde se almacenan exactamente los datos de aleatorización WiFi MAC?

Respuestas (1)

Según la documentación de Android, la aleatorización persistente no se almacena en ningún lado.

En cambio, la "dirección MAC aleatoria" se genera cada vez que se conecta a Wifi. Esta generación se basa en los parámetros de la red Wifi:

Android genera una dirección MAC aleatoria persistente en función de los parámetros del perfil de red, incluido el SSID, el tipo de seguridad o el FQDN (para redes Passpoint).

Y supongo que, además, se incluye en el cálculo algún factor secreto que es exclusivo de su dispositivo; de lo contrario, cada dispositivo Android generaría la misma dirección MAC aleatoria para la misma red. No estoy seguro de lo que realmente usan, puede ser ANDROID_ID o algunos datos aleatorios de ~128 bits almacenados en algún lugar de su perfil de usuario.

En tales situaciones, normalmente se usa un algoritmo HMAC para generar una salida pseudoaleatoria que luego se puede usar para los 46 bits del MAC que se aleatorizan. Esto hace que sea casi imposible determinar la parte secreta utilizada en función de la dirección MAC aleatoria y calcular las direcciones MAC que usaría en otras redes.

Tenga en cuenta que esta respuesta es solo sobre AOSP. El fabricante de Android puede cambiar la aleatorización. De acuerdo con un estudio sobre la aleatorización de WiFi MAC, Motorola, por ejemplo, implementa un esquema personalizado de aleatorización de MAC (no el esquema de 46 bits descrito en AOSP).