Implementando a randomização MAC

A partir do Android 8.0, os dispositivos Android usam endereços MAC aleatórios ao sondar novas redes enquanto não estão atualmente associados a uma rede. No Android 9, você pode ativar uma opção de desenvolvedor ( desativada por padrão) para fazer com que o dispositivo use um endereço MAC aleatório ao se conectar a uma rede Wi-Fi.

No Android 10, a randomização MAC é habilitada por padrão para modo cliente, SoftAp e Wi-Fi Direct.

A randomização MAC evita que os ouvintes usem endereços MAC para construir um histórico de atividade do dispositivo, aumentando assim a privacidade do usuário.

Além disso, os endereços MAC são randomizados como parte das operações Wi-Fi Aware e Wi-Fi RTT .

Para obter mais informações, consulte Comportamento de randomização MAC .

Implementação

Para implementar a randomização MAC no seu dispositivo:

  1. Trabalhe com um fornecedor de chips Wi-Fi para implementar os seguintes métodos HAL:

    • IWifiStaIface#setMacAddress : Configura o endereço MAC da interface. A implementação padrão desativa a interface, altera o endereço MAC e ativa a interface.
    • IWifiStaIface#getFactoryMacAddress : Obtém o MAC de fábrica do wlan0 usando uma chamada ioctl .
    • ISupplicantP2pIface#setMacRandomization : ativa/desativa a randomização MAC P2P no suplicante.
  2. Defina config_wifi_connected_mac_randomization_supported como true em Configurações config.xml (isso pode ser feito em uma sobreposição personalizada de dispositivo).

    • Este sinalizador é usado para controlar se a randomização MAC no modo cliente está habilitada.
  3. Defina config_wifi_p2p_mac_randomization_supported como true em Configurações config.xml (isso pode ser feito em uma sobreposição personalizada de dispositivo).

    • Este sinalizador é usado para controlar se a randomização MAC direta do Wi-Fi está habilitada.
  4. Teste sua implementação usando os métodos descritos em Validação .

A IU do sistema deve:

  • Tem a opção de ativar ou desativar a randomização para cada SSID.
  • Tenha a randomização MAC habilitada por padrão para todas as redes recém-adicionadas.

Use a implementação de referência da UI de configurações para implementar novos prompts.

Dispositivos com Android 9 ou inferior podem não ter suporte para randomização MAC de Wi-Fi. Ao atualizar esses dispositivos para o Android 10, o recurso de randomização MAC do Wi-Fi pode ser desativado definindo o sinalizador WIFI_HIDL_FEATURE_DISABLE_AP_MAC_RANDOMIZATION como verdadeiro no arquivo de criação HAL do fornecedor de Wi-Fi.

Validação

Para validar se o recurso está funcionando conforme esperado, execute um teste de integração (ACTS) e um teste manual.

Para executar um teste de integração, use o arquivo ACTS, WifiMacRandomizationTest.py , localizado em tools/test/connectivity/acts_tests/tests/google/wifi , para verificar se o dispositivo usa o endereço MAC aleatório e armazena corretamente o endereço MAC aleatório para cada rede.

Para executar um teste manual:

  1. Verifique se a randomização MAC está habilitada no dispositivo, verificando se config_wifi_connected_mac_randomization_supported está definido como true na sobreposição do dispositivo.
  2. Conecte-se a uma rede Wi-Fi.
  3. Toque na rede para acessar a página de detalhes da rede. Verifique se a randomização MAC está ativada. Verifique se o endereço MAC exibido é um MAC aleatório, que tem o bit gerado localmente definido como 1 e o bit multicast definido como 0.
  4. Desative a randomização MAC. Conecte-se à mesma rede e verifique se o MAC de fábrica está sendo usado.
  5. Exclua a rede tocando em Esquecer na página de detalhes da rede.
  6. Conecte-se à mesma rede e verifique se o mesmo endereço MAC aleatório está sendo usado.

Para testar a randomização MAC em um dispositivo anterior ao Android 10 (capaz de suportar a randomização MAC) atualizando para o Android 10 ou superior:

  1. Tenha pelo menos uma rede salva em um dispositivo com Android 9 ou inferior.
  2. Atualize a imagem do sistema Android 10.
  3. No seletor de Wi-Fi, verifique se a randomização MAC está desativada para todas as redes salvas.
  4. Ative a randomização MAC. Conecte-se à mesma rede e verifique se o MAC aleatório está sendo usado.