IDs de dispositivos inmutables

En Android 6 y versiones posteriores, se restringió a los proveedores de servicios de Wi-Fi y a los analizadores de paquetes la recuperación de la dirección MAC de fábrica de un dispositivo a través de la pila de Wi-Fi desde las solicitudes de red. A partir de Android 10, se aplican restricciones adicionales que limitan el acceso a los identificadores (IDs) del dispositivo a las apps con el nivel de permisocon privilegios. Esto protege los IDs de dispositivos, como los siguientes:

  • números IMEI, MEID, ESN y IMSI de telefonía
  • números de serie de compilación, SIM o USB

Quiénes pueden acceder a los IDs de dispositivo

Los IDs de dispositivo están restringidos en todos los dispositivos Android 10, incluso si las apps se orientan a Android 9 o versiones anteriores. Se puede acceder a los IDs de dispositivo de las siguientes maneras:

Acceso a paquetes con privilegios

Un paquete debe tener privilegios para acceder a los IDs de dispositivos. Debe tener permiso READ_PRIVILEGED_PHONE_STATE en la clase Manifest.permission y estar en la lista de entidades permitidas del archivo privapp-permission.xml. Para obtener información sobre el proceso de inclusión en la lista de entidades permitidas, consulta Inclusión de permisos con privilegios en la lista de entidades permitidas.

Para obtener información sobre cómo obtener un ID único para un paquete sin privilegios, consulta Casos de uso comunes y el identificador adecuado para usar.

IDs de dispositivos restringidos y direcciones MAC aleatorias

Para restringir aún más los IDs de dispositivo, todos los dispositivos con Android 10 transmiten direcciones MAC aleatorias de forma predeterminada para las solicitudes de sondeo y asociadas, y deben tener una dirección MAC aleatoria diferente para cada SSID. No uses la dirección MAC de fábrica del dispositivo en el modo cliente, el punto de acceso (AP) virtual ni los casos de uso de Wi-Fi Direct. Debe permanecer oculto para las APIs de acceso público que no son apps con privilegios. Las apps con privilegios 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 aleatorizada predeterminada que se asigna a cada SSID. Puedes ver la opción en Privacidad en Configuración > Detalles de red. Para obtener información sobre cómo obtener una dirección MAC aleatoria, consulta Direcciones MAC aleatorias.

La pantalla muestra si el ID del dispositivo usa una dirección MAC aleatoria para la privacidad

Figura 1: La dirección MAC se muestra como aleatoria en Privacidad en Detalles de red.

Apps que invocan APIs de ID de dispositivo

Las apps que invoquen APIs de ID de dispositivo deben cumplir con los requisitos de Android 10. De lo contrario, cuando intente acceder a los IDs de dispositivos, se mostrará lo siguiente:

  • Apps orientadas a Android 10
  • Apps orientadas a Android 9 o versiones anteriores
    • Si tiene el permiso READ_PHONE_STATE, se muestra una respuesta null o los datos del marcador de posición.
    • De lo contrario, las APIs de ID de dispositivo arrojan SecurityException que contiene el nombre del método llamado y una indicación de que la app que realiza la llamada no cumple con los requisitos para acceder al ID solicitado.

Para obtener más información sobre los IDs de dispositivos inmutables, consulta Identificadores de dispositivos que no se pueden restablecer y las prácticas recomendadas para identificadores únicos.

Prueba

Se debe impedir que las apps accedan al número de serie del dispositivo y, cuando corresponda, al IMEI o MEID, al número de serie de la SIM y al ID del suscriptor. Las apps con permiso para acceder a estos IDs también deben cumplir con uno de los criterios que se indican en Quién puede acceder a los IDs de dispositivos.