MAC-Randomisierung 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 MAC-Randomisierung standardmäßig für den Clientmodus, SoftAp und Wi-Fi Direct aktiviert.

Die MAC-Randomisierung verhindert, dass Hörer MAC-Adressen verwenden, um einen Verlauf der Geräteaktivitäten zu erstellen, und erhöht so den Datenschutz für Nutzer.

Außerdem werden MAC-Adressen im Rahmen von Wi‑Fi Aware- und Wi‑Fi RTT-Vorgängen zufällig generiert.

Weitere Informationen finden Sie unter Verhalten bei der MAC-Randomisierung.

Implementierung

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

  1. Wenden Sie sich an einen WLAN-Chipanbieter, 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 gestartet.
    • IWifiStaIface#getFactoryMacAddress: Ruft die MAC-Adresse der Fabrik von wlan0 über einen ioctl-Aufruf ab.
    • ISupplicantP2pIface#setMacRandomization: Hiermit wird die P2P-MAC-Zufallsmixung im Supplicant aktiviert oder deaktiviert.
  2. Lege in den Einstellungen config.xml config_wifi_connected_mac_randomization_supported auf true fest. Das kann auch in einem benutzerdefinierten Overlay des Geräts erfolgen.

    • Mit diesem Flag wird gesteuert, ob die MAC-Randomisierung im Clientmodus aktiviert ist.
  3. Lege in den Einstellungen config.xml config_wifi_p2p_mac_randomization_supported auf true fest. Das kann auch in einem benutzerdefinierten Overlay des Geräts erfolgen.

    • Mit diesem Flag wird festgelegt, ob die MAC-Zufallsmix-Funktion von Wi‑Fi Direct aktiviert ist.
  4. Testen Sie Ihre Implementierung mithilfe der Methoden, die unter Validierung beschrieben sind.

Die System-Benutzeroberfläche muss:

  • Sie haben die Möglichkeit, die Randomisierung für jede SSID zu aktivieren oder zu deaktivieren.
  • Die MAC-Randomisierung ist für alle neu hinzugefügten Netzwerke standardmäßig aktiviert.

Verwenden Sie die Referenzimplementierung der Einstellungen-Benutzeroberfläche, um neue Prompts zu implementieren.

Geräte mit Android 9 oder niedriger unterstützen die WLAN-MAC-Zufallsauswahl möglicherweise nicht. Wenn Sie solche Geräte auf Android 10 umstellen, können Sie die WLAN-MAC-Zufallsfunktion deaktivieren, indem Sie das Flag WIFI_HIDL_FEATURE_DISABLE_AP_MAC_RANDOMIZATION in der HAL-Make-Datei des WLAN-Anbieters auf „wahr“ setzen.

Zertifizierungsstufe

Führen Sie einen manuellen Test durch, um zu prüfen, ob die Funktion wie gewünscht funktioniert:

  1. Prüfen Sie, ob die MAC-Zufallsmix-Funktion auf dem Gerät aktiviert ist. Dazu muss im Geräte-Overlay config_wifi_connected_mac_randomization_supported auf true festgelegt sein.
  2. Verbinde dich mit dem WLAN.
  3. Tippen Sie auf das Netzwerk, um die Seite mit den Netzwerkdetails aufzurufen. Prüfen Sie, ob die MAC-Zufallsmix-Funktion 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. Deaktivieren Sie die MAC-Zufallsmixung. Stellen Sie eine Verbindung zum selben Netzwerk her und prüfen Sie, ob die MAC-Adresse der Werkseinstellungen 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-Zufallsmix-Funktion auf einem Gerät, das älter als Android 10 ist (MAC-Zufallsmix wird unterstützt) und auf Android 10 oder höher aktualisiert wird:

  1. Sie haben mindestens ein gespeichertes Netzwerk auf einem Gerät mit Android 9 oder niedriger.
  2. Flashen Sie das Android 10-System-Image.
  3. Prüfen Sie in der WLAN-Auswahl, ob die MAC-Zufallsgenerierung 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.