Questo documento fornisce informazioni generali sulla privacy differenziale per BigQuery. Per la sintassi, consulta la clausola di privacy differenziale. Per un elenco delle funzioni che puoi utilizzare con questa sintassi, consulta Funzioni aggregate con privacy differenziale.
Che cos'è la privacy differenziale?
La privacy differenziale è uno standard per i calcoli sui dati che limita le informazioni personali rivelate da un output. La privacy differenziale è di uso comune per condividere i dati e consentire inferenze su gruppi di persone, impedendo al contempo che qualcuno possa acquisire informazioni su un individuo.
La privacy differenziale è utile:
- Quando esiste un rischio di reidentificazione.
- Per quantificare il compromesso tra rischio e utilità analitica.
Per comprendere meglio la privacy differenziale, vediamo un semplice esempio.
Questo grafico a barre mostra l'affluenza di un piccolo ristorante in una particolare serata. Molti ospiti arrivano alle 19:00 e il ristorante è completamente vuoto all'1:00:
Questo grafico sembra utile, ma c'è un problema. Quando arriva un nuovo ospite, questo fatto viene immediatamente rivelato dal grafico a barre. Nel grafico seguente, è chiaro che c'è un nuovo ospite e che è arrivato intorno all'1:00:
Mostrare questo dettaglio non è l'ideale dal punto di vista della privacy, in quanto le statistiche anonimizzate non devono rivelare i contributi individuali. Se metti questi due grafici uno accanto all'altro, il problema diventa ancora più evidente: il grafico a barre arancione ha un ospite in più arrivato intorno all'1:00:
Anche in questo caso, non è l'ideale. Per evitare questo tipo di problema di privacy, puoi aggiungere rumore casuale ai grafici a barre utilizzando la privacy differenziale. Nel seguente grafico di confronto, i risultati sono anonimizzati e non rivelano più i contributi individuali.
Come funziona la privacy differenziale nelle query
L'obiettivo della privacy differenziale è mitigare il rischio di divulgazione, ovvero il rischio che qualcuno possa ottenere informazioni su un'entità in un set di dati. La privacy differenziale bilancia la necessità di salvaguardare la privacy con la necessità di utilità analitica statistica. Man mano che la privacy aumenta, l'utilità analitica statistica diminuisce e viceversa.
Con GoogleSQL per BigQuery, puoi trasformare i risultati di una query con aggregazioni con privacy differenziale. Quando la query viene eseguita, esegue le seguenti operazioni:
- 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 parametro di privacy differenzialemax_groups_contributed. - Limita il contributo aggregato di ogni entità in modo che rientri nei limiti di limitazione. Se i limiti di limitazione non sono specificati, vengono calcolati implicitamente in modo con privacy differenziale.
- Aggrega i contributi aggregati per entità limitati per ogni gruppo.
- Aggiunge rumore al valore aggregato finale per ogni gruppo. La portata del rumore casuale è una funzione di tutti i limiti e i parametri di privacy limitati.
- Calcola un conteggio delle entità con rumore per ogni gruppo ed elimina i gruppi con poche entità. Un conteggio delle entità con rumore aiuta a eliminare un insieme non deterministico di gruppi.
Il risultato finale è un set di dati in cui ogni gruppo dispone di risultati aggregati sul rumore, mentre i gruppi piccoli vengono eliminati.
Per ulteriori informazioni sul contesto della privacy differenziale e sui relativi casi d'uso, consulta i seguenti articoli:
- A friendly, non-technical introduction to differential privacy
- Differentially private SQL with bounded user contribution
- Differential privacy on Wikipedia
Generare una query con privacy differenziale valida
Affinché la query con privacy differenziale sia valida, devono essere soddisfatte le seguenti regole:
- È definita una colonna unità privacy.
- L'elenco
SELECTcontiene una clausola di privacy differenziale. - Nell'elenco
SELECTcon la clausola di privacy differenziale sono presenti solo funzioni aggregate con privacy differenziale.
Definire una colonna unità privacy
Un'unità privacy è l'entità in un set di dati che viene protetta utilizzando la privacy differenziale. Un'entità può essere un individuo, un'azienda, una località o qualsiasi colonna tu scelga.
Una query con privacy differenziale deve includere una e una sola colonna unità privacy. Una colonna unità privacy è un identificatore univoco per un'unità privacy e può esistere in più gruppi. Poiché sono supportati più gruppi, il tipo di dati per la colonna unità privacy deve essere raggruppabile.
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 proviene da una tabella denominata 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;
Rimuovere il rumore da una query con privacy differenziale
Nel riferimento "Sintassi della query", consulta Rimuovere il rumore.
Aggiungere rumore a una query con privacy differenziale
Nel riferimento "Sintassi della query", consulta Aggiungere rumore.
Limitare i gruppi in cui può esistere un ID unità privacy
Nel riferimento "Sintassi della query", consulta Limitare 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 con privacy differenziale vengono eseguite più lentamente delle query standard perché viene eseguita l'aggregazione per entità e viene applicata la limitazione max_groups_contributed. Limitare i limiti di contributo può contribuire a migliorare il rendimento delle query con privacy differenziale.
I profili di 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;
Il motivo della differenza di rendimento è che per le query con privacy differenziale viene eseguito un livello di raggruppamento aggiuntivo a granularità più fine, perché deve essere eseguita anche l'aggregazione per entità.
I profili di rendimento delle seguenti query dovrebbero essere simili, anche se la query con privacy differenziale è 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 viene eseguita più lentamente perché ha un numero elevato di valori distinti per la colonna unità privacy.
Limitazioni di limitazione implicita per set di dati di piccole dimensioni
La limitazione implicita funziona meglio se calcolata utilizzando set di dati di grandi dimensioni. La limitazione implicita può non riuscire con i set di dati che contengono un numero ridotto di unità privacy, senza restituire risultati. Inoltre, la limitazione implicita su un set di dati con un numero ridotto di unità privacy può limitare una parte significativa di valori non anomali, portando a aggregazioni sottostimate e risultati che vengono modificati più dalla limitazione che dal rumore aggiunto. I set di dati con un numero ridotto di unità privacy o con partizionamento sottile devono utilizzare la limitazione esplicita anziché quella implicita.
Vulnerabilità di privacy
Qualsiasi algoritmo di privacy differenziale, incluso questo, comporta il rischio di una fuga di dati privati quando un analista agisce in malafede, soprattutto quando calcola statistiche di base come le somme, a causa delle limitazioni aritmetiche.
Limitazioni delle garanzie di privacy
Sebbene la privacy differenziale di BigQuery applichi l' algoritmo di privacy differenziale, non fornisce alcuna garanzia in merito alle proprietà di privacy del set di dati risultante.
Errori di runtime
Un analista che agisce in malafede con 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 considerare le vulnerabilità relative all'arrotondamento, all'arrotondamento ripetuto e agli attacchi di riordinamento. Queste vulnerabilità sono particolarmente preoccupanti quando un aggressore può controllare alcuni contenuti di un set di dati o l'ordine dei contenuti in un set di dati.
Le aggiunte di rumore con privacy differenziale sui tipi di dati in rappresentazione 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 sui tipi di dati interi non sono soggette alle vulnerabilità descritte nel documento.
Rischi di attacchi temporali
Un analista che agisce in malafede potrebbe eseguire una query sufficientemente complessa per fare un'inferenza sui dati di input in base alla durata di esecuzione di una query.
Classificazione errata
La creazione di una query con privacy differenziale presuppone che i dati siano in una struttura nota e compresa. Se applichi la privacy differenziale agli identificatori errati, ad esempio a uno che rappresenta un ID transazione anziché l'ID di un individuo, potresti esporre dati sensibili.
Se hai bisogno di aiuto per comprendere i tuoi dati, valuta la possibilità di utilizzare servizi e strumenti come i seguenti:
Prezzi
L'utilizzo della privacy differenziale non comporta costi aggiuntivi, ma si applicano i prezzi standard di BigQuery per l'analisi.