A partir do Android 8.0, os dispositivos Android usam endereços MAC aleatórios ao pesquisar novas redes enquanto não estiverem 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 o modo cliente, SoftAp e Wi-Fi Direct.
A randomização de MAC impede que os ouvintes usem endereços MAC para criar um histórico da 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 de MAC .
Implementação
Para implementar a randomização MAC no seu dispositivo:
Trabalhe com um fornecedor de chip 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 traz a interface de volta. -
IWifiStaIface#getFactoryMacAddress
: Obtém o MAC de fábrica dewlan0
usando uma chamadaioctl
. -
ISupplicantP2pIface#setMacRandomization
: Ativa/desativa a randomização MAC P2P no suplicante.
-
Defina
config_wifi_connected_mac_randomization_supported
comotrue
em Settingsconfig.xml
(isso pode ser feito em uma sobreposição personalizada do dispositivo).- Este sinalizador é usado para controlar se a randomização MAC do modo cliente está habilitada.
Defina
config_wifi_p2p_mac_randomization_supported
comotrue
em Settingsconfig.xml
(isso pode ser feito em uma sobreposição personalizada de dispositivo).- Este sinalizador é usado para controlar se a randomização de MAC direto de Wi-Fi está habilitada.
Teste sua implementação usando os métodos descritos em Validação .
A IU do sistema deve:
- Tenha uma opção para habilitar ou desabilitar a randomização para cada SSID.
- Habilite a randomização MAC por padrão para todas as redes recém-adicionadas.
Use a implementação de referência da interface do usuário de configurações para implementar novos prompts.
Dispositivos com Android 9 ou inferior podem não ter suporte para randomização de MAC Wi-Fi. Ao atualizar esses dispositivos para o Android 10, o recurso de randomização de MAC de Wi-Fi pode ser desativado definindo o sinalizador WIFI_HIDL_FEATURE_DISABLE_AP_MAC_RANDOMIZATION
como true no arquivo de criação HAL do fornecedor de Wi-Fi.
Validação
Para validar se o recurso está funcionando conforme o 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:
- Verifique se a randomização MAC está habilitada no dispositivo verificando se
config_wifi_connected_mac_randomization_supported
está definido comotrue
na sobreposição do dispositivo. - Conecte-se a uma rede Wi-Fi.
- Toque na rede para ir para 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.
- Desative a randomização MAC. Conecte-se à mesma rede e verifique se o MAC de fábrica está sendo usado.
- Exclua a rede tocando em Esquecer na página de detalhes da rede.
Conecte-se à mesma rede e verifique se o mesmo endereço MAC aleatório está sendo usado.
Para testar a randomização de MAC em um dispositivo pré-Android 10 (capaz de suportar a randomização de MAC) atualizando para o Android 10 ou superior:
- Tenha pelo menos uma rede salva em um dispositivo com Android 9 ou inferior.
- Atualize a imagem do sistema Android 10.
- No seletor de Wi-Fi, verifique se a randomização MAC está desativada para todas as redes salvas.
- Ative a randomização MAC. Conecte-se à mesma rede e verifique se o MAC aleatório está sendo usado.