Guia Definitivo de Anonimização e Privacidade de Dados em Analytics Mobile e Web
Hashing não anonimiza. Como distinguir pseudonimização de anonimato real, aplicar o teste dos 3 critérios e coletar web/app sem ferir LGPD.
Contexto
Time de produto liga o banner, ativa “IP anonymization” no GA4, hasheia e-mail no data layer — e o jurídico ainda pergunta: isso é dado pessoal? Na maioria dos casos, sim.
Sob LGPD e GDPR, pseudonimizar (trocar o nome por um código, mantendo a chave em outro lugar) não tira o dado do escopo. Continua sendo dado pessoal: base legal, direitos do titular, segurança e accountability seguem valendo. Anonimizar de verdade é o processo irreversível em que, com meios razoavelmente disponíveis, ninguém consegue religar o registro a uma pessoa. Só aí o conjunto deixa de ser tratado como dado pessoal.
Dois corolários que produto costuma ignorar:
- Anonimizar é tratamento. A transformação em si precisa de base legal e transparência. Não “lava” uma coleta que já nasceu sem hipótese legal.
- Hash ≠ anonimato. SHA-256 de e-mail sem salt secreto (ou com salt previsível) é pseudonimização frágil — e ainda dado pessoal.
O objetivo deste guia é operacional: saber o que você está coletando de verdade, o que passa no teste de reidentificação e o que mudar na arquitetura web e mobile para medir sem fingir conformidade.
Problema
Dashboards “privacy-first” no slide e payload de telemetria no Network são coisas diferentes. Em analytics web e app, o risco não está só no user_id explícito — está nos quase-identificadores que, combinados, viram fingerprint:
| Quase-identificador típico | Onde aparece |
|---|---|
| IP completo (ou pouco truncado) | Hit client → vendor; headers no servidor |
| User-Agent + Client Hints | Browser / WebView |
| Resolução, timezone, clock skew | Telemetria / SDK |
gclid / fbclid / tokens em query |
URL, referrer, event params |
| IDFA / IDFV / advertising ID | App sem ATT / sem política clara |
Com dimensionalidade alta, o dataset falha em três frentes que o EDPB usa para avaliar se o dado ainda é identificável:
- Isolamento (singling out) — dá para apontar “este registro é de uma pessoa”, mesmo sem saber o nome.
- Vinculação (linkage) — dá para juntar dois eventos (ou dois sistemas) como sendo da mesma pessoa.
- Inferência — dá para deduzir atributo sensível com probabilidade alta a partir do restante.
Consent Mode v2 e cookieless pings não resolvem sozinhos o ponto do IP: sem cookie, o ping ainda pode carregar o endereço até a infraestrutura do fornecedor. Banner certo ≠ coleta anonimizada.
Para o how-to de CMP → gcs/gcd, veja: Como Configurar o Google Consent Mode v2 Sem Quebrar Suas Métricas no GA4.
No mobile, a mesma ilusão: otimizar campanha como se IDFA fosse o default pós-iOS 14.5, com opt-in ATT na casa dos ~15% globalmente, é desenhar produto e mídia em cima de uma fatia que não representa o funil.
Anonimização vs pseudonimização
| Dimensão | Pseudonimização | Anonimização |
|---|---|---|
| O que é | Identificador trocado; chave / info adicional existe em outro lugar | Ligação à pessoa removida de forma irreversível (meios razoáveis) |
| Estatuto | Dado pessoal (LGPD/GDPR) | Fora do escopo material depois de efetiva |
| Reversível? | Sim, para quem tem a chave | Não (na prática avaliada) |
| Base legal / direitos | Continuam obrigatórios | Não se aplicam ao dataset já anônimo |
| Exemplo em analytics | user_id HMAC no warehouse; client ID estável |
Relatório agregado com limiar; postback SKAN sem ID de dispositivo |
A leitura moderna (guidelines EDPB de anonimização) é relativa ao receptor: o mesmo conjunto pode ser pessoal para quem guarda a chave e anônimo para um terceiro sem meios legais/técnicos de reidentificar. Isso não é desculpa para declarar “anônimo” no slide — é motivo para documentar quem recebe o quê e com quais barreiras.
O teste dos três critérios (na prática)
Antes de rotular um export BigQuery, um data share com parceiro ou um treino de modelo como “anônimo”, pergunte:
| Critério | Pergunta operacional | Falha clássica em analytics |
|---|---|---|
| Sem isolamento | Consigo isolar um indivíduo no arquivo? | Evento raro + cidade + device = 1 pessoa |
| Sem vinculação | Consigo religar sessão web ↔ app ↔ CRM? | Mesmo client_id / e-mail hash / IDFV em dois lados |
| Sem inferência | Consigo deduzir atributo sensível do grupo? | Classe homogênea (“todos converteram no funnel X”) |
Fingerprint de browser/app é o atalho para falhar os dois primeiros. Por isso “remover o nome e manter UA + IP + timestamp milimétrico” quase nunca passa.
Governança: o risco não é estático. Mais poder de cruzamento, mais dados públicos, novo incidente que vaza a chave — a condição de anonimato precisa ser reavaliada. Accountability (LGPD art. 6º, X) = registrar o teste, não só a opinião do time.
Modelos úteis (sem virar paper)
Para produto, três ideias bastam para conversar com dados/segurança:
k-anonimato
Cada combinação de quase-identificadores aparece em pelo menos k registros (classe de equivalência). Técnicas: generalizar (idade → faixa; CEP → prefixo) e suprimir outliers. Protege isolamento grosseiro; não protege se todos no grupo têm o mesmo atributo sensível (ataque de homogeneidade).
l-diversidade e t-closeness
Exigem variedade (e proximidade distributiva) do atributo sensível dentro da classe. Úteis em data share tabular; caros e pouco naturais em event streams de alta cardinalidade.
Privacidade diferencial (DP)
Garante que o resultado de uma consulta muda pouco se um indivíduo entra ou sai do dataset — via ruído calibrado (orçamento ε: menor ε = mais privacidade, menos precisão). Em analytics de produto, aparece mais em agregados e APIs de medição com limiar do que em “cada hit do GA4 com DP”.
| Modelo | Serve para | Limite |
|---|---|---|
| k-anonimato | Relatórios / exports tabulares | Homogeneidade; QIs demais |
| l-diversidade / t-closeness | Compartilhar atributos sensíveis | Complexidade; perda de utilidade |
| DP (ε) | Agregados e APIs com ruído | Amostra pequena; gestão do orçamento |
Na stack de marketing/produto do dia a dia, o ganho mais imediato costuma ser arquitetura (menos QI no fio, agregação, limiares) — não implementar DP no pixel.
Web: consentimento não substitui sanitização
Fluxo mínimo alinhado à ANPD (cookies necessários vs analíticos vs ads) e ao ecossistema Google:
- Consentimento / base legal — analytics próprio limitado ≠ ads/cross-site (que pedem opt-in claro). Consent Mode v2 governa o que as tags Google fazem com o estado; não redefine sozinho a base legal na LGPD.
- Proxy first-party (server-side) — o browser fala com seu endpoint; o servidor sanitiza e só então encaminha ao GA4/Ads/Meta.
Quatro transformações que um container sGTM (ou equivalente) deveria fazer antes de republicar para terceiros:
| # | Sanitização | Por quê |
|---|---|---|
| 1 | Truncar / descartar IP (ex.: último octeto IPv4; não repassar IP bruto) | IP é dado pessoal; ping “sem cookie” ainda carrega IP |
| 2 | Pseudonimizar IDs com HMAC + salt no servidor (rotação) | Hash sem chave secreta é reversível por rainbow table |
| 3 | Purgar query/referrer (gclid, fbclid, tokens, PII acidental) |
Linkage e vazamento em URL |
| 4 | Reduzir UA / Client Hints (categoria de browser, não fingerprint) | Combate singling out por device |
Isso é pseudonimização + minimização no caminho — passo necessário para aproximar anonimato em agregados. Não declare o hit individual “anônimo” só porque passou pelo servidor.
Sobre o “fim” do cookie 3P e a urgência de first-party: ver O Fim dos Cookies de Terceiros: O Que Mudar no Seu Tagueamento Hoje.
Mobile: atribuição sem ID de anunciante
No iOS, ATT exige opt-in para IDFA. Sem consentimento, insistir em atribuição determinística por advertising ID é desenho errado — e risco de store/compliance.
SKAdNetwork (e evolução AdAttributionKit) desloca a atribuição para o sistema operacional e devolve postbacks agregados:
- Sem IDFA/IDFV/IP no postback de atribuição no modelo privacy-preserving da Apple
- Conversion values (fino 0–63 / grosso low-medium-high) para engajamento pós-install
- Privacy thresholds — campanha com volume baixo perde granularidade (anti-isolamento)
- Timers aleatórios — quebram correlação temporal click → install
Para produto: modele KPIs e experimentos em cima de sinais agregados e delayed, não do “usuário X veio da campanha Y” em tempo real para 100% do tráfego. Firebase/MMP continuam úteis para telemetria first-party dentro do app — com o mesmo rigor de QI e base legal da web.
Roteiro de implementação
| Etapa | Ação | Objetivo |
|---|---|---|
| 1. Consentimento | CMP transparente + Consent Mode v2 com default denied (se stack Google) | Licitude do não essencial; tags alinhadas ao estado |
| 2. Proxy server-side | sGTM (ou similar) em subdomínio próprio | Cortar hop direto browser → vendor com IP cru |
| 3. Sanitização | IP, HMAC de IDs, purge de clids/PII, UA reduzido | Reduzir isolamento e linkage |
| 4. Mobile privacy | ATT honesto; SKAN/AdAttributionKit; sem IDFA sem opt-in | Atribuição agregada compliant |
| 5. Agregação / ruído | Limiares em exports; DP ou k-anonimato se for share externo | Mitigar inferência em datasets publicados |
| 6. Governança | Registrar teste de reidentificação; reavaliar após incidentes/mudança de stack | Accountability |
Checklist rápido para o time de produto:
| # | Pergunta | Se a resposta for “não”… |
|---|---|---|
| 1 | Sabemos quais QIs sobem em cada evento? | Inventário antes de “anonimizar” |
| 2 | Hash/HMAC tem salt secreto só no servidor? | Tratar como identificador frágil |
| 3 | Hits de marketing passam por endpoint próprio? | IP e fingerprint seguem no vendor |
| 4 | iOS mede sem depender de IDFA default? | Funil e CPA estão enviesados |
| 5 | Existe dono e data da última revisão de risco? | Conformidade cosmética |
Próximo passo
Coletar “sem ferir privacidade” não é um toggle no GA4. É separar pseudônimo de anônimo, passar o dataset pelos três critérios e redesenhar o fio (web com proxy sanitizado, mobile com atribuição agregada) — com registro do que foi testado.
Use o roteiro acima como diagnóstico interno. Se a stack mistura banner, hash no client, IP no vendor e IDFA “quando der”, o movimento seguinte é uma auditoria de tracking e compliance: o que ainda é identificável, o que pode ser agregado e o que precisa sair do payload — nessa ordem.