Saltar al contenido principal

Technology, security analysis

Staying alive: el rastreo en segundo plano y la app NHS COVID-19

Aidan FitzpatrickPublicado el 6 de mayo de 2020Actualizado el 31 de julio de 2024
En esta página
Cover image for: Staying alive: el rastreo en segundo plano y la app NHS COVID-19
  • La app NHS COVID-19 parece funcionar correctamente cuando se ejecuta en segundo plano en dispositivos iOS, a diferencia de la app australiana COVIDSafe
  • La app evita los informes falsos proporcionando a los usuarios con síntomas un código de referencia: ese código se asocia después con los resultados oficiales de las pruebas antes de actuar
  • NHS COVID-19 indica al personal sanitario que desactive el Bluetooth de su dispositivo mientras lleva EPI, explicando «your interactions at work should not be captured when you are wearing PPE»
  • Actualización 09:25 BST, 7 de mayo: hemos añadido más abajo una sección «¿Cómo logra la app mantenerse eficaz en segundo plano?», que explica cómo consigue la app mantenerse activa al comunicarse con dispositivos Android y repasa algunos de los retos y técnicas de la comunicación entre dispositivos iOS
  • Actualización 11:45 BST, 7 de mayo: hemos añadido más abajo una sección «¿La app recopila datos personales y revela mi identidad?».

Los retos del rastreo de contactos cuando una app no se muestra en pantalla

Los desarrolladores de apps tienen pocas opciones para mantener las apps «vivas» cuando no están en primer plano en el dispositivo del usuario. Apple gestiona con cuidado estas opciones para garantizar que las apps no invadan la privacidad del usuario ni agoten la batería innecesariamente. En concreto, distingue entre si una app tiene el foco (es decir, se muestra en pantalla) o se ejecuta en segundo plano. Las actualizaciones recientes de iOS han limitado la capacidad de los desarrolladores para acceder a datos mientras la app está en segundo plano: por ejemplo, antes de poder limitar tan eficazmente la recopilación en segundo plano, Uber podía rastrear los movimientos de un usuario incluso cuando no estaba en un taxi.

Para ejecutarse de forma significativa en segundo plano, el editor de una app necesita obtener permiso de Apple cuando la envía a la App Store, marcándola con un conjunto de «Background Modes». Estos modos de segundo plano están limitados a la transmisión de vídeo de un dispositivo a otro, la recopilación de actualizaciones de ubicación, el funcionamiento como teléfono o el uso de Bluetooth. Por ejemplo, estos modos son los que permiten que tu teléfono ejecute AirPlay en segundo plano, reproduzca música sin que Spotify esté siempre a la vista, llame a alguien con WhatsApp y luego pase a segundo plano, o registre tu carrera con Strava.

La app NHS COVID-19

La app NHS COVID-19

Sin embargo, estos modos son limitados, y es posible que los usuarios conozcan las notificaciones del iPhone que preguntan si se debe permitir a las apps acceder a su ubicación en segundo plano. Incluso cuando un usuario concede estos permisos, el teléfono puede seguir pidiendo confirmación de que es lo correcto.

Las apps de rastreo de contactos se crean con Bluetooth de bajo consumo (BLE), que, dicho de forma sencilla, permite que los dispositivos se reconozcan entre sí. En teoría, los modos «Uses Bluetooth LE accessories» y «Acts as a Bluetooth LE accessory» de Apple son ideales para esto y permiten usar BLE en segundo plano. Sin embargo, aunque una app en segundo plano que use estos modos podrá seguir comunicándose con los dispositivos BLE con los que ya se comunica (como una cerradura inteligente Bluetooth), no podrá controlar la frecuencia de emisión para sondear dispositivos que no haya visto antes. En segundo plano, esto dificulta buscar señales de dispositivos nuevos, comunicarse con ellos de forma significativa y, en particular, identificar dispositivos que no son de Apple. Esto perjudica bastante a las apps de rastreo de contactos, que deben ejecutarse de forma continua en segundo plano.

Por citar la documentación de Apple sobre el servicio:

All service UUIDs ... can be discovered only by an iOS device that is explicitly scanning for them. ...and for apps that are advertising are in the background, the frequency at which your peripheral device sends advertising packets may decrease

Soluciones alternativas y otros enfoques para el rastreo

