← Índice de Demos
FHE em Ação · Threshold Cross-Org
Demo 06 · Cruzamento entre Agências
Demonstração Factual

A Soberania Calculável.

Receita e INSS cruzam bases para detectar fraude — sem nenhum servidor jamais ver dados individuais, e com 4 autoridades obrigatoriamente autorizando a decifração.

O Cenário

Receita Federal e INSS suspeitam de fraude previdenciária. Querem cruzar suas bases para identificar CPFs em comum. Hoje isso exige convênios complexos.

O Mecanismo

Cada agência cifra. Servidor neutro computa interseção sob cifra. Decifração exige quórum 4-de-4 (Receita + INSS + AGU + ANPD).

A Garantia

Tripla: técnica (ciphertext), jurídica (quórum), política (auditoria pública). Cloud estrangeira pode hospedar — não consegue ver nada mesmo sob CLOUD Act.

Passo 01 · Setup

Definir os parâmetros.

Antes de qualquer cifragem, escolhemos os parâmetros do esquema FHE. Cada parâmetro é um trade-off entre segurança, velocidade e capacidade de cálculo.

Parâmetros BGV deste caso

8 192Slots/ciphertext
2Profundidade mult.
EXATOTipo de esquema
~128 bitSegurança

O que cada termo significa

BGV (esquema "exato") — Família de criptografia homomórfica que opera sobre números inteiros. Não tem ruído de aproximação. Resultado é sempre bit-a-bit idêntico ao cálculo plaintext. Ideal para contagens, queries SQL e lógica booleana.

8 192 slots — Cada ciphertext FHE não é um único valor: é um vetor de 8 192 valores empacotados. Você opera sobre os 8 192 ao mesmo tempo com uma única operação. Esse "batching" nativo é o que torna FHE viável em escala.

Profundidade multiplicativa 2 — Quantas multiplicações encadeadas o ciphertext suporta antes de ficar instável. Cada multiplicação consome 1 nível. Mais profundidade = mais cálculo possível, mas também mais lento e mais caro.

~128 bits de segurança — Padrão da indústria. Significa que quebrar a chave por força bruta exigiria ~2128 operações — número astronômico, inviável até mesmo para hardware quântico previsível.

Base RLWE — Ring Learning With Errors. O problema matemático que sustenta toda a segurança. É o mesmo problema sobre o qual NIST padronizou a próxima geração de criptografia pós-quântica (ML-KEM, ML-DSA).

Passo 02 · Threshold

Quatro partes.

A chave de decifração é dividida entre 4 entidades. Cada uma representa um vetor de controle distinto.

  • Receita Federal
    Fonte de dado fiscal
    Share 1/4
  • INSS
    Fonte de dado previdenciário
    Share 2/4
  • AGU
    Custódia jurídica
    Share 3/4
  • ANPD
    Custódia de privacidade
    Share 4/4
Passo 03 · Cifragem

Cada agência cifra localmente.

Cada órgão prepara sua lista de CPFs suspeitos como vetor binário e cifra com a chave pública do consórcio (que foi gerada via threshold no passo 2). Apenas o ciphertext deixa o data center da agência.

Exemplo · o que Receita prepara

// Lista interna da Receita
cpfs_suspeitos := [
  "123.456.789-00",
  "987.654.321-11",
  // ... ~100 CPFs
]

// Vetor binário (1 = suspeito)
vec := listaParaVetor(cpfs_suspeitos)
pt := encoder.Encode(vec)
ct := encryptor.Encrypt(pt)

// Apenas ct é compartilhado
send(ct) // 384 KB
3 msCifragem por agência
384 KBCiphertext

Por que esse formato

Vetor característico binário — Em vez de cifrar a lista de CPFs como strings, convertemos para vetor binário onde cada posição representa um CPF do universo. 1 = está na lista, 0 = não está. Este formato permite que a interseção (passo 4) seja simplesmente uma multiplicação element-wise.

Cifragem antes do compartilhamento — A diferença vs cruzamento tradicional: o vetor é cifrado dentro do data center da agência. Em nenhum momento existe uma cópia em claro fora dali.

3 ms por agência — Tempo real medido. Negligível comparado ao tempo de qualquer convênio interagências tradicional (meses para aprovação).

INSS faz o mesmo — Em paralelo, o INSS prepara sua própria lista, cifra com a mesma chave pública do consórcio, e envia. Os dois ciphertexts viajam para o servidor neutro independentemente.

Passo 04 · Servidor

Servidor neutro computa interseção.

O servidor neutro recebe os dois ciphertexts e executa uma multiplicação element-wise seguida de InnerSum. Tudo cifrado, do início ao fim. O servidor pode até estar em cloud estrangeira — não tem chave para decifrar.

O algoritmo · pseudo-código

// 1. multiplica element-wise
ctIntersec := evaluator.Mul(
  ctReceita, ctINSS
)
evaluator.Relinearize(ctIntersec)

// 2. soma todos os slots
ctCount := evaluator.InnerSum(
  ctIntersec, 1, slots,
)

