La privacy è un fattore cruciale da tenere a mente nello sviluppo di nuovi sistemi e applicazioni.
In questi giorni di alta preoccupazione, conosciamo più tecnicamente gli approcci che possono, e devono, essere impiegati.
A differenza di altri post che puoi trovare in rete, questo è altamente tecnico e denso di contenuto: non demoralizzarti se alcuni concetti ti paiono astrusi. Significa che stai imparando!
Privacy Preserving Tracing App
Fermati un attimo!
Privacy?
Cosa ci interessa?
Il nostro è un blog di Machine Learning e Data Science, quindi perché occuparci di Privacy?
Sappiamo molto bene che per diventare dei bravi data scientist abbiamo bisogno di saper maneggiare i dati in ogni forma.
Per padroneggiare il machine learning servono poi parecchi dati.
Insomma, non intendo essere ripetitivo anche se siamo tremendamente ossessionati dai… dati!.
Wait a second…
Come possiamo aspettarci che la gente di fornisca dati, personali o meno, senza sufficienti garanzie che questi non vengano venduti in Congo per un cesto di cocco.
Ovviamente non sono un mercante di frutti esotici, quindi i miei consigli sul cocco congolese potrebbero risultate inaffidabili.
Inoltre penso che qualche startup della silicon valley sia più propensa ad acquistare quei dati rispetto a un mercante dell’Africa centrale.
Che ne dici? Torniamo sulla strada maestra? Così ti voglio!
Dicevamo?
Ah sì, cosa significa concretamente garantire la privacy in un app o sito web!
Private Set Intersection
Il primo sistema che vediamo per garantire davvero la privacy nei nostri amati utenti è chiamato Private Set Intersection.
Per Private Set Intersection intendiamo una potente tecnica di crittografia che permette a due parti di comparare reciprocamente dati senza esporli a occhi terzi, che magari consideriamo particolarmente indiscreti.
In uno scenario come quello descritto, più che mai attuale, un simile metodo deve essere impiegato in qualsiasi Privacy Preserving Tracing App.
Ok, e a me non sembra che sia molto chiaro…
Benissimo, facciamo un esempio.
Prendiamo due parti:
- Un data store centralizzato (i.e. Gestito in un solo punto) contenete le posizioni che i pazienti infetti hanno visitato prima del loro isolamento
- Una moltitudine di smartphone, contenenti le informazioni individuali sulla posizione dei proprietari.
Per determinare quali individui abbiano visitato una zona rossa, precedentemente contaminata da uno o più infetti, deve esserci un confronto tra le due sorgenti dati (data source).
La tecnica di Private Set Intersection corre in nostro soccorso consentendo ai due gruppi di determinare se siano presenti eventuali posizioni comuni tra loro.
Poni attenzione a questo particolare che ti sto per svelare.
La tecnica di Private Set Intersection impedisce al data store centralizzato (facilmente attaccabile da malintenzionati, specie se gestito in Italia – Historia magistra vitae) di accedere ai dati sui singoli device, e ai dispositivi di fare lo stesso sul server.
Il risultato? Una meraviglia!
Abbiamo tra le mani una Privacy Preserving Tracing App che non ha bisogno di condividere pubblicamente i dati sulla posizione e tanto meno inviare i log GPS (l’insieme cioè delle coordinate e del timestamp, vale a dire l’orario preciso al millisecondo della registrazione) a un data center centralizzato per la memorizzazione.
In questo modo impediamo la creazione di uno scrigno d’informazioni d’identificazione personale a tutto vantaggio dei cittadini e della pubblica amministrazione.
Benissimo.
Quindi, che facciamo?
Noi cari Italiani parliamo, e tanto.
Ora, come hai capito questo blog non si limita a discussioni superflue: condivide con te risorse e contenuti densi d’informazione.
Pertanto ho deciso di condividere con te una raccolta di risorse che potrebbero tornare utili a noi sviluppatori.
Open Mined, una community di oltre 7,300 brillanti menti, sta sviluppando librerie Open Source che gestiscano Private Set Intersection con diversi backend operativi;
- Phone: Android, iOS, e mobile browser
- Server: Python e JavaScript
Ecco una serie di Repository GitHub utili a riguardo.
- Javascript library for private set intersection
- Swift library for private set intersection
- Kotlin library for private set intersection
- Python library for private set intersection
Private Identity
Stiamo usando termini complessi?
Ok, semplifichiamo un po’.
Il concetto di Private Identity riguarda come connetti e condividi i tuoi dati con le applicazioni di Privacy Preserving Tracing App che intendi usare, senza compromettere la tua privacy!
Il progetto Private Identity si pone come obiettivo quello di conferire agli utenti l’abilità di dimostrare la loro identità agli altri senza compromettere la propria privacy.
Un’implementazione efficace di questo sistema avrebbe effetti sia sul breve che nel lungo periodo.
Vediamo insieme come.
- Breve Termine: possiamo provare di essere idonei per certe mansioni e luoghi ad accesso limitato, dimostrando la nostra identità in modo sicuro alle autorità sanitarie.
- Lungo Termine: dimostrare di rispettare determinati requisiti, quali l’esser stato in quarantena per un numero valido di giorni; di essere a basso rischio d’infezione, ergo per cui non costituisci pericolo per la comunità; di essere positivo a specifici anticopri (hai auto l’infezione e ne sei guarito).
Il progetto Private Identity ha quindi lo scopo di garantire la condivisione, nonché la validità, dei dati personali senza compromettere la privacy individuale dei dati non sensibili essenziali.
Il progetto Private Identity è bipartito: una prima parte di Data integration e una seconda di Self Sovereign Identity.
Data Integration
Questo flusso di lavoro focalizza l’attenzione sul garantire la massima flessibilità e comodità nell’interfacciarsi con le origini dati (data source).
Il fulcro è consentire agli utenti di sfruttare servizi già in uso per l’autenticazione.
Social Media accounts, bank accounts, biometric information, sono tutti esempi di sistemi impiegabili per evitare frodi e allo stesso tempo garantire facile accesso ai servizi.
Self Sovereign Identity
Questo secondo flusso di lavoro adempie allo sviluppo di tecnologie per permettere agli utenti di generare prove, definite credential che validino specifici aspetti della loro identità, verificati da qualcun altro.
Puoi pensare alla credential come a una firma.
Vai dal dottore affinché firmi un documento che attesti qualche fatto sulla tua salute.
Il problema? Una firma può essere facilmente falsificata ed è difficile da verificare.
Al contrario una credential è una firma crittografica (cryptographic signature) impossibile da falsificare e facilmente validabile.
Tutto questo in un app!
Come sempre, ecco i nostri spunti per passare dal teorico al pratico in un baleno, le Github Repositories:
- Private Identity Server
- Miner: a collection of web scraping tools focused on making it easier for users to download their own data.
- Using the Hyperledger Aries to facilitate decentralised identity services
Differential Privacy
Il terzo asso nella nostra manica. Un risorsa formidabile, e un campo di studi ancora tutto da esplorare.
Abbiamo ampiamente descritto in un post separato cosa sia la Differential Privacy e perché possa essere disruptive.
Intendi leggerlo?
Ecco a te! Fanne buon uso, mi raccomando: è un arma potente.
Un caldo abbraccio, Andrea.