Usar privacidad diferencial

En este documento se proporciona información general sobre la privacidad diferencial en BigQuery. Para ver la sintaxis, consulta la cláusula de privacidad diferencial. Para ver una lista de las funciones que puede usar con esta sintaxis, consulte funciones de agregación con privacidad diferencial.

¿Qué es la privacidad diferencial?

La privacidad diferencial es un estándar para los cálculos de datos que limita la información personal que se revela en un resultado. La privacidad diferencial se usa habitualmente para compartir datos y permitir que se hagan inferencias sobre grupos de personas, al tiempo que se evita que alguien obtenga información sobre un individuo.

La privacidad diferencial es útil en los siguientes casos:

  • Cuando exista un riesgo de reidentificación.
  • Cuantificar el equilibrio entre el riesgo y la utilidad analítica.

Para entender mejor la privacidad diferencial, veamos un ejemplo sencillo.

Este gráfico de barras muestra la actividad de un pequeño restaurante en una noche concreta. Muchos clientes llegan a las 19:00 y el restaurante está completamente vacío a la 1:00:

El gráfico muestra la actividad de un pequeño restaurante al registrar a los visitantes a horas concretas del día.

Este gráfico parece útil, pero hay un inconveniente. Cuando llega un nuevo invitado, el gráfico de barras muestra este dato inmediatamente. En el siguiente gráfico, se ve claramente que hay un nuevo invitado y que llegó aproximadamente a la 1:00:

El gráfico muestra una llegada atípica.

Mostrar este detalle no es una buena práctica desde el punto de vista de la privacidad, ya que las estadísticas anonimizadas no deberían revelar contribuciones individuales. Si ponemos los dos gráficos uno al lado del otro, se hace aún más evidente: el gráfico de barras naranja tiene un invitado más que ha llegado alrededor de la 1:00:

La comparación de gráficos destaca una contribución individual.

De nuevo, no es lo ideal. Para evitar este tipo de problema de privacidad, puedes añadir ruido aleatorio a los gráficos de barras mediante la privacidad diferencial. En el siguiente gráfico comparativo, los resultados se han anonimizado y ya no muestran las contribuciones individuales.

La privacidad diferencial se aplica a las comparaciones.

Cómo funciona la privacidad diferencial en las consultas

El objetivo de la privacidad diferencial es reducir el riesgo de que se revelen datos y alguien pueda obtener información sobre una entidad de un conjunto de datos. La privacidad diferencial equilibra la necesidad de proteger la privacidad con la necesidad de utilidad analítica estadística. A medida que aumenta la privacidad, disminuye la utilidad analítica estadística y viceversa.

Con GoogleSQL para BigQuery, puedes transformar los resultados de una consulta con agregaciones con privacidad diferencial. Cuando se ejecuta la consulta, se hace lo siguiente:

  1. Calcula las agregaciones por entidad de cada grupo si los grupos se especifican con una cláusula GROUP BY. Limita el número de grupos a los que puede contribuir cada entidad en función del parámetro de privacidad diferencial max_groups_contributed.
  2. Limita la contribución agregada de cada entidad para que esté dentro de los límites de la limitación. Si no se especifican los límites de acotación, se calculan implícitamente de forma diferencialmente privada.
  3. Agrega las contribuciones agregadas limitadas por entidad de cada grupo.
  4. Añade ruido al valor agregado final de cada grupo. La escala del ruido aleatorio es una función de todos los umbrales de contención y los parámetros de privacidad.
  5. Calcula el recuento de entidades con ruido por cada grupo y elimina los grupos que tienen pocas entidades. El recuento de entidades ruidosas ayuda a eliminar un conjunto no determinista de grupos.

El resultado final es un conjunto de datos en el que cada grupo tiene resultados agregados con ruido y del que se han eliminado los grupos pequeños.

Para obtener más información sobre qué es la privacidad diferencial y sus casos prácticos, consulta los siguientes artículos:

Generar una consulta con privacidad diferencial válida

Para que una consulta con privacidad diferencial sea válida, se deben cumplir las siguientes reglas:

Definir una columna de unidad de privacidad

Una unidad de privacidad es la entidad de un conjunto de datos que se protege mediante privacidad diferencial. Una entidad puede ser una persona, una empresa, una ubicación o cualquier columna que elijas.

Una consulta con privacidad diferencial debe incluir una y solo una columna de unidad de privacidad. Una columna de unidad de privacidad es un identificador único de una unidad de privacidad y puede existir en varios grupos. Como se admiten varios grupos, el tipo de datos de la columna de unidad de privacidad debe ser agrupable.

