Implementación de la aleatorización de MAC

A partir de Android 8.0, los dispositivos Android usan direcciones MAC aleatorias cuando buscan nuevas redes mientras no están asociados actualmente con una red. En Android 9, puede habilitar una opción de desarrollador (está deshabilitada de manera predeterminada) para que el dispositivo use una dirección MAC aleatoria cuando se conecta 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 MAC evita que los oyentes utilicen direcciones MAC para crear un historial de actividad del dispositivo, lo que aumenta la privacidad del usuario.

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

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

Implementación

Para implementar la aleatorización de MAC en su dispositivo:

  1. Trabaje con un proveedor de chips Wi-Fi para implementar los siguientes métodos 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 el MAC de fábrica de wlan0 usando una ioctl .
    • ISupplicantP2pIface#setMacRandomization : activa o desactiva la aleatorización MAC P2P en el suplicante.
  2. Establezca config_wifi_connected_mac_randomization_supported en true en Configuración config.xml (esto se puede hacer en una superposición personalizada del dispositivo).

    • Este indicador se utiliza para controlar si la aleatorización de MAC en modo cliente está habilitada.
  3. Establezca config_wifi_p2p_mac_randomization_supported en true en el config.xml de configuración (esto se puede hacer en una superposición personalizada del dispositivo).

    • Esta bandera se usa para controlar si la aleatorización MAC directa de Wi-Fi está habilitada.
  4. Pruebe su implementación usando los métodos descritos en Validación .

La interfaz de usuario del sistema debe:

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

Utilice la implementación de referencia de la interfaz de usuario de configuración para implementar nuevas indicaciones.

Es posible que los dispositivos con Android 9 o versiones anteriores no sean compatibles con la aleatorización de Wi-Fi MAC. Al actualizar dichos dispositivos a Android 10, la función de aleatorización de Wi-Fi MAC se puede desactivar configurando el indicador WIFI_HIDL_FEATURE_DISABLE_AP_MAC_RANDOMIZATION en verdadero en el archivo de creación HAL del proveedor de Wi-Fi.

Validación

Para validar que la función funciona según lo previsto, ejecute una prueba de integración (ACTS) y una prueba manual.

Para ejecutar una prueba de integración, use el archivo ACTS, WifiMacRandomizationTest.py , ubicado en tools/test/connectivity/acts_tests/tests/google/wifi , para verificar que el dispositivo use la dirección MAC aleatoria y almacene correctamente la dirección MAC aleatoria para cada red.

Para ejecutar una prueba manual:

  1. Verifique que la aleatorización de MAC esté habilitada en el dispositivo verificando que config_wifi_connected_mac_randomization_supported esté establecido en true en la superposición del dispositivo.
  2. Conéctese a una red Wi-Fi.
  3. Toque la red para ir a la página de detalles de la red. Verifique que la aleatorización de MAC esté activada. Verifique que la dirección MAC que se muestra sea una MAC aleatoria, que tiene el bit generado localmente establecido en 1 y el bit de multidifusión establecido en 0.
  4. Desactive la aleatorización de MAC. Conéctese a la misma red y verifique que se esté utilizando el MAC de fábrica.
  5. Elimine la red tocando Olvidar en la página de detalles de la red.
  6. Conéctese a la misma red y verifique que se esté utilizando 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 actualice a Android 10 o superior:

  1. Tener al menos una red guardada en un dispositivo con Android 9 o inferior.
  2. Muestra la imagen del sistema de Android 10.
  3. En el selector de Wi-Fi, verifique que la aleatorización de MAC esté desactivada para todas las redes guardadas.
  4. Active la aleatorización de MAC. Conéctese a la misma red y verifique que se esté utilizando el MAC aleatorio.