La función de aleatorización de MAC permite que los dispositivos usen una dirección MAC aleatoria cuando se conectan a una red Wi-Fi. Para obtener instrucciones de implementación, consulta Implementa la aleatorización de MAC. En esta página, se describe el comportamiento de la aleatorización de MAC en Android.
Los dispositivos usan las direcciones MAC cuando se conectan a una red Wi-Fi o a un punto de acceso. Como estas direcciones MAC se transmiten sin encriptación, se pueden capturar y usar para rastrear la ubicación de un usuario. Históricamente, los dispositivos usan la dirección MAC de fábrica para asociarse a una red Wi-Fi. La dirección MAC de fábrica es estática y única a nivel global, lo que permite rastrear e identificar individualmente el dispositivo.
La función de aleatorización de MAC aumenta la privacidad del usuario, ya que usa una dirección de MAC aleatoria cuando se conecta a una red Wi-Fi.
Las direcciones MAC tienen 48 bits de longitud y, por lo general, se representan con 12 dígitos hexadecimales (6 octetos, ya que cada octeto tiene 8 bits), como 00:11:22:AA:BB:CC
. La función de aleatorización de MAC aleatoriza la dirección estableciendo el bit administrado localmente en 1 y el bit unicast en 0. Los otros 46 bits se aleatorizan.
En los dispositivos que ejecutan Android 10 o versiones posteriores, el framework usa direcciones MAC aleatorias de forma predeterminada. Los usuarios pueden habilitar o inhabilitar la aleatorización de MAC para redes individuales a través de una opción en la pantalla Detalles de la red en Configuración, como se muestra en la Figura 1. Si un usuario inhabilita la aleatorización de MAC para una red, el framework usa la dirección MAC de fábrica (dirección única a nivel global).
Figura 1: Opción de aleatorización de MAC
Tipos de aleatorización de MAC
El framework de Android usa dos tipos de aleatorización de MAC: persistente y no persistente. Si el usuario inhabilita la aleatorización de la dirección MAC, se usará la dirección MAC de fábrica.
Android determina qué tipo de aleatorización de MAC usar cuando el dispositivo se asocia a una red Wi-Fi. De forma predeterminada, Android usa la aleatorización persistente. A partir de Android 12, Android usa la aleatorización no persistente en las siguientes situaciones:
- Una app de sugerencias de redes especifica que se use la aleatorización no persistente para la red a través de la API de
WifiNetworkSuggestion.Builder#setMacRandomizationSetting
. - La red es abierta, no se encontró un portal cautivo y la superposición
config_wifiAllowEnhancedMacRandomizationOnOpenSsids
está configurada comotrue
. Esta superposición está inhabilitada (establecida enfalse
) de forma predeterminada.
Aleatorización persistente
Android usa el tipo de aleatorización persistente de forma predeterminada cuando se habilita la función de aleatorización de MAC. Android genera una dirección MAC aleatoria persistente basada en los parámetros del perfil de red, incluidos el SSID, el tipo de seguridad o el FQDN (para redes Passpoint). Esta dirección MAC sigue siendo la misma hasta que se restablece la configuración de fábrica. La dirección MAC no se vuelve a aleatorizar si el usuario olvida y vuelve a agregar la red Wi-Fi, ya que la dirección MAC depende de los parámetros del perfil de red.
Las direcciones MAC persistentes son necesarias en los casos en que las redes dependen de la persistencia de la dirección MAC para proporcionar funciones útiles al usuario, por ejemplo, para recordar un dispositivo y permitir que los usuarios omitan la pantalla de acceso según lo previsto, o para habilitar el control parental.
En Android 10 y 11, el framework usa la aleatorización persistente para todas las redes cuando se habilita la aleatorización de MAC.
Aleatorización no persistente
Con el tipo de aleatorización no persistente, que se usa para algunas redes en Android 12 o versiones posteriores, el módulo de Wi-Fi vuelve a aleatorizar la dirección MAC al comienzo de cada conexión, o bien el framework usa la dirección MAC aleatoria existente para conectarse a la red. El módulo de Wi-Fi vuelve a aleatorizar la dirección MAC en las siguientes situaciones:
- Venció la duración del arrendamiento de DHCP y transcurrieron más de 4 horas desde que el dispositivo se desconectó de esta red por última vez.
- La dirección MAC aleatoria actual del perfil de red se generó hace más de 24 horas. La re-aleatorización de la dirección MAC solo se produce al inicio de una conexión nueva. La conexión Wi-Fi no se desconectará de forma activa con el objetivo de volver a aleatorizar una dirección MAC.
Si no se aplica ninguna de estas situaciones, el framework usa la dirección MAC aleatoria anterior para conectarse a la red.
Opción para desarrolladores para la aleatorización no persistente
En los dispositivos que ejecutan Android 11 o versiones posteriores, los usuarios pueden habilitar la aleatorización de MAC no persistente de forma global para todas las redes Wi-Fi (que tienen habilitada la aleatorización de MAC) a través de la pantalla de opciones para desarrolladores. La opción para habilitar la aleatorización de MAC no persistente para todos los perfiles se encuentra en Configuración > Opciones para desarrolladores > Aleatorización de MAC no persistente para Wi-Fi.
Figura 2: Opción de aleatorización de MAC no persistente para conexiones Wi-Fi