Начиная с Android 8.0, устройства Android используют случайные MAC-адреса при поиске новых сетей, даже если они не связаны с сетью. В Android 9 вы можете включить опцию разработчика (она отключена по умолчанию), чтобы устройство использовало случайный MAC-адрес при подключении к сети Wi-Fi.
В Android 10 рандомизация MAC-адресов включена по умолчанию для режима клиента, SoftAp и Wi-Fi Direct.
Рандомизация MAC не позволяет слушателям использовать MAC-адреса для создания истории активности устройства, тем самым повышая конфиденциальность пользователей.
Кроме того, MAC-адреса рандомизируются в рамках операций Wi-Fi Aware и Wi-Fi RTT .
Для получения дополнительной информации см. Поведение рандомизации MAC .
Выполнение
Чтобы реализовать рандомизацию MAC-адресов на вашем устройстве:
Совместно с поставщиком чипа Wi-Fi реализуйте следующие методы HAL:
-
IWifiStaIface#setMacAddress
: настраивает MAC-адрес интерфейса. Реализация по умолчанию отключает интерфейс, меняет MAC-адрес и возвращает интерфейс обратно. -
IWifiStaIface#getFactoryMacAddress
: получает заводской MAC-адресwlan0
с помощью вызоваioctl
. -
ISupplicantP2pIface#setMacRandomization
: Включает/выключает рандомизацию MAC-адресов P2P на соискателе.
-
Установите для
config_wifi_connected_mac_randomization_supported
значениеtrue
в файле Settingsconfig.xml
(это можно сделать в пользовательском наложении устройства).- Этот флаг используется для управления включением рандомизации MAC-адресов в клиентском режиме.
Установите для
config_wifi_p2p_mac_randomization_supported
значениеtrue
в файле Settingsconfig.xml
(это можно сделать в пользовательском наложении устройства).- Этот флаг используется для контроля того, включена ли прямая рандомизация MAC-адресов Wi-Fi.
Протестируйте свою реализацию, используя методы, описанные в разделе «Проверка» .
Системный пользовательский интерфейс должен:
- Имейте возможность включить или отключить рандомизацию для каждого SSID.
- Включите рандомизацию MAC-адресов по умолчанию для всех вновь добавленных сетей.
Используйте эталонную реализацию пользовательского интерфейса настроек для реализации новых подсказок.
Устройства под управлением Android 9 или более ранней версии могут не поддерживать рандомизацию MAC-адресов Wi-Fi. При обновлении таких устройств до Android 10 функцию рандомизации MAC-адресов Wi-Fi можно отключить, установив для флага WIFI_HIDL_FEATURE_DISABLE_AP_MAC_RANDOMIZATION
значение true в файле make HAL поставщика Wi-Fi.
Валидация
Чтобы убедиться, что функция работает должным образом, запустите ручной тест:
- Убедитесь, что рандомизация MAC включена на устройстве, проверив, что для
config_wifi_connected_mac_randomization_supported
установлено значениеtrue
в наложении устройства. - Подключитесь к сети Wi-Fi.
- Коснитесь сети, чтобы перейти на страницу сведений о сети. Убедитесь, что рандомизация MAC включена. Убедитесь, что отображаемый MAC-адрес представляет собой случайный MAC-адрес, у которого локально сгенерированный бит установлен в 1, а бит многоадресной рассылки установлен в 0.
- Отключите рандомизацию MAC. Подключитесь к той же сети и убедитесь, что используется заводской MAC-адрес.
- Удалите сеть, нажав «Забыть» на странице сведений о сети.
Подключитесь к той же сети и убедитесь, что используется тот же случайный MAC-адрес.
Чтобы протестировать рандомизацию MAC-адресов на устройстве до версии Android 10 (способном поддерживать рандомизацию MAC-адресов) при обновлении до Android 10 или более поздней версии:
- Имейте хотя бы одну сохраненную сеть на устройстве под управлением Android 9 или более ранней версии.
- Прошейте образ системы Android 10.
- В средстве выбора Wi-Fi убедитесь, что рандомизация MAC-адресов отключена для всех сохраненных сетей.
- Включите рандомизацию MAC. Подключитесь к той же сети и убедитесь, что используется случайный MAC-адрес.