Funkcja losowego generowania adresu MAC umożliwia urządzeniom używanie losowego adresu MAC podczas łączenia z siecią Wi-Fi. Instrukcje implementacji znajdziesz w artykule Implementowanie losowania adresów MAC. Ta strona opisuje działanie losowania adresów MAC w Androidzie.
Adresy MAC są używane przez urządzenia podczas łączenia się z siecią Wi-Fi lub punktem dostępu. Te adresy MAC są przesyłane bez szyfrowania, więc można je przechwycić i wykorzystać do śledzenia lokalizacji użytkownika. W przeszłości urządzenia do przypisywania sieci Wi-Fi używały fabrycznego adresu MAC. Adres MAC fabryczny jest globalnie unikalny i statyczny, co umożliwia śledzenie i indywidualne identyfikowanie urządzenia.
Funkcja losowego generowania adresów MAC zwiększa prywatność użytkownika dzięki losowemu generowaniu adresów MAC podczas łączenia z siecią Wi-Fi.
Adresy MAC mają długość 48 bitów i są zwykle reprezentowane przez 12 cyfr szesnastkowych (6 oktetów, ponieważ każdy oktet ma 8 bitów), np. 00:11:22:AA:BB:CC
. Funkcja losowania adresów MAC losuje adres, ustawiając bit locally administered na wartość 1, a bit unicast na 0. Pozostałe 46 bitów jest losowych.
W przypadku urządzeń z Androidem 10 lub nowszym framework domyślnie używa losowego adresu MAC. Użytkownicy mogą włączać i wyłączać losowanie adresów MAC dla poszczególnych sieci za pomocą opcji na ekranie Szczegóły sieci w sekcji Ustawienia, jak pokazano na rysunku 1. Jeśli użytkownik wyłączy losowanie adresu MAC dla sieci, framework będzie używać adresu MAC fabrycznego (globalnie unikalnego adresu).
Rysunek 1. Opcja losowego generowania adresów MAC.
Typy losowego generowania adresu MAC
Platforma Android używa 2 typów losowania adresów MAC: trwałego i nietrwałego. Jeśli użytkownik wyłączy losowanie adresu MAC, używany jest fabryczny adres MAC.
Android określa, jaki typ losowania adresu MAC ma być używany, gdy urządzenie łączy się z siecią Wi-Fi. Domyślnie Android używa trwałej losowości. Od Androida 12 system używa losowania nietrwałego w tych sytuacjach:
- Aplikacja z sugestiami dotyczącymi sieci określa, że w przypadku sieci ma być używana losowość nietrwała za pomocą interfejsu
WifiNetworkSuggestion.Builder#setMacRandomizationSetting
API. - Sieć jest otwartą siecią, w której nie wystąpił portal przechwytujący, a nakładka
config_wifiAllowEnhancedMacRandomizationOnOpenSsids
jest ustawiona natrue
. Domyślnie ta nakładka jest wyłączona (ustawiona nafalse
).
Stałe losowanie
Gdy włączona jest funkcja losowania adresów MAC, Android domyślnie używa trwałego typu losowania. Android generuje trwały losowy adres MAC na podstawie parametrów profilu sieci, w tym SSID, typu zabezpieczeń lub pełnej i jednoznacznej nazwy domeny (w przypadku sieci Passpoint). Ten adres MAC pozostaje bez zmian do czasu przywrócenia ustawień fabrycznych. Adres MAC nie jest ponownie losowany, jeśli użytkownik zapomni o dodaniu sieci Wi-Fi i doda ją ponownie, ponieważ adres MAC zależy od parametrów profilu sieci.
Stałe adresy MAC są potrzebne w przypadkach, gdy sieci wymagają stałego adresu MAC, aby zapewnić użytkownikom przydatne funkcje, na przykład zapamiętanie urządzenia i pozwalanie użytkownikom na pominięcie ekranu logowania zgodnie z oczekiwaniami lub włączanie kontroli rodzicielskiej.
W przypadku Androida 10 i 11 framework używa trwałej losowości dla wszystkich sieci, gdy włączona jest losowość adresu MAC.
Nietrwała randomizacja
W przypadku typu losowania nietrwałego, który jest używany w przypadku niektórych sieci w Androidzie 12 lub nowszym, moduł Wi-Fi ponownie losuje adres MAC na początku każdego połączenia lub framework używa istniejącego losowego adresu MAC do połączenia z siecią. Moduł Wi-Fi ponownie losuje adres MAC w tych sytuacjach:
- Czas trwania dzierżawy DHCP wygasł i upłynęło ponad 4 godziny od ostatniego odłączenia urządzenia od tej sieci.
- Obecny losowy adres MAC dla profilu sieci został wygenerowany ponad 24 godziny temu. Ponowna randomizacja adresu MAC następuje tylko na początku nowego połączenia. Wi-Fi nie będzie aktywnie rozłączać się w celu ponownego losowego generowania adresu MAC.
Jeśli żadna z tych sytuacji Cię nie dotyczy, framework używa wcześniej wygenerowanego losowo adresu MAC do nawiązania połączenia z siecią.
Opcja programisty dotycząca losowania nietrwałego
Na urządzeniach z Androidem 11 lub nowszym użytkownicy mogą włączyć globalnie nietrwałe losowanie adresów MAC dla wszystkich sieci Wi-Fi (w których włączono losowanie adresów MAC) na ekranie Opcje dla deweloperów. Opcja włączenia nietrwałej randomizacji adresów MAC dla wszystkich profili znajduje się w sekcji Ustawienia > Opcje programisty > Nietrwała randomizacja adresów MAC sieci Wi-Fi.
Rysunek 2. Opcja nietrwałej randomizacji adresów MAC w sieci Wi-Fi.