Comportement de la randomisation MAC

La fonctionnalité de randomisation des adresses MAC permet aux appareils d'utiliser une adresse MAC aléatoire lorsqu'ils se connectent à un réseau Wi-Fi. Pour obtenir des instructions d'implémentation, consultez la section Implémenter la randomisation MAC. Cette page décrit le comportement de la randomisation MAC sous Android.

Les adresses MAC sont utilisées par les appareils lorsqu'ils se connectent à un réseau Wi-Fi ou à un point d'accès. Étant donné que ces adresses MAC sont transmises sans chiffrement, elles peuvent être capturées et utilisées pour suivre potentiellement la position d'un utilisateur. Auparavant, les appareils utilisent l'adresse MAC d'usine pour s'associer à un réseau Wi-Fi. L'adresse MAC d'usine est unique et statique dans le monde entier. Elle permet de suivre et d'identifier individuellement l'appareil.

La fonctionnalité de randomisation MAC renforce la confidentialité des utilisateurs en utilisant une adresse MAC aléatoire lors de la connexion à un réseau Wi-Fi.

Les adresses MAC sont longues de 48 bits et sont généralement représentées par 12 chiffres hexadécimaux (6 octets, car chaque octet est de 8 bits), par exemple 00:11:22:AA:BB:CC. La fonctionnalité de randomisation MAC rend l'adresse aléatoire en définissant le bit localement administré sur 1 et le bit unicast sur 0. Les 46 autres bits sont aléatoires.

Pour les appareils équipés d'Android 10 ou version ultérieure, le framework utilise une adresse MAC aléatoire par défaut. Les utilisateurs peuvent activer ou désactiver la randomisation MAC pour des réseaux individuels via une option de l'écran Détails du réseau dans Paramètres, comme illustré à la figure 1. Si un utilisateur désactive la randomisation MAC pour un réseau, le framework utilise l'adresse MAC d'usine (adresse unique au niveau mondial).

Option de randomisation MAC

Figure 1 : Option de randomisation MAC.

Types de randomisation MAC

Le framework Android utilise deux types de sélection aléatoire de l'adresse MAC : la sélection aléatoire persistante et la sélection aléatoire non persistante. Si l'utilisateur désactive la randomisation MAC, l'adresse MAC d'usine est utilisée.

Android détermine le type de randomisation MAC à utiliser lorsque l'appareil s'associe à un réseau Wi-Fi. Par défaut, Android utilise la randomisation persistante. À partir d'Android 12, Android utilise la randomisation non persistante dans les situations suivantes:

  • Une application de suggestion de réseau spécifie que la randomisation non persistante doit être utilisée pour le réseau via l'API WifiNetworkSuggestion.Builder#setMacRandomizationSetting.
  • Le réseau est un réseau ouvert qui n'a pas rencontré de portail captif, et la superposition config_wifiAllowEnhancedMacRandomizationOnOpenSsids est définie sur true. Cette superposition est désactivée par défaut (définie sur false).

Randomisation persistante

Android utilise par défaut le type de randomisation persistante lorsque la fonctionnalité de randomisation MAC est activée. Android génère une adresse MAC persistante aléatoire en fonction des paramètres du profil réseau, y compris le SSID, le type de sécurité ou le nom de domaine complet (pour les réseaux Passpoint). Cette adresse MAC reste la même jusqu'à la réinitialisation d'usine. L'adresse MAC n'est pas réorganisée si l'utilisateur oublie et ajoute à nouveau le réseau Wi-Fi, car l'adresse MAC dépend des paramètres du profil réseau.

Les adresses MAC persistantes sont nécessaires dans les cas où les réseaux dépendent de la persistance de l'adresse MAC pour fournir des fonctionnalités utiles à l'utilisateur (par exemple, pour mémoriser un appareil et permettre aux utilisateurs de contourner l'écran de connexion comme prévu ou pour activer le contrôle parental).

Pour Android 10 et 11, le framework utilise une randomisation persistante pour tous les réseaux lorsque la randomisation MAC est activée.

Randomisation non persistante

Avec le type de randomisation non persistante, qui est utilisé pour certains réseaux sous Android 12 ou version ultérieure, le module Wi-Fi réinitialise l'adresse MAC au début de chaque connexion ou le framework utilise l'adresse MAC aléatoire existante pour se connecter au réseau. Le module Wi-Fi réorganise l'adresse MAC de manière aléatoire dans les situations suivantes:

  • La durée du bail DHCP a expiré et plus de quatre heures se sont écoulées depuis la dernière déconnexion de l'appareil de ce réseau.
  • L'adresse MAC aléatoire actuelle du profil réseau a été générée il y a plus de 24 heures. La nouvelle randomisation de l'adresse MAC ne se produit qu'au début d'une nouvelle connexion. Le Wi-Fi ne se déconnecte pas activement dans le but de réinitialiser une adresse MAC.

Si aucune de ces situations ne s'applique, le framework utilise l'adresse MAC précédemment générée de manière aléatoire pour se connecter au réseau.

Option pour les développeurs pour la randomisation non persistante

Pour les appareils équipés d'Android 11 ou version ultérieure, les utilisateurs peuvent activer la randomisation MAC non persistante globalement pour tous les réseaux Wi-Fi (pour lesquels la randomisation MAC est activée) via l'écran des options pour les développeurs. L'option permettant d'activer la sélection aléatoire de l'adresse MAC non persistante pour tous les profils se trouve dans Settings > Developer Options > Wi-Fi non-persistent MAC randomization (Paramètres > Options pour les développeurs > Sélection aléatoire de l'adresse MAC non persistante en Wi-Fi).

Option de randomisation MAC non persistante pour le Wi-Fi

Figure 2. Option de randomisation MAC non persistante pour le Wi-Fi.