Поведение рандомизации 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 использует непостоянную рандомизацию в следующих ситуациях:

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

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

Android использует постоянный тип рандомизации по умолчанию, когда включена функция рандомизации MAC. Android генерирует постоянный рандомизированный MAC-адрес на основе параметров сетевого профиля, включая SSID, тип безопасности или FQDN (для сетей 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.