Начиная с 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
: включает/выключает рандомизацию P2P MAC в запрашивающем устройстве.
-
Установите для параметра
config_wifi_connected_mac_randomization_supported
значениеtrue
в файле настроекconfig.xml
(это можно сделать в пользовательском наложении устройства).- Этот флаг используется для управления включением рандомизации MAC-адресов в клиентском режиме.
Установите для параметра
config_wifi_p2p_mac_randomization_supported
значениеtrue
в файле настроекconfig.xml
(это можно сделать в пользовательском наложении устройства).- Этот флаг используется для управления включением рандомизации MAC-адресов Wi-Fi Direct.
Проверьте свою реализацию, используя методы, описанные в разделе «Проверка» .
Пользовательский интерфейс системы должен:
- Возможность включения или отключения рандомизации для каждого SSID.
- Включите рандомизацию MAC-адресов по умолчанию для всех новых добавленных сетей.
Используйте эталонную реализацию пользовательского интерфейса настроек для внедрения новых подсказок.
Устройства под управлением Android 9 или ниже могут не поддерживать рандомизацию MAC-адресов Wi-Fi. При обновлении таких устройств до Android 10 функцию рандомизации MAC-адресов Wi-Fi можно отключить, установив флаг WIFI_HIDL_FEATURE_DISABLE_AP_MAC_RANDOMIZATION
в значение true в файле 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.