En la pasada WWDC, Apple lanzó un torpedo de profundidad que casi nadie oyó pero que va directo a la línea de flotación de muchas apps que buscan la identificación unívoca de cada dispositivo y nuestra localización sin pedir acceso a ese dato de forma expresa. Una "especie" de puerta trasera que sin pedir permiso podría permitir acceder a nuestra localización cruzando datos.
Esta ha sido siempre una pequeña gran lucha entre Apple y los desarrolladores, donde los primeros apuestan por el mayor nivel posible de privacidad de sus usuarios y los segundos por intentar saber que estás conectando con tal móvil o tal otro y dónde. En dicha batalla, Apple viene prohibiendo el acceso a cualquier dato que permita identificar a los dispositivos o localizarlos y apuesta por IDs aleatorios temporales mientras los desarrolladores buscan nuevas estrategias para "saltar" esas restricciones.
El último paso de Apple: negar los datos de identificación de la red WiFi a la que estamos conectados.
Cómo era y cómo será
Al comienzo de los tiempos en el desarrollo de Apple, un simple singleton de sistema permitía el acceso al dato mágico: el UDID o identificador único de dispositivo. Y ahí estuvo por muchos años, permitiendo saber en todo momento qué dispositivo era el que había instalado nuestra app. De esta forma, podíamos saber si ese dispositivo en concreto usaba algún servicio externo, negando el acceso a otros dispositivos del mismo usuario. También para saber en publicidad si un usuario ha visto o no un anuncio o cuántos ha visto en un solo dispositivo. O para asociar la instalación de una app con el origen en un banner de publicidad. A partir de ahí, cualquier maldad contra nuestra privacidad que se os pueda ocurrir. Si borrabas y volvías a instalar la app, el UDID no cambiaba (lógico) pues era del dispositivo.
Pero cuando Apple empezó a poner el foco en la privacidad, esto cambió y ya no puede hacerse esto. Ahora hay que llamar a la propiedad UIDevice.currentDevice().identifierForVendor.UUIDString
para obtener una cadena con un identificador único universal (un UUID) que será uno nuevo en cada nueva instalación de mi app, aunque sea en el mismo dispositivo.
Además, este nuevo UUID solo es para uso genérico, porque si lo que queremos es usarlo para publicidad tenemos que usar otro identificador diferente: el IDFA o Identifier for Advertisers (en Android es igual). Una especie de cookie que permite identificar la acción única de un usuario como instalar una app (para que una acción de instalar desde un juego se asocie con el mismo ID al instalar dicho juego y se compute como un CPI o click por instalación). Uno que obtenemos de ASIdentifierManager.shared().advertisingIdentifier
.
Históricamente los desarrolladores han buscado formas de identificar a los dispositivos con datos, como por ejemplo, la MAC Address de la tarjeta de red, dato que también pasó a estar prohibido. Básicamente lo que hace Apple es devolver un dato falso 02:00:00:00:00:00
. Justo lo que van a hacer ahora con la red WiFi a la que estemos conectados.
Prohibido acceder a los datos de WiFi sin permiso
Apple ha detectado que en ocasiones el BSSID de la WiFi (el equivalente a la MAC en la tarjeta de red inalámbrica) a la que estamos conectados servía también para identificar de forma unívoca a un dispositivo o para localizarlo sin su consentimiento. O con mapas de redes inalámbricas o cruzando el dato con alguna otra sesión en otro dispositivo en la misma WiFi (de un mismo usuario) donde sí podamos acceder a la localización.
Y como ya contamos (tenéis el artículo sobre estas líneas), Apple se ha puesto muy seria con el tema de la localización. Así que si en iOS 13 pedimos el BSSID o el SSID de una red WiFi accediendo al diccionario de sistema CNCopyCurrentNetworkInfo
, este nos dará un dato fake con un BSSID 00:00:00:00:00:00 y una red conectada que siempre se llamará "Wi-Fi" (en china se llamará "WLAN").
¿Ha negado Apple el uso de este dato para siempre? No. En caso que la app tenga permisos para localizarnos que nosotros le hayamos dado, entonces sí devolverá el dato real y no el fake. Además, tendremos que registrar una nueva capacidad en la app para acceder a la información de la Wi-Fi de conexión. Eso hará que Apple nos audite en su revisión de la app por qué y para qué usamos ese dato. También funcionará cuando estemos conectados a un Hot-Spot o punto de acceso personal o a una VPN, lo que implica otra serie de permisos adicionales.
Todo por nuestra protección
Si algo tenemos claro de la era actual de los móviles, es que muchos desarrolladores buscan realizar un seguimiento excesivo de nuestro uso, datos, etc... es normal encontrar juegos o apps (aprobadas por Apple) que nos pidan consentimiento para usar varios trackers o servicios de publicidad que nos identificarán todos y cada uno de ellos. Pero me planteo si realmente merece la pena bajarse una app o juego gratis, cuyo verdadero precio son nuestros datos de uso y todo lo que puedan sacar de nosotros con la excusa de "mejorar el servicio" o darnos publicidad mejor enfocada.
Desde luego, todo lo que haga Apple para evitar esto será bienvenido.
Ver 21 comentarios