Implementierung 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 Entwickleroption aktivieren (standardmäßig deaktiviert ), um zu veranlassen, dass das Gerät beim Herstellen einer Verbindung mit einem Wi-Fi-Netzwerk eine zufällige MAC-Adresse verwendet.

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 Zuhörer MAC-Adressen verwenden, um einen Verlauf der Geräteaktivität zu erstellen, und erhöht so die Privatsphäre der Benutzer.

Darüber hinaus werden MAC-Adressen im Rahmen von Wi-Fi Aware- und Wi-Fi RTT- Vorgängen zufällig ausgewählt.

Weitere Informationen finden Sie unter MAC-Randomisierungsverhalten .

Implementierung

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

  1. Arbeiten Sie mit einem WLAN-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 bringt die Schnittstelle wieder hoch.
    • IWifiStaIface#getFactoryMacAddress : Ruft den Factory-MAC von wlan0 mithilfe eines ioctl Aufrufs ab.
    • ISupplicantP2pIface#setMacRandomization : Aktiviert/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).

    • Dieses Flag wird verwendet, um zu steuern, ob die MAC-Randomisierung im Client-Modus 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 direkte Wi-Fi-MAC-Randomisierung aktiviert ist.
  4. Testen Sie Ihre Implementierung mit den unter Validierung beschriebenen Methoden.

Die System-Benutzeroberfläche muss:

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

Verwenden Sie die Referenzimplementierung der Benutzeroberfläche „Einstellungen“, um neue Eingabeaufforderungen zu implementieren.

Geräte mit Android 9 oder niedriger unterstützen möglicherweise keine WLAN-MAC-Randomisierung. Beim Upgrade solcher Geräte auf Android 10 kann die Wi-Fi-MAC-Randomisierungsfunktion deaktiviert werden, indem das Flag WIFI_HIDL_FEATURE_DISABLE_AP_MAC_RANDOMIZATION in der HAL-Make-Datei des Wi-Fi-Anbieters auf „true“ gesetzt wird.

Validierung

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

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

So führen Sie einen manuellen Test durch:

  1. Stellen Sie sicher, dass die MAC-Randomisierung auf dem Gerät aktiviert ist, indem Sie überprüfen, ob config_wifi_connected_mac_randomization_supported im Geräte-Overlay auf true gesetzt ist.
  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 es sich bei der angezeigten MAC-Adresse um eine zufällige MAC-Adresse handelt, bei der das lokal generierte Bit auf 1 und das Multicast-Bit auf 0 gesetzt ist.
  4. Schalten Sie die MAC-Randomisierung aus. Stellen Sie eine Verbindung zum gleichen Netzwerk her und stellen Sie sicher, dass der werkseitige MAC 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 stellen Sie sicher, dass dieselbe zufällige MAC-Adresse verwendet wird.

So testen Sie die MAC-Randomisierung auf einem Gerät vor Android 10 (das die MAC-Randomisierung unterstützen kann) und führen ein Upgrade auf Android 10 oder höher durch:

  1. Verfügen Sie über mindestens ein gespeichertes Netzwerk auf einem Gerät mit Android 9 oder niedriger.
  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 zum gleichen Netzwerk her und stellen Sie sicher, dass der zufällige MAC verwendet wird.