Intervista La7 per “L’aria che tira”

Ringrazio La7 per avermi dato l’opportunità di raccontare in breve la mia esperienza lavorativa e di aver avuto uno scambio con la Prof.ssa Elsa Fornero su economia e lavoro. Spero di aver dato voce a tutte quelle persone che hanno condiviso esperienze simili e che allo stesso tempo vogliono migliorare questo paese.

Puntata completa disponibile su https://www.la7.it/laria-che-tira/rivedila7/laria-che-tira-puntata-28052021-28-05-2021-384193 – intervento a partire dal minuto 56 con più contenuti rispetto all’estratto di sopra.

Contact Tracing

Funzionamento, utilità e rischi delle app di contact tracing

La pandemia globale dovuta al COVID-19 ha costretto governi e autorità sanitarie a investigare nuove metodologie di contrasto alla diffusione del virus.

Tra queste, un ruolo sempre più emergente è rappresentato dai sistemi di contact tracing (tracciamento dei contatti), ovvero l’insieme delle azioni eseguite per identificare, rintracciare e contattare sistematicamente tutti i soggetti (definiti contatti) che potrebbero essere venuti a contatto con una persona infetta (detta persona indice). Lo scopo è quello di isolare i nuovi casi e interrompere o ridimensionare la catena di contagio.

Questo processo manuale verrà per la prima volta in larga scala automatizzato tramite l’utilizzo degli smartphone.

Funzionalità del tracciamento digitale

Le app di tracciamento digitale si basano sulla registrazione periodica dei dispositivi con i quali l’utente è stato in contatto. In particolare verrà memorizzato sul dispositivo un identificativo anonimo del contatto in prossimità, la distanza e il tempo di esposizione.

I dati verranno salvati localmente fino a quando l’utente o un contatto registrato riporta di essere stato contagiato. In questo caso, a seconda del modello di sviluppo dell’applicazione, verranno notificati gli utenti possibilmente a rischio e, a seconda delle disposizioni locali, verranno suggeriti provvedimenti.

Per determinare la prossimità contatto si sfrutterà l’attivazione del Bluetooth Low Energy (BLE), sistema già in adozione per comunicare con gli accessori del telefono. Ogni utente emetterà un identificativo univoco e altri utenti in prossimità registreranno questo codice e lo memorizzeranno localmente.

Il Bluetooth é un sistema presente in quasi tutti i dispositivi, è resistente ad ostacoli e può essere adottato in maniera da preservare la privacy. La distanza tra contatti è considerata direttamente proporzionale alla potenza del segnale proveniente da un altro dispositivo.

Prestazioni

L’obiettivo di tutte le app è quello di funzionare su più dispositivi possibili (per aumentare la base utenti), non consumare troppa batteria, essere stabili e proteggere privacy e sicurezza. Soprattutto, l’obiettivo di tutte le app è quello di aiutare i sistemi sanitari nazionali per gestire il contagio nei vari paesi.

Dal punto di vista della memoria, i dati conservati e da scaricare sono relativamente trascurabili (ad ex. si può stimare che l’elenco dei nuovi contagi non superi i 100 kb).

Modello centralizzato vs decentralizzato

Possiamo individuare due modelli di contact tracing.

Modello decentralizzato

Nel modello decentralizzato, l’utente comunica al sistema governativo di risultare positivo. Periodicamente, il sistema stesso colleziona una lista degli individui identificati come malati e invia questa lista a tutti gli utenti dell’app. Questa comunicazione avverrà tramite gli operatori sanitari che forniranno all’utente un codice di autorizzazione per caricare sui sistemi governativi i propri dati.

Ogni dispositivo individuale provvederà quindi a verificare se tra i contatti registrati sia presente qualcuno in lista, e (a prescindere dai modelli di rischio stabiliti da ogni governo), comunicherà al proprio utente di essere stato in contatto con un soggetto positivo.

