Implémenter la randomisation MAC

À partir d'Android 8.0, les appareils Android utilisent des adresses MAC aléatoires lorsqu'ils recherchent de nouveaux réseaux sans y être associés. Dans Android 9, vous pouvez activer une option pour les développeurs (désactivée par défaut) afin que l'appareil utilise une adresse MAC aléatoire lorsqu'il se connecte à 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 de l'adresse MAC empêche les écouteurs d'utiliser les adresses MAC pour créer un historique de l'activité des appareils, ce qui renforce la confidentialité des utilisateurs.

De plus, les adresses MAC sont aléatoires dans le cadre des opérations Wi-Fi Aware et Wi-Fi RTT.

Pour en savoir plus, consultez Comportement de la randomisation de l'adresse MAC.

Implémentation

Pour implémenter la randomisation MAC sur votre appareil :

  1. Collaborez avec un fournisseur de puces 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 désactive l'interface, modifie l'adresse MAC et réactive l'interface.
    • IWifiStaIface#getFactoryMacAddress : obtient l'adresse MAC d'usine de wlan0 à l'aide d'un appel ioctl.
    • ISupplicantP2pIface#setMacRandomization : active ou désactive l'aléatorisation de l'adresse MAC P2P dans le supplicant.
  2. Définissez config_wifi_connected_mac_randomization_supported sur true dans les paramètres config.xml (vous pouvez le faire dans une superposition personnalisée de l'appareil).

    • Cet indicateur permet de déterminer si la randomisation de l'adresse MAC en mode client est activée.
  3. Définissez config_wifi_p2p_mac_randomization_supported sur true dans les paramètres config.xml (vous pouvez le faire dans une superposition personnalisée de l'appareil).

    • Cet indicateur permet de déterminer si la randomisation de l'adresse MAC Wi-Fi Direct est activée.
  4. Testez votre implémentation à l'aide des méthodes décrites dans Validation.

L'UI du système doit :

  • Proposez une option permettant d'activer ou de désactiver l'aléatorisation pour chaque SSID.
  • La randomisation de l'adresse MAC est activée par défaut pour tous les réseaux nouvellement ajoutés.

Utilisez l'implémentation de référence de l'UI des paramètres pour implémenter de nouvelles invites.

Il est possible que les appareils équipés d'Android 9 ou version antérieure ne soient pas compatibles avec la randomisation de l'adresse MAC Wi-Fi. Lorsque vous mettez à niveau ces appareils vers Android 10, la fonctionnalité de randomisation de l'adresse MAC Wi-Fi peut être désactivée en définissant le flag WIFI_HIDL_FEATURE_DISABLE_AP_MAC_RANDOMIZATION sur "true" dans le fichier make HAL du fournisseur Wi-Fi.

Validation

Pour vérifier que la fonctionnalité fonctionne comme prévu, exécutez un test manuel :

  1. Vérifiez que l'aléatorisation de l'adresse MAC est activée sur l'appareil en vous assurant que config_wifi_connected_mac_randomization_supported est défini sur true dans la superposition de l'appareil.
  2. Connectez-vous à un réseau Wi-Fi.
  3. Appuyez sur le réseau pour accéder à la page d'informations correspondante. Vérifiez que la randomisation de l'adresse MAC est activée. Vérifiez que l'adresse MAC affichée est une adresse MAC aléatoire, dont le bit généré localement est défini sur 1 et le bit multicast sur 0.
  4. 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.
  5. Supprimez le réseau en appuyant sur Supprimer sur la page "Informations sur le réseau".
  6. Connectez-vous au même réseau et vérifiez que la même adresse MAC aléatoire est utilisée.

Pour tester l'aléatorisation de l'adresse MAC sur un appareil antérieur à Android 10 (compatible avec l'aléatorisation de l'adresse MAC), passez à Android 10 ou version ultérieure :

  1. avoir au moins un réseau enregistré sur un appareil équipé d'Android 9 ou version antérieure ;
  2. Flashez l'image système Android 10.
  3. Dans le sélecteur Wi-Fi, vérifiez que la randomisation MAC est désactivée pour tous les réseaux enregistrés.
  4. Activez la randomisation MAC. Connectez-vous au même réseau et vérifiez que l'adresse MAC aléatoire est utilisée.