Comportamiento de aleatorización de MAC

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. Debido a 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 estática y única a nivel global, 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 mediante el uso de 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 porque cada octeto es de 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 el caso de los 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).

Opción aleatoria de MAC

Figura 1: Es una 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 se debe 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 sugerencia de red especifica que se usará 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 se estableció en true. Esta superposición está inhabilitada (configurada en false) 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 y persistente basada en los parámetros del perfil de red, incluido el SSID, el tipo de seguridad o el FQDN (para redes de 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 y vuelve a agregar la red Wi-Fi, ya que el MAC dirigido 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 la aleatorización de MAC está habilitada.

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 aleatorizar la dirección MAC en las siguientes situaciones:

  • La duración del arrendamiento de DHCP caducó 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. 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 aleatorizada previamente para conectarse a la red.

Opción para desarrolladores para la aleatorización 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 de habilitar la aleatorización de MAC no persistente para todos los perfiles se encuentra en Settings > Developer Options > Wi-Fi no persistente MAC aleatorio.

Opción de 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