Por supuesto, este no es un reto nuevo para los desarrolladores: llevan tiempo buscando métodos para que las apps sigan activas en segundo plano y recopilen datos de rastreo pese a las restricciones. Han surgido frameworks como el de código abierto AltBeacons para abordarlo, pero no son viables para el rastreo de contactos, donde un dispositivo debe buscar continuamente dispositivos nuevos. Como descubrió ABC en Australia al analizar su app nacional COVIDSafe, no ha existido una solución práctica. Existen algunos exploits que podrían ser útiles de forma temporal, como registrar la app como reproductor de audio y hacer que reproduzca música, pero Apple desaprueba estos y otros exploits de esta naturaleza, pueden incomodar a los usuarios y rara vez superan la aprobación de la App Store.

Mientras tanto, Apple ha estado preparando el lanzamiento de iOS 13.5, que actualmente está disponible en beta. Apple puede hacer cambios en su propio sistema que favorezcan el rastreo de este modo. 13.5 incorporará varias funciones más evidentes, como la compatibilidad con FaceID para usuarios que lleven mascarilla, o al menos una vía más rápida para introducir el código, y otras menos evidentes, como el framework ExposureNotification, que permite justo lo que necesitan las apps de rastreo de contactos. Por supuesto, esto no dará como resultado un sistema perfecto: no todos los usuarios podrán aprovecharlo, ya que dispositivos como el iPhone 6 (2015) no pueden ejecutar iOS 13. Aunque el sistema de Apple usa un identificador estándar global, cada país que lo implementa utiliza una base de datos nacional aislada. Por tanto, si un europeo infectado de un país se expone a un ciudadano de otro país europeo, no lo descubrirán mediante el rastreo de contactos.

El ExposureNotification de Apple para el COVID-19 ofrece una solución a lo que se necesita aquí, pero con salvedades. Lo más importante es que Apple ha indicado que solo su app podrá usarlo, para evitar que otros hagan un uso indebido de la tecnología.

Entonces, ¿cómo lo hace el NHS con su app COVID-19?

¿Cómo puede, entonces, la app británica NHS COVID-19 rastrear eficazmente dispositivos nuevos en segundo plano, sin «quedarse dormida» (técnicamente, «suspenderse») y volverse así ineficaz? Según nuestras pruebas con la versión 1.0.1b341 de la app «NHS COVID-19», vemos que sí se comunica eficazmente en segundo plano. Parece que esto se logra mediante una serie de ingeniosas soluciones alternativas que usan keepalives y notificaciones. Forzar el cierre de la app detendrá el rastreo en segundo plano; sin embargo, si en cambio se apaga el teléfono y se vuelve a encender, seguirá comunicándose correctamente en segundo plano. Esta solución alternativa puede incumplir o no las normas de Apple, pero por ahora no se ha revelado y Apple ha aprobado las compilaciones de la app que ha visto hasta ahora.

Seguimos investigando esto y publicaremos más detalles a medida que avancen las cosas.

¿La app NHS COVID-19 almacena datos sensibles?

No. La app parece estar muy bien hecha, con prácticas de seguridad sensatas y sin almacenar datos innecesarios. Gira en torno a un linkingId que se genera para cada instalación de la app. Este ID persiste entre instalaciones de la app, por lo que desinstalarla y volver a instalarla no restablecerá el identificador.

Al examinar los datos de la app con iPhone Backup Extractor en la ruta uk.nhs.nhsx.sonar, vemos que hay una serie de archivos vinculados a Google Firebase y un conjunto de pequeños Plists (archivos de configuración) para el resto de los datos de la app.

Los archivos de la app NHS COVID-19 en una copia de seguridad

Los archivos de la app NHS COVID-19 en una copia de seguridad

¿Pueden los usuarios declarar falsamente que tienen COVID-19?

Si un usuario notifica síntomas, la app le proporciona un número al que llamar para concertar una prueba, junto con un código de referencia. La idea es que el resultado de la prueba se asocie después con el código de referencia del usuario. Si un usuario notificara síntomas falsos, no habría confirmación sin que el NHS actualizara el resultado de la prueba para que coincida con el código del usuario.

¿La app solicita permisos de ubicación?

No, no lo hace.

¿Engañó el NHS al público sobre el uso de las API de Google?

