Внедрить рандомизацию 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 : включает/выключает рандомизацию P2P MAC в запрашивающем устройстве.
  2. Установите для параметра config_wifi_connected_mac_randomization_supported значение true в файле настроек config.xml (это можно сделать в пользовательском наложении устройства).

    • Этот флаг используется для управления включением рандомизации MAC-адресов в клиентском режиме.
  3. Установите для параметра config_wifi_p2p_mac_randomization_supported значение true в файле настроек 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 в файле HAL поставщика Wi-Fi.

Проверка

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

  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-адрес.