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 Cómo implementar la aleatorización de MAC. En esta página, se describe el comportamiento de la aleatorización de MAC en Android.
Los dispositivos usan direcciones MAC cuando se conectan a una red Wi-Fi o a un punto de acceso. Dado que 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 única a nivel global y estática, lo que permite hacer un seguimiento del dispositivo y su identificación individual.
La función de aleatorización de MAC aumenta la privacidad del usuario, ya que usa una dirección 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 configurando el bit administrado de forma local en 1 y el bit unicast en 0. Los otros 46 bits se asignan de forma aleatoria.
En dispositivos que ejecutan Android 10 o versiones posteriores, el framework usa una dirección MAC aleatoria 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 mundial).
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: aleatorización persistente y aleatorización no persistente. Si el usuario inhabilita la aleatorización de MAC, se usa 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 aleatoriedad persistente. A partir de Android 12, Android usa la aleatoriedad no persistente en las siguientes situaciones:
- Una app de sugerencias de red 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 una red abierta que no encontró un portal cautivo y la superposición
config_wifiAllowEnhancedMacRandomizationOnOpenSsids
está configurada comotrue
. Esta superposición está inhabilitada (configurada enfalse
) de forma predeterminada.
Aleatorización persistente
Android usa el tipo de aleatorizacion persistente de forma predeterminada cuando se habilita la función de aleatorizacion de MAC. Android genera una dirección MAC aleatoria persistente según los parámetros del perfil de red, incluidos el SSID, el tipo de seguridad o el FQDN (para redes Passpoint). Esta dirección MAC permanece igual hasta que se restablece la configuración de fábrica. La dirección MAC no se vuelve a aleatorizar si el usuario olvida la red Wi-Fi y la vuelve a agregar, 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 una funcionalidad útil al usuario, por ejemplo, para recordar un dispositivo y permitir que los usuarios omitan la pantalla de acceso como se espera, o para habilitar los controles parentales.
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
En el tipo de aleatorización no persistente, que se usa para algunas redes en Android 12 o versiones posteriores, el módulo Wi-Fi vuelve a aleatorizar la dirección MAC al comienzo de cada conexión o el framework usa la dirección MAC aleatoria existente para conectarse a la red. El módulo Wi-Fi vuelve a generar aleatoriamente la dirección MAC en las siguientes situaciones:
- Venció la duración del arrendamiento de DHCP y transcurrieron más de 4 horas desde la última vez que el dispositivo se desconectó de esta red.
- El MAC aleatorio actual para el perfil de red se generó hace más de 24 horas. La nueva aleatorización de la dirección MAC solo ocurre al comienzo de una conexión nueva. Wi-Fi no se desconectará de forma activa para volver a aleatorizar una dirección MAC.
Si no se aplica ninguna de estas situaciones, el framework usa la dirección MAC aleatorizada previamente para conectarse a la red.
Opción para desarrolladores para la aleatoriedad no persistente
En dispositivos que ejecutan Android 11 o versiones posteriores, los usuarios pueden habilitar la aleatoriedad de MAC no persistente de forma global para todas las redes Wi-Fi (que tengan habilitada la aleatoriedad 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 conexiones Wi-Fi.
Figura 2: Opción de aleatorización de MAC no persistente para conexiones Wi-Fi