Vai al contenuto principale

Technology, security analysis

Restare vivi: il tracciamento in background e l’app NHS COVID-19

Aidan FitzpatrickPubblicato il 6 maggio 2020Aggiornato il 31 luglio 2024
In questa pagina
Cover image for: Restare vivi: il tracciamento in background e l’app NHS COVID-19
  • L’app NHS COVID-19 sembra funzionare correttamente quando è in esecuzione in background sui dispositivi iOS, a differenza dell’app australiana COVIDSafe
  • L’app previene le segnalazioni false fornendo agli utenti con sintomi un codice di riferimento: quel codice viene poi associato ai risultati ufficiali dei test prima che si agisca
  • NHS COVID-19 chiede agli operatori sanitari di disattivare il Bluetooth sul proprio dispositivo mentre indossano i DPI, spiegando «your interactions at work should not be captured when you are wearing PPE»
  • Aggiornamento delle 09:25 BST del 7 maggio: abbiamo aggiunto qui sotto una sezione «Come fa l’app a restare efficace in background?», che spiega come l’app riesca a restare attiva quando comunica con i dispositivi Android e illustra alcune delle sfide e delle tecniche per la comunicazione da iOS a iOS
  • Aggiornamento delle 11:45 BST del 7 maggio: abbiamo aggiunto qui sotto una sezione «L’app raccoglie dati personali e rivela la mia identità?».

Le sfide del tracciamento dei contatti quando un’app non è visibile sullo schermo

Gli sviluppatori di app hanno poche opzioni per mantenere «vive» le app quando non sono in primo piano sul dispositivo dell’utente. Apple gestisce con attenzione queste opzioni per garantire che le app non invadano la privacy degli utenti né scarichino inutilmente la batteria. In particolare, distingue tra un’app che ha il focus, cioè è visibile sullo schermo, e una che è in esecuzione in background. Gli aggiornamenti recenti di iOS hanno limitato la capacità degli sviluppatori di accedere ai dati mentre l’app è in background: ad esempio, prima di poter limitare in modo così efficace la raccolta in background, Uber poteva tracciare gli spostamenti di un utente anche quando non era in taxi.

Per essere eseguita in modo significativo in background, un’app deve ottenere il permesso di Apple quando viene inviata all’App Store, contrassegnandola con una serie di «Background Modes». Questi modi di esecuzione in background sono limitati ai casi di trasmissione di video da un dispositivo a un altro, raccolta di aggiornamenti di posizione, funzionamento come telefono o uso del Bluetooth. Sono questi modi, ad esempio, a permettere al tuo telefono di eseguire AirPlay in background, riprodurre musica senza che Spotify sia sempre in primo piano, chiamare qualcuno con WhatsApp e poi mandare l’app in background, o tracciare la tua corsa con Strava.

L’app NHS COVID-19

L’app NHS COVID-19

Questi modi sono però limitati, e gli utenti potrebbero conoscere le notifiche dell’iPhone che chiedono se alle app sia consentito accedere alla posizione in background. Anche quando un utente concede questi permessi, il telefono può continuare a chiedere conferma che sia la scelta giusta.

Le app di tracciamento dei contatti si basano sul Bluetooth a basso consumo (BLE), che, in parole semplici, permette ai dispositivi di riconoscersi. In teoria, i modi «Uses Bluetooth LE accessories» e «Acts as a Bluetooth LE accessory» di Apple sono ideali per questo scopo e consentono di usare il BLE in background. Tuttavia, mentre un’app in background che usa questi modi può continuare a comunicare con i dispositivi BLE con cui è già in comunicazione (come una serratura smart Bluetooth), non può controllare la frequenza di trasmissione per interrogare dispositivi che non ha mai visto prima. In background questo rende più difficile cercare segnali di nuovi dispositivi, comunicare con loro in modo significativo e, in particolare, identificare i dispositivi non Apple. Questo ostacola parecchio le app di tracciamento dei contatti, che devono funzionare di continuo in background.

Per citare la documentazione di Apple sul servizio:

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

Soluzioni alternative e approcci diversi per il tracciamento

