← Índice de Demos
FHE em Ação · Cohort Statistics
Demo 02 · Benchmarking Inter-Hospitalar
Demonstração Factual

A Confiança que se Calcula.

Cinco hospitais comparam tempo de internação para AVC sem nenhum deles expor seus números absolutos. Cada um descobre apenas sua posição relativa.

O Cenário

Cinco hospitais de referência querem benchmark de qualidade. Métrica: tempo médio de internação para AVC isquêmico.

O Problema

Nenhum hospital quer expor seus números absolutos — risco de PR negativo. Sob arquitetura tradicional, benchmarking honesto entre concorrentes é impossível.

A Garantia

O agregador computa média, variância e desvio padrão sobre cifras. Cada hospital decifra apenas sua posição relativa. Garantia matemática RLWE.

Tudo é realNúmeros, tempos, tamanhos foram capturados de execução verdadeira do código demo 02/main.go usando Lattigo v6 + CKKS.
Passo 01 · Setup

Definir os parâmetros.

Antes de cifrar os tempos de internação, escolhemos os parâmetros CKKS. Cada parâmetro é um trade-off entre segurança, velocidade e capacidade de cálculo.

Parâmetros · CKKS

// Lattigo v6 — CKKS
params := ckks.NewParametersFromLiteral({
  LogN: 14,  // N = 16384
  LogQ: [55,45,45,45,45],
  LogP: [61],
  LogScale: 45,
})
8 192Slots/ciphertext
APROX.Tipo de esquema

O que cada termo significa

CKKS (esquema "aproximado") — Família de criptografia homomórfica que opera sobre números reais. Tem ruído de aproximação controlado (erro ~10⁻⁹). É o esquema padrão para machine learning, estatística descritiva e processamento de sinais — exatamente o que o benchmarking inter-hospitalar precisa.

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. Em produção real do benchmarking, milhares de hospitais cabem em poucos ciphertexts.

Profundidade multiplicativa — Quantas multiplicações encadeadas o ciphertext suporta. CKKS permite ajustar via LogQ. Para média + variância (que precisa de quadrados), 4-5 níveis bastam.

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

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

Passo 02 · Chaves

Gerar chaves colaborativas.

Em produção, threshold cryptography divide a chave entre os 5 hospitais. Aqui simplificamos com chave única para clareza didática.

Chaves Geradas

~50 msTempo total
~7 KBpk
~44 KBrlk
128 bitSegurança

Galois Keys

Adicionalmente geramos Galois keys para suportar operações de rotação (necessárias para InnerSum em vetores de muitos slots). Estas chaves são as mais pesadas — vários MB no total.

Passo 03 · Hospitais

Cifrar dados ajustados.

Cada hospital tem o seu tempo médio ajustado por case-mix calculado sobre sua coorte interna. Cifra esse valor e envia. O agregador NUNCA vê o valor em claro.

Dados locais (ajustados por case-mix)

Albert Einstein72.4 h
Sírio-Libanês81.2 h
HCor69.8 h
Oswaldo Cruz78.5 h
Hospital Moinhos75.1 h
9.2 msCifragem
1.25 MBCiphertext

Nota clínica · case-mix adjustment

Comparar médias cruas é inválido — Albert Einstein recebe casos de AVC mais graves que HCor, não por qualidade pior, mas por case-mix (idade, comorbidades, gravidade). Comparar tempo cru distorce avaliação.

Ajuste padrão da indústria — Benchmarking hospitalar sério usa Elixhauser Comorbidity Index ou Charlson Index para ajustar o tempo médio por gravidade da coorte, antes de comparar. O ajuste é feito localmente em cada hospital.

Nesta demo — Os valores já representam tempos ajustados calculados localmente. O FHE entra depois: agrega os valores ajustados sem expor os números absolutos.

Passo 04 · Trânsito

O agregador recebe.

Os 5 ciphertexts viajam para um agregador neutro (sociedade médica, IBGE, consórcio acadêmico). O agregador não tem chave secreta — não consegue ver nenhum valor.

