Внедрение рандомизации 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. Работайте с поставщиком микросхем Wi-Fi для реализации следующих методов HAL:

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

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

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

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

  • Есть возможность включить или отключить рандомизацию для каждого 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-адрес для каждого сеть.

Чтобы запустить ручной тест:

  1. Убедитесь, что рандомизация MAC-адресов включена на устройстве, проверив, что config_wifi_connected_mac_randomization_supported установлено значение true в наложении устройства.
  2. Подключитесь к сети Wi-Fi.
  3. Коснитесь сети, чтобы перейти на страницу сведений о сети. Убедитесь, что рандомизация MAC-адресов включена. Убедитесь, что отображаемый 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-адрес.