Vai al contenuto

Oltre l'innovazione. Oltre i limiti. Verso l'impatto.

Lingua
Aspetto

Come funziona la Corona-Warn-App

Può avvisarla che è stata vicino a qualcuno poi risultato positivo, senza che alcun server venga mai a sapere che è stata vicino a qualcuno. Ecco l'architettura che permette entrambe le cose, e perché il codice è pubblico.

Autore
Pubblicato
Tempo di lettura
4min
Serie
Software della pandemia Parte 2 di 5

Il 16 giugno 2020 la Germania ha pubblicato la Corona-Warn-App, la sua applicazione ufficiale per il tracciamento dei contatti COVID-19. In ventiquattro ore era stata scaricata milioni di volte, diventando una delle app pubbliche adottate più in fretta nella storia europea.

Come società di software con un piede nel mercato tedesco abbiamo seguito lo sviluppo da vicino — un po' per curiosità professionale, un po' perché è un caso di studio su come si pubblica un'app sensibile alla riservatezza sotto un'enorme attenzione pubblica. Ecco che cosa fa l'app, come funziona sotto il cofano e perché le scelte di architettura contano.

Che cosa fa la Corona-Warn-App

Lo scopo è semplice: se ha passato un tempo rilevante vicino a qualcuno che poi risulta positivo al SARS-CoV-2, l'app l'avvisa così può farsi un test e isolarsi prima di contagiare inconsapevolmente altri.

La parte difficile è farlo senza costruire una banca dati centrale di chi ha incontrato chi.

L'architettura: decentralizzata per scelta

All'inizio la Germania aveva valutato un modello centralizzato, in cui i dati sugli incontri sarebbero stati caricati su un server statale. Dopo un dibattito pubblico con la partecipazione di ricercatori sulla riservatezza, nell'aprile 2020 il governo federale è passato a un approccio decentralizzato basato sul framework Exposure Notification di Apple e Google. È la decisione più importante di tutta la vicenda.

Il flusso, in parole semplici:

  1. Il suo telefono trasmette identificativi casuali. Tramite Bluetooth Low Energy l'app diffonde identificativi generati a caso, di breve durata, che cambiano ogni pochi minuti. Non contengono alcun dato personale.
  2. Il suo telefono annota gli identificativi che sente. I telefoni vicini che eseguono l'app conservano localmente gli identificativi casuali altrui, insieme a intensità del segnale e durata, per 14 giorni.
  3. Un test positivo viene verificato. Se risulta positivo, può condividere l'esito nell'app. Un passaggio di verifica — un codice QR del laboratorio o un TAN da una linea telefonica — garantisce che vengano caricati solo esiti autentici.
  4. Dal suo telefono escono solo le chiavi. L'app carica le chiavi da cui sono derivati i suoi identificativi casuali recenti. Nessuna posizione, nessuna rubrica, nessun nome.
  5. Ogni telefono verifica in locale. Ciascuna app scarica regolarmente l'elenco delle chiavi pubblicate e lo confronta con gli identificativi che ha annotato. Il confronto avviene sul suo dispositivo, non su un server.
  6. Il rischio è calcolato sul suo dispositivo. In base a prossimità e durata, l'app stima il rischio di esposizione e mostra un avviso se supera una soglia.

Il server non viene mai a sapere chi ha incontrato chi. È tutto il punto.

Perché il codice aperto conta

SAP e Deutsche Telekom hanno costruito l'app per conto del governo federale, e l'intero codice sorgente — app mobili, backend, server di verifica — è stato pubblicato su GitHub prima del lancio.

Per chi sviluppa è notevole. Migliaia di persone hanno riletto il codice, aperto segnalazioni e proposto correzioni prima che il pubblico la installasse. Per il pubblico ha significato che le promesse sulla riservatezza potevano essere verificate in modo indipendente anziché prese sulla fiducia. L'adozione di un'app volontaria dipende dalla fiducia, e il codice aperto è il modo più credibile di guadagnarla.

Limiti che vale la pena conoscere

L'app non è una soluzione miracolosa.

  • Il Bluetooth è un'approssimazione, non una misura. L'intensità del segnale attraverso un muro o una borsa è imprecisa: si verificano sia falsi positivi sia falsi negativi.
  • Serve adozione. Il beneficio cresce con il quadrato della base di utenti; un avviso scatta solo se entrambe le persone usano l'app.
  • Gli esiti dei test vanno collegati. Un risultato positivo aiuta solo se il laboratorio o il centro tamponi riesce a consegnarlo nell'app con un codice QR verificato — il che richiede lavoro di integrazione dal lato del laboratorio. Ci aspettiamo che diventi un tema importante man mano che il dispositivo di testing cresce.

Che cosa possono imparare i team di sviluppo

Tre lezioni che portiamo nei nostri progetti:

  1. La riservatezza è una decisione di architettura, non un documento di policy. Il modello decentralizzato rende l'abuso tecnicamente impossibile, non semplicemente vietato.
  2. La trasparenza batte il marketing. Pubblicare il codice ha fatto per l'adozione più di qualunque campagna.
  3. L'integrazione è il punto in cui il software di sanità pubblica vive o muore. L'app vale quanto valgono le catene di dati che la alimentano.

Torneremo su quest'ultimo punto. In Daleenda stiamo già guardando a che cosa serve perché una struttura di testing si colleghi a questo ecosistema — e la risposta è che gli strumenti quasi non esistono ancora.

Tutti gli articoli

In questa pagina

Dove lascia questo il suo sistema?

Un articolo può spiegare come funziona qualcosa; non può dire cosa significa per il sistema che già gestisce. Trenta minuti con un ingegnere, non un commerciale, e nessuna sequenza di solleciti.