Поведение при рандомизации MAC

Функция рандомизации MAC позволяет устройствам использовать случайный MAC-адрес при подключении к сети Wi-Fi. Инструкции по реализации см. в разделе «Реализация рандомизации MAC ». На этой странице описано поведение рандомизации MAC в Android.

MAC-адреса используются устройствами при подключении к сети Wi-Fi или точке доступа. Поскольку эти 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-адрес (глобальный уникальный адрес).

Опция рандомизации MAC

Рисунок 1. Вариант рандомизации MAC.

Типы рандомизации MAC

Платформа Android использует два типа рандомизации MAC: постоянную рандомизацию и непостоянную рандомизацию . Если пользователь отключает рандомизацию MAC-адресов, используется заводской MAC-адрес.

Android определяет, какой тип рандомизации MAC использовать, когда устройство подключается к сети Wi-Fi. По умолчанию Android использует постоянную рандомизацию. Начиная с Android 12, Android использует непостоянную рандомизацию в следующих ситуациях:

  • Приложение предложения сети указывает, что для сети будет использоваться непостоянная рандомизация через WifiNetworkSuggestion.Builder#setMacRandomizationSetting API.
  • Сеть представляет собой открытую сеть, в которой не обнаружено авторизованного портала, а для наложения config_wifiAllowEnhancedMacRandomizationOnOpenSsids установлено значение true . По умолчанию это наложение отключено (установлено значение false ).

Постоянная рандомизация

Android использует постоянный тип рандомизации по умолчанию, когда включена функция рандомизации MAC. Android генерирует постоянный случайный MAC-адрес на основе параметров профиля сети, включая SSID, тип безопасности или полное доменное имя (для сетей Passpoint). Этот MAC-адрес остается неизменным до сброса настроек к заводским. MAC-адрес не будет повторно рандомизирован, если пользователь забудет и повторно добавит сеть Wi-Fi, поскольку MAC-адрес зависит от параметров профиля сети.

Постоянные 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-адресов для всех профилей находится в «Настройки» > «Параметры разработчика» > «Непостоянная рандомизация MAC-адресов Wi-Fi» .

Опция непостоянного рандомизации MAC-адресов Wi-Fi

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