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:
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 sieciwlan0
za pomocą wywołaniaioctl
. -
ISupplicantP2pIface#setMacRandomization
: Włącza/wyłącza randomizację MAC P2P u suplikanta.
-
Ustaw
config_wifi_connected_mac_randomization_supported
natrue
w pliku Ustawieniaconfig.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.
Ustaw
config_wifi_p2p_mac_randomization_supported
natrue
w pliku Ustawieniaconfig.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.
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:
- 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
. - Połącz się z siecią Wi-Fi.
- 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.
- Wyłącz randomizację MAC. Połącz się z tą samą siecią i sprawdź, czy używany jest fabryczny adres MAC.
- Usuń sieć, dotykają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ę 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:
- Miej co najmniej jedną zapisaną sieć na urządzeniu z Androidem 9 lub starszym.
- Flashuj obraz systemu Android 10.
- W selektorze Wi-Fi sprawdź, czy losowość adresów MAC jest wyłączona dla wszystkich zapisanych sieci.
- Włącz randomizację MAC. Połącz się z tą samą siecią i sprawdź, czy używany jest losowy adres MAC.