// → ctCount contém a contagem
// servidor não consegue ver
44 msTempo total
0Bytes decifrados

O que está acontecendo

Multiplicação cifrada (AND lógico) — A propriedade chave do FHE é que a multiplicação de dois ciphertexts decifra para o produto dos plaintexts. Como nossos vetores são binários (0 ou 1), o produto slot-a-slot é exatamente o AND: só vale 1 quando AMBOS são 1 — ou seja, apenas nos CPFs que aparecem em ambas as listas.

InnerSum (contagem) — Soma todos os slots do vetor cifrado para obter a contagem total de CPFs na interseção. Internamente usa rotações Galois.

Cloud estrangeira pode hospedar — O servidor pode estar fisicamente nos EUA, na Europa, em qualquer lugar. Sem a chave (que está distribuída entre as 4 partes brasileiras), ele só vê bytes pseudoaleatórios. Mesmo sob CLOUD Act americano, não tem nada para entregar.

44 ms para 100 CPFs — Em produção real com milhões de CPFs por agência, o mesmo padrão escala via batching de slots — cada ciphertext suporta 8 192 CPFs em paralelo.

Passo 05 · Sem quórum

Tentativa bloqueada.

O que acontece se apenas Receita e INSS tentarem decifrar sem AGU e ANPD?

  • Receita Federal
    Autorizou
  • INSS
    Autorizou
  • AGU
    Ausente
  • ANPD
    Ausente
Decifração rejeitadaQuórum 2/4 — abaixo do mínimo. O resultado permanece matematicamente inacessível. Nem servidor, nem agências individuais conseguem ver nada.
Passo 06 · Com quórum

Quatro autorizam.

Agora as 4 partes cooperam. Cada uma contribui seu share. O resultado é decifrado e revelado.

  • Receita Federal
    Share OK
  • INSS
    Share OK
  • AGU
    Share OK
  • ANPD
    Share OK
Resultado revelado
30
CPFs em comum
Passo 07 · Validação

Comparação matemática.

Para provar que o cálculo cifrado produziu o mesmo resultado que um cruzamento plaintext tradicional, comparamos lado a lado.

FHE vs Plaintext

30Esperado (plaintext)
30Encontrado (FHE)
0Falsos positivos
0Falsos negativos
Match exatoBGV é esquema exato. O resultado é bit-a-bit idêntico ao cálculo plaintext.

Por que essa precisão importa

Cruzamento fiscal exige exatidão — Diferente de scoring de risco ou recomendação (onde aproximação CKKS é aceitável), uma operação fiscal/previdenciária não pode ter erro. Um único CPF errado pode virar processo administrativo. BGV garante zero erro.

Auditoria pública — Como o resultado é matematicamente verificável (BGV é determinístico no resultado final), qualquer auditor pode rodar a mesma operação sobre os mesmos ciphertexts e obter exatamente a mesma contagem. Reproducibilidade é parte da garantia jurídica.

Defesa contra contestação — Se um CPF detectado contesta judicialmente o cruzamento, o tribunal pode auditar o processo inteiro (sem ver dados das outras agências) e confirmar matematicamente que o cruzamento foi feito corretamente.

Passo 08 · Adversarial

Os cenários.

Parte maliciosa

Uma das 4 vira maliciosa? Não pode decifrar sozinha. Precisa convencer 3 outras. Cada decifração registra log auditável.

Cloud estrangeira

CLOUD Act ordena entrega de dado? A cloud só armazena ciphertext. Não tem chave. Não tem nada legível para entregar.

Vazamento de chave

Uma das 4 chaves vaza? O sistema não compromete. Outras 3 ainda são necessárias. Em produção 4-de-7, perda de até 3 chaves não compromete.

Recuperar sk a partir de pk

Resolver Ring-LWE em N=8192 → ~2128 operações. Inviável.

Passo 09 · Síntese

Tripla garantia institucional.

Garantia técnica + jurídica + política em uma única arquitetura. O modelo não depende de "confiar no operador" — funciona mesmo se o operador for malicioso.

O fluxo completo

  1. Definimos parâmetros BGV (esquema exato)
  2. Chave dividida em 4 shares: Receita + INSS + AGU + ANPD
  3. Cada agência cifrou sua lista localmente
  4. Servidor neutro computou interseção sob cifra (44 ms)
  5. Tentativa sem quórum foi bloqueada matematicamente
  6. Decifração com 4 autorizações revelou 30 CPFs em comum
  7. Validação confirmou match exato com plaintext

Números reais

3 msCifragem por agência
44 msServidor
384 KBPor ciphertext
EXATAPrecisão
3 eBooks usam esta primitivaGoverno (cruzamento agências) · Hospitais (tumor board internacional) · Farma (DSMB autorizando análise interim em ensaio clínico).
A tese centralCruzamento entre agências hoje depende de "convênios de boa-fé" e leva meses para aprovar. Sob FHE + threshold, a colaboração vira matemática verificável: rápido, auditável, e impossível de subverter por ator individual. É a única arquitetura defensável a longo prazo para operações estatais sobre dado de cidadão.