Amostra Real do Ciphertext (32 primeiros bytes)

01 7b 22 50 6c 61 69 6e
74 65 78 74 4d 65 74 61
44 61 74 61 22 3a 7b 22
53 63 61 6c 65 22 3a 7b
...

Cada ciphertext tem ~1.25 MB de bytes pseudoaleatórios. Sem a chave, recuperar 72.4h exigiria resolver Ring-LWE em N=16384 → ~2128 operações.

Total Trafegado

5Ciphertexts
~6.2 MBTotal enviado
Passo 05 · Agregador

Estatísticas sob cifra.

O agregador soma os ciphertexts, multiplica por 1/N para média, e calcula segundo momento para variância. Tudo sob cifra. O agregador jamais vê valores individuais.

O Algoritmo

// soma cifrada
ctSum := evaluator.Add(ct1, ct2)
for i := 2; i < N; i++ {
  evaluator.Add(ctSum, cts[i])
}
// média
evaluator.Mul(ctSum, 1.0/N)
evaluator.Rescale(ctSum)
// segundo momento
for ct in cts: ctSq² += ct·ct

Performance Real

85 msTotal agregação
8Ops adição
6Ops multiplicação
0Bytes decifrados
Passo 06 · Decifração

Estatísticas reveladas.

O resultado cifrado é decifrado coletivamente. Apenas as estatísticas agregadas saem — média, variância, desvio padrão. Nenhum valor individual.

Resultado Agregado

75.40 hMédia setorial
16.74Variância
4.09 hDesvio padrão
5Hospitais

Posição Relativa

Cada hospital descobre apenas SEU z-score:

Einstein: -0.73 ↓ abaixo da média
Sírio: +1.42 ↑ acima da média
HCor: -1.37 ↓ melhor do grupo
Oswaldo: +0.76 ↑ levemente acima
Moinhos: -0.07 ≈ média

Passo 07 · Prova

Validação matemática.

Comparação direta entre o cálculo FHE e o cálculo plaintext. Erro de aproximação CKKS é controlado e desprezível para análise clínica.

FHE vs Plaintext

MétricaFHEClaroErro
Média75.40000075.4000007.0e-11
Variância16.74000016.7400002.0e-08
Desvio4.0914554.0914552.5e-09

Resultado

2.5 × 10⁻⁹Erro máximo

Para análise estatística clínica, precisão de 9 casas decimais é dramaticamente mais que suficiente.

Passo 08 · Adversarial

O agregador desonesto.

O que um agregador desonesto consegue extrair?

Tentativas de Ataque

  • 1 — Ler ciphertext de um hospitalBytes pseudoaleatórios. Nada recuperável.
  • 2 — Inverter a média para obter individuais5 incógnitas, 1 equação. Sistema sub-determinado. Os valores individuais permanecem matematicamente protegidos.
  • 3 — Recuperar sk a partir de pkRing-LWE em N=16384, ~2128 operações. Inviável.

O que sai

APENAS as estatísticas agregadas (média, variância, desvio). Cada hospital descobre apenas sua posição relativa. Os números absolutos dos outros permanecem matematicamente impossíveis de recuperar.

Passo 09 · Síntese

O que aconteceu.

Em menos de 1 segundo, cinco hospitais descobriram suas posições relativas em uma métrica de qualidade — sem nenhum deles expor seus números absolutos.

O Fluxo

  1. Cinco hospitais cifraram localmente seus tempos médios
  2. Enviaram apenas os ciphertexts ao agregador neutro
  3. O agregador computou média e variância sob cifra (85 ms)
  4. Resultado decifrado revelou estatísticas agregadas
  5. Cada hospital descobriu apenas sua posição relativa

Números Reais

9 msCifragem/hospital
85 msAgregação
1.25 MBPor ciphertext
10⁻⁹Erro precisão
Esta primitiva serve 4 eBooksHospitais (benchmarking), Labs (multicêntrico), Farma (RWE interim), Operadoras (atuária populacional).