Dans Android 6 et versions ultérieures, les fournisseurs de services Wi-Fi et les analyseurs de paquets ne peuvent plus récupérer l'adresse MAC d'usine d'un appareil via la pile Wi-Fi à partir des requêtes réseau. À partir d'Android 10, des restrictions supplémentaires sont en place pour limiter l'accès aux identifiants d'appareil (ID) aux applications disposant du niveau d'autorisation privilégié . Cela protège les identifiants d'appareil tels que
- Numéros de téléphonie IMEI, MEID, ESN et IMSI.
- numéros de série de construction, SIM ou USB.
Qui peut accéder aux identifiants des appareils
Les identifiants d'appareil sont restreints sur tous les appareils Android 10, même si les applications ciblent Android 9 ou une version antérieure. Les identifiants des appareils sont accessibles par
- L'application SMS par défaut.
- Applications avec à la fois l'autorisation
READ_PRIVILEGED_PHONE_STATE
dans la classeManifest.permission
et la liste autorisée dans le fichierprivapp-permission.xml
. Ceux-ci doivent également être chargés dans le répertoirepriv-app
. - Applications avec privilèges d'opérateur tels que définis dans UICC Carrier Privileges .
- Propriétaire d'un appareil ou propriétaire d'un profil avec l'autorisation
READ_PHONE_STATE
accordée dans la classeManifest.permission
. (La mise sur liste verte n'est pas obligatoire.)
Accès aux forfaits privilégiés
Un package doit être privilégié pour accéder aux ID d’appareil. Il doit disposer de l'autorisation READ_PRIVILEGED_PHONE_STATE
dans la classe Manifest.permission
et figurer sur la liste autorisée dans le fichier privapp-permission.xml
. Pour plus d'informations sur le processus de liste d'autorisation, consultez Liste d'autorisation d'autorisations privilégiées .
Pour plus d'informations sur l'obtention d'un ID unique pour un package non privilégié , reportez-vous à Cas d'utilisation courants et à l'identifiant approprié à utiliser .
ID d'appareil restreints et adresses MAC aléatoires
Pour restreindre davantage les ID d'appareil, tous les appareils sous Android 10 transmettent par défaut des adresses MAC aléatoires pour la sonde et les requêtes associées, et doivent avoir une adresse MAC aléatoire différente pour chaque SSID. N'utilisez pas l'adresse MAC d'usine de l'appareil en mode client, dans les cas d'utilisation de point d'accès logiciel (AP) ou de Wi-Fi Direct. Il doit rester caché aux API accessibles au public qui ne sont pas des applications privilégiées. Les applications privilégiées qui nécessitent le renvoi de l’adresse MAC d’usine doivent disposer de l’autorisation LOCAL_MAC_ADDRESS
.
Les utilisateurs ont la possibilité de conserver l'adresse MAC randomisée par défaut attribuée à chaque SSID. L'option est visible sous Confidentialité dans Paramètres > Détails du réseau . Pour en savoir plus sur l'obtention d'une adresse MAC aléatoire, consultez Adresses MAC aléatoires .
Applications qui appellent des API d'ID d'appareil
Les applications qui appellent les API d’ID d’appareil doivent répondre aux exigences d’Android 10. Sinon, lorsqu'ils tentent d'accéder aux ID d'appareil, les éléments suivants sont renvoyés :
- Applications ciblant Android 10
- Une
SecurityException
est levée à partir des API d’ID de périphérique. - Applications ciblant Android 9 ou version antérieure
- S'ils disposent de l'autorisation
READ_PHONE_STATE
, une réponsenull
ou des données d'espace réservé sont renvoyées. - Si ce n’est pas le cas, les API d’ID d’appareil lèvent une
SecurityException
qui contient le nom de la méthode appelée et une indication que l’application appelante ne répond pas aux exigences pour accéder à l’ID demandé.
Pour en savoir plus sur les ID d'appareil immuables, consultez Identifiants d'appareil non réinitialisables et bonnes pratiques pour les identifiants uniques .
Essai
Il faut empêcher les applications d'accéder au numéro de série de l'appareil et, le cas échéant, au numéro IMEI/MEID, au numéro de série SIM et à l'identifiant de l'abonné. Les applications autorisées à accéder à ces identifiants doivent également répondre à l'un des critères répertoriés sous Qui peut accéder aux identifiants des appareils .