Wdróż randomizację MAC

Począwszy od Androida 8.0, urządzenia z Androidem nie są powiązane z żadną siecią, więc korzystają z randomizowanych adresów MAC podczas sondowania nowych sieci. W Androidzie 9 możesz włączyć opcję programisty (domyślnie wyłączona), by podczas łączenia się z siecią Wi-Fi urządzenie używało losowego adresu MAC.

W Androidzie 10 randomizacja MAC jest domyślnie włączona dla trybów klienta, SoftAp i Wi-Fi Direct.

Blokowanie MAC uniemożliwia detektorom wykorzystywanie adresów MAC do tworzenia historii aktywności urządzeń, co zwiększa prywatność użytkowników.

Dodatkowo w operacjach Wi-Fi Aware i Wi-Fi RTT adresy MAC są randomizowane.

Więcej informacji znajdziesz w artykule Działanie randomizacji MAC.

Implementacja

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

  1. Skontaktuj się z dostawcą układów scalonych Wi-Fi, aby wdrożyć te 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 wlan0 za pomocą wywołania ioctl.
    • ISupplicantP2pIface#setMacRandomization: włącza/wyłącza randomizację MAC P2P u dostawcy.
  2. W Ustawieniach config.xml ustaw wartość config_wifi_connected_mac_randomization_supported na true (można to zrobić w nakładce niestandardowej na urządzeniu).

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

    • Flaga ta służy do określania, czy randomizacja MAC sieci Wi-Fi ma być włączona.
  4. Przetestuj implementację za pomocą metod opisanych w sekcji Weryfikacja.

Interfejs systemu musi:

  • Upewnij się, że możesz włączyć lub wyłączyć randomizację każdego identyfikatora SSID.
  • mieć domyślnie włączoną randomizację MAC we wszystkich nowo dodanych sieciach.

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

Urządzenia z Androidem 9 lub starszym mogą nie obsługiwać randomizacji MAC sieci Wi-Fi. Uaktualniając takie urządzenia do Androida 10, można wyłączyć funkcję randomizacji adresu MAC sieci Wi-Fi przez ustawienie flagi WIFI_HIDL_FEATURE_DISABLE_AP_MAC_RANDOMIZATION w pliku HAL producenta Wi-Fi na wartość true.

Weryfikacja

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

  1. Sprawdź, czy na urządzeniu masz włączoną randomizację MAC. W tym celu sprawdź w nakładce urządzenia, czy parametr 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 jest włączona losowa konfiguracja MAC. Sprawdź, czy wyświetlany adres MAC jest losowym adresem MAC, który ma wygenerowany lokalnie bit o wartości 1, a bit grupowania ustawiony na 0.
  4. Wyłącz randomizację MAC. Połącz się z tą samą siecią i upewnij się, że używany jest fabryczny adres MAC.
  5. Usunąć 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ć randomizację MAC na urządzeniu z systemem starszym niż Android 10 (które obsługują randomizację MAC) po aktualizacji do Androida 10 lub nowszego:

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