Naturalmente, questa non è una sfida nuova per gli sviluppatori: da tempo cercano metodi per far restare le app in background e raccogliere dati di tracciamento nonostante le restrizioni. Sono nati framework come l’open source AltBeacons per affrontare il problema, ma non sono praticabili per il tracciamento dei contatti, dove un dispositivo deve cercare di continuo nuovi dispositivi. Come ha scoperto ABC in Australia analizzando la loro app nazionale COVIDSafe, finora non esiste una soluzione pratica. Esistono alcuni exploit che potrebbero essere temporaneamente utili, come registrare la propria app come lettore audio e farle riprodurre musica, ma questi e altri exploit simili sono visti con sfavore da Apple, rischiano di creare disagi agli utenti e raramente superano l’approvazione per l’App Store.

Nel frattempo, Apple si sta preparando a rilasciare iOS 13.5, attualmente disponibile in beta. Apple può apportare al proprio sistema modifiche vantaggiose per questo tipo di tracciamento. La 13.5 introdurrà diverse funzioni più evidenti, come il supporto di FaceID per gli utenti che indossano una mascherina, o almeno un percorso più rapido per inserire il codice, e alcune meno evidenti, come il framework ExposureNotification che offre esattamente ciò di cui hanno bisogno le app di tracciamento dei contatti. Non sarà un sistema perfetto, naturalmente: non tutti gli utenti potranno sfruttarlo, perché dispositivi come l’iPhone 6 (2015) non possono eseguire iOS 13. Inoltre, mentre il sistema di Apple usa un identificatore standard globale, ogni paese che lo implementa utilizza un database nazionale a compartimenti stagni. Quindi, se un europeo infetto di un paese incontra un cittadino di un altro paese europeo, il contagio non verrà scoperto tramite il tracciamento dei contatti.

Il ExposureNotification di Apple per il COVID-19 offre una soluzione a quanto serve qui, ma con alcune riserve. La più significativa è che Apple ha indicato che solo la propria app potrà usarlo, per impedire che altri ne facciano un uso improprio.

Allora come fa l’NHS con la sua app COVID-19?

Come può allora l’app britannica NHS COVID-19 tracciare efficacemente nuovi dispositivi quando è in background, senza «addormentarsi» (tecnicamente, «essere sospesa») e quindi diventare inefficace? Dai nostri test con la versione 1.0.1b341 dell’app «NHS COVID-19» vediamo che effettivamente comunica in modo efficace in background. Sembra che ci riesca grazie a una serie di abili espedienti basati su keepalive e notifiche. Forzare la chiusura dell’app interrompe il tracciamento in background; se invece si spegne e si riaccende il telefono, l’app continua a comunicare correttamente in background. Questo espediente potrebbe o meno andare contro le regole di Apple, ma al momento non è stato reso noto, e Apple ha approvato le build dell’app che ha visto finora.

Continuiamo a indagare e pubblicheremo più dettagli man mano che la situazione evolve.

L’app NHS COVID-19 memorizza dati sensibili?

No. L’app sembra realizzata molto bene, con buone pratiche di sicurezza e senza memorizzare dati non necessari. Ruota attorno a un linkingId che viene generato per ogni installazione dell’app. Questo ID persiste tra le installazioni dell’app, quindi disinstallarla e reinstallarla non reimposta l’identificatore.

Esaminando i dati dell’app con iPhone Backup Extractor nel percorso uk.nhs.nhsx.sonar, vediamo una serie di file legati a Google Firebase e un insieme di piccoli Plist (file di configurazione) per il resto dei dati dell’app.

I file dell’app NHS COVID-19 visti in un backup

I file dell’app NHS COVID-19 visti in un backup

Gli utenti possono dichiarare falsamente di avere il COVID-19?

Se un utente segnala dei sintomi, l’app fornisce un numero da chiamare per prenotare un test, insieme a un codice di riferimento. L’idea è che il risultato del test venga poi associato al codice di riferimento dell’utente. Se un utente segnalasse falsamente dei sintomi, la conferma non avverrebbe senza che l’NHS aggiorni il risultato del test in modo da farlo corrispondere al codice dell’utente.

L’app richiede i permessi di localizzazione?

No, non li richiede.

L’NHS ha ingannato il pubblico sull’uso delle API di Google?

