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ą powiązane z siecią. W Androidzie 9 możesz włączyć opcję dla deweloperów (domyślnie 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 trybie klienta, SoftAp i Wi-Fi Direct.

Losowanie adresów MAC uniemożliwia odbiorcom wykorzystanie adresów MAC do tworzenia historii aktywności urządzenia, co zwiększa prywatność użytkownika.

Dodatkowo adresy MAC są losowo generowane w ramach operacji Wi-Fi AwareWi-Fi RTT.

Więcej informacji znajdziesz w artykule Zachowanie losowania adresów MAC.

Implementacja

Aby zaimplementować randomizację adresu MAC na urządzeniu:

  1. Współpracuj z dostawcą układu Wi-Fi, aby zaimplementować te metody HAL:

    • IWifiStaIface#setMacAddress: konfiguruje adres MAC interfejsu. Domyślna implementacja wyłącza interfejs, zmieni adres MAC i ponownie go włączy.
    • IWifiStaIface#getFactoryMacAddress: zwraca fabryczny adres MAC urządzenia wlan0 za pomocą wywołania ioctl.
    • ISupplicantP2pIface#setMacRandomization: włącza lub wyłącza losowanie adresu MAC P2P w składanym wniosku.
  2. Ustaw config_wifi_connected_mac_randomization_supported na true w Ustawieniach config.xml (możesz to zrobić w ramach niestandardowego nakładania na urządzeniu).

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

    • Ta flaga służy do włączania i wyłączania losowania adresów MAC w ramach Wi-Fi Direct.
  4. Przetestuj implementację, korzystając z metod opisanych w sekcji Weryfikacja.

Interfejs systemu musi:

  • mieć możliwość włączenia lub wyłączenia losowania dla każdego SSID;
  • Domyślnie włączać losowanie adresów MAC we wszystkich nowo dodanych sieciach.

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

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

Weryfikacja

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

  1. Sprawdź, czy na urządzeniu włączone jest losowanie adresów MAC. Aby to zrobić, 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ę z informacjami o niej. Sprawdź, czy włączona jest losowość adresów MAC. Sprawdź, czy wyświetlany adres MAC jest losowym adresem MAC, w którym bit generowany lokalnie ma wartość 1, a bit multicast 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 jest używany ten sam losowy adres MAC.

Aby przetestować losowanie adresów MAC na urządzeniu z Androidem w wersji wcześniejszej niż 10 (obsługującej losowanie adresów MAC), które jest aktualizowane do Androida 10 lub nowszego:

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