Usa privacy differenziale

Questo documento fornisce informazioni generali sulla privacy differenziale per BigQuery. Per la sintassi, consulta la clausola sulla privacy differenziale. Per un elenco delle funzioni che puoi utilizzare con questa sintassi, consulta Funzioni di aggregazione con privacy differenziata.

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 viene comunemente utilizzata per condividere i dati e per consentire inferenze su gruppi di persone, impedendo al contempo a qualcuno di apprendere informazioni su un individuo.

La privacy differenziale è utile:

  • In caso di rischio di reidentificazione.
  • Quantificare il compromesso tra rischio e utilità analitica.

Per comprendere meglio la privacy differenziale, diamo un'occhiata a un semplice esempio.

Questo grafico a barre mostra il livello di affollamento di un piccolo ristorante in una determinata sera. Molti ospiti arrivano alle 19:00 e il ristorante è completamente vuoto all'1:00:

Il grafico mostra l'affluenza di un piccolo riposo mappando i visitatori in specifiche ore della giornata.

Questo grafico sembra utile, ma c'è un problema. Quando arriva un nuovo ospite, questo dato viene subito rilevato dal grafico a barre. Nel grafico seguente, è chiaro che c'è un nuovo ospite, che è arrivato all'incirca alle 01:00.

Il grafico mostra gli arrivi anomali.

Mostrare questi dettagli non è un'ottima cosa dal punto di vista della privacy, perché le statistiche anonimizzate non devono rivelare i singoli contributi. L'accostamento di questi due grafici lo rende ancora più evidente: nel grafico a barre arancione c'è un ospite in più che è arrivato intorno all'1:00.

Il confronto tra grafici evidenzia un singolo contributo.

Ripeto, non è il massimo. Per evitare questo tipo di problemi di privacy, puoi aggiungere rumore casuale ai grafici a barre usando la privacy differenziale. Nel seguente grafico di confronto, i risultati sono anonimizzati e non rivelano più i singoli contributi.

La privacy differenziale viene applicata ai confronti.

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. Con l'aumento della privacy, l'utilità analitica statistica diminuisce e viceversa.

Con GoogleSQL per BigQuery, puoi trasformare i risultati di una query con aggregazioni private differenziate. Quando la query viene eseguita, viene eseguito quanto segue:

  1. 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 può contribuire ogni entità, in base al parametro di privacy differenziale max_groups_contributed.
  2. Fissa ogni contributo aggregato per entità in modo che rispetti i limiti di blocco. Se i limiti di blocco non vengono specificati, vengono calcolati implicitamente in modo differenzialmente privato.
  3. Aggrega i contributi aggregati bloccati per entità per ogni gruppo.
  4. Aggiunge rumore al valore aggregato finale di ogni gruppo. La portata del rumore casuale è una funzione di tutti i limiti e i parametri di privacy.
  5. Calcola il conteggio delle entità con rumore per ogni gruppo ed elimina i gruppi con poche entità. Un conteggio delle entità con rumore consente di 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 piccoli gruppi sono stati eliminati.

Per ulteriori informazioni su cos'è la privacy differenziale e i suoi casi d'uso, consulta i seguenti articoli:

Genera una query privata differenziata valida

Affinché una query con privacy differenziata sia valida, devono essere soddisfatte le seguenti regole:

Definisci una colonna unità di privacy

Per unità di privacy si intende l'entità in un set di dati che viene protetto utilizzando la privacy differenziale. Un'entità può essere un privato, un'azienda, una località o una colonna di tua scelta.

Una query con privacy differenziata deve includere una sola colonna di unità di privacy. Una colonna unità privacy è un identificatore univoco per un'unità di privacy e può esistere all'interno di più gruppi. Poiché sono supportati più gruppi, il tipo di dati per la colonna delle unità relative alla privacy deve essere raggruppabile.

Puoi definire una colonna di unità di privacy nella clausola OPTIONS di una clausola sulla privacy differenziale con l'identificatore univoco privacy_unit_column.

Nei seguenti esempi, viene aggiunta una colonna di unità di privacy a una clausola di privacy differenziale. id rappresenta una colonna che ha origine 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;