No. L’app NHS COVID-19 è profondamente integrata con la Firebase API di Google, lo standard del settore per l’archiviazione e la gestione dei dati. (L’NHS non usa il framework di tracciamento dei contatti di Google o Apple; tra l’altro, quest’ultimo non sarà disponibile fino al rilascio di iOS 13.5.)

Con quali servizi comunica l’app?

Come per l’app Android, tutte le comunicazioni rilevanti passano attraverso l’API COVID19 dell’NHS, ospitata sotto *.covid19.nhs.uk. L’app effettua alcune altre richieste a causa dell’uso del servizio AppCenter di Microsoft, ma nessuna rilevante o sensibile.

Se gli operatori dell’NHS usano l’app, non porterà a dei falsi positivi?

L’app invita gli operatori sanitari a disattivare il Bluetooth sui loro dispositivi mentre indossano i DPI, affermando «your interactions at work should not be captured when you are wearing personal protective equipment».

Il messaggio sul Bluetooth e i DPI nell’app NHS COVID-19

Il messaggio sul Bluetooth e i DPI nell’app NHS COVID-19


Siamo stati lieti di approfondire l’app COVID-19 dell’NHS. Anche se si è molto speculato sul suo funzionamento, ciò che abbiamo visto è un’app ben costruita e sicura. Il tracciamento in background sembra funzionare, anche se resta in larga parte nelle mani di Apple stabilire se continuerà a essere efficace. Di conseguenza, anche l’efficacia della risposta britannica al COVID-19 è ora nelle mani di Apple.

La scelta tra fare da soli o usare il framework di Apple deve essere stata difficile. Seguire l’esempio di Apple sarebbe stata probabilmente una scelta meno controversa. Tuttavia, iOS 13.5 non è ancora disponibile, mentre l’app britannica esce in beta domani, e nulla impedisce al Regno Unito di adeguarsi ad Apple negli aggiornamenti successivi. Da questo punto di vista, perché non rilasciare prima una sperimentazione sull’Isola di Wight?


Come fa l’app a restare efficace in background?

Abbiamo aggiunto questa risposta alle 09:25 BST del 7 maggio, per rispondere alle domande che ci sono arrivate sui dettagli di come l’app resta attiva. L’NHSX ha usato alcune tecniche intelligenti per ottenere risultati migliori.

Ieri sera il Sun ha riportato che l’app usa API Bluetooth private, ma non ne abbiamo visto alcun segno e da allora hanno modificato l’articolo ritirando questa affermazione. L’app NHS COVID-19 usa API Bluetooth pubbliche di iOS e non sembra sfruttare alcun privilegio speciale. Ci sono invece alcune tecniche ingegnose.

La prima tecnica risponde al comportamento del Bluetooth di iOS per le app sospese. Abbiamo notato che Apple cambia il modo in cui un’app può cercare nuovi dispositivi quando è sospesa. Le app sospese non riescono a riconoscere correttamente i dispositivi che non hanno mai visto prima. Come abbiamo scritto sopra, è «più difficile cercare segnali di nuovi dispositivi, comunicare con loro in modo significativo e, in particolare, identificare i dispositivi non Apple».

L’NHSX ha affrontato la sfida dei dispositivi non Apple dal lato opposto: capendo di non poter influire su ciò che iOS faceva al riguardo, ha inserito nella propria app Android soluzioni ingegnose per riconoscere i messaggi riservati, specifici di Apple, che invierebbe un’app in background su un dispositivo iOS. Questo fornisce al dispositivo Android informazioni sufficienti per parlare con il dispositivo iOS, risvegliandolo in uno stato in cui possono comunicare.

La situazione senza Android è un po’ diversa: c’è una soglia oltre la quale l’app NHS COVID-19 può ammutolire se lasciata in background per un certo periodo, e i log del dispositivo ne mostrano degli esempi. In questo caso l’app è stata mandata in background, ma potrà continuare a cercare (tecnicamente, «trasmettere») per oltre un’ora e mezza. Altri eventi sul telefono, comprese altre app che usano il Bluetooth, possono estendere questo tempo.

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

Di conseguenza, non è possibile dire «l’app diventerà inefficace nella comunicazione da iOS a iOS dopo un periodo X»: l’app ha a disposizione una finestra variabile e generosa per restare attiva, e diversi fattori plausibili possono farla estendere, tra cui altri usi del Bluetooth, la presenza di dispositivi Android e l’efficacia delle notifiche.

