En Android 6 y versiones posteriores, los proveedores de servicios de Wi-Fi y los analizadores de paquetes no pueden recuperar la dirección MAC de fábrica de un dispositivo a través de la pila de Wi-Fi de las solicitudes de red. A partir de Android 10, existen restricciones adicionales que limitan el acceso a los identificadores de dispositivos (ID) a las aplicaciones con el nivel de permiso privilegiado . Esto protege las identificaciones de dispositivos como
- números de telefonía IMEI, MEID, ESN e IMSI.
- números de serie de compilación, SIM o USB.
Quién puede acceder a los ID de dispositivos
Las identificaciones de dispositivos están restringidas en todos los dispositivos con Android 10, incluso si las aplicaciones tienen como objetivo Android 9 o versiones anteriores. Se puede acceder a los ID de dispositivo mediante
- La aplicación de SMS predeterminada.
- Aplicaciones con permiso
READ_PRIVILEGED_PHONE_STATE
en la claseManifest.permission
y lista de permitidos en el archivoprivapp-permission.xml
. Estos también deben cargarse en el directoriopriv-app
. - Aplicaciones con privilegios de operador según se define en Privilegios de operador de la UICC .
- Un propietario de dispositivo o propietario de perfil con permiso
READ_PHONE_STATE
otorgado en la claseManifest.permission
. (No es necesario incluir en la lista de permitidos).
Acceso a paquetes privilegiados
Un paquete debe tener privilegios para acceder a los ID de dispositivos. Debe tener el permiso READ_PRIVILEGED_PHONE_STATE
en la clase Manifest.permission
y estar en la lista de permitidos del archivo privapp-permission.xml
. Para obtener información sobre el proceso de lista blanca, consulte Lista blanca de permisos privilegiados .
Para obtener información sobre cómo obtener una ID única para un paquete sin privilegios , consulte Casos de uso comunes y el identificador apropiado para usar .
ID de dispositivos restringidos y direcciones MAC aleatorias
Para restringir aún más las ID de los dispositivos, todos los dispositivos en Android 10 transmiten direcciones MAC aleatorias de forma predeterminada tanto para la sonda como para las solicitudes asociadas, y deben tener una dirección MAC aleatoria diferente para cada SSID. No use la dirección MAC de fábrica del dispositivo en casos de uso de modo cliente, punto de acceso suave (AP) o Wi-Fi Direct. Debe permanecer oculto para las API de acceso público que no son aplicaciones privilegiadas. Las aplicaciones privilegiadas que requieren que se devuelva la dirección MAC de fábrica deben tener el permiso LOCAL_MAC_ADDRESS
.
Los usuarios tienen la opción de mantener la dirección MAC aleatoria predeterminada que se asigna a cada SSID. La opción se puede ver en Privacidad en Configuración > Detalles de red . Para obtener información sobre cómo obtener una dirección MAC aleatoria, consulte Direcciones MAC aleatorias .
Aplicaciones que invocan API de ID de dispositivo
Las aplicaciones que invocan las API de ID de dispositivo deben cumplir con los requisitos de Android 10. De lo contrario, cuando intentan acceder a los ID de los dispositivos, se devuelve lo siguiente:
- Aplicaciones dirigidas a Android 10
- Se genera una
SecurityException
desde las API de ID de dispositivo. - Aplicaciones dirigidas a Android 9 o anterior
- Si tienen el permiso
READ_PHONE_STATE
, se devuelve una respuestanull
o datos de marcador de posición. - Si no lo hacen, las API de ID de dispositivo lanzan una
SecurityException
que contiene el nombre del método llamado y una indicación de que la aplicación que llama no cumple con los requisitos para acceder a la ID solicitada.
Para obtener más información sobre los ID de dispositivos inmutables, consulte Identificadores de dispositivos no reiniciables y prácticas recomendadas para identificadores únicos .
Pruebas
Se debe evitar que las aplicaciones accedan al número de serie del dispositivo y, en su caso, al IMEI/MEID, al número de serie de la SIM y al ID del suscriptor. Las aplicaciones con permiso para acceder a estos ID también deben cumplir con uno de los criterios enumerados en Quién puede acceder a los ID de dispositivos .