Mise en œuvre de la randomisation MAC

À partir d'Android 8.0, les appareils Android utilisent des adresses MAC aléatoires lors de la recherche de nouveaux réseaux alors qu'ils ne sont pas actuellement associés à un réseau. Sous Android 9, vous pouvez activer une option de développement (elle est 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 auditeurs d'utiliser les adresses MAC pour créer un historique de l'activité des appareils, augmentant ainsi la confidentialité des utilisateurs.

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

Pour plus d'informations, consultez Comportement de randomisation MAC .

Mise en œuvre

Pour implémenter la randomisation MAC sur votre appareil :

  1. Travaillez avec un fournisseur de puces Wi-Fi pour mettre en œuvre les méthodes HAL suivantes :

    • IWifiStaIface#setMacAddress : Configure l'adresse MAC de l'interface. L'implémentation par défaut arrête l'interface, modifie l'adresse MAC et rétablit l'interface.
    • IWifiStaIface#getFactoryMacAddress : obtient le MAC d'usine de wlan0 à l'aide d'un appel ioctl .
    • ISupplicantP2pIface#setMacRandomization : Active/désactive la randomisation MAC P2P dans le demandeur.
  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 périphérique).

    • Cet indicateur est utilisé pour 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 (cela peut être fait dans une superposition personnalisée de périphérique).

    • Cet indicateur est utilisé pour contrôler si la randomisation MAC Wi-Fi directe est activée.
  4. Testez votre implémentation à l'aide des méthodes décrites dans Validation .

L'interface utilisateur du système doit :

  • Avoir une option pour activer ou désactiver la randomisation pour chaque SSID.
  • Activez la randomisation MAC par défaut pour tous les réseaux nouvellement 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 exécutant Android 9 ou une version antérieure peuvent ne pas prendre en charge la randomisation Wi-Fi MAC. Lors de la mise à niveau de ces appareils vers Android 10, la fonction de randomisation Wi-Fi MAC 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 Wi-Fi.

Validation

Pour vérifier que la fonctionnalité fonctionne comme prévu, exécutez à la fois un test d'intégration (ACTS) et un test manuel.

Pour exécuter un test d'intégration, utilisez le fichier ACTS, WifiMacRandomizationTest.py , situé dans tools/test/connectivity/acts_tests/tests/google/wifi , pour vérifier que l'appareil utilise l'adresse MAC aléatoire et stocke correctement l'adresse MAC aléatoire pour chaque réseau.

Pour exécuter 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 de l'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 une adresse MAC aléatoire, dont le bit généré localement est défini sur 1 et le bit de multidiffusion est défini sur 0.
  4. Désactivez la randomisation MAC. Connectez-vous au même réseau et vérifiez que le MAC d'usine est utilisé.
  5. Supprimez le réseau en appuyant sur Oublier 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 la randomisation MAC) mis à niveau vers Android 10 ou version ultérieure :

  1. Avoir au moins un réseau enregistré sur un appareil exécutant Android 9 ou une version antérieure.
  2. Flashez l’image du 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 le MAC aléatoire est utilisé.