Rimuovi il rumore da una query privata in modo differenziato

Per il riferimento "Sintassi delle query", consulta Rimuovere il rumore.

Aggiungi rumore a una query con privacy differenziata

Per il riferimento "Sintassi delle query", consulta Aggiungere rumore.

Limita i gruppi in cui può esistere un ID unità di privacy

Nel riferimento "Sintassi delle query", consulta Limitare i gruppi in cui può esistere un ID unità di privacy.

Limitazioni

Questa sezione descrive i limiti della privacy differenziale.

Implicazioni del rendimento della privacy differenziale

Le query private diversamente vengono eseguite più lentamente rispetto alle query standard perché viene eseguita l'aggregazione per entità e viene applicato il limite max_groups_contributed. Limitare i limiti di contributo può aiutarti a migliorare le prestazioni delle query con privacy differenziata.

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 in termini di prestazioni è che viene eseguito un livello di raggruppamento aggiuntivo a granularità fine per le query private in modo differenziale, poiché è necessario eseguire anche l'aggregazione per entità.

I profili di prestazioni delle seguenti query dovrebbero essere simili, anche se la query privata in modo 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 differenziata esegue più lentamente perché ha un numero elevato di valori distinti per la colonna dell'unità di privacy.

Limitazioni di delimitazione implicite per set di dati di dimensioni ridotte

Il blocco implicito funziona al meglio quando viene calcolato utilizzando set di dati di grandi dimensioni. Il blocco implicito può non riuscire con i set di dati che contengono un numero ridotto di unità di privacy e non restituiscono risultati. Inoltre, i limiti impliciti su un set di dati con un numero ridotto di unità di privacy possono limitare un'ampia parte di elementi non anomali, generando aggregazioni e risultati con valori in difetto che vengono alterati più dal blocco che dall'aggiunta di rumore. I set di dati con un numero ridotto di unità di privacy o che sono partizionati in modo sottile dovrebbero utilizzare un blocco esplicito anziché implicito.

Vulnerabilità della privacy

Qualsiasi algoritmo di privacy differenziale, incluso questo, comporta il rischio di fuga di dati privati quando un analista agisce in malafede, soprattutto durante il calcolo di statistiche di base come le somme, a causa di limitazioni aritmetiche.

Limitazioni relative alle garanzie sulla privacy

Sebbene la privacy differenziale di BigQuery applichi l'algoritmo di privacy differenziale, non garantisce le proprietà di privacy del set di dati risultante.

Errori di runtime

Un analista che agisce in malafede con la capacità di scrivere query o controllare i dati di input potrebbe attivare un errore di runtime sui dati privati.

Rumore con rappresentazione in virgola mobile

Le vulnerabilità correlate ad attacchi di arrotondamento, arrotondamento ripetuto e riordinamento dell'ordine devono essere prese in considerazione prima di utilizzare la privacy differenziale. Queste vulnerabilità preoccupano soprattutto quando un utente malintenzionato può controllare alcuni dei contenuti di un set di dati o l'ordine dei contenuti in un set di dati.

Le aggiunte di rumore in modo differenziato privato nei tipi di dati in virgola mobile sono soggette alle vulnerabilità descritte in Sottostima diffusa della sensibilità nelle librerie differenziate private e come risolverlo. L'aggiunta di rumore nei tipi di dati interi non è soggetta alle vulnerabilità descritte nel documento.

Rischi di attacchi basati sulle tempistiche

Un analista che agisce in malafede potrebbe eseguire una query sufficientemente complessa da fare un'inferenza sui dati di input in base alla durata di esecuzione di una query.

Classificazione errata

La creazione di una query sulla privacy differenziale presuppone che i tuoi dati abbiano una struttura conosciuta e comprensibile. Se applichi la privacy differenziale agli identificatori sbagliati, ad esempio quello che rappresenta un ID transazione anziché l'ID di una persona, potresti compromettere i dati sensibili.

Se hai bisogno di aiuto per comprendere i tuoi dati, valuta la possibilità di utilizzare servizi e strumenti come

Prezzi

Non sono previsti costi aggiuntivi per l'utilizzo della privacy differenziale, ma si applicano i prezzi di BigQuery standard per l'analisi.