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 être associés à un réseau. Dans Android 9, vous pouvez activer une option pour les développeurs (elle est 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 sélection aléatoire des adresses MAC est activée par défaut pour le mode client, le point d'accès logiciel et le Wi-Fi Direct.

La sélection aléatoire des adresses MAC empêche les écouteurs d'utiliser les adresses MAC pour créer un historique de l'activité de l'appareil, ce qui améliore 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 sélection aléatoire des adresses MAC.

Implémentation

Pour implémenter la sélection aléatoire des adresses 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, puis la réactive.
    • IWifiStaIface#getFactoryMacAddress: obtient l'adresse MAC d'usine de wlan0 à l'aide d'un appel ioctl.
    • ISupplicantP2pIface#setMacRandomization: active ou désactive la sélection aléatoire des adresses MAC P2P dans le supplicant.
  2. Définissez config_wifi_connected_mac_randomization_supported sur true dans les paramètres config.xml (cela peut être fait dans une superposition personnalisée de l'appareil).

    • Cet indicateur permet de contrôler si la sélection aléatoire des adresses MAC en mode client est activée.
  3. Définissez config_wifi_p2p_mac_randomization_supported sur true dans les paramètres config.xml (cela peut être fait dans une superposition personnalisée de l'appareil).

    • Cet indicateur permet de contrôler si la sélection aléatoire des adresses MAC Wi-Fi Direct est activée.
  4. Testez votre implémentation à l'aide des méthodes décrites dans la section Validation.

L'UI du système doit :

  • proposer une option permettant d'activer ou de désactiver la sélection aléatoire pour chaque SSID ;
  • activer la sélection aléatoire des adresses MAC 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.

Les appareils exécutant Android 9 ou une version antérieure peuvent ne pas être compatibles avec la sélection aléatoire des adresses MAC Wi-Fi. Lors de la mise à niveau de ces appareils vers Android 10, la fonctionnalité de sélection aléatoire des adresses 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 :

  1. Vérifiez que la sélection aléatoire des adresses 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 du réseau. Vérifiez que la sélection aléatoire des adresses 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 de multidiffusion sur 0.
  4. Désactivez la sélection aléatoire des adresses 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 Oublier sur la page d'informations du 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 la sélection aléatoire des adresses MAC sur un appareil antérieur à Android 10 (capable de la prendre en charge) qui est mis à niveau vers Android 10 ou une version ultérieure :

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