:: Privatezza e Protezione dei Dati - Macrodati e Microdati ::
Torna alla pagina di Privatezza e Protezione dei Dati
Lezione 1
Macrodati e Microdati
Definizione
I macrodati sono il risultato di un aggregazione o di un'analisi statistica, ad esempio il numero di pazienti che
soffrono di una data malattia divisi per paese. Non ho una tupla contenente i dati di un singolo paziente. Le tabelle che rilascio
possono essere di due tipi:
- conteggio/frequenza
- magnitude
Protezione dei Macrodati - Tabelle Count/Frequency
Le possibili tecniche sono:
Sampling
Faccio un campionamento dei dati, che ovviamente non potrà essere casuale, ed applico al campione un "peso" per rispettare le proporzioni
originali. In questo modo chi guarderà la tabella che rilascio non sarà in grado di stabilire se Tizio o Caio rientrano nel campione
che ho scelto e quindi nella tabella.
Special Rules
Sono regole scelte ad-hoc da chi ha raccolto le informazioni per decidere quando i dati devono essere considerati sensibili.
Ad esempio la SSA (Social Security Agency), società che si occupa del censimento negli USA ha stabilito che:
- una cella non può contribuire da sola al totale
- il valore delle celle non deve permettere di risalire all'età dell'individuo entro un range di 5 anni
- il valore delle celle non deve permettere di risalire al reddito entro un range di 1000$
- il valore delle celle non deve permettere di risalire ai benefit entro un range di 50$
La soluzione consiste nel combinare righe o colonne della tabella in modo da rispettare i vari vincoli
sarebbe opportuno un esempio
Threshold Rules
Una cella è definita sensibile se il numero di rispondenti è minore di una certa soglia, solitamente 5 o 3.
Le celle sensibili non possono essere rilasciate.
Soluzioni per risolvere il problema:
- ristrutturare la tabella
- cell suppression (eliminare le celle)
- rounding (arrotondamenti più o meno casuali)
- confidentiality edit
1. manca
2. Devo rilasciare i totali, ma se elimino una cella posso comunque ricalcolarne il valore sottraendo al totale la somma delle
altre celle. Questo problema implica devo fare almeno una soppressione complementare anche se potrebbe non essere sufficiente.
Esistono algoritmi di programmazione lineare per scegliere le soppressioni complementari da effettuare, usati in combinazione
con tecniche di auditing per controllare la correttezza della tabella finale.
Problema: potrei finire per rilasciare meno della metà delle celle rispetto alla tabella originale!
3. Effettuo un arrotondamento alla soglia (o ad un multiplo della soglia), aggiungendo o togliendo a tutte le celle un valore:
- random: veloce ed efficace, ma dovendo come detto rilasciare i totali sembra che non sia in grado di fare la somma dei valori...
- controlled: scelgo in modo che i totali siano rispettati, ma è un'operazione complessa se la tabella ha più di 2 dimensioni, anche se
esistono algoritmi euristici per tabelle fino a 3 dimensioni.
E' un ottima tecnica, ma la SSA non la usa.
4. Sviluppato dalla U.S. Census Bureau per il censimento del 1990, non opera sulla tabella dei macrodati ma sui dati originali.
Si articola in 3 step:
- effettuo un campionamento
- cerco un match con un altro campione per un insieme di attributi
- scambio i valori degli altri attributi tra le tuple. Esempio: fisso una città, cerco un match sugli attributi salario e età poi scambio
gli altri. Prendendo in considerazione solo i dati di quella città il risultato sarà alterato, ma la tabella complessiva rimane invariata.
sarebbe opportuno un esempio
Protezione dei Macrodati - Tabelle Magnitude
Queste tabelle sono solitamente frutto di un aggregazione su un attributo della tabella originale. Il rilascio una tabella di magnitude è accompagnato da una tabella di conteggio
equivalente perchè non ha senso vedere il risultato di una somma senza sapere quanti hanno contribuito.
Anche per queste tabelle si applicano in genere regole di soppressione primaria e secondaria, posto di aver individuato prima quali sono le celle da proteggere.
Problemi
- hanno un valore informatio molto diverso rispetto alle tabelle count/frequency
- non posso utilizzare tutti i metodi di protezione visti prima
- contengono dei picchi. Es: considero una zona e riporto il reddito medio. Se in quella zona abita un miliardario, riesco con approssimazione a ricavare il suo reddito perchè gli altri redditi nella media conteranno ben poco. I picchi sono i dati che vanno protetti di più!
- se faccio del sampling non posso eliminare i picchi
Le possibili tecniche sono:
p-Percent
Una cella è protetta se il soggetto che ha contribuito di più al valore della cella non è esposto per più del p percento.
Es: posto p = 30%, se il reddito di tizio è 100 non devo essere in grado di stabilire che è compreso tra 70 e 130.
pq
Simile alla tecnica precedente ma cerca di prendere in considerazione anche altri valori.
Es: se 4 persone in una cella rappresentano l'80% del valore della cella, posso usare l'informazione per ricavare il resto.
L'incertezza deve essere del p-percento, considerando che conosco già il q-percento dell'informazione, con p<q<100.
(n,k)
Data una cella se meno di n elementi contribuiscono a più del k percento del suo valore non la posso rilasciare.
Es: somma dei redditi di 5 persone pari a 1'000'000€, posti n=2 e k=80 non posso rilasciare la cella se 2 persone costituiscono l'80% del totale.
In genere si sceglie n=1 o n=2.
Per operare la soppressione secondaria occorre ricordare che il vero problema è capire come fare a scegliere le celle in modo da limitare il più possibile la perdita di informazioni.
Si cerca di eliminare le celle meno significative, quindi per forza di cose è un'operazione da fare a mano.
L'audit è un sistema automatico che controlla se le celle che ho soprresso sono eventualmente derivabili dagli altri dati e soprattutto dai totali marginali, con effetto domino. Se ne scopro una poi mi aiuta per scoprirne un'altra e così via. Utilizzano dei sistemi di programmazione lineare e non sempre possono funzionare al 100%, vanno bene su tabelle fino a 2-3 dimensioni.
Fino a qui ci siamo preoccupati di proteggere i dati nei confronti di un osservatore malevolo, ma dobbiamo tenere conto anche della perdita di informazioni.
Chi riceve la tabella vuole ovviamente la maggior quantità possibile di informazioni, chi rilascia la tabella deve quindi tenere conto sia dell'una che dell'altra condizione.
L'information loss misura la perdita di informazione che si ha nel passaggio dalla tabella di macrodati originale a quella effettivamente rilasciata.
Chi protegge i dati dovrebbe sapere quale sarà l'uso che ne verrà fatto per fare il miglior lavoro possibile di protezione. La tecnica di protezione utilizzata è un informazione che può essere tranquillamente rilasciata, viceversa i valori dei parametri sono dati confidenziali. E' come in crittografia, tengo segreta la chiave, non l'algoritmo.
Microdati
Definizione
I microdati sono la sorgente da cui sono stati calcolati i macrodati, ovvero la tabella pura che ho raccolto e che contiene una riga
per ogni paziente. Per questo motivo sono molto più precisi.
Ultimamente sono molto più utilizzati dei macrodati perchè forniscono maggiore facilità di elaborazione e utilizzo/analisi, ma di contro sono molto più difficili da proteggere.
La tupla contiene solo i miei dati, quindi se uno scopre che una data tupla corrisponde a me ha a disposizione tutte le informazioni su di me.
Protezione dei Microdati
La prima cosa da fare è quindi anonimizzare i dati, ma questo molto spesso non è sufficiente. Altri dati (es: cap, razza, data di nascita, sesso) possono consentire di risalire in modo univoco ad un individuo; questi dati sono detti quasi-identifier. Con solo razza, data di nascita, codice postale circa il 60% della popolazione USA è individuabile univocamente.
Le tecniche di protezione si concentrano su questi attributi, attraverso due strategie:
- ridurre il contenuto informativo
- cambiare i dati, introducendo rumore o costruendo addirittura una base di dati sintetica
Quattro step di protezione:
- Sampling: non rilascio tutta la tabella, ma solo una determinata percentuale scegliendo il campione in modo opportuno
- Rimuovere gli indentifiers: esempio elimino il codice fiscale
- Limitare i dettagli geografici: in questo modo è più facile limitare l'univocità. Attenzione: non solo il cap è utile, anche metadati tipo temperatura media, piovosità, ecc...
- Limitare il numero di variabili: limito il numero di attributi che sto rilasciando (che potrebbero essere usati in un join), mantenendo solo quelli rilevanti per l'analisi
Per proteggere i microdati esistono diverse tecniche che possono essere divise in due categorie:
- tecniche di masking: non rilasciare una parte di dati. Li cambio, cancello parte di info, ecc ma rilascio i dati veri
- generazione di dati sintetici (Synthetic techniques): i dati raccolti li tengo al sicuro e rilascio solo i dati sintetici che ho generato
Le due tecniche producono ovviamente risultati diversi sia per utilità, sia per perdita di informazione, sia dal punto di vista di chi li riceve, che deve comunque sapere quale tecnica è stata usata. La decisione sulla tecnica da applicare dipende in primo luogo dal tipo di attributo su cui devo applicarla.
Un attributo può essere o continuo o categorico. Gli attributi continui sono quelli matematici o su cui si possono eseguire operatori matematici, esempio data di nascita, temperatura, ecc. Gli attributi categorici non hanno alcun tipo di operatore definito sul dominio, esempio stato civile, razza, sesso, ecc.
Tecniche di masking
Si distinguono i due categorie:
- non perturbative che non alterano i dati originali, ma alcuni dati sono eliminati e/o alcuni dettagli sono omessi
- perturbative che modificano i dati applicando trasformazioni.
Si possono applicare tecniche diverse sui diversi attributi di una stessa tabella.
Alcune tecniche non perturbative sono:
- Sampling
- Local Suppression: rimuove il valore di un attributo
- Global Recoding: prendo il dominio di un attributo, lo divido in gruppi e assegno un etichetta ad ogni gruppo. Nella tabella che rilascio al posto dell'attributo originale metto l'etichetta
- Top-coding: per ogni attributo da proteggere qualsiasi valore più grande di un valore definito viene rimpiazzato con il top-code. Es: sopra 500€ non rilascio nulla, quindi se un attributo vale 1000€ lo sostituisco con un etichetta uguale per tutti
- Bottom-coding: come sopra, ma per valori bassi
- Generalization: rappresento il valore di un attributo usando un valore più generico. Ad esempio generalizzando la data di nascita potrei rilasciare solo mese anno, o solo anno. Si basa su una gerarchia costruita sul dominio dei dati: al livello d0 ho tutto il dato, al livello d1 ho solo mese/anno, al livello d2 solo anno, al livello d3 non ho nulla
Alcune tecniche perturbative sono:
- Random noise: si sceglie una funzione rumore adeguatamente definita e parametrizzata sul dominio dell'attributo e la applico ai valori prima di rilasciarli
- Swapping: non cancella i dati ma li cambia, molto simile al confidentiality edit
- Micro-aggragation: invece di rilasciare il valore del reddito di tutta la tabella, calcolo la media per ogni città e poi a tutti gli abitanti anzichè il valore ci metto la media. L'importante è che i gruppi siano piccoli ma non troppo
Synthetic techniques
Il metodo migliore per proteggere i dati è non pubblicarli, quindi per poterli utilizzare prendo la tabella e io che l'ho raccolta costruisco delle statistiche di interesse sulla tabella. Sulla base di questi risultati costruisco una tabella sintetica che rispetti le caratteristiche ricavate. Anche se qualcuno dovesse individuare un'associazione con un individuo c'è totale incertezza!
Problema: devo sapere quali sono le caratteristiche statistiche importanti che devono essere conservate nei dati, altrimenti andrà perso nella tabella sintetica.
Non mi interessa spendere tanto per proteggere i microdati perchè vengono rilasciati una volta sola. Rilasciando due o più versioni un attaccante che le combina insieme ottiene una tabella risultante più precisa!