Implementa la aleatorización de MAC

A partir de Android 8.0, los dispositivos Android usan direcciones MAC aleatorias cuando sondean redes nuevas sin estar asociados a una red. En Android 9, puedes habilitar una opción para desarrolladores (está inhabilitada de forma predeterminada) para que el dispositivo use una dirección MAC aleatoria cuando se conecte a una red Wi-Fi.

En Android 10, la aleatorización de MAC está habilitada de forma predeterminada para el modo cliente, SoftAp y Wi-Fi Direct.

La aleatorización de la dirección MAC evita que los dispositivos de escucha usen direcciones MAC para crear un historial de la actividad del dispositivo, lo que aumenta la privacidad del usuario.

Además, las direcciones MAC se aleatorizan como parte de las operaciones de Wi-Fi Aware y Wi-Fi RTT.

Para obtener más información, consulta Comportamiento de la aleatorización de MAC.

Implementación

Para implementar la aleatorización de MAC en tu dispositivo, haz lo siguiente:

  1. Trabaja con un proveedor de chips Wi-Fi para implementar los siguientes métodos de HAL:

    • IWifiStaIface#setMacAddress: Configura la dirección MAC de la interfaz. La implementación predeterminada desactiva la interfaz, cambia la dirección MAC y vuelve a activar la interfaz.
    • IWifiStaIface#getFactoryMacAddress: Obtiene la dirección MAC de fábrica de wlan0 con una llamada a ioctl.
    • ISupplicantP2pIface#setMacRandomization: Establece la aleatorización de la dirección MAC P2P como activada o desactivada en el suplicante.
  2. Establece config_wifi_connected_mac_randomization_supported en true en la configuración config.xml (esto se puede hacer en una superposición personalizada del dispositivo).

    • Esta marca se usa para controlar si la aleatorización de MAC en modo cliente está habilitada.
  3. Establece config_wifi_p2p_mac_randomization_supported en true en la configuración config.xml (esto se puede hacer en una superposición personalizada del dispositivo).

    • Esta marca se usa para controlar si la aleatorización de la dirección MAC de Wi-Fi Direct está habilitada.
  4. Prueba tu implementación con los métodos que se describen en Validación.

La IU del sistema debe cumplir con los siguientes requisitos:

  • Tener una opción para habilitar o inhabilitar la aleatorización para cada SSID
  • Tener habilitada la aleatorización de MAC de forma predeterminada para todas las redes recién agregadas

Usa la implementación de referencia de la IU de configuración para implementar mensajes nuevos.

Es posible que los dispositivos que ejecutan Android 9 o versiones anteriores no admitan la aleatorización de la dirección MAC de Wi-Fi. Cuando se actualizan estos dispositivos a Android 10, se puede inhabilitar la función de aleatorización de MAC de Wi-Fi configurando la marca WIFI_HIDL_FEATURE_DISABLE_AP_MAC_RANDOMIZATION como verdadera en el archivo make de HAL del proveedor de Wi-Fi.

Validación

Para validar que la función funcione según lo previsto, ejecuta una prueba manual:

  1. Verifica que la aleatorización de MAC esté habilitada en el dispositivo. Para ello, comprueba que config_wifi_connected_mac_randomization_supported esté configurado como true en la superposición del dispositivo.
  2. Conéctate a una red Wi‑Fi.
  3. Presiona la red para ir a la página de detalles de la red. Verifica que la aleatorización de MAC esté activada. Verifica que la dirección MAC que se muestra sea una dirección MAC aleatoria, que tenga el bit generado de forma local establecido en 1 y el bit de multidifusión establecido en 0.
  4. Desactiva la aleatorización de MAC, conéctate a la misma red y verifica que se esté usando la MAC de fábrica.
  5. Para borrar la red, presiona Olvidar en la página Detalles de la red.
  6. Conéctate a la misma red y verifica que se esté usando la misma dirección MAC aleatoria.

Para probar la aleatorización de MAC en un dispositivo anterior a Android 10 (capaz de admitir la aleatorización de MAC) que se actualiza a Android 10 o versiones posteriores, haz lo siguiente:

  1. Tener al menos una red guardada en un dispositivo que ejecute Android 9 o versiones anteriores
  2. Escribe la imagen del sistema Android 10 en la memoria flash.
  3. En el selector de Wi-Fi, verifica que la aleatorización de MAC esté desactivada para todas las redes guardadas.
  4. Activa la aleatorización de MAC. Conéctate a la misma red y verifica que se esté usando la dirección MAC aleatoria.