A partir do Android 8.0, os dispositivos Android usam endereços MAC aleatórios ao procurar novas redes enquanto não estão associados a uma rede. No Android 9, é possível ativar uma opção do desenvolvedor (ela fica 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 escolha aleatória de MAC é ativada por padrão para o modo cliente, SoftAp e Wi-Fi Direct.
A randomização de MAC impede que os listeners usem endereços MAC para criar um histórico de atividade do dispositivo, aumentando assim a privacidade do usuário.
Além disso, os endereços MAC são escolhidos de forma aleatória como parte das operações do Wi-Fi Aware e do Wi-Fi RTT.
Para mais informações, consulte Comportamento de ordem aleatória de MAC.
Implementação
Para implementar a ordem aleatória de MAC no seu dispositivo:
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, muda o endereço MAC e a ativa novamente.IWifiStaIface#getFactoryMacAddress
: recebe o MAC de fábrica dewlan0
usando uma chamadaioctl
.ISupplicantP2pIface#setMacRandomization
: define a ordem aleatória de MAC P2P como ativada/desativada no suplicante.
Defina
config_wifi_connected_mac_randomization_supported
comotrue
nas configuraçõesconfig.xml
. Isso pode ser feito em uma sobreposição personalizada do dispositivo.- Essa flag é usada para controlar se a aleatorização de MAC no modo cliente está ativada.
Defina
config_wifi_p2p_mac_randomization_supported
comotrue
nas configuraçõesconfig.xml
. Isso pode ser feito em uma sobreposição personalizada do dispositivo.- Essa flag é usada para controlar se a randomização de MAC do Wi-Fi Direct está ativada.
Teste sua implementação usando os métodos descritos em Validação.
A interface do sistema precisa:
- Ter uma opção para ativar ou desativar a escolha aleatória para cada SSID.
- Ativar a escolha aleatória de MAC por padrão para todas as redes recém-adicionadas.
Use a implementação de referência da interface de configurações para implementar novos comandos.
Dispositivos com Android 9 ou versões anteriores podem não ter suporte para a aleatorização de MAC do Wi-Fi. Ao fazer upgrade desses dispositivos para o Android
10, o recurso de ordem aleatória de MAC do Wi-Fi pode ser desativado
definindo a flag WIFI_HIDL_FEATURE_DISABLE_AP_MAC_RANDOMIZATION
como "true" no
arquivo make da HAL do fornecedor de Wi-Fi.
Validação
Para validar se o recurso está funcionando conforme o esperado, faça um teste manual:
- Verifique se a randomização de MAC está ativada no dispositivo. Para isso, confira se
config_wifi_connected_mac_randomization_supported
está definido comotrue
na sobreposição do dispositivo. - Conecte seu dispositivo a uma rede Wi-Fi.
- Toque na rede para acessar a página de detalhes dela. Verifique se a randomização de 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 de multicast definido como 0.
- Desative a escolha aleatória de MAC. Conecte-se à mesma rede e verifique se o MAC de fábrica está sendo usado.
- Para excluir a rede, toque em Esquecer na página "Detalhes da rede".
Conecte-se à mesma rede e verifique se o mesmo endereço MAC aleatório está sendo usado.
Para testar a escolha aleatória de MAC em um dispositivo anterior ao Android 10 (capaz de oferecer suporte a essa escolha) fazendo upgrade para o Android 10 ou versões mais recentes:
- Ter pelo menos uma rede salva em um dispositivo com Android 9 ou versões anteriores.
- Atualize a imagem do sistema Android 10.
- No seletor de Wi-Fi, verifique se a ordem aleatória de MAC está desativada em todas as redes salvas.
- Ative a ordem aleatória de MAC. Conecte-se à mesma rede e verifique se o MAC aleatório está sendo usado.