Utilizzare la 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 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 viene utilizzata normalmente per condividere dati e consentire inferenze su gruppi di persone, impedendo comunque ad altri di apprendere informazioni su un individuo.

La privacy differenziale è utile:

  • In cui 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 in un piccolo ristorante in una particolare serata. Molti ospiti arrivano alle 19:00 e il ristorante è completamente vuoto all'1:00:

Il grafico mostra l'affluenza di una piccola area di sosta mappando i visitatori in ore specifiche della giornata.

Questo grafico sembra utile, ma c'è un problema. Quando arriva un nuovo ospite, questo dato viene immediatamente rivelato dal grafico a barre. Nel grafico seguente è chiaro che è arrivato un nuovo ospite, intorno all'1:00:

Il grafico mostra l'arrivo di un valore anomalo.

Mostrare questo dettaglio non è ideale dal punto di vista della privacy, in quanto le statistiche anonimizzate non devono rivelare i contributi individuali. Se metti i due grafici uno accanto all'altro, la differenza è ancora più evidente: il grafico a barre arancione ha un ospite in più che è arrivato intorno all'1:00:

Il confronto dei grafici evidenzia un contributo individuale.

Anche in questo caso, non è il massimo. Per evitare questo tipo di problema di privacy, puoi aggiungere rumore casuale ai grafici a barre utilizzando la privacy differenziale. Nel seguente grafico comparativo, 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. 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 differenzialmente private. Quando viene eseguita la query, vengono eseguite le seguenti operazioni:

  1. Calcola le aggregazioni per entità per ogni gruppo se i gruppi vengono specificati con una clausola GROUP BY. Limita il numero di gruppi a cui ogni entità può contribuire, in base al parametro di privacy differenziale max_groups_contributed.
  2. Limita ogni contributo aggregato per entità in modo che rientri nei limiti di blocco. Se i limiti di troncamento non sono 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 per ogni gruppo. La scala del rumore casuale è una funzione di tutti i limiti fissati e dei parametri della privacy.
  5. Viene conteggiato il numero di entità con rumore per ogni gruppo ed eliminati i gruppi con poche entità. Un conteggio delle entità con rumore contribuisce 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 su che cos'è la privacy differenziale e sui suoi casi d'uso, consulta i seguenti articoli:

Produrre una query con privacy differenziale valida

Perché la query con privacy differenziale sia valida, devono essere soddisfatte le seguenti regole:

Definire una colonna unità privacy

Un'unità di privacy è l'entità di un set di dati che viene protetta utilizzando la privacy differenziale. Un'entità può essere una persona, un'azienda, una sede 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 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;

Rimuovere il rumore da una query con privacy differenziale

Nel riferimento "Sintassi della query", vedi Rimuovi rumore.

Aggiungere rumore a una query con privacy differenziale

Nella sezione "Sintassi della query", vedi Aggiungere rumore.

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

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

Limitazioni

Questa sezione descrive le limitazioni della privacy differenziale.

Implicazioni per il rendimento della privacy differenziale

Le query con privacy differenziale vengono eseguite più lentamente rispetto alle query standard perché viene eseguita l'aggregazione per entità e viene applicata la limitazione max_groups_contributed. La limitazione dei limiti di contribuzione 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 con 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 dell'unità di privacy.

Limitazioni implicite del riquadro di selezione per i set di dati di piccole dimensioni

Il bounding implicito funziona meglio se calcolato utilizzando set di dati di grandi dimensioni. Il bounding implicito può non riuscire con set di dati che contengono un numero ridotto di unità di privacy, senza restituire risultati. Inoltre, il bounding implicito su un set di dati con un numero ridotto di unità di privacy può bloccare una gran parte dei non outlier, il che comporta aggregazioni sottostimate e risultati più alterati dal blocco che dal rumore aggiunto. I set di dati con un numero ridotto di unità di privacy o con partizioni sottili devono utilizzare il bloccaggio esplicito anziché quello implicito.

Vulnerabilità della privacy

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

Limitazioni delle garanzie di 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 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 riordino. Queste vulnerabilità sono particolarmente preoccupanti quando un malintenzionato può controllare alcuni contenuti di un set di dati o l'ordine dei contenuti in un set di dati.

L'aggiunta di rumore con privacy differenziale ai tipi di dati in virgola mobile è soggetta 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 di esecuzione di una query.

Classificazione errata

La creazione di una query di privacy differenziale presuppone che i dati siano in una struttura nota e comprensibile. Se applichi la privacy differenziale agli identificatori sbagliati, ad esempio a uno che rappresenta un ID transazione anziché l'ID di una persona, 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.