Apple rechaza en la App Store las aplicaciones que usen UDID. ¿Qué alternativas podemos usar?

Los compañeros de Genbeta dieron la voz de alarma: Apple está rechazando las aplicaciones de la App Store que hacen uso del UDID. Como programadores, nos interesa saber el motivo de este cambio de política y qué podemos hacer para seguir identificando a los dispositivos ahora que no se puede usar UDID.

En agosto pasado, poco después de la salida de iOS 5, ya se informó de que el UDID pasaba a estar desfasado (deprecated) y que sería mejor que los desarrolladores de aplicaciones fueran buscándose otro método para identificar unívocamente a sus usuarios/dispositivos. Sin embargo, el paso de desfasado a obsoleto suele ser medianamente largo, y lo normal es contar con al menos un año para modificar tus llamadas a métodos, pero éste no ha sido el caso. Apenas medio año después, Apple se ha puesto tajante y ha empezado a rechazar en la App Store a las aplicaciones que aún lo usaban.

El porqué. ¿Es inseguro el uso del UDID?

Por definición, el UDID (Unique Device ID) es un Identificador Único de Dispositivo, una cadena alfanumérica de 40 caracteres que identifica de modo unívoco a nuestro dispositivo, lo cual era de tremenda utilidad para reconocer, por ejemplo, si un iPhone o iPad ya había hecho uso de nuestra aplicación, sin necesidad de que el dueño se crease una cuenta de usuario.

Como suele ocurrir muchas veces en tecnología, el problema no suele estar en la herramienta, sino en quien la usa. Por ejemplo, la propia Apple lo utiliza para encontrar nuestro iPhone en caso de robo o pérdida, lo cual es un buen uso del UDID. Pero, del mismo modo, el desarrollador de una aplicación, o un anunciante dentro de la misma, podrían rastrear todo el comportamiento del usuario con total impunidad.

Quizá penséis que no es importante porque ese dato es aleatorio y no nos identifica. El problema es que rastrearlo era muy fácil desde el mismo momento en que se empieza a utilizar, y si en algún momento el usuario nos otorga un dato personal en cualquiera de las aplicaciones que use, a partir de ahí se puede relacionar con todo el historial pasado del UDID, vulnerando así el derecho a la privacidad del que gozaba cuando aún no había dado datos personales.

Si una empresa nos está rastreando de forma anónima, el mínimo exigible es que, cuando pasemos a ser usuarios identificados, no tenga forma de relacionarnos con nuestro comportamiento anónimo anterior, y esto era algo que con el identificador de dispositivo no se cumplía. Es más, con este identificador, una red publicitaria podía tener datos del usuario en todas sus aplicaciones en las que fuera usado, aunque no tuvieran más relación entre sí que el hecho de llevar anuncios. Era como una cookie imborrable y que cualquiera puede leer y escribir.

Alternativas a UDID para seguir identificando a los usuarios

En primer lugar, cabe preguntarnos si necesitamos identificar al dispositivo o al usuario, y por qué. ¿Tendría sentido que un mismo usuario utilizara la aplicación desde varios dispositivos? ¿Es razonable que varios usuarios usen el mismo móvil? Si alguna de estas dos preguntas tiene respuesta afirmativa, es más que probable que debamos identificar al usuario antes que al móvil.

Pero, ¿y si de verdad necesitamos identificar al iPhone o iPad, independientemente del usuario? En la propia guía a los desarrolladores de Apple, se nos indica el reemplazo a utilizar para el UDID:

Do not use the uniqueIdentifier property. To create a unique identifier specific to your app, you can call the CFUUIDCreate function to create a UUID, and write it to the defaults database using the NSUserDefaults class.

El UUID, o Identificador Único Universal, no es como el UDID un valor invariable en el tiempo, sino que depende de ciertos parámetros del dispositivo, pero a la vez se calcula a partir de valores variables, como los nanosegundos transcurridos desde el 15 de octubre de 1582. Así, tras generarlo, podemos almacenarlo con la convicción de que identificará a nuestra instancia de la aplicación en un dispositivo concreto, sin que sea posible obtener de nuevo el mismo UUID desde otra aplicación del mismo móvil, o desde la misma aplicación en otro móvil.

El token de dispositivo de las notificaciones se parece al UDID, pero no es lo mismo

Muchos programadores piensan también que para las notificaciones push era necesario el UDID. Este error se debe a que el token de dispositivo utilizado para identificar al móvil a la hora de enviarle notificaciones asíncronas tiene el mismo formato que el UDID.

Al final, las principales quejas vienen por parte de las redes publicitarias, como MoPub o AdMob, que lamentan la pérdida de un «elemento esencial para gestionar el bucle de conversión». La respuesta por parte de ellas ha sido pasarse al uso de la dirección MAC de la wifi, que acarrea prácticamente los mismos problemas de seguridad que el UDID, o la creación, auspiciada por Appsfire, de OpenUDID, una solución de Software Libre para intentar mantener los UDIDs.

Vía | Genbeta En Applesfera | Apple comienza a rechazar aplicaciones que usen el identificador UDID , Posible problema de privacidad con iMessage y los iPhone robados

Portada de Genbeta