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 private differenziali.

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 al contempo che qualcuno possa acquisire informazioni su un individuo.

La privacy differenziale è utile:

  • Se esiste il 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 il livello di attività di un piccolo ristorante in una determinata serata. Molti ospiti arrivano alle 19:00 e il ristorante è completamente vuoto alle 01:00:

Il grafico mostra il livello di affluenza di un piccolo ristoro mappando i visitatori in ore specifiche del giorno.

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

Il grafico mostra l'arrivo di valori anomali.

La visualizzazione di questo dettaglio non è ottimale dal punto di vista della privacy, in quanto le statistiche anonimizzate non devono rivelare i contributi individuali. Mettere questi due grafici affiancati lo rende ancora più evidente: il grafico a barre arancione mostra un ospite in più arrivato intorno all'1:00.

Il confronto dei grafici mette in evidenza il contributo di un singolo utente.

Non è il massimo. Per evitare questo tipo di problema di privacy, puoi aggiungere rumore random ai grafici a barre utilizzando 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

Lo scopo della privacy differenziale è mitigare il rischio di divulgazione, ossia 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 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:

  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 ogni entità può contribuire in base al parametro max_groups_contributed della privacy differenziale.
  2. Limita ogni contributo aggregato per entità in modo che rientri nei limiti di blocco. Se i limiti di blocco non sono specificati, vengono calcolati implicitamente in modo differenziale.
  3. Aggrega i contributi aggregati per entità bloccati 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 consente di eliminare un insieme non deterministico di gruppi.

Il risultato finale è un set di dati in cui ogni gruppo ha risultati aggregati sul rumore e i gruppi piccoli sono stati eliminati.

Per ulteriori informazioni sulla privacy differenziale e sui relativi casi d'uso, consulta i seguenti articoli:

Genera una query con privacy differenziale valida

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

Definire una colonna unità privacy

Un'unità di privacy è l'entità in un set di dati che viene protetta utilizzando la 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 dell'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 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 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

Nella sezione di riferimento "Sintassi delle query", consulta Rimuovere il rumore.

Aggiungere rumore a una query con privacy differenziale

Nella sezione di riferimento "Sintassi delle query", consulta Aggiungere rumore.

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

Nella sezione di riferimento "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 sul 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. 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;

La ragione della differenza di rendimento è che per le query con privacy differenziale viene eseguito un livello aggiuntivo di raggruppamento con una granularità più fine, poiché 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 è più lenta perché ha un numero elevato di valori distinti per la colonna dell'unità di privacy.

Limitazioni di delimitazione implicita 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à relative alla privacy

Qualsiasi algoritmo di privacy differenziale, incluso questo, corre il rischio di una утечка di dati personali quando un analista agisce in malafede, in particolare durante il calcolo di statistiche di base come le somme, a causa di limitazioni aritmetiche.

Limitazioni delle garanzie sulla privacy

Sebbene la privacy differenziale di BigQuery applichi l'algoritmo di privacy differenziale, non fornisce alcuna garanzia in merito alle 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 a 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 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 con privacy differenziale ai tipi di dati a 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 agli identificatori sbagliati, ad esempio uno che rappresenta un ID transazione anziché un ID di un privato, potresti esporre dati sensibili.

Se hai bisogno di aiuto per comprendere i tuoi dati, ti consigliamo di utilizzare servizi e strumenti come:

Prezzi

L'utilizzo della privacy differenziale non comporta costi aggiuntivi, ma si applicano i prezzi di BigQuery standard per l'analisi.