In questo modo ogni utente ha sempre una lista di contatti anonimi che sono stati dichiarati positivi. Il sistema sanitario, invece, non ha ulteriori informazioni a riguardo delle persone malate, né ha informazione sulle persone con le quali é stata in contatto, a meno di eventuali volontarie dichiarazioni che però non possono essere collegate a particolari eventi o utenti.

Questo modello è sostenuto da Apple e Google le quali stanno lavorando alle “Contact Tracing API”, ovvero a delle interfacce pubbliche che gli sviluppatori possono adottare per agevolare lo sviluppo delle applicazioni di contact tracing e per poter accedere alle funzionalità più avanzate del dispositivo. Inoltre questo sistema evita l’utilizzo del segnale GPS e la richiesta di ulteriori permessi.

Modello centralizzato

Nel modello centralizzato, invece, l’utente risultato positivo comunicherà non solo i propri sintomi ma anche tutti i loro contatti anonimi (inclusi i dettagli del contatto, come distanza e durata). Le autorità sanitarie possono quindi adottare dei modelli di rischio per decidere quali contatti sono più vulnerabili e quindi notificarle direttamente tramite notifiche in-app (push).

Le applicazioni che adottano questo modello non possono fare uso delle API esposte da Google e Apple e quindi sono soggette a problemi di funzionalità, poiché sia iOS che Android limitano fortemente le modalità di utilizzo dei dispositivi Bluetooth per app di terze parti. In particolare, su iOS il segnale può essere trasmesso solo con telefono sbloccato e app attiva, mentre le API ufficiali permettono di utilizzare il BLE anche in background.

Il vantaggio del modello centralizzato consiste nel fatto che il servizio sanitario ha a disposizione molti più dati per ricostruire il grafo sociale dei contagi (e quindi rendere l’app più efficace). Tuttavia ciò è possibile anche nel modello decentralizzato se gli utenti volontariamente decidano di condividere i propri dati in memoria (in forma anonima e aggregata) con epidemiologi e gruppi di ricerca.

Sicurezza

Ogni app installata genera un ID casuale e anonimo che verrà criptato tramite una chiave generata giornalmente e scambiato con i dispositivi in vicinanza.

Nel modello decentralizzato, il server contiene solo la lista dei codici anonimi dei contagiati e non le chiavi crittografiche che invece vengono scambiate direttamente tra i dispositivi, mentre nel modello centralizzato la chiave viene condivisa con il server.

In entrambi i modelli vi è la persistenza di questi ID in un database e quindi in linea teorica è possibile che un malintenzionato possa ottenere l’accesso a questi codici. Tuttavia è molto improbabile che questi valori possano essere associati ad una persona reale. Improbabile, ma non impossibile.

Se l’utente non è positivo, non ci sono problemi particolari di sicurezza.

In caso contrario, invece, si condivide il proprio ID con il sistema centrale rendendo quindi pubblica la chiave di cifratura giornaliera e quindi implicitamente vanificando la protezione offerta dalla crittografia. In teoria è possibile immaginare che un utente malintenzionato possa intercettare il traffico (tramite sistemi di “Bluetooth sniffing”) e quindi ottenere gli ID, associarli alla persona spiata, e successivamente utilizzare gli ID dal database pubblico compromesso per poter identificare l’utente positivo.

Tuttavia questo scenario è altamente improbabile poiché:

  • I database centrali memorizzano i dati solo per gli ultimi 14 giorni (il tempo dell’incubazione) e dovrebbero essere compromessi
  • Il malintenzionato deve essere già a conoscenza dell’identità della persona spiata e in relativa vicinanza per poter intercettare il traffico
  • E’ un’operazione tecnicamente costosa per un singolo utente e quindi ancora più complessa da effettuare su una lista di utenti

Efficacia

Per dare risultati attendibili, l’app deve essere installata su almeno 60% degli smartphone della popolazione, anche se alcune stime del governo inglese parlano di come anche un 30/40% possa aiutare a ridurre il numero di vittime.

