Implementación de la aleatorización de MAC

A partir de Android 8.0, los dispositivos Android utilizan direcciones MAC aleatorias cuando buscan nuevas redes mientras no están asociados actualmente con una red. En Android 9, puedes habilitar una opción de desarrollador (está deshabilitada de forma predeterminada) para hacer 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, aumentando así la privacidad del usuario.

Además, las direcciones MAC se aleatorizan 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 la MAC de fábrica de wlan0 mediante una llamada ioctl .
    • ISupplicantP2pIface#setMacRandomization : activa o desactiva la aleatorización de MAC P2P en el solicitante.
  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 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 directa de Wi-Fi está habilitada.
  4. Pruebe su implementación utilizando los métodos descritos en Validación .

La interfaz de usuario del sistema debe:

  • Tiene 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 MAC Wi-Fi. Al actualizar dichos dispositivos a Android 10, la función de aleatorización de MAC de Wi-Fi 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é configurado 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 mostrada sea una MAC aleatoria, que tenga 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 la 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) actualizando 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 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 la MAC aleatoria.