Начиная с 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
в файле настроекconfig.xml
(это можно сделать в пользовательском наложении устройства).- Этот флаг используется для управления тем, включена ли рандомизация MAC-адресов в клиентском режиме.
Установите для
config_wifi_p2p_mac_randomization_supported
значениеtrue
в файле настроекconfig.xml
(это можно сделать в пользовательском оверлее устройства).- Этот флаг используется для управления тем, включена ли рандомизация прямого MAC-адреса Wi-Fi.
Протестируйте свою реализацию, используя методы, описанные в разделе Проверка .
Пользовательский интерфейс системы должен:
- Есть возможность включить или отключить рандомизацию для каждого SSID.
- Включить рандомизацию MAC-адресов по умолчанию для всех вновь добавленных сетей.
Используйте эталонную реализацию пользовательского интерфейса настроек для реализации новых подсказок.
Устройства под управлением Android 9 или более ранней версии могут не поддерживать рандомизацию MAC-адресов Wi-Fi. При обновлении таких устройств до Android 10 функцию рандомизации MAC-адресов Wi-Fi можно отключить, установив для флага WIFI_HIDL_FEATURE_DISABLE_AP_MAC_RANDOMIZATION
значение true в файле сборки HAL поставщика Wi-Fi.
Проверка
Чтобы убедиться, что функция работает должным образом, запустите интеграционный тест (ACTS) и ручной тест.
Чтобы запустить интеграционный тест, используйте файл ACTS WifiMacRandomizationTest.py
, расположенный в tools/test/connectivity/acts_tests/tests/google/wifi
, чтобы убедиться, что устройство использует рандомизированный MAC-адрес и правильно сохраняет рандомизированный MAC-адрес для каждого сеть.
Чтобы запустить ручной тест:
- Убедитесь, что рандомизация 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-адрес.