Ci sono alcune situazioni meno comuni in cui iOS potrebbe cercare di sospendere del tutto un’app in background, ad esempio quando il sistema sta esaurendo la memoria. Quando succede, l’affidabilità del servizio ne risente. L’app cerca di rimediare attivando una notifica push che chiede agli utenti di riaprirla, ma non sempre funziona, a seconda dello stato del dispositivo. Nei nostri test, i dispositivi iOS su cui abbiamo eseguito l’app hanno continuato a far girare il servizio in background per tutta la notte.


L’app raccoglie dati personali e rivela la mia identità?

Abbiamo aggiunto questa risposta alle 11:45 BST del 7 maggio, per rispondere alle domande che ci sono arrivate su come l’app raccoglie e trasmette i dati

L’app iOS acquisisce davvero pochissimi dati: ruota tutto attorno al loro linkingId. Questo potrebbe essere collegato a una persona solo se questa segnalasse dei sintomi e prenotasse un test con l’NHS usando quell’ID.

Un risultato positivo del test registrato rispetto a un ID è, di fatto, ciò che fa scattare l’allarme di tracciamento. La domanda è allora se l’NHS conservi a livello centrale i dati di una persona raccolti al momento del test insieme a quell’ID. Non sarebbe necessario per il funzionamento dell’app e non è intrinseco all’app. Come abbiamo scritto in precedenza, l’app non ha accesso ai dati di localizzazione oltre le prime cifre del codice postale dell’utente (che vengono inserite dall’utente durante la configurazione e non sono convalidate).

Quindi la questione qui non riguarda ciò che l’app memorizza: riguarda quali informazioni richiede l’NHS quando si prenota un test e come vengono conservate.

Se un utente segnalasse dei sintomi senza prenotare un test (o prenotasse un test senza fornire il proprio ID), non ci sarebbe assolutamente modo di collegare i due tipi di informazioni. Naturalmente, in questo scenario estremo l’app non potrebbe nemmeno avvisare nel caso in cui l’utente avesse il COVID-19.

Continuiamo a indagare e pubblicheremo più dettagli man mano che la situazione evolve.


Informazioni sull'autore

Aidan Fitzpatrick

Fondatore, CEO

Aidan ha fondato Reincubate nel 2008 dopo aver creato il primo strumento al mondo per il recupero dei dati iOS. Da allora ha fatto crescere l’azienda fino a farne uno dei principali ISV al mondo, collaborando con aziende come AMD, Qualcomm e HP per essere pioniere di funzionalità di machine learning significative per il software video, con l’ecosistema di app Camo in prima linea. Sotto la guida di Aidan, Reincubate ha vinto quattro volte il più alto riconoscimento imprenditoriale del Regno Unito, si è guadagnata un posto nella lista 100 Tech del Sunday Times e ha ottenuto riconoscimenti di settore con candidature all’Apple Design Award e all’App Store. Il suo lavoro e le sue tecniche sono spesso citati in pubblicazioni accademiche sull’informatica forense mobile, ed è stato invitato a parlare a eventi organizzati da aziende come Google, Microsoft e Snap.


Commenti (1)

richard atterbury 9 maggio 2020

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

Risposta del supporto Reincubate 9 maggio 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.


Contenuti correlati


Articoli popolari

Logo del King's Award for Enterprise

King's Award for Enterprise: Reincubate ha vinto quattro volte la più alta onorificenza aziendale ufficiale del Regno Unito, l'ultima in riconoscimento della straordinaria crescita dell'azienda negli ultimi tre anni.

Le nostre relazioni con utenti e partner sono al centro dei nostri valori e dei prodotti che creiamo. Consulta le nostre recensioni per scoprire cosa dicono di noi.

Certificazione ISO 27001 rilasciata dal Centre for Assessment, accreditato UKAS

© 2008-2026 Reincubate Ltd. Tutti i diritti riservati. Registrata in Inghilterra e Galles con il n. 5189175, P. IVA GB151788978. Camo®, Streamlight® e Reincubate® sono marchi registrati. Brevetti in corso di registrazione.

Assistenza