Puede definir una columna de unidad de privacidad en la cláusula OPTIONS de una cláusula de privacidad diferencial con el identificador único privacy_unit_column.

En los siguientes ejemplos, se añade una columna de unidad de privacidad a una cláusula de privacidad diferencial. id representa una columna que procede de una tabla llamada 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;

Eliminar el ruido de una consulta con privacidad diferencial

En la referencia "Sintaxis de consulta", consulta Eliminar ruido.

Añadir ruido a una consulta con privacidad diferencial

En la referencia "Sintaxis de consulta", consulta Añadir ruido.

Limitar los grupos en los que puede existir un ID de unidad de privacidad

En la referencia "Sintaxis de consulta", consulta Limitar los grupos en los que puede existir un ID de unidad de privacidad.

Limitaciones

En esta sección se describen las limitaciones de la privacidad diferencial.

Implicaciones de la privacidad diferencial en el rendimiento

Las consultas con privacidad diferencial se ejecutan más despacio que las consultas estándar porque se realiza una agregación por entidad y se aplica la max_groups_contributed limitación. Limitar los límites de contribución puede ayudar a mejorar el rendimiento de tus consultas con privacidad diferencial.

Los perfiles de rendimiento de las siguientes consultas no son similares:

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 diferencia de rendimiento se debe a que se realiza un nivel de agrupación adicional de mayor granularidad para las consultas con privacidad diferencial, ya que también se debe realizar la agregación por entidad.

Los perfiles de rendimiento de las siguientes consultas deberían ser similares, aunque la consulta con privacidad diferencial es ligeramente más 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 consulta con privacidad diferencial se ejecuta más lentamente porque tiene un número elevado de valores distintos en la columna de la unidad de privacidad.

Limitaciones implícitas de los límites de los conjuntos de datos pequeños

El acotamiento implícito funciona mejor cuando se calcula con conjuntos de datos grandes. El acotamiento implícito puede fallar con conjuntos de datos que contengan un número reducido de unidades de privacidad y no devolver ningún resultado. Además, la delimitación implícita de un conjunto de datos con un número reducido de unidades de privacidad puede restringir una gran parte de los valores no atípicos, lo que provoca que las agregaciones no se registren correctamente y que los resultados se vean más alterados por la restricción que por el ruido añadido. Los conjuntos de datos que tengan un número bajo de unidades de privacidad o que estén particionados de forma poco precisa deben usar el acotamiento explícito en lugar del implícito.

Vulnerabilidades de privacidad

Cualquier algoritmo de privacidad diferencial, incluido este, conlleva el riesgo de que se filtren datos privados cuando un analista actúa de mala fe, especialmente al calcular estadísticas básicas como sumas, debido a las limitaciones aritméticas.

Limitaciones de las garantías de privacidad

Aunque la privacidad diferencial de BigQuery aplica el algoritmo de privacidad diferencial, no garantiza las propiedades de privacidad del conjunto de datos resultante.

Errores de tiempo de ejecución

Un analista que actúe de mala fe y tenga la capacidad de escribir consultas o controlar los datos de entrada podría provocar un error de tiempo de ejecución en los datos privados.

Ruido de punto flotante

Antes de usar la privacidad diferencial, se deben tener en cuenta las vulnerabilidades relacionadas con el redondeo, el redondeo repetido y los ataques de reordenación. Estas vulnerabilidades son especialmente preocupantes cuando un atacante puede controlar parte del contenido de un conjunto de datos o el orden del contenido de un conjunto de datos.

Las adiciones de ruido con privacidad diferencial en tipos de datos de coma flotante están sujetas a las vulnerabilidades descritas en Widespread Underestimation of Sensitivity in Differentially Private Libraries and How to Fix It (Subestimación generalizada de la sensibilidad en bibliotecas con privacidad diferencial y cómo solucionarlo). Las adiciones de ruido en los tipos de datos enteros no están sujetas a las vulnerabilidades descritas en el documento.

Riesgos de ataques de tiempo

Un analista que actúe de mala fe podría ejecutar una consulta lo suficientemente compleja como para inferir datos de entrada basándose en la duración de la ejecución de la consulta.

Clasificación errónea

Para crear una consulta de privacidad diferencial, se presupone que los datos tienen una estructura conocida y bien definida. Si aplica la privacidad diferencial a los identificadores incorrectos, como uno que represente un ID de transacción en lugar del ID de una persona, podría exponer datos sensibles.

Si necesitas ayuda para entender tus datos, puedes usar servicios y herramientas como los siguientes:

Precios

No hay ningún coste adicional por usar la privacidad diferencial, pero se aplican los precios estándar de BigQuery para los análisis.