Tuttavia i dati provenienti da altri paesi non sono incoraggianti; a Singapore solo il 16% ha scaricato l’app del paese (TraceTogether) e di questi solo la metà l’ha attivata.

Inoltre:

“This is the first major epidemic or pandemic where these kinds of contract tracing apps have been under consideration. There’s not very much evidence at all to support the sustained benefit.”

Carly Kind – direttore dell’ Ada Lovelace Institute

Questa è la prima volta che si adopera Bluetooth per il tracciamento digitale, quindi non ci sono esperienze sulla sua efficacia.

Ci sono preoccupazioni riguardo la precisione delle misurazioni. Il range teorico del BLE 4.0 è di 100mt in campo aperto, ma mura, corpi umani, tasche o altri dispositivi che possono generare interferenze possono alterare la misurazione per via dell’alterazione della potenza del segnale ricevuto.

Infine un problema importante è rappresentato dai falsi positivi. Il sistema non è in grado di determinare se siamo all’aperto o in presenza di ostacoli, quindi potremmo ad esempio essere erroneamente allertati nel caso il nostro vicino di appartamento (o l’inquilino del piano di sopra) siano positivi.

Google e Apple sono comunque a lavoro per far si che il segnale possa essere trasmesso e ricevuto anche in background (e quindi evitare falsi negativi) e allo stesso tempo stabilire una soglia minima di contatto.

Il modello italiano: Immuni

Immuni, l’app che verrà realizzata da BendingSpoons, utilizzerà il modello decentralizzato tramite le API di Apple e Google.

L’ app sarà facoltativa da installare. Partirà in alcune regioni pilota, e sarà disponibile al download probabilmente entro fine maggio. L’app dovrà essere conforme alle disposizioni art. 6 da adottare in conformità alla GDPR:

  • Presentare informativa privacy
  • Adottare il principio di minimizzazione dei dati (memorizzazione solo dati strettamente necessari alle finalità dell’app)
  • Anonimizzare i dati per ridurre rischio di reidentificazione degli interessati
  • Non richiedere la geolocalizzazione, i contatti, il numero di telefono e non inviare SMS per la notifica dei soggetti a rischio
  • Conservare i dati per il periodo strettamente necessario al trattamento
  • Richiedere il consenso esplicito dell’utente a condividere i test positivi
  • I dati saranno utilizzati solo a fini di sanità pubblica e ricerca
  • L’utilizzo app e piattaforma cesserà con l’emergenza e non oltre il 30 dicembre 2020

Un fattore molto importante è rappresentato dal fatto che l’app sarà rilasciata in modalità open-source, ovvero sarà disponibile l’accesso al codice tramite licenza MPL.

In pratica sarà possibile contribuire allo sviluppo dell’applicazione stessa e verificare l’implementazione.

Resto del mondo

Nel resto del mondo le restrizioni sulla privacy sono diverse da quelle Europee, e pertanto anche i sistemi adottati sono diversi. Ad esempio in Asia o in Norvegia si è utilizzato direttamente il GPS, mentre il modello inglese si basa su un sistema centralizzato nel quale l’utente fornisce la prima parte del codice di avviamento postale ma non utilizza il GPS. L’installazione delle app è facoltativa ma con una base utenti molto forte.

Caso unico è la Cina, dove l’installazione dell’app è obbligatoria, c’è il riconoscimento dell’utente tramite autenticazione governativa e utilizzo diretto del GPS.

Tuttavia sono sempre più i governi che stanno cambiando la strategia in corsa per adottare il modello suggerito da Google/Apple viste le polemiche dovute alla minor privacy e minor efficacia di tracciamento del sistema centralizzato. Non c’è da stupirsi quindi se osserveremo anche altri paesi (come la Francia) cambiare idea. Per una valutazione finale occorre attendere altre settimane per poter provare le applicazioni una volta rese disponibili al pubblico.

Intervento pubblico per conto di Più Europa – Roma:

Fonti:

https://www.wired.co.uk/article/contact-tracing-apps-coronavirus

