Внедрить рандомизацию MAC

Начиная с 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-адресов на вашем устройстве:

  1. Для реализации следующих методов HAL обратитесь к производителю микросхем Wi-Fi:

    • IWifiStaIface#setMacAddress : Настраивает MAC-адрес интерфейса. По умолчанию интерфейс отключается, MAC-адрес изменяется, а затем интерфейс снова включается.
    • IWifiStaIface#getFactoryMacAddress : Получает заводской MAC-адрес wlan0 с помощью вызова ioctl .
    • ISupplicantP2pIface#setMacRandomization : Включает или выключает рандомизацию MAC-адресов P2P в клиенте.
  2. В файле config.xml настроек установите параметр config_wifi_connected_mac_randomization_supported в true (это можно сделать в пользовательском оверлее устройства).

    • Этот флаг используется для управления включением или выключением рандомизации MAC-адресов в клиентском режиме.
  3. Установите параметр config_wifi_p2p_mac_randomization_supported в true в файле Settings config.xml (это можно сделать в пользовательском оверлее устройства).

    • Этот флаг используется для управления включением или выключением рандомизации MAC-адресов в Wi-Fi Direct.
  4. Проверьте свою реализацию, используя методы, описанные в разделе «Проверка» .

Пользовательский интерфейс системы должен:

  • Предусмотрена возможность включения или отключения рандомизации для каждого SSID.
  • Включите рандомизацию MAC-адресов по умолчанию для всех вновь добавляемых сетей.

Используйте эталонную реализацию пользовательского интерфейса настроек для реализации новых подсказок.

Устройства под управлением Android 9 или более ранних версий могут не поддерживать рандомизацию MAC-адресов Wi-Fi. При обновлении таких устройств до Android 10 функцию рандомизации MAC-адресов Wi-Fi можно отключить, установив флаг WIFI_HIDL_FEATURE_DISABLE_AP_MAC_RANDOMIZATION в значение true в файле makefile HAL поставщика Wi-Fi.

Валидация

Чтобы убедиться в корректной работе функции, выполните ручное тестирование:

  1. Убедитесь, что на устройстве включена рандомизация MAC-адресов, проверив, что config_wifi_connected_mac_randomization_supported установлен в true в настройках устройства.
  2. Подключитесь к сети Wi-Fi.
  3. Коснитесь сети, чтобы перейти на страницу сведений о сети. Убедитесь, что рандомизация MAC-адресов включена. Убедитесь, что отображаемый MAC-адрес является рандомизированным, у которого локально сгенерированный бит установлен в 1, а бит многоадресной рассылки — в 0.
  4. Отключите рандомизацию MAC-адресов. Подключитесь к той же сети и убедитесь, что используется заводской MAC-адрес.
  5. Удалите сеть, нажав кнопку «Забыть» на странице сведений о сети.
  6. Подключитесь к той же сети и убедитесь, что используется один и тот же случайный MAC-адрес.

Чтобы протестировать рандомизацию MAC-адресов на устройстве с версией Android ниже 10 (поддерживающем рандомизацию MAC-адресов) при обновлении до Android 10 или выше:

  1. На устройстве под управлением Android 9 или более ранней версии должна быть сохранена хотя бы одна сеть.
  2. Прошейте образ системы Android 10.
  3. В окне выбора сети Wi-Fi убедитесь, что рандомизация MAC-адресов отключена для всех сохраненных сетей.
  4. Включите рандомизацию MAC-адресов. Подключитесь к той же сети и убедитесь, что используется рандомизированный MAC-адрес.