Функция рандомизации 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-адреса задает случайный адрес, устанавливая бит locally administered (локально администрируемый) в значение 1, а бит unicast (одноадресная передача) – в значение 0. Остальные 46 бит случайны.
На устройствах с Android 10 или более поздней версии фреймворк по умолчанию использует случайный MAC-адрес. Вы можете включить или отключить рандомизацию MAC-адресов для отдельных сетей с помощью параметра на экране Сведения о сети в разделе Настройки, как показано на рисунке 1. Если вы отключите случайное назначение MAC-адресов для сети, фреймворк будет использовать заводской MAC-адрес (уникальный глобальный адрес).
Рисунок 1. Параметр случайного назначения MAC-адреса.
Типы случайного назначения MAC-адресов
В Android используются два типа случайных MAC-адресов: постоянный и непостоянный. Если пользователь отключит случайный MAC-адрес, будет использоваться заводской MAC-адрес.
Android определяет, какой тип рандомизации MAC-адреса использовать, когда устройство подключается к сети Wi-Fi. По умолчанию в Android используется постоянная рандомизация. В Android 12 и более поздних версий в следующих ситуациях используется непостоянная рандомизация:
- Приложение для предложений сетей указывает, что для сети следует использовать непостоянную рандомизацию, с помощью API
WifiNetworkSuggestion.Builder#setMacRandomizationSetting. - Сеть открытая, страница входа не обнаружена, а наложение
config_wifiAllowEnhancedMacRandomizationOnOpenSsidsустановлено наtrue. По умолчанию оверлей отключен (задано значениеfalse).
Постоянное расположение в случайном порядке
По умолчанию в Android используется постоянная рандомизация. Android генерирует постоянный случайный MAC-адрес на основе параметров профиля сети, включая SSID, тип безопасности или полное доменное имя (для сетей Passpoint). Этот MAC-адрес не меняется, пока не будет выполнен сброс настроек до заводских. MAC-адрес не меняется, если удалить и снова добавить сеть Wi-Fi, поскольку он зависит от параметров профиля сети.
Постоянные MAC-адреса необходимы, когда сети полагаются на постоянство MAC-адресов для обеспечения полезной функциональности. Например, они помогают запомнить устройство и позволяют не вводить пароль при входе в систему, а также включить родительский контроль.
В Android 10 и 11 фреймворк использует постоянное расположение в случайном порядке для всех сетей, если рандомизация MAC включена.
Непостоянная рандомизация
При непостоянной рандомизации, которая используется для некоторых сетей в Android 12 и более поздних версий, модуль Wi-Fi повторно рандомизирует MAC-адрес в начале каждого подключения или фреймворк использует существующий рандомизированный MAC-адрес для подключения к сети. Модуль Wi-Fi повторно случайным образом генерирует MAC-адрес в следующих случаях:
- Срок аренды DHCP истек, и с момента последнего отключения устройства от этой сети прошло более четырех часов.
- Текущий случайный MAC-адрес для профиля сети был сгенерирован более 24 часов назад. Повторная рандомизация MAC-адреса происходит только при установлении нового подключения. Wi-Fi не будет активно отключаться, чтобы повторно рандомизировать MAC-адрес.
Если ни одна из этих ситуаций не подходит, фреймворк использует для подключения к сети ранее сгенерированный случайный MAC-адрес.
Параметр для разработчиков для непостоянной рандомизации
На устройствах с Android 11 или более поздних версий можно включить непостоянную рандомизацию MAC-адресов для всех сетей Wi-Fi (в которых она включена) на экране Для разработчиков. Чтобы включить непостоянное случайное назначение MAC-адреса для всех профилей, выберите Настройки > Для разработчиков > Непостоянное случайное назначение MAC-адреса для Wi-Fi.
Рисунок 2. Вариант случайного назначения MAC-адреса для Wi-Fi без сохранения.