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. 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.

Sous 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 randomisées dans le cadre des opérations Wi-Fi Aware et DAR Wi-Fi.

Pour en savoir plus, consultez la section Comportement de la randomisation MAC.

Implémentation

Pour implémenter la randomisation MAC sur votre appareil:

  1. 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 fait baisser l'interface, modifie l'adresse MAC et la ramène.
    • IWifiStaIface#getFactoryMacAddress: récupère l'adresse MAC d'usine de wlan0 via un appel ioctl.
    • ISupplicantP2pIface#setMacRandomization: active/désactive la randomisation MAC P2P pour le suppliant.
  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 sur un appareil).

    • Cet indicateur permet de contrôler si la randomisation 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 sur un appareil).

    • Cet indicateur permet de contrôler si la randomisation MAC en Wi-Fi 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:

  • Possibilité d'activer ou de désactiver la randomisation pour chaque SSID.
  • Activer par défaut la randomisation MAC pour tous les nouveaux réseaux ajoutés.

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

Les appareils équipés d'Android 9 ou d'une version antérieure ne sont peut-être pas compatibles avec la randomisation MAC Wi-Fi. Lors de la mise à niveau de ces appareils vers Android 10, la fonctionnalité de randomisation 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 création HAL du fournisseur de Wi-Fi.

Validation

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

  1. 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 sur true dans la superposition d'appareil.
  2. Connectez-vous à un réseau Wi-Fi.
  3. Appuyez sur le réseau pour accéder à la page "Détails du réseau". 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.
  4. Désactivez la randomisation MAC. Connectez-vous au même réseau et vérifiez que la MAC d'usine est utilisée.
  5. Supprimez le réseau en appuyant sur Supprimer sur la page "Détails 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 randomisation MAC sur un appareil antérieur à Android 10 (capable de prendre en charge cette randomisation) vers Android 10 ou version ultérieure:

  1. Vous devez disposer d'au moins un réseau enregistré sur un appareil équipé d'Android 9 ou version antérieure.
  2. Flashez l'image système d'Android 10.
  3. Dans l'outil de sélection 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 le MAC aléatoire est utilisé.