No. La app NHS COVID-19 está profundamente integrada con la API de Firebase de Google, estándar del sector, para el almacenamiento y la gestión de datos. (El NHS no usa el framework de rastreo de contactos de Google ni de Apple; entre otras cosas, no estará disponible hasta el lanzamiento de iOS 13.5).

¿Con qué servicios se comunica la app?

Al igual que con la app para Android, toda la comunicación relevante pasa por la API COVID19 del NHS, alojada en *.covid19.nhs.uk. La app realiza algunas otras solicitudes como consecuencia de usar el servicio AppCenter de Microsoft, pero ninguna es relevante ni sensible.

Si el personal del NHS usa la app, ¿no provocará falsos positivos?

La app pide al personal sanitario que desactive el Bluetooth de sus dispositivos mientras lleva EPI, con el mensaje «your interactions at work should not be captured when you are wearing personal protective equipment».

El aviso sobre Bluetooth y EPI de la app NHS COVID-19

El aviso sobre Bluetooth y EPI de la app NHS COVID-19


Nos ha gustado analizar en mayor profundidad la app COVID-19 del NHS. Aunque ha habido mucha especulación sobre su funcionamiento, lo que hemos visto es una app bien construida y segura. El rastreo en segundo plano parece funcionar, aunque el que siga siendo eficaz depende en gran medida de Apple. En consecuencia, la eficacia de la respuesta británica al COVID-19 también depende ahora de Apple.

Elegir entre ir por libre o usar el framework de Apple habrá sido difícil. Seguir el ejemplo de Apple probablemente habría sido una opción menos controvertida. Sin embargo, iOS 13.5 aún no está disponible, mientras que la app británica se lanza en beta mañana, y nada impide que el Reino Unido pase a seguir a Apple en actualizaciones posteriores. Visto así, ¿por qué no lanzar primero un ensayo en la isla de Wight?


¿Cómo logra la app mantenerse eficaz en segundo plano?

Hemos añadido esta respuesta a las 09:25 BST del 7 de mayo para contestar a las preguntas que hemos recibido sobre los detalles de cómo la app se mantiene activa. NHSX ha usado algunas técnicas inteligentes para lograr mejores resultados.

The Sun informó anoche de que la app usa API de Bluetooth privadas, pero no hemos visto ninguna señal de ello y desde entonces han modificado su noticia para retirar esa afirmación. La app NHS COVID-19 usa API de Bluetooth públicas de iOS y no parece aprovechar ningún privilegio especial. En cambio, hay algunas técnicas ingeniosas.

La primera técnica responde al comportamiento del Bluetooth de iOS con las apps suspendidas. Señalamos que Apple cambia la forma en que una app puede buscar dispositivos nuevos cuando está suspendida. Las apps suspendidas no pueden reconocer correctamente dispositivos que no han visto antes. Como escribimos más arriba, resulta «más difícil buscar señales de dispositivos nuevos, comunicarse con ellos de forma significativa y, en particular, identificar dispositivos que no son de Apple».

NHSX abordó el reto de los dispositivos que no son de Apple desde el otro lado: al darse cuenta de que no podían influir en lo que hacía iOS en este aspecto, crearon en su app para Android una lógica ingeniosa que reconoce los mensajes restringidos, específicos de Apple, que enviaría una app en segundo plano en un dispositivo iOS. Esto da al dispositivo Android información suficiente para hablar con el dispositivo iOS y reactivarlo a un estado en el que puedan comunicarse.

La situación sin Android es algo distinta: existe un umbral a partir del cual la app NHS COVID-19 puede quedarse en silencio cuando se deja en segundo plano durante un tiempo, y los registros del dispositivo muestran ejemplos de ello. En este caso, la app ha pasado a segundo plano, pero podrá seguir buscando (técnicamente, «emitiendo») durante más de una hora y media. Otros eventos del teléfono, incluidas otras apps que usan Bluetooth, pueden ampliar este tiempo.

Session uk.nhs.nhsx.sonar-peripheral-11919-319 can advertise in background for 6240 seconds

En consecuencia, no se puede decir que «la app dejará de ser eficaz en la comunicación entre dispositivos iOS pasado un tiempo X»: la app dispone de una amplia ventana variable para mantenerse activa, y varios factores razonables pueden hacer que esa ventana se amplíe, entre ellos otros usos del Bluetooth, la presencia de dispositivos Android y la eficacia de las notificaciones.

