ID de dispositivo inmutables

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

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 .

Screen shows if device ID uses a randomized MAC address for privacy
Figura 1. La dirección MAC se muestra aleatoriamente en Privacidad en los detalles de la red

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
  • Aplicaciones dirigidas a Android 9 o anterior
    • Si tienen el permiso READ_PHONE_STATE , se devuelve una respuesta null 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 .