Implementieren der MAC-Randomisierung

Ab Android 8.0 verwenden Android-Geräte zufällige MAC-Adressen, wenn sie nach neuen Netzwerken suchen, obwohl sie derzeit keinem Netzwerk zugeordnet sind. In Android 9 können Sie eine Entwickler - Option (es ist standardmäßig deaktiviert) ermöglichen , das Gerät zu verursachen eine randomisierte MAC - Adresse zu verwenden , wenn mit einem Wi-Fi - Netzwerk zu verbinden.

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

Die MAC-Randomisierung verhindert, dass Hörer MAC-Adressen verwenden, um einen Verlauf der Geräteaktivität zu erstellen, wodurch die Privatsphäre der Benutzer erhöht wird.

Zusätzlich werden MAC - Adressen im Rahmen von randomisierten Wi-Fi Aware und Wi-Fi - RTT - Operationen.

Weitere Informationen finden Sie Verhalten MAC Randomisierung .

Implementierung

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

  1. Arbeiten Sie mit einem Wi-Fi-Chip-Anbieter zusammen, um die folgenden HAL-Methoden zu implementieren:

    • IWifiStaIface#setMacAddress : Konfiguriert die MAC - Adresse der Schnittstelle. Die Standardimplementierung fährt die Schnittstelle herunter, ändert die MAC-Adresse und fährt die Schnittstelle wieder hoch.
    • IWifiStaIface#getFactoryMacAddress : Ruft die Fabrik MAC von wlan0 unter Verwendung eines ioctl Aufruf.
    • ISupplicantP2pIface#setMacRandomization : Legt P2P MAC Randomisierung Ein / Aus in der Supplicant.
  2. Set config_wifi_connected_mac_randomization_supported zu true im Setting config.xml (dies kann in einem Gerät benutzerdefinierten Overlay erfolgen).

    • Dieses Flag wird verwendet, um zu steuern, ob die MAC-Randomisierung im Clientmodus aktiviert ist.
  3. Set config_wifi_p2p_mac_randomization_supported zu true im Setting config.xml (dies kann in einem Gerät benutzerdefinierten Overlay erfolgen).

    • Dieses Flag wird verwendet, um zu steuern, ob die direkte WLAN-MAC-Randomisierung aktiviert ist.
  4. Testen Sie Ihre Implementierung unter Verwendung der Verfahren beschrieben in Validation .

Die Systembenutzeroberfläche muss:

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

Verwenden Sie die Referenz - Implementierung von Einstellungen UI , um neue Anweisungen zu implementieren.

Geräte mit Android 9 oder niedriger bieten möglicherweise keine Unterstützung für die WLAN-MAC-Randomisierung. Wenn solche Geräte auf 10 Android aktualisieren, können die Wi-Fi MAC Randomisierung Funktion , indem Sie die deaktiviert sein WIFI_HIDL_FEATURE_DISABLE_AP_MAC_RANDOMIZATION Flag auf true in der Wi-Fi - Anbieter HAL Make - Datei.

Validierung

Führen Sie sowohl einen Integrationstest (ACTS) als auch einen manuellen Test aus, um zu überprüfen, ob die Funktion wie vorgesehen funktioniert.

Um einen Integrationstest auszuführen, verwenden Sie die ACTS - Datei, WifiMacRandomizationTest.py , in tools/test/connectivity/acts/tests/google/wifi , zu überprüfen, ob das Gerät verwendet die randomisierte MAC - Adresse und korrekt speichert die randomisierte MAC - Adresse für jeden Netzwerk.

So führen Sie einen manuellen Test durch:

  1. Stellen Sie sicher , dass MAC - Randomisierung auf dem Gerät aktiviert wird , indem geprüft wird, dass config_wifi_connected_mac_randomization_supported eingestellt ist true in der Geräteüberlagerung.
  2. Stellen Sie eine Verbindung zu einem Wi-Fi-Netzwerk her.
  3. Tippen Sie auf das Netzwerk, um zur Seite mit den Netzwerkdetails zu gelangen. Stellen Sie sicher, dass die MAC-Randomisierung aktiviert ist. Stellen Sie sicher, dass die angezeigte MAC-Adresse eine randomisierte MAC 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 mit demselben Netzwerk her und überprüfen Sie, ob die werkseitige MAC verwendet wird.
  5. Löschen Sie das Netzwerk , indem Sie auf der Netzwerkdetails - Seite Forget tippen.
  6. Verbinden mit dem gleichen Netzwerk und verifizieren , dass die gleiche randomisierten MAC - Adresse verwendet wird.

So testen Sie die MAC-Randomisierung auf einem Gerät vor Android 10 (das die MAC-Randomisierung unterstützen kann), das auf Android 10 oder höher aktualisiert wird:

  1. Mindestens ein gespeichertes Netzwerk auf einem Gerät mit Android 9 oder niedriger haben.
  2. Flashen Sie das Android 10-System-Image.
  3. Stellen Sie in der WLAN-Auswahl sicher, dass die MAC-Randomisierung für alle gespeicherten Netzwerke deaktiviert ist.
  4. Aktivieren Sie die MAC-Randomisierung. Stellen Sie eine Verbindung mit demselben Netzwerk her und überprüfen Sie, ob die zufällige MAC verwendet wird.