À partir d'Android 8.0, les appareils Android utilisent des adresses MAC aléatoires lorsqu'ils recherchent de nouveaux réseaux sans être associés à un réseau. Sous Android 9, vous pouvez activer une option pour les développeurs (désactivée par défaut) pour que l'appareil utilise une adresse MAC aléatoire lors de la connexion à un réseau Wi-Fi.
Dans Android 10, la randomisation MAC est activée par défaut pour le mode client, SoftAP et Wi-Fi Direct.
La randomisation MAC empêche les écouteurs d'utiliser les adresses MAC pour créer un historique de l'activité de l'appareil, ce qui renforce la confidentialité des utilisateurs.
De plus, les adresses MAC sont sélectionnées de manière aléatoire dans le cadre des opérations Wi-Fi Aware et Wi-Fi RTT.
Pour en savoir plus, consultez la section Comportement de la randomisation MAC.
Implémentation
Pour implémenter la randomisation MAC sur votre appareil:
Collaborez avec un fournisseur de puce Wi-Fi pour implémenter les méthodes HAL suivantes:
IWifiStaIface#setMacAddress
: configure l'adresse MAC de l'interface. L'implémentation par défaut met l'interface hors service, modifie l'adresse MAC, puis rétablit l'interface.IWifiStaIface#getFactoryMacAddress
: récupère l'adresse MAC d'usine dewlan0
via un appelioctl
.ISupplicantP2pIface#setMacRandomization
: active ou désactive la randomisation MAC P2P dans le demandeur.
Définissez
config_wifi_connected_mac_randomization_supported
surtrue
dans les paramètresconfig.xml
(cela peut être effectué dans une superposition personnalisée de l'appareil).- Cet indicateur permet de contrôler si la randomisation MAC en mode client est activée.
Définissez
config_wifi_p2p_mac_randomization_supported
surtrue
dans les paramètresconfig.xml
(cela peut être effectué dans une superposition personnalisée de l'appareil).- Cet indicateur permet de contrôler si la randomisation MAC Wi-Fi direct est activée.
Testez votre implémentation à l'aide des méthodes décrites dans la section Validation.
L'UI du système doit:
- Possibilité d'activer ou de désactiver la randomisation pour chaque SSID.
- La randomisation MAC est activée par défaut pour tous les nouveaux réseaux ajoutés.
Utilisez l'implémentation de référence de l'UI des paramètres pour implémenter de nouvelles invites.
Les appareils équipés d'Android 9 ou version antérieure ne sont pas forcément compatibles avec la randomisation des adresses MAC Wi-Fi. Lors de la mise à niveau de ces appareils vers Android 10, la fonctionnalité de randomisation de l'adresse MAC Wi-Fi peut être désactivée en définissant l'indicateur WIFI_HIDL_FEATURE_DISABLE_AP_MAC_RANDOMIZATION
sur "true" dans le fichier de compilation HAL du fournisseur Wi-Fi.
Validation
Pour vérifier que la fonctionnalité fonctionne comme prévu, exécutez un test manuel:
- Vérifiez que la randomisation MAC est activée sur l'appareil en vérifiant que
config_wifi_connected_mac_randomization_supported
est défini surtrue
dans la superposition d'appareil. - Connectez-vous à un réseau Wi-Fi.
- Appuyez sur le réseau pour accéder à sa page d'informations. Vérifiez que la randomisation MAC est activée. Vérifiez que l'adresse MAC affichée est un MAC aléatoire, dont le bit généré localement est défini sur 1 et le bit de multidiffusion défini sur 0.
- Désactivez la sélection aléatoire de l'adresse MAC. Connectez-vous au même réseau et vérifiez que l'adresse MAC d'usine est utilisée.
- Supprimez le réseau en appuyant sur Supprimer sur la page "Détails du réseau".
Connectez-vous au même réseau et vérifiez que la même adresse MAC aléatoire est utilisée.
Pour tester la randomisation MAC sur un appareil antérieur à Android 10 (compatible avec la randomisation MAC) qui passe à Android 10 ou version ultérieure:
- disposer d'au moins un réseau enregistré sur un appareil équipé d'Android 9 ou version antérieure ;
- Flashez l'image système Android 10.
- Dans le sélecteur Wi-Fi, vérifiez que la randomisation MAC est désactivée pour tous les réseaux enregistrés.
- Activez la randomisation MAC. Connectez-vous au même réseau et vérifiez que l'adresse MAC aléatoire est utilisée.