MAC-Adressrandomisierung implementieren

Ab Android 8.0 verwenden Android-Geräte randomisierte MAC-Adressen, wenn sie nach neuen Netzwerken suchen, während sie nicht mit einem Netzwerk verbunden sind. In Android 9 können Sie eine Entwickleroption aktivieren (standardmäßig deaktiviert), damit das Gerät beim Verbinden mit einem WLAN eine randomisierte MAC-Adresse verwendet.

In Android 10 ist die MAC-Randomisierung standardmäßig für den Clientmodus, SoftAp und Wi-Fi Direct aktiviert.

Durch die MAC-Randomisierung wird verhindert, dass Listener anhand von MAC-Adressen einen Verlauf der Geräteaktivitäten erstellen. So wird der Datenschutz für Nutzer verbessert.

Außerdem werden MAC-Adressen im Rahmen von Wi-Fi Aware und Wi-Fi RTT-Vorgängen randomisiert.

Weitere Informationen finden Sie unter MAC-Randomisierungsverhalten.

Implementierung

So implementieren Sie die MAC-Randomisierung auf Ihrem Gerät:

  1. Arbeiten Sie mit einem WLAN-Chipanbieter zusammen, um die folgenden HAL-Methoden zu implementieren:

    • IWifiStaIface#setMacAddress: Konfiguriert die MAC-Adresse der Schnittstelle. Bei der Standardimplementierung wird die Schnittstelle heruntergefahren, die MAC-Adresse geändert und die Schnittstelle wieder hochgefahren.
    • IWifiStaIface#getFactoryMacAddress: Ruft die werkseitige MAC-Adresse von wlan0 mit einem ioctl-Aufruf ab.
    • ISupplicantP2pIface#setMacRandomization: Aktiviert oder deaktiviert die P2P-MAC-Randomisierung im Supplicant.
  2. Setzen Sie config_wifi_connected_mac_randomization_supported in den Einstellungen config.xml auf true. Dies kann in einem benutzerdefinierten Geräte Overlay erfolgen.

    • Mit diesem Flag wird gesteuert, ob die MAC-Randomisierung im Clientmodus aktiviert ist.
  3. Setzen Sie config_wifi_p2p_mac_randomization_supported in den Einstellungen config.xml auf true. Dies kann in einem benutzerdefinierten Geräte Overlay erfolgen.

    • Mit diesem Flag wird gesteuert, ob die MAC-Randomisierung für Wi-Fi Direct aktiviert ist.
  4. Testen Sie Ihre Implementierung mit den unter Validierung beschriebenen Methoden.

Die System-UI muss folgende Anforderungen erfüllen:

  • Sie muss eine Option zum Aktivieren oder Deaktivieren der Randomisierung für jede SSID haben.
  • Die MAC-Randomisierung muss für alle neu hinzugefügten Netzwerke standardmäßig aktiviert sein.

Verwenden Sie die Referenzimplementierung der Einstellungen-UI, um neue Eingabeaufforderungen zu implementieren.

Geräte mit Android 9 oder niedriger unterstützen möglicherweise keine WLAN-MAC-Randomisierung. Wenn Sie solche Geräte auf Android 10 aktualisieren, kann die WLAN-MAC-Randomisierung deaktiviert werden, indem Sie das Flag WIFI_HIDL_FEATURE_DISABLE_AP_MAC_RANDOMIZATION in der Make-Datei des WLAN-Anbieters auf „true“ setzen.

Validierung

Führen Sie einen manuellen Test aus, um zu prüfen, ob die Funktion wie vorgesehen funktioniert:

  1. Prüfen Sie, ob die MAC-Randomisierung auf dem Gerät aktiviert ist. Dazu muss config_wifi_connected_mac_randomization_supported im Geräte-Overlay auf true gesetzt sein.
  2. Verbinden Sie sich mit einem WLAN.
  3. Tippen Sie auf das Netzwerk, um zur Seite „Netzwerkdetails“ zu gelangen. Prüfen Sie, ob die MAC-Randomisierung aktiviert ist. Prüfen Sie, ob die angezeigte MAC-Adresse eine randomisierte MAC-Adresse ist, bei der das lokal generierte Bit auf 1 und das Multicast-Bit auf 0 gesetzt ist.
  4. Deaktivieren Sie die MAC-Randomisierung. Stellen Sie eine Verbindung zum selben Netzwerk her und prüfen Sie, ob die werkseitige MAC-Adresse verwendet wird.
  5. Löschen Sie das Netzwerk, indem Sie auf der Seite „Netzwerkdetails“ auf Vergessen tippen.
  6. Stellen Sie eine Verbindung zum selben Netzwerk her und prüfen Sie, ob dieselbe randomisierte MAC-Adresse verwendet wird.

So testen Sie die MAC-Randomisierung auf einem Gerät mit einer Android-Version vor Android 10, das die MAC-Randomisierung unterstützt und auf Android 10 oder höher aktualisiert wird:

  1. Auf einem Gerät mit Android 9 oder niedriger muss mindestens ein gespeichertes Netzwerk vorhanden sein.
  2. Flashen Sie das Android 10-Systemimage.
  3. Prüfen Sie in der WLAN-Auswahl, ob die MAC-Randomisierung für alle gespeicherten Netzwerke deaktiviert ist.
  4. Aktivieren Sie die MAC-Randomisierung. Stellen Sie eine Verbindung zum selben Netzwerk her und prüfen Sie, ob die randomisierte MAC-Adresse verwendet wird.