Usar a privacidade diferencial

Neste documento, você encontra informações gerais sobre a privacidade diferencial do BigQuery. Para ver a sintaxe, consulte a cláusula de privacidade diferencial. Para uma lista de funções que você pode usar com essa sintaxe, consulte Funções de agregação diferencialmente particulares.

O que é privacidade diferencial?

A privacidade diferencial é um padrão para cálculos em dados que limita as informações pessoais reveladas por uma saída. A privacidade diferencial é normalmente usada para compartilhar dados e permitir inferências sobre grupos de pessoas, além de impedir que alguém aprenda informações sobre um indivíduo.

A privacidade diferencial é útil:

  • quando há risco de reidentificação;
  • quantificar a compensação entre risco e utilidade analítica;

para entender melhor a privacidade diferencial, vamos analisar um exemplo simples.

Este gráfico de barras mostra o movimento de um pequeno restaurante em uma noite específica. Muitos clientes chegam às 19h, e o restaurante fica completamente vazio à 1h da manhã:

O gráfico mostra a movimentação de um pequeno descanso com o mapeamento dos visitantes em horários específicos do dia.

Este gráfico parece útil, mas há um problema. Quando um novo cliente chega, esse fato é imediatamente revelado pelo gráfico de barras. No gráfico a seguir, fica claro que há um novo convidado e que ele chegou aproximadamente à 1h da manhã:

O gráfico mostra a chegada atípica.

Mostrar esse detalhe não é ótimo da perspectiva de privacidade, já que estatísticas anônimas não devem revelar contribuições individuais. Colocar esses dois gráficos lado a lado torna isso ainda mais aparente: o gráfico de barras laranja tem um convidado extra que chegou por volta da 1h:

A comparação de gráficos destaca uma contribuição individual.

Isso não é nada bom. Para evitar esse tipo de problema de privacidade, adicione ruído aleatório aos gráficos de barras usando a privacidade diferencial. No gráfico de comparação a seguir, os resultados são anônimos e não revelam mais contribuições individuais.

A privacidade diferencial é aplicada às comparações.

Como funciona a privacidade diferencial em consultas

O objetivo da privacidade diferencial é reduzir o risco de divulgação, ou seja, o risco de alguém descobrir informações sobre uma entidade em um conjunto de dados. A privacidade diferencial equilibra a necessidade de proteger a privacidade em relação à necessidade de utilidade analítica estatística. À medida que a privacidade aumenta, o utilitário de análise estatística diminui e vice-versa.

Com o GoogleSQL para BigQuery, é possível transformar os resultados de uma consulta com agregações particulares diferenciadas. Quando a consulta é executada, ela faz o seguinte:

  1. Calcula agregações por entidade para cada grupo se os grupos forem especificados com uma cláusula GROUP BY. Limita o número de grupos com que cada entidade pode contribuir, com base no parâmetro de privacidade diferencial max_groups_contributed.
  2. Limita cada contribuição agregada por entidade para estar dentro dos limites de limitação. Se os limites de limitação não forem especificados, eles serão calculados implicitamente de maneira particular diferenciada.
  3. Agrega as contribuições agregadas limitadas por entidade para cada grupo.
  4. Adiciona ruído ao valor agregado final de cada grupo. A escala de ruído aleatório é uma função de todos os limites fixos e parâmetros de privacidade.
  5. Calcula uma contagem de entidades com ruído para cada grupo e elimina grupos com poucas entidades. Uma contagem de entidades com ruído ajuda a eliminar um conjunto não determinístico de grupos.

O resultado final é um conjunto de dados em que cada grupo tem resultados agregados com ruído e pequenos grupos foram eliminados.

Para mais informações sobre o que é a privacidade diferencial e os casos de uso, consulte os seguintes artigos:

Produzir uma consulta particular diferenciada válida

As seguintes regras precisam ser atendidas para que a consulta particular diferenciada seja válida:

Definir uma coluna de unidade de privacidade

Uma unidade de privacidade é a entidade em um conjunto de dados que está sendo protegida, usando a privacidade diferencial. Uma entidade pode ser um indivíduo, uma empresa, um local ou qualquer coluna que você escolher.

Uma consulta particular diferenciada precisa incluir uma e apenas uma coluna de unidade de privacidade. A coluna de unidade de privacidade é um identificador exclusivo de uma unidade e pode existir em vários grupos. Como vários grupos são compatíveis, o tipo de dados da coluna de unidade de privacidade precisa ser agrupável.

