MAC-Adressrandomisierung implementieren

Ab Android 8.0 verwenden Android-Geräte zufällige 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 Herstellen einer Verbindung zu einem WLAN eine zufällige MAC-Adresse verwendet.

In Android 10 ist die zufällige Generierung von MAC-Adressen standardmäßig für den Clientmodus, SoftAp und Wi‑Fi Direct aktiviert.

Durch die MAC-Adressen-Randomisierung wird verhindert, dass Zuhörer MAC-Adressen verwenden, um einen Verlauf der Geräteaktivitäten zu erstellen. Dadurch wird der Datenschutz für Nutzer erhöht.

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 zufällige Generierung von MAC-Adressen auf Ihrem Gerät:

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

    • IWifiStaIface#setMacAddress: Konfiguriert die MAC-Adresse der Schnittstelle. Bei der Standardimplementierung wird die Schnittstelle deaktiviert, die MAC-Adresse geändert und die Schnittstelle wieder aktiviert.
    • IWifiStaIface#getFactoryMacAddress: Ruft die Factory-MAC von wlan0 über einen ioctl-Aufruf ab.
    • ISupplicantP2pIface#setMacRandomization: Legt die P2P-MAC-Randomisierung im Supplicant auf „Ein“ oder „Aus“ fest.
  2. Setze config_wifi_connected_mac_randomization_supported auf true in den Einstellungen config.xml (dies kann in einem benutzerdefinierten Geräte-Overlay erfolgen).

    • Mit diesem Flag wird gesteuert, ob die MAC-Adressen-Randomisierung im Clientmodus aktiviert ist.
  3. Setze config_wifi_p2p_mac_randomization_supported auf true in den Einstellungen config.xml (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 haben die Möglichkeit, die Randomisierung für jede SSID zu aktivieren oder zu deaktivieren.
  • MAC-Randomisierung ist standardmäßig für alle neu hinzugefügten Netzwerke aktiviert.

Verwenden Sie die Referenzimplementierung der Einstellungs-UI, um neue Aufforderungen zu implementieren.

Geräte mit Android 9 oder niedriger unterstützen möglicherweise keine zufälligen WLAN-MAC-Adressen. Wenn solche Geräte auf Android 10 aktualisiert werden, kann die Funktion zur zufälligen Generierung von WLAN-MAC-Adressen deaktiviert werden, indem das WIFI_HIDL_FEATURE_DISABLE_AP_MAC_RANDOMIZATION-Flag in der Make-Datei des WLAN-Anbieter-HAL auf „true“ gesetzt wird.

Zertifizierungsstufe

So führen Sie einen manuellen Test durch, um zu prüfen, ob die Funktion wie beabsichtigt funktioniert:

  1. Prüfen Sie, ob die MAC-Adress-Randomisierung auf dem Gerät aktiviert ist. Dazu muss im Geräte-Overlay config_wifi_connected_mac_randomization_supported auf true gesetzt sein.
  2. Verbinde dich mit dem WLAN.
  3. Tippen Sie auf das Netzwerk, um die Seite „Netzwerkdetails“ aufzurufen. Prüfen Sie, ob die MAC-Adressen-Randomisierung aktiviert ist. Prüfen Sie, ob die angezeigte MAC-Adresse eine zufällige MAC-Adresse ist, bei der das lokal generierte Bit auf 1 und das Multicast-Bit auf 0 gesetzt ist.
  4. Deaktiviere die MAC-Adressrandomisierung. Stelle eine Verbindung zum selben Netzwerk her und prüfe, ob die werkseitige MAC-Adresse verwendet wird.
  5. Löschen Sie das Netzwerk, indem Sie auf der Seite „Netzwerkdetails“ auf Entfernen tippen.
  6. Stellen Sie eine Verbindung zum selben Netzwerk her und prüfen Sie, ob dieselbe zufällige MAC-Adresse verwendet wird.

So testen Sie die MAC-Adressen-Randomisierung auf einem Gerät vor Android 10, das die MAC-Adressen-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 Netzwerk gespeichert sein.
  2. Flashen Sie das Android 10-Systemimage.
  3. Prüfen Sie in der WLAN-Auswahl, ob die zufällige Generierung von MAC-Adressen für alle gespeicherten Netzwerke deaktiviert ist.
  4. Aktivieren Sie die MAC‑Adressrandomisierung. Stellen Sie eine Verbindung zum selben Netzwerk her und prüfen Sie, ob die zufällige MAC-Adresse verwendet wird.