https://www.wired.co.uk/article/nhs-covid-19-tracking-app-contact-tracing

http://www.salute.gov.it/portale/nuovocoronavirus/dettaglioNotizieNuovoCoronavirus.jsp?lingua=italiano&menu=notizie&p=dalministero&id=4513

https://www.ncsc.gov.uk/blog-post/security-behind-nhs-contact-tracing-app#footnote-5

https://www.technologyreview.com/2020/04/22/1000353/bluetooth-contact-tracing-needs-bigger-better-data/

https://www.theverge.com/2020/4/11/21216803/apple-google-coronavirus-tracking-app-covid-bluetooth-secure

https://www.agendadigitale.eu/cultura-digitale/immuni-come-funziona-lapp-italiana-contro-il-coronavirus/

https://www.ilsole24ore.com/art/app-immuni-l-ok-trasparenza-informativa-e-privacy-garantire-ADRJ4kO?refresh_ce=1

Swift Code Metrics

Grafico delle dipendenze – grafico del rapporto tra astrazione e instabilità delle librerie e distribuzione dei moduli nel progetto (esempi generati da SCM)

Swift Code Metrics é una libreria Python per misurare le metriche di un progetto in Swift. Ho scritto un articolo su Medium (pubblicato anche su iosdevweekly) che descrive più in dettaglio il significato e l’importanza di misurare metriche sintetiche come il numero di linee di codice (LOC) oppure misurare il grado di accoppiamento delle varie librerie.

La libreria dipende da Python 3 e i grafici sono generati tramite GraphViz. Per installarlo su Mac OSX potete usare HomeBrew tramite il comando seguente:

brew install graphviz

Una volta installato GraphViz, é sufficiente eseguire il comando :

pip3 install swift-code-metrics 

Seguite il progetto su GitHub e aprite una issue nel caso incontriate dei problemi; cercherò di rispondere quanto presto.

Cater Allen mobile banking iOS app

Cater Allen bank operates in Uk and provides banking services mainly for private and small businesses. Unfortunately, they don’t provide an official mobile banking app yet (as per today, late 2018), so every operation has to be made through their official website.

I found that quite frustrating, that’s why I developed a simple open source iOS app, CaterAllenApphttps://github.com/matsoftware/CaterAllenApp ) to provide, at a very least, the ability to automatically log in using securely stored credentials on the iPhone / iPad.

The logic behind it’s quite simple. It relies on javascript to communicate to the website using an internal zoomable WebView.

To install the app you need an Apple developer account to provide your own bundle identifier, sign and deploy the binary to your devices.

I hope that this tool will be useful for other Cater Allen banks’ users.

Chiavi di localizzazioni enumerabili su iOS

(traduzione e sintesi dell’articolo pubblicato su Medium al seguente indirizzo: Enumerable localizable keys in Swift 4.2 )

La localizzazione dei contenuti su iOS è un processo abbastanza semplice all’inizio grazie all’utilizzo dell’API NSLocalizableString.

Tuttavia questo approccio può facilmente causare problemi dovuti all’errore umano, mancando il controllo del compilatore nella definizione delle chiavi e nelle loro traduzioni, che possono essere accidentalmente rimosse dal file Localizable.strings .

Per poter risolvere questo problema è possibile utilizzare una struttura ad hoc che astrae l’implementazione del meccanismo di traduzione e che fa uso di un enum specifico che contiene tutte le chiavi di localizzazioni.

Il valore aggiunto dell’utilizzo di un enum di chiavi è dato dal recente supporto in Swift 4.2 del supporto al protocollo CaseEnumerable che permette l’iterazione automatica di tutti i casi definiti.

E’ cosí infatti possibile definire uno unit test che può automaticamente verificare che ad ogni chiave definita corrisponda una traduzione valida, rimuovendo la possibilità di modifiche accidentali o di mancate traduzioni aggiunte al file di localizzazioni.

Un progetto di esempio è disponibile al seguente indirizzo su GitHub: https://github.com/matsoftware/LocaleEnumerable