Implementare la randomizzazione dell'indirizzo MAC

A partire da Android 8.0, i dispositivi Android utilizzano indirizzi MAC casuali quando cercano nuove reti senza essere associati a una rete. In Android 9, puoi attivare un'opzione sviluppatore (disattivata per impostazione predefinita) per fare in modo che il dispositivo utilizzi un indirizzo MAC casuale quando si connette a una rete Wi-Fi.

In Android 10, la randomizzazione dell'indirizzo MAC è attivata per impostazione predefinita per la modalità client, SoftAp e Wi-Fi Direct.

La randomizzazione dell'indirizzo MAC impedisce agli ascoltatori di utilizzare gli indirizzi MAC per creare una cronologia dell'attività del dispositivo, aumentando così la privacy degli utenti.

Inoltre, gli indirizzi MAC vengono assegnati in modo casuale nell'ambito delle operazioni Wi-Fi Aware e Wi-Fi RTT.

Per ulteriori informazioni, vedi Comportamento della randomizzazione MAC.

Implementazione

Per implementare la randomizzazione dell'indirizzo MAC sul tuo dispositivo:

  1. Collabora con un fornitore di chip Wi-Fi per implementare i seguenti metodi HAL:

    • IWifiStaIface#setMacAddress: configura l'indirizzo MAC dell'interfaccia. L'implementazione predefinita disattiva l'interfaccia, modifica l'indirizzo MAC e riattiva l'interfaccia.
    • IWifiStaIface#getFactoryMacAddress: recupera l'indirizzo MAC di fabbrica di wlan0 utilizzando una chiamata ioctl.
    • ISupplicantP2pIface#setMacRandomization: attiva/disattiva la randomizzazione dell'indirizzo MAC P2P nel supplicant.
  2. Imposta config_wifi_connected_mac_randomization_supported su true nelle Impostazioni config.xml (puoi farlo in una sovrapposizione personalizzata del dispositivo).

    • Questo flag viene utilizzato per controllare se la randomizzazione MAC in modalità client è attivata.
  3. Imposta config_wifi_p2p_mac_randomization_supported su true nelle Impostazioni config.xml (puoi farlo in una sovrapposizione personalizzata del dispositivo).

    • Questo flag viene utilizzato per controllare se la randomizzazione dell'indirizzo MAC Wi-Fi Direct è attivata.
  4. Testa l'implementazione utilizzando i metodi descritti in Convalida.

L'interfaccia utente di sistema deve:

  • Avere un'opzione per attivare o disattivare la randomizzazione per ogni SSID.
  • Avere la randomizzazione dell'indirizzo MAC attivata per impostazione predefinita per tutte le reti appena aggiunte.

Utilizza l'implementazione di riferimento della UI delle impostazioni per implementare i nuovi prompt.

I dispositivi con Android 9 o versioni precedenti potrebbero non supportare la randomizzazione dell'indirizzo MAC Wi-Fi. Quando esegui l'upgrade di questi dispositivi ad Android 10, la funzionalità di randomizzazione dell'indirizzo MAC Wi-Fi può essere disattivata impostando il flag WIFI_HIDL_FEATURE_DISABLE_AP_MAC_RANDOMIZATION su true nel file make HAL del fornitore Wi-Fi.

Convalida

Per verificare che la funzionalità funzioni come previsto, esegui un test manuale:

  1. Verifica che la randomizzazione dell'indirizzo MAC sia abilitata sul dispositivo controllando che config_wifi_connected_mac_randomization_supported sia impostato su true nell'overlay del dispositivo.
  2. Connettiti a una rete Wi-Fi.
  3. Tocca l'emittente per andare alla pagina dei dettagli dell'emittente. Verifica che la randomizzazione dell'indirizzo MAC sia attiva. Verifica che l'indirizzo MAC visualizzato sia un MAC randomizzato, con il bit generato localmente impostato su 1 e il bit multicast impostato su 0.
  4. Disattiva la randomizzazione dell'indirizzo MAC. Connettiti alla stessa rete e verifica che venga utilizzato l'indirizzo MAC di fabbrica.
  5. Elimina la rete toccando Rimuovi nella pagina Dettagli rete.
  6. Connettiti alla stessa rete e verifica che venga utilizzato lo stesso indirizzo MAC randomizzato.

Per testare la randomizzazione dell'indirizzo MAC su un dispositivo precedente ad Android 10 (in grado di supportare la randomizzazione dell'indirizzo MAC) che esegue l'upgrade ad Android 10 o versioni successive:

  1. Avere almeno una rete salvata su un dispositivo con Android 9 o versioni precedenti.
  2. Esegui il flashing dell'immagine di sistema Android 10.
  3. Nel selettore Wi-Fi, verifica che la randomizzazione dell'indirizzo MAC sia disattivata per tutte le reti salvate.
  4. Attiva la randomizzazione dell'indirizzo MAC. Connettiti alla stessa rete e verifica che venga utilizzato il MAC randomizzato.