ID de dispositivo inmutables

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

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 .

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

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
  • Aplicaciones orientadas 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 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 .