Функция рандомизации MAC-адресов позволяет устройствам использовать случайный MAC-адрес при подключении к сети Wi-Fi. Инструкции по реализации см. в разделе «Реализация рандомизации MAC-адресов» . На этой странице описывается принцип работы рандомизации MAC-адресов в Android.
Когда ваше устройство подключается к сети Wi-Fi или точке доступа, оно использует MAC-адреса. Поскольку эти MAC-адреса передаются без шифрования, их можно перехватить и использовать для отслеживания местоположения пользователя. Традиционно устройства используют заводской MAC-адрес для подключения к сети Wi-Fi. Заводской MAC-адрес является глобально уникальным и статическим, что позволяет отслеживать и идентифицировать устройство.
Функция рандомизации MAC-адресов повышает конфиденциальность пользователя за счет использования случайного MAC-адреса при подключении к сети Wi-Fi.
MAC-адреса имеют длину 48 бит и обычно представлены 12 шестнадцатеричными цифрами (6 октетов, поскольку каждый октет — это 8 бит), например, 00:11:22:AA:BB:CC . Функция рандомизации MAC-адресов рандомизирует адрес, устанавливая локально управляемый бит в 1, а бит одноадресной рассылки — в 0. Остальные 46 бит рандомизированы.
Для устройств под управлением Android 10 и выше фреймворк по умолчанию использует рандомизированный MAC-адрес. Вы можете включить или отключить рандомизацию MAC-адресов для отдельных сетей с помощью параметра на экране «Сведения о сети» в настройках , как показано на рисунке 1. Если вы отключите рандомизацию MAC-адресов для сети, фреймворк будет использовать заводской MAC-адрес (глобальный уникальный адрес).

Рисунок 1. Вариант рандомизации MAC.
Типы рандомизации MAC
В Android-фреймворке используются два типа рандомизации MAC-адресов: постоянная рандомизация и непостоянная рандомизация . Если пользователь отключает рандомизацию MAC-адресов, используется заводской MAC-адрес.
Android определяет, какой тип рандомизации MAC-адресов использовать при подключении устройства к сети Wi-Fi. По умолчанию Android использует постоянную рандомизацию. Начиная с Android 12, Android использует непостоянную рандомизацию в следующих ситуациях:
- Приложение сетевых рекомендаций указывает, что для сети должна использоваться непостоянная рандомизация через API
WifiNetworkSuggestion.Builder#setMacRandomizationSetting. - Сеть является открытой и не имеет портала перехвата, а для параметра
config_wifiAllowEnhancedMacRandomizationOnOpenSsidsустановлено значениеtrue. По умолчанию этот параметр отключен (значениеfalse).
Постоянная рандомизация
При включении рандомизации MAC-адресов Android по умолчанию использует постоянный тип рандомизации. Android генерирует постоянный рандомизированный MAC-адрес на основе параметров профиля сети, включая SSID, тип безопасности или полное доменное имя (FQDN) (для сетей Passpoint). Этот MAC-адрес остаётся неизменным до сброса настроек к заводским. MAC-адрес не рандомизируется повторно, если вы забыли добавить сеть Wi-Fi и добавили её заново, поскольку он зависит от параметров профиля сети.
Постоянные MAC-адреса необходимы, когда сети полагаются на сохранение MAC-адресов для обеспечения полезной функциональности. Например, они могут помочь запомнить устройство и позволить обойти экран входа в систему, как и ожидалось, или включить родительский контроль.
Для Android 10 и 11 платформа использует постоянную рандомизацию для всех сетей, если включена рандомизация MAC.
Непостоянная рандомизация
При использовании неперсистентной рандомизации, которая используется в некоторых сетях в Android 12 и более поздних версиях, модуль Wi-Fi повторно рандомизирует MAC-адрес при каждом подключении, либо фреймворк использует существующий рандомизированный MAC-адрес для подключения к сети. Модуль Wi-Fi повторно рандомизирует MAC-адрес в следующих ситуациях:
- Срок аренды DHCP истек, и с момента последнего отключения устройства от этой сети прошло более 4 часов.
- Текущий рандомизированный MAC-адрес для сетевого профиля был сгенерирован более 24 часов назад. Повторная рандомизация MAC-адреса происходит только при запуске нового соединения. Wi-Fi не будет автоматически отключаться для повторной рандомизации MAC-адреса.
Если ни одна из этих ситуаций не применима, фреймворк использует ранее рандомизированный MAC-адрес для подключения к сети.
Возможность разработчика для непостоянной рандомизации
На устройствах под управлением Android 11 и более поздних версий можно включить непостоянную рандомизацию MAC-адресов глобально для всех сетей Wi-Fi (в которых она включена) через экран настроек разработчика . Параметр включения непостоянной рандомизации MAC-адресов для всех профилей находится в разделе «Настройки» > «Параметры разработчика» > «Непостоянная рандомизация MAC-адресов Wi-Fi» .

Рисунок 2. Вариант рандомизации непостоянных MAC-адресов Wi-Fi.