Hay algunas situaciones menos habituales en las que iOS podría intentar suspender por completo una app en segundo plano, por ejemplo cuando el sistema se está quedando sin memoria. Cuando esto ocurre, la fiabilidad del servicio se ve afectada. La app intenta solucionarlo activando una notificación push que pide a los usuarios que vuelvan a abrirla, pero esto no siempre funciona, según el estado del dispositivo. En nuestras pruebas, los dispositivos iOS en los que hemos ejecutado la app han mantenido el servicio en segundo plano activo durante toda la noche.


¿La app recopila datos personales y revela mi identidad?

Hemos añadido esta respuesta a las 11:45 BST del 7 de mayo para contestar a las preguntas que hemos recibido sobre la recopilación y transmisión de datos de la app

La app para iOS captura muy pocos datos: todo gira en torno a su linkingId. Eso solo podría vincularse a una persona si notificara síntomas y concertara una prueba con el NHS usando ese ID.

Que un resultado positivo de una prueba quede codificado con un ID es, en efecto, lo que activa la alarma de rastreo. La cuestión es entonces si el NHS almacenaría de forma centralizada los datos de una persona recogidos en el momento de la prueba junto con ese ID. Esto no sería necesario para que la app funcione y no es intrínseco a la app. Como escribimos antes, la app no tiene acceso a datos de ubicación más allá de los primeros dígitos del código postal del usuario (que introduce el propio usuario al configurarla y no se validan).

Así pues, la cuestión no es qué almacena la app, sino qué información solicita el NHS al concertar una prueba y cómo se almacena esa información.

Si un usuario notificara síntomas y no concertara una prueba (o la concertara sin facilitar su ID), no habría absolutamente ninguna forma de vincular los dos tipos de información. Por supuesto, en este caso extremo, la app tampoco podría avisar de que el usuario tiene COVID-19.

Seguimos investigando esto y publicaremos más detalles a medida que avancen las cosas.


Sobre el autor

Aidan Fitzpatrick

Fundador, CEO

Aidan fundó Reincubate en 2008 después de crear la primera herramienta de recuperación de datos de iOS del mundo. Desde entonces, ha convertido la empresa en uno de los principales ISV del mundo, colaborando con compañías como AMD, Qualcomm y HP para impulsar funciones de aprendizaje automático relevantes para software de video, encabezadas por el ecosistema de aplicaciones Camo. Bajo el liderazgo de Aidan, Reincubate ha ganado en cuatro ocasiones el galardón empresarial más importante del Reino Unido, se ha ganado un lugar en la lista 100 Tech de The Sunday Times y ha obtenido reconocimiento del sector con nominaciones al Apple Design Award y al App Store. Su trabajo y sus técnicas se citan con frecuencia en artículos académicos sobre informática forense móvil, y ha sido invitado a hablar en eventos organizados por empresas como Google, Microsoft y Snap.


Comentarios (1)

richard atterbury 9 de mayo de 2020

I am on IOW. The app does require Location Services. Very surprised as every description, including yours, says that it does not

Respuesta del soporte de Reincubate 9 de mayo de 2020

Hi Richard, thanks for your comment! The way the app gets access to Bluetooth on Android is confusing; its request for access makes it appear it's also requesting location access. We detail what's [going on with that here](https://reincubate.com/blog/nhs-covid-19-background-tracing-details/) — in short, it's a limitation of Android that appears misleading.


Contenido relacionado


Artículos populares

Logotipo del King's Award for Enterprise

King's Award for Enterprise: Reincubate ha ganado cuatro veces el máximo honor empresarial oficial del Reino Unido, la más reciente en reconocimiento al destacado crecimiento de la empresa durante los últimos tres años.

Nuestras relaciones con usuarios y socios son el núcleo de nuestros valores y de los productos que creamos. Consulta nuestras reseñas para saber lo que opinan de nosotros.

Certificación ISO 27001 del Centre for Assessment, acreditada por UKAS

© 2008-2026 Reincubate Ltd. Todos los derechos reservados. Registrada en Inglaterra y Gales con el n.º 5189175, IVA GB151788978. Camo®, Streamlight® y Reincubate® son marcas registradas. Patentes en trámite.

Ayuda