Działanie randomizacji MAC

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.

Urządzenia korzystają z adresów MAC, gdy łączą się z siecią Wi-Fi lub punktem dostępu. Ponieważ te adresy MAC są przesyłane bez szyfrowania, 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 adresu MAC zwiększa prywatność użytkownika dzięki losowemu generowaniu adresu MAC podczas łączenia z siecią Wi-Fi.

Adresy MAC mają 48 bitów i są zwykle reprezentowane przez 12 cyfr szesnastkowych (6 oktetów, ponieważ każdy oktet jest 8-bitowy), 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 platforma domyślnie używa losowego adresu MAC. Użytkownicy mogą włączyć lub wyłączyć randomizację MAC w poszczególnych sieciach za pomocą opcji na ekranie Szczegóły sieci w Ustawieniach, jak pokazano na rys. 1. Jeśli użytkownik wyłączy losowanie adresu MAC dla sieci, framework będzie używać adresu MAC fabrycznego (globalnie unikalnego adresu).

Opcja losowego generowania adresu MAC

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łegonietrwałego. Jeśli użytkownik wyłączy losowanie adresu MAC, używany jest fabryczny adres MAC.

Android określa, jaki typ losowego adresu MAC ma być używany, gdy urządzenie łączy się z siecią Wi-Fi. Domyślnie Android używa trwałej losowej wersji. 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 API WifiNetworkSuggestion.Builder#setMacRandomizationSetting.
  • Sieć jest otwartą siecią, w której nie wystąpił portal przechwytujący, a nakładka config_wifiAllowEnhancedMacRandomizationOnOpenSsids jest ustawiona na true. Ta nakładka jest domyślnie wyłączona (ustawiona na false).

Trwała randomizacja

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 i ponownie doda sieć Wi-Fi, 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ść adresów 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 losowo wybiera adres MAC w takich sytuacjach:

  • Czas trwania dzierżawy DHCP wygasł i upłynęło ponad 4 godziny od ostatniego odłączenia urządzenia z tej sieci.
  • Obecny losowy adres MAC dla profilu sieci został wygenerowany ponad 24 godziny temu. Ponowna losowa generacja 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 losowej zmiany adresu MAC dla wszystkich profili znajduje się w sekcji Ustawienia > Opcje programisty > Nietrwała losowa zmiana adresu MAC w sieci Wi-Fi.

Opcja nietrwałej randomizacji adresów MAC w sieci Wi-Fi

Rysunek 2. Opcja randomizacji MAC w sieci Wi-Fi.