É possível definir uma coluna de unidade de privacidade na cláusula OPTIONS de uma cláusula de privacidade diferencial com o identificador exclusivo privacy_unit_column.

Nos exemplos a seguir, uma coluna de unidade de privacidade é adicionada a uma cláusula de privacidade diferencial. id representa uma coluna originada de uma tabela chamada 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;

Remover ruído de uma consulta particular diferenciada

Na referência da "Sintaxe de consulta", consulte Remover ruído.

Adicionar ruído a uma consulta particular diferenciada

Na referência da "Sintaxe de consulta", consulte Adicionar ruído.

Limitar os grupos em que um ID de unidade de privacidade pode existir

Na referência "Sintaxe da consulta", consulte Limitar os grupos em que um código de unidade de privacidade pode existir.

Limitações

Esta seção descreve as limitações da privacidade diferencial.

Implicações no desempenho da privacidade diferencial

As consultas particulares diferenciadas são executadas mais lentamente do que as consultas padrão, porque a agregação por entidade é realizada e a limitação max_groups_contributed é aplicada. Limitar os limites de contribuição pode ajudar a melhorar o desempenho das consultas particulares diferenciadas.

Os perfis de desempenho das consultas a seguir não são semelhantes:

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;

A razão para a diferença de desempenho é que um nível de granularidade adicional de agrupamento é executado para consultas diferenciadas de maneira privada, porque a agregação por entidade também precisa ser realizada.

Os perfis de desempenho das consultas a seguir precisam ser semelhantes, mas a consulta particular diferenciada é um pouco mais 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;

O desempenho da consulta particular diferenciada é mais lento porque ela tem um grande número de valores distintos para a coluna da unidade de privacidade.

Limitações delimitadoras implícitas para pequenos conjuntos de dados

O limite implícito funciona melhor quando computado usando grandes conjuntos de dados. A limitação implícita pode falhar com conjuntos de dados que contêm um baixo número de unidades de privacidade, não retornando resultados. Além disso, a limitação implícita em um conjunto de dados com um número baixo de unidades de privacidade pode fixar uma grande parte de valores não outliers, levando a agregações e resultados não relatados que são alterados mais por fixação do que por ruído adicionado. Conjuntos de dados que têm um baixo número de unidades de privacidade ou são particionados de maneira superficial precisam usar a limitação explícita em vez de implícita.

Vulnerabilidade de privacidade

Qualquer algoritmo de privacidade diferencial, incluindo este, gera o risco de vazamento de dados privados quando um analista age de má-fé, especialmente ao calcular estatísticas básicas, como somas, devido a limitações aritméticas.

Limitações das garantias de privacidade

Embora a privacidade diferencial do BigQuery aplique o algoritmo de privacidade diferencial, ela não garante as propriedades de privacidade do conjunto de dados resultante.

Erros de execução

Um analista atuando de má fé com a capacidade de escrever consultas ou controlar dados de entrada pode acionar um erro de tempo de execução em dados particulares.

Ponto flutuante

É preciso considerar as vulnerabilidades relacionadas a arredondamentos, arredondamentos repetidos e ataques de reordenação antes de usar a privacidade diferencial. Essas vulnerabilidades são preocupantes principalmente quando um invasor pode controlar parte do conteúdo ou a ordem do conteúdo em um conjunto de dados.

Adições de ruído diferencialmente particulares em tipos de dados de ponto flutuante estão sujeitas às vulnerabilidades descritas em Subestimação generalizada de confidencialidade em bibliotecas diferenciais diferenciadas e como corrigi-la. As adições de ruídos em tipos de dados inteiros não estão sujeitas às vulnerabilidades descritas no documento.

Riscos de ataque de tempo

Um analista atuando de má fé pode executar uma consulta suficientemente complexa para fazer uma inferência sobre dados de entrada com base na duração de execução de uma consulta.

Classificação incorreta

A criação de uma consulta de privacidade diferencial pressupõe que seus dados estejam em uma estrutura bem conhecida e compreendida. Se você aplicar a privacidade diferencial aos identificadores incorretos, como um que representa um ID da transação em vez do ID de um indivíduo, poderá expor dados confidenciais.

Se você precisar de ajuda para entender os dados, use serviços e ferramentas como os seguintes:

Preços

Não há custo extra para usar a privacidade diferencial, mas os preços padrão do BigQuery para análise são aplicáveis.