# Zero-knowledge proofs: como verificar CPF sem revelar o número completo

> Entenda como zero-knowledge proofs podem permitir a verificação de CPF sem revelar o número completo. Veja como essa tecnologia pode transformar a privacidade digital.

**Publicado:** 16/03/2025
**Autor:** Redação CPFHub.io
**URL:** https://cpfhub.io/blog/zero-knowledge-proofs-como-verificar-cpf-sem-revelar-o-numero-completo

---


Zero-knowledge proofs (ZKP) são protocolos criptográficos que permitem provar que uma afirmação é verdadeira — como "este CPF pertence a um adulto" — sem revelar o dado subjacente. Aplicadas à verificação de CPF, essa tecnologia pode eliminar a necessidade de transmitir o número completo a cada serviço, reduzindo drasticamente o risco de vazamentos.

## Introdução

Na era digital, compartilhar dados pessoais é uma necessidade constante. Para contratar um serviço, abrir uma conta ou finalizar uma compra, é preciso informar o CPF, um dos dados mais sensíveis de qualquer cidadão brasileiro. Mas e se fosse possível provar que você possui um CPF válido sem precisar revelar o número completo? Essa é a promessa das zero-knowledge proofs (provas de conhecimento zero), uma tecnologia criptográfica que está ganhando atenção em áreas como blockchain, identidade digital e privacidade. O [W3C](https://www.w3.org/TR/vc-data-model/) já reconhece provas criptográficas como parte do modelo de credenciais verificáveis para identidade digital.

---

## O que são zero-knowledge proofs

Uma zero-knowledge proof (ZKP) é um protocolo criptográfico que permite a uma parte (o provador) demonstrar a outra parte (o verificador) que uma afirmação é verdadeira, sem revelar nenhuma informação além da validade da afirmação em si.

### Exemplo simplificado

Imagine que você precisa provar que sabe a senha de um cofre, sem dizer qual é a senha. Com uma ZKP, você poderia demonstrar que consegue abrir o cofre repetidas vezes, sem nunca revelar a combinação. O verificador se convence de que você sabe a senha, sem obter nenhuma informação sobre ela.

### Propriedades fundamentais

* **Completude** -- Se a afirmação é verdadeira, o verificador será convencido.

* **Solidez** -- Se a afirmação é falsa, nenhum provador desonesto pode convencer o verificador.

* **Conhecimento zero** -- O verificador não aprende nada além do fato de que a afirmação é verdadeira.

---

## Aplicação de ZKP na verificação de CPF

No contexto de CPF, zero-knowledge proofs poderiam permitir cenários como:

### Cenários possíveis

* **Prova de posse de CPF válido** -- O usuário prova que possui um CPF cadastrado sem revelar o número.

* **Prova de idade** -- O usuário prova que tem mais de 18 anos sem revelar a data de nascimento exata.

* **Prova de identidade sem exposição** -- O usuário prova que seu CPF corresponde a um determinado nome sem que o serviço veja o CPF.

* **Prova de unicidade** -- O usuário prova que não possui outra conta na plataforma, sem revelar qual CPF foi usado no cadastro original.

---

## Como funcionaria na prática

Um sistema de verificação de CPF com ZKP combinaria uma API de consulta de dados com um protocolo criptográfico.

### Fluxo conceitual

1. **Registro inicial** -- O usuário consulta seu CPF via API (como a da CPFHub.io) e obtém seus dados cadastrais verificados.

2. **Geração da prova** -- Um componente criptográfico no dispositivo do usuário gera uma prova zero-knowledge que atesta, por exemplo, que "o titular deste CPF tem mais de 18 anos".

3. **Verificação** -- O serviço recebe a prova e a verifica matematicamente, sem acessar o CPF ou a data de nascimento.

4. **Resultado** -- O serviço confirma que a afirmação é verdadeira e prossegue com a operação.

### Exemplo conceitual de verificação de idade

```python
import requests

# Etapa 1: Consultar dados via API (feita no dispositivo do usuario)
def obter_dados_cpf(cpf):
 url = f"https://api.cpfhub.io/cpf/{cpf}"
 headers = {
 "x-api-key": "SUA_CHAVE_DE_API",
 "Accept": "application/json"
 }
 response = requests.get(url, headers=headers, timeout=10)
 return response.json()

# Etapa 2: Gerar prova de idade (simplificado)
def gerar_prova_idade(dados_cpf, idade_minima):
 from datetime import date
 ano_nascimento = dados_cpf["data"]["year"]
 mes_nascimento = dados_cpf["data"]["month"]
 dia_nascimento = dados_cpf["data"]["day"]

 hoje = date.today()
 nascimento = date(ano_nascimento, mes_nascimento, dia_nascimento)
 idade = (hoje - nascimento).days // 365

 # Em um sistema real, aqui seria gerada uma prova ZKP
 # que atesta idade >= idade_minima sem revelar a data exata
 return {
 "afirmacao": f"idade >= {idade_minima}",
 "resultado": idade >= idade_minima,
 "prova": "zkp_hash_simulado_abc123"
 }

dados = obter_dados_cpf("12345678900")
prova = gerar_prova_idade(dados, 18)
print(prova)
```

### Resposta da API usada na etapa 1

```json
{
 "success": true,
 "data": {
 "cpf": "12345678900",
 "name": "Felipe Andrade",
 "nameUpper": "FELIPE ANDRADE",
 "gender": "M",
 "birthDate": "08/11/2000",
 "day": 8,
 "month": 11,
 "year": 2000
 }
}
```

---

## Benefícios para a privacidade

A adoção de zero-knowledge proofs na verificação de CPF traria benefícios significativos para a privacidade dos cidadãos brasileiros.

* **Minimização de dados** -- Princípio central da LGPD. O serviço recebe apenas a informação necessária (por exemplo, "maior de 18"), sem acessar dados completos.

* **Redução de vazamentos** -- Se o serviço nunca recebe o CPF, não há CPF para vazar em caso de incidente de segurança.

* **Controle pelo titular** -- O usuário decide quais informações compartilhar e em que nível de detalhe.

* **Auditabilidade** -- As provas podem ser verificadas matematicamente sem necessidade de armazenar dados pessoais.

---

## Desafios e limitações atuais

Apesar do potencial, a aplicação de ZKP na verificação de CPF ainda enfrenta desafios.

* **Complexidade técnica** -- A implementação de protocolos ZKP exige conhecimento avançado de criptografia.

* **Performance** -- Algumas implementações de ZKP são computacionalmente intensivas, o que pode impactar a latência.

* **Falta de padronização** -- Não há um padrão amplamente adotado para ZKP aplicada a documentos de identidade no Brasil.

* **Integração com sistemas legados** -- A maioria dos sistemas existentes espera receber o CPF completo, e não uma prova criptográfica.

* **Regulação** -- Órgãos reguladores ainda não reconhecem formalmente provas zero-knowledge como forma válida de verificação de identidade.

---

## O papel das APIs de CPF na transição

Enquanto as zero-knowledge proofs amadurecem, APIs de consulta de CPF como a da [**CPFHub.io**](https://www.cpfhub.io/) oferecem a camada de dados necessária para a construção desses sistemas no futuro. A consulta retorna nome, data de nascimento e gênero, campos que alimentariam o gerador de provas no dispositivo do usuário — sem que o servidor precise armazenar o CPF após a geração da prova.

A combinação de APIs confiáveis com protocolos de privacidade avançados representa o caminho para um ecossistema digital mais seguro e respeitoso com a privacidade dos cidadãos.

---

## Perguntas frequentes

### Zero-knowledge proofs já são usadas em sistemas de identidade real?

Sim, em contextos específicos. Protocolos como zk-SNARKs são usados em redes blockchain (Zcash, Polygon ID) para verificar transações e credenciais sem revelar dados. Para documentos de identidade nacionais como o CPF, a aplicação ainda é experimental, mas projetos piloto de identidade soberana já testam essa abordagem em outros países.

### ZKP viola a LGPD ou está em conflito com ela?

Não — pelo contrário, ZKP está alinhada ao princípio da minimização de dados da LGPD, previsto no Art. 6º, inciso III da [Lei nº 13.709/2018](https://www.planalto.gov.br/ccivil_03/_ato2015-2018/2018/lei/l13709.htm). Se o serviço recebe apenas uma prova ("titular é maior de 18") e não o CPF completo, o tratamento de dados pessoais é mínimo — o que facilita a conformidade.

### Qual é a latência esperada de uma verificação com ZKP comparada à consulta direta de CPF?

A consulta direta à API CPFHub.io tem latência de ~900ms. Sistemas ZKP adicionam o tempo de geração da prova no dispositivo do usuário — que pode variar de centenas de milissegundos a alguns segundos dependendo da complexidade do circuito criptográfico. Para casos de uso não interativos (verificação assíncrona), essa latência adicional é irrelevante.

### Como as empresas deveriam se preparar hoje para adotar ZKP no futuro?

O primeiro passo é separar a lógica de coleta de dados da lógica de negócios. APIs como a CPFHub.io já funcionam como fonte de dados confiável; a transição para ZKP exigirá apenas adicionar um componente de geração de provas entre a API e o frontend. Arquiteturas que consomem os dados da API como módulo isolado migram com menos retrabalho.

### 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)
- [Web3 e identidade no Brasil: CPF e carteiras descentralizadas](https://cpfhub.io/blog/web3-e-identidade-no-brasil-cpf-e-carteiras-descentralizadas)
- [API de CPF grátis para desenvolvedores: como começar em 5 minutos](https://cpfhub.io/blog/api-cpf-gratis-desenvolvedores-comecar-5-minutos)
- [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)

---

## Conclusão

As zero-knowledge proofs representam uma fronteira promissora para a privacidade digital, com potencial para transformar a forma como verificamos CPFs no futuro. Embora a tecnologia ainda esteja em fase de desenvolvimento para esse caso de uso, a base para essa evolução são APIs confiáveis e seguras.

Cadastre-se em [cpfhub.io](https://www.cpfhub.io/) — 50 consultas mensais gratuitas, sem cartão de crédito — e construa hoje a camada de dados que vai alimentar os sistemas de identidade com privacidade do amanhã.

