Use a privacidade diferencial

Este documento fornece informações gerais sobre a privacidade diferencial para o BigQuery. Para ver a sintaxe, consulte a cláusula de privacidade diferencial. Para ver uma lista das funções que pode usar com esta sintaxe, consulte as funções agregadas diferencialmente privadas.

O que é a privacidade diferencial?

A privacidade diferencial é uma norma para cálculos sobre dados que limita as informações pessoais reveladas por um resultado. A privacidade diferencial é usada frequentemente para partilhar dados e permitir inferências sobre grupos de pessoas ao mesmo tempo que impede que alguém aprenda informações sobre um indivíduo.

A privacidade diferencial é útil:

  • Quando existe um risco de reidentificação.
  • Para quantificar a compensação entre o risco e a utilidade analítica.

Para compreender melhor a privacidade diferencial, vamos analisar um exemplo simples.

Este gráfico de barras mostra a afluência de um pequeno restaurante numa noite específica. Muitos hóspedes chegam às 19:00 e o restaurante está completamente vazio às 01:00:

O gráfico mostra a ocupação de um pequeno restaurante através do mapeamento dos visitantes em horas específicas do dia.

Este gráfico parece útil, mas tem um senão. Quando chega um novo hóspede, este facto é imediatamente revelado pelo gráfico de barras. No gráfico seguinte, é claro que existe um novo hóspede e que este chegou aproximadamente às 01:00:

O gráfico mostra a chegada de valores atípicos.

A apresentação deste detalhe não é ideal do ponto de vista da privacidade, uma vez que as estatísticas anónimas não devem revelar contribuições individuais. A colocação destes dois gráficos lado a lado torna ainda mais evidente que o gráfico de barras laranja tem mais um hóspede que chegou por volta da 1: 00:

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

Mais uma vez, isso não é bom. Para evitar este tipo de problema de privacidade, pode adicionar ruído aleatório aos gráficos de barras através da privacidade diferencial. No gráfico de comparação seguinte, os resultados são anónimos e deixam de revelar as contribuições individuais.

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

Como funciona a privacidade diferencial nas consultas

O objetivo da privacidade diferencial é mitigar o risco de divulgação, ou seja, de que alguém possa saber informações sobre uma entidade num conjunto de dados. A privacidade diferencial equilibra a necessidade de salvaguardar a privacidade com a necessidade de utilidade analítica estatística. À medida que a privacidade aumenta, a utilidade analítica estatística diminui e vice-versa.

Com o GoogleSQL para BigQuery, pode transformar os resultados de uma consulta com agregações diferencialmente privadas. Quando a consulta é executada, realiza 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 para os quais cada entidade pode contribuir, com base no parâmetro de privacidade diferencial max_groups_contributed.
  2. Restringe cada contribuição agregada por entidade a estar dentro dos limites de restrição. Se os limites de restrição não forem especificados, são calculados implicitamente de forma diferencialmente privada.
  3. Agrega as contribuições agregadas por entidade restritas para cada grupo.
  4. Adiciona ruído ao valor agregado final de cada grupo. A escala do ruído aleatório é uma função de todos os limites restringidos e parâmetros de privacidade.
  5. Calcula uma contagem de entidades com ruído para cada grupo e elimina os 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 os grupos pequenos foram eliminados.

Para ver contexto adicional sobre o que é a privacidade diferencial e os respetivos exemplos de utilização, consulte os seguintes artigos:

Produza uma consulta diferencialmente privada válida

As seguintes regras têm de ser cumpridas para que a consulta com privacidade diferencial seja válida:

Defina uma coluna de unidade de privacidade

Uma unidade de privacidade é a entidade num conjunto de dados que está a ser protegida através da privacidade diferencial. Uma entidade pode ser um indivíduo, uma empresa, uma localização ou qualquer coluna que escolher.

Uma consulta com privacidade diferencial tem de incluir uma e apenas uma coluna de unidade de privacidade. Uma coluna de unidade de privacidade é um identificador exclusivo de uma unidade de privacidade e pode existir em vários grupos. Uma vez que são suportados vários grupos, o tipo de dados da coluna de unidade de privacidade tem de ser agrupável.

Pode 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 seguintes, é adicionada uma coluna de unidade de privacidade a uma cláusula de privacidade diferencial. id representa uma coluna com origem numa tabela denominada 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;

Remova o ruído de uma consulta diferencialmente privada

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

Adicione ruído a uma consulta diferencialmente privada

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

Limite os grupos nos quais um ID de unidade de privacidade pode existir

Na referência "Sintaxe de consulta", consulte o artigo Limite os grupos nos quais um ID de unidade de privacidade pode existir.

Limitações

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

Implicações de desempenho da privacidade diferencial

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

Os perfis de desempenho das seguintes consultas 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;

O motivo da diferença de desempenho é que é realizado um nível de agrupamento de granularidade mais fino para consultas com privacidade diferencial, porque também tem de ser realizada a agregação por entidade.

Os perfis de desempenho das seguintes consultas devem ser semelhantes, embora a consulta com privacidade diferencial seja ligeiramente 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;

A consulta com privacidade diferencial tem um desempenho mais lento porque tem um número elevado de valores distintos para a coluna da unidade de privacidade.

Limitações de delimitação implícitas para conjuntos de dados pequenos

A restrição implícita funciona melhor quando é calculada com grandes conjuntos de dados. A restrição implícita pode falhar com conjuntos de dados que contêm um número reduzido de unidades de privacidade, não devolvendo resultados. Além disso, a limitação implícita num conjunto de dados com um número reduzido de unidades de privacidade pode restringir uma grande parte dos valores não atípicos, o que leva a agregações subnotificadas e resultados mais alterados pela restrição do que pelo ruído adicionado. Os conjuntos de dados que têm um número reduzido de unidades de privacidade ou estão divididos de forma superficial devem usar a restrição explícita em vez da implícita.

Vulnerabilidades de privacidade

Qualquer algoritmo de privacidade diferencial, incluindo este, incorre no risco de uma fuga de dados privados quando um analista age de má-fé, especialmente quando calcula 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, não oferece uma garantia relativamente às propriedades de privacidade do conjunto de dados resultante.

Erros de tempo de execução

Um analista que atue 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 privados.

Ruído de vírgula flutuante

As vulnerabilidades relacionadas com o arredondamento, o arredondamento repetido e os ataques de reordenação devem ser consideradas antes de usar a privacidade diferencial. Estas vulnerabilidades são particularmente preocupantes quando um atacante pode controlar alguns dos conteúdos de um conjunto de dados ou a ordem dos conteúdos num conjunto de dados.

As adições de ruído diferencialmente privadas em tipos de dados de vírgula flutuante estão sujeitas às vulnerabilidades descritas no artigo Widespread Underestimation of Sensitivity in Differentially Private Libraries and How to Fix It. As adições de ruído em tipos de dados inteiros não estão sujeitas às vulnerabilidades descritas no artigo.

Riscos de ataques de temporização

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

Classificação incorreta

A criação de uma consulta de privacidade diferencial pressupõe que os seus dados estão numa estrutura bem conhecida e compreendida. Se aplicar a privacidade diferencial aos identificadores errados, como um que represente um ID da transação em vez do ID de um indivíduo, pode expor dados confidenciais.

Se precisar de ajuda para compreender os seus dados, considere usar serviços e ferramentas como os seguintes:

Preços

Não existe custo adicional para usar a privacidade diferencial, mas aplica-se a preçário do BigQuery padrão para análise.