# Anonimização e pseudonimização de CPF: técnicas e quando aplicar

> Conheça as técnicas de anonimização e pseudonimização de CPF exigidas pela LGPD. Saiba quando aplicar cada uma e veja exemplos práticos de código.

**Publicado:** 11/02/2025
**Autor:** Redação CPFHub.io
**URL:** https://cpfhub.io/blog/anonimizacao-e-pseudonimizacao-de-cpf-tecnicas-e-quando-aplicar

---


Anonimização de CPF é irreversível e retira o dado do escopo da LGPD; pseudonimização é reversível com uma chave e mantém o dado como pessoal, mas com proteção adicional. Use anonimização quando não precisar mais recuperar o CPF original e pseudonimização quando o processo exigir re-identificação futura.

## Introdução

A LGPD distingue claramente entre dados anonimizados e dados pseudonimizados, e essa distinção tem implicações diretas para empresas que tratam dados de CPF. Dados anonimizados não são mais considerados dados pessoais e, portanto, estão fora do escopo da LGPD. Já dados pseudonimizados continuam sendo dados pessoais, mas com uma camada adicional de proteção.

Para empresas que utilizam APIs de consulta de CPF, como a [CPFHub.io](https://www.cpfhub.io/), aplicar a técnica correta na etapa de armazenamento é tão importante quanto validar o CPF no momento do cadastro — e define diretamente o nível de exposição regulatória da organização.

---

## Definições segundo a LGPD

### Anonimização

Conforme o [artigo 5o, inciso XI da LGPD](https://www.planalto.gov.br/ccivil_03/_ato2015-2018/2018/lei/l13709.htm), dado anonimizado é aquele "relativo a titular que não possa ser identificado, considerando a utilização de meios técnicos razoáveis e disponíveis na ocasião de seu tratamento". Ou seja, a anonimização é irreversível -- não é possível recuperar o CPF original a partir do dado anonimizado.

### Pseudonimização

A pseudonimização substitui o dado pessoal por um identificador artificial, mas mantém a possibilidade de re-identificação por meio de uma chave ou mapeamento separado. Dados pseudonimizados continuam sendo dados pessoais sob a LGPD.

### Comparação direta

| Característica | Anonimização | Pseudonimização |
| --- | --- | --- |
| Reversibilidade | Irreversível | Reversível (com chave) |
| Escopo da LGPD | Fora do escopo | Dentro do escopo |
| Utilidade analítica | Limitada | Alta |
| Nível de proteção | Máximo | Alto |
| Complexidade técnica | Alta | Moderada |

---

## Técnicas de anonimização de CPF

### 1. Hashing sem salt (não recomendado isoladamente)

Aplicar uma função hash ao CPF gera um valor fixo que não pode ser revertido diretamente. No entanto, como o espaço de CPFs é finito (11 dígitos numéricos), é possível gerar uma tabela de correspondência (rainbow table). Por isso, hashing sem salt não é considerado anonimização verdadeira.

### 2. Hashing com salt

Adicionar um salt aleatório antes de aplicar o hash dificulta ataques de rainbow table:

```python
import hashlib
import os

def anonimizar_cpf_hash(cpf: str) -> str:
 """Anonimiza CPF usando SHA-256 com salt aleatorio."""
 salt = os.urandom(32)
 hash_cpf = hashlib.sha256(salt + cpf.encode()).hexdigest()
 # O salt precisa ser descartado para garantir irreversibilidade
 return hash_cpf

# Resultado: string hexadecimal sem possibilidade de reversao
cpf_anonimizado = anonimizar_cpf_hash('12345678900')
print(cpf_anonimizado)
```

Se o salt for descartado, a anonimização é verdadeira. Se o salt for armazenado, trata-se de pseudonimização.

### 3. Generalização

Substituir o CPF por uma faixa ou categoria que não permite identificação individual:

* CPF `123.456.789-00` passa a ser representado como "faixa 100-199".

* Útil para análises estatísticas que não precisam de identificação individual.

### 4. Supressão

Remover completamente o CPF do registro, mantendo apenas metadados não identificáveis:

* O registro passa a conter apenas data da transação, valor e tipo, sem CPF.

---

## Técnicas de pseudonimização de CPF

### 1. Tokenização

Substituir o CPF por um token aleatório e manter o mapeamento em um cofre seguro:

```python
import uuid
import os

# Cofre de tokens (em producao, usar banco seguro separado)
cofre_tokens = {}

def pseudonimizar_cpf(cpf: str) -> str:
 """Substitui CPF por token aleatorio."""
 if cpf in cofre_tokens:
 return cofre_tokens[cpf]

 token = str(uuid.uuid4())
 cofre_tokens[cpf] = token
 return token

def reverter_token(token: str) -> str:
 """Recupera CPF original a partir do token."""
 for cpf, t in cofre_tokens.items():
 if t == token:
 return cpf
 return None

# Uso
token = pseudonimizar_cpf('12345678900')
print(f'Token: {token}')

cpf_original = reverter_token(token)
print(f'CPF original: {cpf_original}')
```

### 2. Criptografia reversível

Criptografar o CPF com uma chave que permite descriptografia quando necessário:

```python
from cryptography.fernet import Fernet

CHAVE = os.environ.get('CHAVE_PSEUDO', Fernet.generate_key())
cipher = Fernet(CHAVE)

def pseudonimizar(cpf: str) -> str:
 return cipher.encrypt(cpf.encode()).decode()

def reverter(cpf_pseudo: str) -> str:
 return cipher.decrypt(cpf_pseudo.encode()).decode()
```

### 3. Mascaramento parcial

Ocultar parte do CPF mantendo apenas dígitos suficientes para referência:

* `123.456.789-00` torna-se `123.***.***-00`.

* Útil para exibição em interfaces, mas não é anonimização completa.

---

## Quando aplicar cada técnica

### Anonimização -- use quando

* **Análises estatísticas** -- relatórios agregados que não precisam identificar indivíduos.

* **Dados de treinamento para machine learning** -- modelos que não devem conter dados pessoais.

* **Dados compartilhados externamente** -- quando compartilhar dados com terceiros sem vínculo a titulares.

* **Após o período de retenção** -- quando a finalidade do tratamento foi cumprida, mas os dados agregados ainda têm valor analítico.

### Pseudonimização -- use quando

* **Operações que exigem re-identificação** -- processos que podem precisar recuperar o CPF original (ex.: atendimento ao titular, auditorias).

* **Ambientes de desenvolvimento e testes** -- bases de teste não devem conter CPFs reais, mas precisam de dados com formato consistente.

* **Segregação de dados** -- separar o CPF real dos dados operacionais, mantendo o vínculo apenas em um cofre seguro.

* **Dados em trânsito entre sistemas internos** -- reduzir a exposição ao transmitir tokens em vez de CPFs.

---

## Integração com a API da CPFHub.io

Ao consultar um CPF via API, aplique a técnica adequada antes de armazenar os dados:

```python
import requests
import uuid

CPFHUB_API_KEY = 'SUA_CHAVE_DE_API'
cofre = {}

def consultar_e_pseudonimizar(cpf: str) -> dict:
 url = f'https://api.cpfhub.io/cpf/{cpf}'
 headers = {
 'x-api-key': CPFHUB_API_KEY,
 'Accept': 'application/json'
 }

 response = requests.get(url, headers=headers, timeout=10)
 resultado = response.json()

 if not resultado.get('success'):
 return None

 dados = resultado['data']

 # Pseudonimizar o CPF para armazenamento
 token = str(uuid.uuid4())
 cofre[token] = dados['cpf']

 return {
 'token': token,
 'nome': dados['name'],
 'validado': True
 }

registro = consultar_e_pseudonimizar('12345678900')
print(registro)
```

---

## Erros comuns

* **Confundir mascaramento com anonimização** -- Mascarar parte do CPF não é anonimização; com os dígitos restantes, pode ser possível identificar o titular.

* **Armazenar salt junto com o hash** -- Se o salt é armazenado, o hash pode ser revertido por força bruta.

* **Não proteger o cofre de tokens** -- O cofre que mapeia tokens para CPFs deve ter controle de acesso rigoroso e criptografia.

* **Aplicar anonimização quando re-identificação é necessária** -- Se o processo exige recuperar o CPF original, use pseudonimização.

---

## Perguntas frequentes

### Dado anonimizado de CPF ainda é protegido pela LGPD?

Não, desde que a anonimização seja verdadeira. Conforme o artigo 5o, inciso XI da LGPD, dado anonimizado é aquele do qual não se pode identificar o titular com meios técnicos razoáveis. Se a anonimização for reversível — por exemplo, o salt foi armazenado junto com o hash — o dado continua sendo pessoal sob a LGPD.

### Qual técnica de pseudonimização é mais segura para CPF em banco de dados?

Tokenização com cofre separado é a abordagem mais robusta: o sistema operacional nunca vê o CPF real, apenas o token. O cofre (mapeamento token → CPF) deve estar em um banco isolado, com acesso restrito e logs de auditoria. Criptografia reversível com Fernet também é segura, mas exige gestão de chave adequada.

### Posso usar CPF mascarado (ex.: 123.***.***-00) em ambientes de teste?

O mascaramento parcial não é pseudonimização nem anonimização — ainda permite identificar o titular se combinado com outros dados. Para ambientes de teste, gere CPFs sintéticos com o mesmo formato (11 dígitos com dígitos verificadores válidos) ou use tokenização para substituir CPFs reais por identificadores sem relação com o dado original.

### Como integrar pseudonimização ao fluxo de consulta da CPFHub.io?

Após a chamada `GET https://api.cpfhub.io/cpf/{CPF}`, gere um UUID como token, armazene o par `{token: cpf}` em cofre seguro e salve apenas o token no banco operacional junto com os demais dados retornados (nome, gênero, data de nascimento). Quando precisar re-identificar, consulte o cofre com o token — o CPF real nunca transita pelo sistema operacional.

### Leia também

- [LGPD: CPF é dado pessoal sensível ou não? Entenda a classificação correta](https://cpfhub.io/blog/lgpd-cpf-e-dado-pessoal-sensivel-ou-nao-entenda-a-classificacao-correta)
- [KYC no Brasil: quais setores são obrigados a validar CPF por lei](https://cpfhub.io/blog/kyc-no-brasil-quais-setores-sao-obrigados-a-validar-cpf-por-lei)
- [Diferença entre validação de CPF e consulta de CPF: quando usar cada uma](https://cpfhub.io/blog/diferenca-entre-validacao-de-cpf-e-consulta-de-cpf-quando-usar-cada-uma)
- [Onboarding digital em fintechs: como validar CPF em menos de 30 segundos](https://cpfhub.io/blog/onboarding-digital-em-fintechs-como-validar-cpf-em-menos-de-30-segundos)

---

## Conclusão

Anonimização e pseudonimização são técnicas complementares que protegem dados de CPF em diferentes cenários. A escolha entre uma e outra depende da finalidade do tratamento: se o CPF não precisa mais ser recuperado, anonimize; se há necessidade de re-identificação futura, pseudonimize com controles adequados.

Cadastre-se em [cpfhub.io](https://www.cpfhub.io/) — 50 consultas mensais gratuitas, sem cartão de crédito — e valide CPFs com segurança antes de aplicar a técnica de proteção adequada ao seu contexto de armazenamento.

