MAC-Adressrandomisierung implementieren

Ab Android 8.0 verwenden Android-Geräte zufällige MAC-Adressen, wenn sie nach neuen Netzwerken suchen, ohne mit einem Netzwerk verbunden zu sein. 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-Zufallsmixung standardmäßig für den Clientmodus, SoftAP und Wi‑Fi Direct aktiviert.

Durch die MAC-Zufallsmix-Funktion können Absender keine MAC-Adressen verwenden, um einen Verlauf der Geräteaktivitäten zu erstellen. So 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 zufällig generiert.

Weitere Informationen finden Sie unter MAC-Zufallsmixverfahren.

Implementierung

So implementieren Sie die MAC-Zufallsgenerierung 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 festgelegt, ob die MAC-Zufallsmixung 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:

  • Es gibt eine Option, die Zufallsmix-Funktion für jede SSID zu aktivieren oder zu deaktivieren.
  • Die MAC-Zufallsmix-Funktion ist für alle neu hinzugefügten Netzwerke standardmäßig aktiviert.

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

Auf Geräten mit Android 9 oder niedriger wird die WLAN-MAC-Zufallsmixfunktion möglicherweise nicht unterstützt. 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 die gleiche 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-Funktion 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.