Questo documento fornisce informazioni generali sulla privacy differenziale per BigQuery. Per la sintassi, consulta la clausola della privacy differenziale. Per un elenco delle funzioni che puoi utilizzare con questa sintassi, consulta funzioni aggregate private differenziali.
Che cos'è la privacy differenziale?
La privacy differenziale è uno standard per il calcolo dei dati che limita la informazioni personali rivelate da un output. La privacy differenziale è comunemente utilizzata per condividere dati e consentire inferenze su gruppi di persone impedendo al contempo che qualcuno possa acquisire informazioni su una persona.
La privacy differenziale è utile:
- In caso di rischio di reidentificazione.
- Per quantificare il compromesso tra rischio e utilità analitica.
Per comprendere meglio la privacy differenziale, esaminiamo un semplice esempio.
Questo grafico a barre mostra l'affollamento di un piccolo ristorante in un particolare sera. Molti ospiti vengono alle 19 e il ristorante è completamente vuoto alle 01:00:
Questo grafico sembra utile, ma c'è un problema. Quando arriva un nuovo ospite, questo viene immediatamente rivelato dal grafico a barre. Nel grafico seguente, è chiaro che c'è un nuovo ospite e che è arrivato all'incirca alle 01:00:
Mostrare questi dettagli non è molto efficace dal punto di vista della privacy, in quanto anonimizzati le statistiche non devono rivelare i singoli contributi. Inserire questi due grafici uno accanto all'altro lo rende ancora più evidente: il grafico a barre arancioni ha una ospite che è arrivato verso le 01:00:
Non è il massimo. Per evitare questo tipo di problemi di privacy, puoi aggiungere il rumore nei grafici a barre usando la privacy differenziale. Nel seguente grafico comparativo, i risultati sono anonimizzati e non rivelano più le informazioni contributi.
Come funziona la privacy differenziale nelle query
L'obiettivo della privacy differenziale è mitigare rischio di divulgazione: il rischio che qualcuno possa apprendere informazioni su un'entità un set di dati. La privacy differenziale bilancia la necessità di salvaguardare la privacy con la necessità di un'utilità analitica statistica. Man mano che la privacy aumenta, l'utilità dell'analisi statistica diminuisce e viceversa.
Con GoogleSQL per BigQuery, puoi trasformare i risultati di una query con aggregazioni private differenziali. Quando viene eseguita, la query esegue quanto segue:
- Calcola le aggregazioni per entità per ogni gruppo se i gruppi sono specificati con
una clausola
GROUP BY
. Limita il numero di gruppi a cui ogni entità può contribuire in base al parametromax_groups_contributed
della privacy differenziale. - Blocca ciascun contributo aggregato per entità in modo che rientri limiti di blocco. Se i limiti di blocco non sono specificati, vengono calcolate implicitamente in modo differenziato e privato.
- Aggrega i contributi aggregati per entità bloccati per ogni gruppo.
- Aggiunge rumore al valore aggregato finale per ciascun gruppo. La scala del rumore casuale è una funzione di tutti i limiti fissati e dei parametri della privacy.
- Calcola un conteggio delle entità rumoroso per ogni gruppo ed elimina i gruppi con poche entità. Un conteggio di entità rumoroso aiuta a eliminare un set non deterministico di gruppi.
Il risultato finale è un set di dati in cui ogni gruppo ha risultati aggregati sul rumore e piccoli gruppi sono stati eliminati.
Per ulteriori informazioni sulla privacy differenziale e sui relativi casi d'uso, consulta i seguenti articoli:
- Un'introduzione alla privacy differenziale chiara e non tecnica
- SQL con privacy differenziale con contributo dell'utente limitato
- Privacy differenziale su Wikipedia
Produzione di una query differenzialmente privata valida
Affinché la query con privacy differenziata venga applicata, devono essere soddisfatte le seguenti regole validità:
- È stata definita una colonna unità privacy.
- L'elenco
SELECT
contiene una clausola di privacy differenziale. - Solo le funzioni aggregate con privacy differenziale sono nell'elenco
SELECT
con la clausola con privacy differenziale.
Definisci una colonna per l'unità privacy
Per unità privacy si intende l'entità in un set di dati che viene protetto, utilizzando della privacy differenziale. Un'entità può essere una persona fisica, un'azienda, una località o qualsiasi colonna che scegli.
Una query con privacy differenziale deve includere una sola colonna unità privacy. Una colonna unità privacy è un identificatore univoco di una unità privacy e possono esistere all'interno di più gruppi. Poiché sono supportati più gruppi, il tipo di dati per la colonna unità privacy deve essere aggregabile.
Puoi definire una colonna unità privacy nella clausola OPTIONS
di una clausola di privacy differenziale con l'identificatore univoco privacy_unit_column
.
Negli esempi seguenti, una colonna unità privacy viene aggiunta a una clausola di privacy differenziale. id
rappresenta una colonna che ha origine da un
chiamata students
.
SELECT WITH DIFFERENTIAL_PRIVACY
OPTIONS (epsilon=10, delta=.01, privacy_unit_column=id)
item,
COUNT(*, contribution_bounds_per_group=>(0, 100))
FROM students;
SELECT WITH DIFFERENTIAL_PRIVACY
OPTIONS (epsilon=10, delta=.01, privacy_unit_column=members.id)
item,
COUNT(*, contribution_bounds_per_group=>(0, 100))
FROM (SELECT * FROM students) AS members;
Rimuovi il rumore da una query con privacy differenziata
Nella sezione di riferimento "Sintassi delle query", consulta Rimuovere il rumore.
Aggiungere rumore a una query con privacy differenziale
Nella sezione "Sintassi delle query" riferimento, consulta Aggiungere rumore.
Limita i gruppi in cui può esistere un ID unità privacy
Nella sezione "Sintassi delle query" riferimento, consulta Limita i gruppi in cui può esistere un ID unità privacy.
Limitazioni
Questa sezione descrive le limitazioni della privacy differenziale.
Implicazioni sul rendimento della privacy differenziale
Le query differenzialmente private vengono eseguite più lentamente rispetto a quelle standard
perché viene eseguita l'aggregazione per entità e il limite di max_groups_contributed
. Limitare i limiti di contributo può contribuire a migliorare il rendimento delle query con privacy differenziale.
I profili del rendimento delle seguenti query non sono simili:
SELECT
WITH DIFFERENTIAL_PRIVACY OPTIONS(epsilon=1, delta=1e-10, privacy_unit_column=id)
column_a, COUNT(column_b)
FROM table_a
GROUP BY column_a;
SELECT column_a, COUNT(column_b)
FROM table_a
GROUP BY column_a;
La differenza nel rendimento è che un numero aggiuntivo con un livello di granularità più fine viene eseguito private in modo differenziato, perché anche l'aggregazione per entità deve essere in esecuzione.
I profili di rendimento delle seguenti query dovrebbero essere simili, anche se la query differenzialmente privata è leggermente più lenta:
SELECT
WITH DIFFERENTIAL_PRIVACY OPTIONS(epsilon=1, delta=1e-10, privacy_unit_column=id)
column_a, COUNT(column_b)
FROM table_a
GROUP BY column_a;
SELECT column_a, id, COUNT(column_b)
FROM table_a
GROUP BY column_a, id;
La query con privacy differenziale è più lenta perché ha un numero elevato di valori distinti per la colonna dell'unità di privacy.
Limitazioni dei limiti impliciti per set di dati di piccole dimensioni
Il confine implicito funziona al meglio se calcolato utilizzando set di dati di grandi dimensioni. Il vincolo implicito può non riuscire con set di dati che contengono un numero ridotto di unità di privacy, senza restituire risultati. Inoltre, il vincolo implicito in un set di dati con un numero ridotto di unità di privacy può limitare una grande parte di valori non outlier, con conseguente sottostima delle aggregazioni e risultati alterati più dal vincolo che dall'aggiunta di rumore. I set di dati che hanno un numero ridotto di unità di privacy o sono suddivisi in modo sottile devono utilizzare il clamping esplicito anziché implicito.
Vulnerabilità di privacy
Qualsiasi algoritmo della privacy differenziale, incluso questo, comporta il rischio di dati privati quando un analista agisce in malafede, soprattutto quando statistiche di base come le somme, a causa di limiti aritmetici.
Limitazioni delle garanzie sulla privacy
Mentre la privacy differenziale di BigQuery applica algoritmo della privacy differenziale, non crea una per quanto riguarda le proprietà della privacy del set di dati risultante.
Errori di runtime
Un analista che agisce in malafede e che ha la possibilità di scrivere query o controllare i dati di input potrebbe attivare un errore di runtime sui dati privati.
Rumore in virgola mobile
Prima di utilizzare la privacy differenziale, è necessario prendere in considerazione le vulnerabilità relative agli arrotondamenti, agli arrotondamenti ripetuti e agli attacchi di ordinamento. Queste vulnerabilità sono particolarmente preoccupanti quando un aggressore può controllare alcuni dei contenuti di un set di dati o l'ordine dei contenuti di un set di dati.
Le aggiunte di rumore con privacy differenziale ai tipi di dati in virgola mobile sono soggette alle vulnerabilità descritte in Widespread Underestimation of Sensitivity in Differentially Private Libraries and How to Fix It. Le aggiunte di rumore ai tipi di dati interi non sono soggette alle vulnerabilità descritte nel documento.
Rischi di attacchi di temporizzazione
Un analista che agisce in malafede potrebbe eseguire una query sufficientemente complessa per fare un'inferenza sui dati di input in base alla durata dell'esecuzione di una query.
Classificazione errata
La creazione di una query sulla privacy differenziale presuppone che i dati siano in una struttura ben nota e compresa. Se applichi la privacy differenziale sul di Compute Engine, ad esempio uno che rappresenta un ID transazione anziché un l'ID della persona, potresti esporre dati sensibili.
Se hai bisogno di aiuto per comprendere i dati, valuta usando servizi e strumenti come i seguenti:
Prezzi
Non sono previsti costi aggiuntivi per l'uso della privacy differenziale, ma si applicano i prezzi di BigQuery standard per l'analisi.