Włącz randomizację adresów MAC

Od Androida 8.0 urządzenia z Androidem używają losowych adresów MAC podczas wyszukiwania nowych sieci, gdy nie są połączone z żadną siecią. W Androidzie 9 możesz włączyć opcję programisty (domyślnie jest ona wyłączona), aby urządzenie używało losowego adresu MAC podczas łączenia się z siecią Wi-Fi.

W Androidzie 10 randomizacja adresu MAC jest domyślnie włączona w przypadku trybu klienta, SoftAP i Wi-Fi Direct.

Losowe adresy MAC uniemożliwiają osobom podsłuchującym tworzenie historii aktywności urządzenia na podstawie adresów MAC, co zwiększa prywatność użytkownika.

Adresy MAC są też losowane w ramach operacji Wi-Fi AwareWi-Fi RTT.

Więcej informacji znajdziesz w artykule MAC Randomization Behavior (w języku angielskim).

Implementacja

Aby wdrożyć randomizację adresu MAC na urządzeniu:

  1. Współpracuj z dostawcą układów Wi-Fi, aby wdrożyć te metody HAL:

    • IWifiStaIface#setMacAddress: konfiguruje adres MAC interfejsu. Domyślna implementacja wyłącza interfejs, zmienia adres MAC i ponownie włącza interfejs.
    • IWifiStaIface#getFactoryMacAddress: pobiera fabryczny adres MAC urządzenia wlan0 za pomocą wywołania ioctl.
    • ISupplicantP2pIface#setMacRandomization: włącza lub wyłącza losowość adresu MAC P2P w programie żądającym.
  2. Ustaw wartość config_wifi_connected_mac_randomization_supported na true w Ustawieniach config.xml (możesz to zrobić w niestandardowej nakładce na urządzenie).

    • Ta flaga służy do określania, czy randomizacja MAC w trybie klienta jest włączona.
  3. Ustaw wartość config_wifi_p2p_mac_randomization_supported na true w Ustawieniach config.xml (możesz to zrobić w niestandardowej nakładce na urządzenie).

    • Ten flag służy do określania, czy randomizacja adresów MAC Wi-Fi Direct jest włączona.
  4. Przetestuj implementację, korzystając z metod opisanych w sekcji Weryfikacja.

Interfejs systemu musi:

  • mieć możliwość włączania i wyłączania randomizacji dla każdego identyfikatora SSID;
  • domyślnie włączać losowanie adresów MAC w przypadku wszystkich nowo dodanych sieci;

Aby wdrożyć nowe prompty, użyj implementacji referencyjnej interfejsu ustawień.

Urządzenia z Androidem 9 lub starszym mogą nie obsługiwać randomizacji adresu MAC Wi-Fi. Podczas aktualizacji takich urządzeń do Androida 10 funkcję randomizacji adresu MAC Wi-Fi można wyłączyć, ustawiając w pliku make HAL dostawcy Wi-Fi flagę WIFI_HIDL_FEATURE_DISABLE_AP_MAC_RANDOMIZATION na wartość true.

Weryfikacja

Aby sprawdzić, czy funkcja działa zgodnie z oczekiwaniami, przeprowadź test ręczny:

  1. Sprawdź, czy na urządzeniu jest włączone losowe przypisywanie adresów MAC. W tym celu sprawdź, czy w nakładce urządzenia opcja config_wifi_connected_mac_randomization_supported ma wartość true.
  2. Połącz się z siecią Wi-Fi.
  3. Kliknij sieć, aby otworzyć stronę Szczegóły sieci. Sprawdź, czy randomizacja adresu MAC jest włączona. Sprawdź, czy wyświetlany adres MAC jest adresem losowym, w którym bit wygenerowany lokalnie ma wartość 1, a bit multiemisji ma wartość 0.
  4. Wyłącz losowe generowanie adresu MAC. Połącz się z tą samą siecią i sprawdź, czy używany jest fabryczny adres MAC.
  5. Usuń sieć, klikając Zapomnij na stronie Szczegóły sieci.
  6. Połącz się z tą samą siecią i sprawdź, czy używany jest ten sam losowy adres MAC.

Aby przetestować losowość adresu MAC na urządzeniu z Androidem w wersji starszej niż 10 (obsługującym losowość adresu MAC), które zostanie zaktualizowane do Androida 10 lub nowszego:

  1. mieć co najmniej 1 zapisaną sieć na urządzeniu z Androidem 9 lub starszym;
  2. Wgraj obraz systemu Android 10.
  3. W selektorze Wi-Fi sprawdź, czy randomizacja adresu MAC jest wyłączona w przypadku wszystkich zapisanych sieci.
  4. Włącz randomizację adresu MAC. Połącz się z tą samą siecią i sprawdź, czy używany jest randomizowany adres MAC.