Wdrażanie randomizacji MAC

Począwszy od wersji Androida 8.0, urządzenia z Androidem korzystają z losowych adresów MAC podczas wyszukiwania nowych sieci, gdy nie są aktualnie powiązane z siecią. W systemie Android 9 możesz włączyć opcję programistyczną (domyślnie jest wyłączona ), aby urządzenie korzystało z losowego adresu MAC podczas łączenia się z siecią Wi-Fi.

W systemie Android 10 losowość adresów MAC jest domyślnie włączona dla trybu klienta, aplikacji SoftAp i Wi-Fi Direct.

Randomizacja adresów MAC uniemożliwia słuchaczom używanie adresów MAC do tworzenia historii aktywności urządzenia, zwiększając w ten sposób prywatność użytkowników.

Dodatkowo adresy MAC są losowane w ramach operacji Wi-Fi Aware i Wi-Fi RTT .

Aby uzyskać więcej informacji, zobacz Zachowanie losowe MAC .

Realizacja

Aby zaimplementować randomizację adresów MAC na swoim urządzeniu:

  1. Współpracuj z dostawcą chipów Wi-Fi, aby wdrożyć następujące metody HAL:

    • IWifiStaIface#setMacAddress : Konfiguruje adres MAC interfejsu. Domyślna implementacja wyłącza interfejs, zmienia adres MAC i przywraca interfejs.
    • IWifiStaIface#getFactoryMacAddress : Pobiera fabryczny adres MAC sieci wlan0 za pomocą wywołania ioctl .
    • ISupplicantP2pIface#setMacRandomization : Włącza/wyłącza randomizację MAC P2P u suplikanta.
  2. Ustaw config_wifi_connected_mac_randomization_supported na true w pliku Ustawienia config.xml (można to zrobić w niestandardowej nakładce urządzenia).

    • Ta flaga służy do kontrolowania, czy włączona jest randomizacja adresów MAC w trybie klienta.
  3. Ustaw config_wifi_p2p_mac_randomization_supported na true w pliku Ustawienia config.xml (można to zrobić w niestandardowej nakładce urządzenia).

    • Ta flaga służy do kontrolowania, czy włączona jest randomizacja adresów MAC w trybie Wi-Fi direct.
  4. Przetestuj swoją implementację, korzystając z metod opisanych w sekcji Walidacja .

Interfejs użytkownika systemu musi:

  • Mają opcję włączenia lub wyłączenia randomizacji dla każdego SSID.
  • Włącz domyślnie losowość adresów MAC dla wszystkich nowo dodanych sieci.

Użyj referencyjnej implementacji interfejsu użytkownika ustawień, aby zaimplementować nowe podpowiedzi.

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

Walidacja

Aby sprawdzić, czy funkcja działa zgodnie z oczekiwaniami, uruchom zarówno test integracji (ACTS), jak i test ręczny.

Aby uruchomić test integracji, użyj pliku ACTS WifiMacRandomizationTest.py znajdującego się w tools/test/connectivity/acts_tests/tests/google/wifi , aby sprawdzić, czy urządzenie używa losowego adresu MAC i poprawnie przechowuje losowy adres MAC dla każdego sieć.

Aby uruchomić test ręczny:

  1. Sprawdź, czy na urządzeniu jest włączona randomizacja adresów MAC, sprawdzając, czy w nakładce urządzenia parametr config_wifi_connected_mac_randomization_supported ma wartość true .
  2. Połącz się z siecią Wi-Fi.
  3. Stuknij sieć, aby przejść do strony szczegółów sieci. Sprawdź, czy randomizacja adresów MAC jest włączona. Sprawdź, czy wyświetlany adres MAC jest losowym adresem MAC, w którym lokalnie wygenerowany bit jest ustawiony na 1, a bit multiemisji jest ustawiony na 0.
  4. Wyłącz randomizację MAC. Połącz się z tą samą siecią i sprawdź, czy używany jest fabryczny adres MAC.
  5. Usuń sieć, dotykają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ć randomizację adresów MAC na urządzeniu z systemem wcześniejszym niż Android 10 (mogącym obsługiwać randomizację adresów MAC) po uaktualnieniu do systemu Android 10 lub nowszego:

  1. Miej co najmniej jedną zapisaną sieć na urządzeniu z Androidem 9 lub starszym.
  2. Flashuj obraz systemu Android 10.
  3. W selektorze Wi-Fi sprawdź, czy losowość adresów MAC jest wyłączona dla wszystkich zapisanych sieci.
  4. Włącz randomizację MAC. Połącz się z tą samą siecią i sprawdź, czy używany jest losowy adres MAC.