En Android 6 y versiones posteriores, los proveedores de servicios 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 Wi-Fi a partir de solicitudes de red. A partir de Android 10, existen restricciones adicionales que limitan el acceso a los identificadores de dispositivos (ID) a aplicaciones con el nivel de permiso privilegiado . Esto protege las identificaciones de dispositivos como
- Números IMEI, MEID, ESN e IMSI de telefonía.
- números de serie de compilación, SIM o USB.
¿Quién puede acceder a las ID de los dispositivos?
Las ID de dispositivos están restringidas en todos los dispositivos con Android 10, incluso si las aplicaciones están orientadas a Android 9 o versiones anteriores. Se puede acceder a los ID de los dispositivos 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 UICC .
- Un propietario de dispositivo o propietario de perfil con permiso
READ_PHONE_STATE
otorgado en la claseManifest.permission
. (No es necesario estar en la lista de permitidos).
Acceso a paquetes privilegiados
Un paquete debe tener privilegios para acceder a las ID de los dispositivos. Debe tener el permiso READ_PRIVILEGED_PHONE_STATE
en la clase Manifest.permission
y estar incluido en la lista de permitidos en el archivo privapp-permission.xml
. Para obtener información sobre el proceso de la lista de permitidos, consulte Lista de permitidos de permisos privilegiados .
Para obtener información sobre cómo obtener una identificación única para un paquete sin privilegios , consulte Casos de uso comunes y el identificador apropiado a usar .
ID de dispositivos restringidos y direcciones MAC aleatorias
Para restringir aún más las ID de los dispositivos, todos los dispositivos con 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 utilice 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 sean 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 asignada 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 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 del dispositivo. - Aplicaciones orientadas 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 del dispositivo generan 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 al ID solicitado.
Para obtener más información sobre ID de dispositivos inmutables, consulte Identificadores de dispositivos no reiniciables y mejores prácticas para identificadores únicos .
Pruebas
Se debe impedir que las aplicaciones accedan al número de serie del dispositivo y, cuando corresponda, al IMEI/MEID, al número de serie de la SIM y al ID del suscriptor. Las aplicaciones con permiso para acceder a estas ID también deben cumplir uno de los criterios enumerados en Quién puede acceder a las ID de los dispositivos .