En Android la app de Radar Covid necesita que tengas Bluetooth y el GPS activados. En iOS solo necesitas Bluetooth. ¿Por qué? Esa es una de las cuestiones que más polémica han generado estos días.
Aunque Radar Covid ya está disponible, no estará completamente funcional hasta que las Comunidades Autónomas la activen en las próximas semanas. Quienes han comenzado a instalarla han detectado que en móviles Android es necesario tener activado el GPS, lo que genera suspicacias respecto a Google y su habitual recolección de datos. ¿Por qué es eso necesario en Android y no en iOS? ¿Está nuestra privacidad en peligro?
La implementación de Google de la tecnología Bluetooth Scanning tiene la culpa
Cuando Google lanzó Android 6.0 Mashmallow en septiembre de 2015 lo hizo con novedades importantes en varios apartados, incluido el de la tecnología Bluetooth Low Energy Scanning.
La propia especificación de la documentación de Android lo dejaba claro: "un dispositivo Android puede escanear dispositivos Bluetooth específicos más eficientemente cuando se usa el BLE" Estas API permitían a los desarrolladores crear filtros para encontrar dispositivos de forma más sencilla, pero esa opción tenía un requisito del que la propia Google advertía:
"El escaneo BLE necesita permisos de localización, ya que el escaneo BLE identifica objetos que podrían ser usados para la geolocalización. Al desactivar los servicios de localización se desactivará la exploración de Bluetooth"
Cuando los desarrolladores descubrieron esa forma de funcionar de BLE Scanning se quejaron en los foros internos de Google. La respuesta de los ingenieros de Google fue contundente: "No se arreglará (comportamiento intencionado)".
La descripción de la característica en las notas de la versión Android 6.0 que aludían a sus cambios volvía a insistir en la forma de funcionar de BLE Scanning:
"Para brindar una mejor protección de datos a los usuarios, a partir de esta versión, en Android se quita el acceso por programación al identificador de hardware local del dispositivo para apps que usen las Wi-Fi y Bluetooth API. Los métodos WifiInfo.getMacAddress() y BluetoothAdapter.getAddress() ahora muestran un valor constante de 02:00:00:00:00:00.
Para acceder a los identificadores de hardware de dispositivos externos cercanos por medio de escaneos de Bluetooth y Wi-Fi, ahora tu app debe tener los permisos ACCESS_FINE_LOCATION o ACCESS_COARSE_LOCATION".
Las críticas a esa forma de implementar esta característica fueron notables por parte de los desarrolladores que participaron en ese debate. El mensaje de uno de ellos expresaba el sentir general: "la mayoría de la gente negará el acceso a la ubicación en cuanto se lo pidan porque asumirán que eso significa que se hará seguimiento de su localización vía GPS".
A las críticas sobre la privacidad se sumaban las que afectaban a la autonomía de la batería, y hace unas semanas el debate se reactivaba cuando algunos desarrolladores notaron cómo eso podía afectar a las aplicaciones de rastreo de contactos. "La aplicación de rastreo de contactos de Suiza", explicaba uno de ellos, "no se puede usar en Android en el modo de ahorro de batería [...] Esto no es aceptable ni amigable".
"Una chapuza que no tiene sentido"
Los responsables de este desarrollo precisamente creaban una queja en el repositorio de GitHub del proyecto DP-3T descentralizado en el que muchas soluciones de rastreo de contacto tratan de basarse. En el gestor de tickets de Google también se comenta el problema e incluso se hace referencia específica a cómo Radar Covid necesita tener los servicios de localización activados, algo que para el desarrollador "no tiene sentido".
Algunos proponen cambios a Google Play Services, el componente a través del cual se distribuye la API para las apps de rastreo de contactos por COVID-19. Según algunos, una actualización a este componente podría ofrecer una solución parcial que no obstante "solo llegaría a un pequeño porcentaje de usuarios".
Un desarrollador explicaba en mayo de 2017 cómo aunque este comportamiento es "intencionado" según Google, no hay argumentos claros para que la implementación haga necesaria la activación de los servicios de localización. De hecho, indica, "es posible escanear sin habilitar los servicios de Localización". Para ello es necesario hacer una llamada especial, "BluetoothAdapter.getDefaultAdapter().startDiscovery()" que permite descubrir dispositivos Bluetooth y BLE, pero tiene un inconveniente: "los dispositivos BLE no tendrán el registro del escaneo que tendrían si fueran descubiertos a través de la función startScan()".
La implementación de Google desde luego no parece ideal, y de hecho uno de nuestros lectores, thebronx, comentaba todo esto en el tema sobre la disponibilidad de Radar Covid. Allí indicaba cómo tener activado el servicio de localización es necesario porque "si puedo saber el identificador (la MAC) del adaptador bluetooth y tengo acceso a otros móviles cercanos, con que uno de ellos tenga el GPS activo podré saber la posición de todos los demás. Así que Google decidió que para acceder a este identificador había que pedir permisos de localización".
Este usuario concluía con el sentir de muchos otros desarrolladores en esas quejas a este sistema: esto es, decía, "una chapuza de Google que no tiene sentido". Aquí pedía que la aplicación fuera Open Source, y aquí lo cierto es que Google y Apple han publicdo el código del sistema de notificación de aplicacines y ambas han dado datos](https://www.apple.com/covid19/contacttracing/ "") sobre su implementación.
Android necesita los servicios de localización activos para Radar Covid, pero no registra nada
La documentación actual de Android también expande la información sobre el funcionamiento de la tecnología Bluetooth en los dispositivos Android:
"Para usar las funciones de Bluetooth en tu aplicación, debes declarar dos permisos. El primero es BLUETOOTH. Necesitas este permiso para establecer cualquier comunicación de Bluetooth, como solicitar o aceptar una conexión y transferir datos.
El otro permiso que debes declarar es ACCESS_FINE_LOCATION. Tu app necesita este permiso porque es posible usar un escaneo de Bluetooth para reunir información sobre la ubicación del usuario. Esta información puede obtenerse desde el dispositivo del usuario o desde balizas Bluetooth en determinados lugares, como tiendas y áreas de tránsito".
¿Qué quiere decir esto? Como nos explicaba Julio César Fernández Muñoz, desarrollador de iOS y editor en Applesfera, "es un permiso requerido para usar la API, cosa que en Apple no sucede". Aquí Fernández Muñoz trataba de aclarar una confusión lógica: que tengamos el GPS activo no significa que Google esté registrando nuestra localización.
De hecho aclaraba que "los servicios de localización pueden usar 3 formas de localizar: por Bluetooth, por WiFi o por GPS. En este caso la API de localización usa solo la de Bluetooth para el escaneo y medir la distancia entre dispositivos para saber la incidencia o no de la exposición, pero no puede geolocalizarte físicamente y la API Exposure Notification no registra dato alguno de localización. El ID que se genera aleatorio, es lo único que se transmite, junto al dato de la intensidad de la señal Bluetooth. No hay dato de localización alguno en la transmisión ni el sistema lo almacena. Y esto está auditado porque el código de Exposure Notification es abierto".
En la propia documentación del sistema de notificación de exposición de Google los responsables de la empresa ya trataban de aclarar esas dudas indicando que este sistema y las aplicaciones que lo utilizan "no utiliza tus datos de ubicación. Las aplicaciones que utilizan este sistema no pueden solicitar permiso para usar la ubicación de tu dispositivo".
De hecho también se daba contestación a la pregunta que todos nos hacemos: si Radar Covid no utiliza mis datos de ubicación, "¿por qué tengo que activar los ajustes de ubicación del teléfono para usarlo?". La respuesta de Google trata de aclararlo:
"La tecnología de las notificaciones de exposición utiliza la búsqueda de dispositivos Bluetooth para saber cuáles están cerca. En todos los teléfonos con Android 6.0 y versiones superiores, para poder usar esa búsqueda Bluetooth, tienen que estar activados los ajustes de ubicación del dispositivo para todas las aplicaciones, no solo para las que usan el sistema de notificaciones de exposición.
Google y Apple han incorporado medidas de protección para que las aplicaciones gubernamentales de seguimiento de contactos con el sistema ENS no puedan deducir tu ubicación. Para que no se pueda hacer el seguimiento de tu dispositivo, se le asignan ID aleatorios que van rotando. Estos ID no contienen información sobre tu ubicación cuando se comunican con otros dispositivos del sistema".
En Google señalan además que es posible controlar el acceso a los permisos de aplicaciones desde los ajustes de Android. Julio César Fernández Muñoz añadía que "una cosa es que necesite los permisos de localización de la app para determinar la distancia con los dispositivos alrededor (por dependencias de las librerías) y otra es que use tu localización. En ningún momento la API pide permiso de localización por popup", es decir, esa notificación emergente que aparece en Android cuando una aplicación necesita cierto permiso específico para poder ejecutarse y funcionar.
Eso quiere decir que en realidad y como comenta Fernández Muñoz, "la localización es mucho más. Android lo tiene todo centralizado en la misma API de localización, pero no se usa en ningún momento la función de localización GPS porque si lo hiciera, el sistema debería pedir permiso y Google rechaza cualquier app que lo haga (igual que Apple)". Y aclara: "Si no sale el popup, no está usando el GPS para monitorizar tu posición por GPS".
Entonces, ¿si no sale popup, aun teniendo activado el GPS significa que no está monitorizando nuestra ubicación? Así es: es imposible hacerlo, explica Fernández Muñoz "salvo un error zero day en el sistema, un problema de seguridad no parcheado". En este sentido, explica, el funcionamiento y el bloqueo es idéntico en Apple e iOS.
Cómo funciona la tecnología Bluetooth Scanning en iOS
En esencia Bluetooth Scanning es la capacidad que tiene un dispositivo de comunicarse en segundo plano con otros dispositivos a su alrededor a través de la tecnología Bluetooth.
Es lo que usa tu smartphone para conectarse a los auriculares inalámbricos, o cuando entras en una tienda y hay sensores Bluetooth (beacons) que permiten triangular nuestra posición en el comercio y saber dónde estamos.
Cuando usamos nuestros auriculares, hemos negociado previamente la conexión entre nuestro smartphone y estos. Así que ya hay creado un canal de confianza realizado desde la configuración del sistema. O también podríamos haber establecido esa conexión en su propia app. El sistema usa el servicio de audio que pertenece al sistema y puede realizar peticiones a ese dispositivo de confianza, enviar datos y recibir información del mismo.
Sin embargo, si nuestra app está en segundo plano y no usa el servicio de audio del sistema, el sistema limita las funciones por seguridad del usuario.
Aquí ya no usamos la pasarela de audio del sistema, usamos la librería de Bluetooth tal cual. Y mientras con una app abierta podemos encontrar cualquier dispositivo y asociarnos al mismo, en segundo plano solo podemos buscar un ID de dispositivo concreto que sepamos con anterioridad que existe (un identificador único universal que cada dispositivo Bluetooth tiene). Por ejemplo, si tenemos un sensor de medición de azúcar en sangre, debemos conocer el ID del dispositivo para ser capaces de detectarlo cuando la app no esté abierta, negociar una comunicación con él y recibir datos.
Y aquí es donde está el problema que todos los países que han intentado hacer su propia app de trazado de contactos se han encontrado y no han podido resolver: iOS no permite realizar peticiones a un dispositivo Bluetooth ni enviar datos en segundo plano. Solo los recibe. El mismo problema por el que ningún banco ha podido implementar una solución de pago tipo Apple Pay, que requiere la emisión y recepción de datos en segundo plano (sin la app abierta).
En el caso del sensor de azúcar en sangre, podremos establecer comunicación con él y recibir los datos de sus lecturas: pero no podremos pedirle que haga una nueva lectura, active un modo o haga cualquier otra cosa si no es con su app abierta. Esa es la diferencia entre un escáner activo: que emite órdenes y recibe datos (comunicación bidireccional entre dos dispositivos) y el pasivo (solo recibe datos, pero no puede enviarlos).
Por ese motivo Apple he tenido que implementar en su sistema su propia API controlada (Exposure Notification) que sí permite que en segundo plano se negocie la comunicación con dispositivos Bluetooth a nuestro alrededor y que se envíen y reciban datos. Todo en segundo plano.
Android 11 eliminará ese requisito
Así pues, que tengamos activado GPS no significa que se esté registrando esa información. Los responsables de Google ya explicaban al hablar de este tema en junio cómo la funcionalidad BLE Scanning "fue diseñada mucho antes de la pandemia del COVID-19".
De hecho, en ese comunicado se volvía a incidir en el mensaje que tanto ellos como Apple habían dado desde el principio: la idea era en todo momento que la gente confiase en este sistema para usarlo masivamente y así ayudar al rastreo de contactos. Ambas empresas garantizan que "no utilizan esta información (de localización)" y explicaban esas funciones:
- La intención de este sistema de diseño era unificar diferentes configuraciones relacionadas con la ubicación - ya que la detección de Bluetooth puede utilizarse para aproximarse mejor a la ubicación de un dispositivo en las aplicaciones de consumo más habituales - en un solo lugar y así facilitar el acceso y el uso.
- El sistema de notificación de exposición (aunque pida que sea activada) no utiliza la ubicación del dispositivo como dato y no permitimos que las aplicaciones de autoridades de salud pública soliciten siquiera el acceso a la ubicación del dispositivo. (la API no manda esta información a la app).
- Los usuarios de Android pueden controlar el acceso a la ubicación de sus diferentes aplicaciones en una misma pantalla: Configuración > Ubicación > Permisos de la aplicación.
- El hecho de activar la ubicación principal no significa necesariamente que se compartan más datos con Google o con cualquier otra persona.
En Xataka nos hemos puesto en contacto de nuevo con los responsables de Google, que explican que habrá novedades en Android 11. Los ingenieros de Google han estado trabajando para actualizar la próxima versión de esta plataforma móvil y tener en cuenta el ámbito de las notificaciones de exposición (ENS, Exposure Notifications System). Así,
"En Android 11 los usuarios podrán usar las aplicaciones de notificación de exposición sin que sea necesario tener la configuración de ubicación "encendida". Esto solo será para las apps de notificaciones de exposición dado que el sistema fue diseñado de tal manera que ni el sistema ni las aplicaciones que lo usan pueden inferir la ubicación del dispositivo a través del escaneo de Bluetooth -- para las demás apps y servicio nada cambiará".
En un artículo reciente en el blog oficial de Google también se hacía mención a la situación actual y las mejoras que se plantean en el futuro.
Cuando el sistema fue diseñado en 2015 se implementó una solución pensando en la privacidad y haciendo que BLE Scanning no funcionara si la opción de localización no estaba activa. "En ese momento nadie podría haber previsto que el escaneo por Bluetooth podría algún día ser útil para controlar una pandemia global como la de COVID-19".
En Android 11, no obstante, será posible usar estas aplicaciones de exposición de notificaciones sin tener el GPS activado. Como explicábamos anteriormente, esta mejora es interesante pero para poder disfrutarla nuestro dispositivo tendrá que poder actualizarse a esta versión de Android, algo que en muchos casos puede tardar varios meses (o no suceder en el caso de smartphones algo más antiguos que ya no reciben nuevas versiones de Android).
Ver todos los comentarios en https://www.xataka.com
VER 76 Comentarios