Od Androida 8.0 urządzenia z Androidem używają losowych adresów MAC podczas wyszukiwania nowych sieci, gdy nie są powiązane z żadną 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 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 Zachowanie losowania adresów MAC.
Implementacja
Aby zaimplementować losowanie adresu MAC na urządzeniu:
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
: pobiera fabryczny adres MACwlan0
za pomocą wywołaniaioctl
.ISupplicantP2pIface#setMacRandomization
: włącza lub wyłącza w solicycierze randomizację adresów MAC P2P.
Ustaw
config_wifi_connected_mac_randomization_supported
natrue
w Ustawieniachconfig.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.
Ustaw
config_wifi_p2p_mac_randomization_supported
natrue
w Ustawieniachconfig.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.
Przetestuj implementację za pomocą metod opisanych w sekcji Weryfikacja.
Interfejs systemu musi:
- mieć możliwość włączenia lub wyłączenia losowania w przypadku każdego SSID;
- Domyślnie włączać losowanie adresów 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ć 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:
- 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
. - Połącz się z siecią Wi-Fi.
- 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, który ma wygenerowany lokalnie bit o wartości 1, a bit grupowania ustawiony na 0.
- Wyłącz losowe generowanie adresu MAC. Połącz się z tą samą siecią i sprawdź, czy używany jest fabryczny adres MAC.
- Usunąć sieć, klikając Zapomnij na stronie Szczegóły sieci.
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:
- mieć co najmniej 1 zapisaną sieć na urządzeniu z Androidem 9 lub starszym;
- Flashowanie obrazu systemu Android 10.
- W selektorze sieci Wi-Fi sprawdź, czy randomizacja adresu MAC jest wyłączona we wszystkich zapisanych sieciach.
- Włącz randomizację adresu MAC. Połącz się z tą samą siecią i sprawdź, czy używany jest losowy adres MAC.