Como funciona
futuros.xyz/como-funciona é a página que mostramos a parceiros técnicos e institucionais para explicar, etapa por etapa, o que acontece com um dado desde que ele existe em uma agência (ou em uma instituição que o contribui) até aparecer como número citado. É pública, trilíngue e não exige credencial. Esta página documenta o que ela mostra e o que garante.
Dois percursos, um corpus
O percurso é escolhido com abas e fica no hash da URL (#publicos ou #aportados), assim um link compartilhado abre direto o percurso certo.
O status de cada etapa
Cada etapa leva um selo que deve coincidir com o código na main. A fonte da verdade é src/routes/como-funciona.content.ts; se uma etapa muda de status, muda ali e nesta tabela no mesmo PR.
| Etapa | Status | O que significa hoje |
|---|---|---|
| A1–A5 | Em produção | O pipeline completo de dados públicos, descrito em O pipeline de dados e Procedência. |
| B1 Consentimento | Em produção | validateContribution() exige consent: true; a licença fixa a postura de corpus. Registra-se o compromisso, não o dataset. |
| B2 Criptografia no cliente | Próxima fase | Criptografia de envelope (AES-256-GCM + HPKE RFC 9180) especificada na fase H. Não construída. |
| B3 Pseudonimização | Em produção | contributor_id = SHA-256 com o sal secreto TRUST_ID_SALT; sem ele, a produção não emite recibos. |
| B4 Recibo | Em produção | receipt_hash SHA-256 sobre o corpo canônico; v2 adiciona HMAC-SHA256 do emissor quando TRUST_RECEIPT_HMAC_KEY existe. |
| B5 Ledger e revogação | Em produção | O código e o armazenamento compartilhado estão em produção: Redis KV, com os mesmos nomes de ambiente e a mesma precedência do limitador de taxa (KV_REST_API_* primeiro, depois UPSTASH_REDIS_REST_*; #1287). GET /api/contribute responde configured: true. O registro público está no ar e vazio (count 0, conferido em 2026-10-16). A página consulta isso ao vivo. |
| B6 Sala limpa TEE | Desenho | VM confidencial (AMD SEV-SNP / Intel TDX, GPU confidencial) com atestação remota, liberação de chave condicionada e saída só agregada com privacidade diferencial. |
| B7 Computação na origem | Desenho | Nó na infraestrutura do contribuinte que executa só manifestos assinados Ed25519; aprendizado federado com agregação segura. |
| B8 Assinatura pública e ancoragem | Desenho | Ed25519 sobre receipt_hash + log de Merkle RFC 6962 ancorado com RFC 3161 / OpenTimestamps (fases C e D). |
As etapas em desenho nomeiam tecnologias candidatas com o maior detalhe técnico possível, mas nenhuma está construída nem contratada, e a página diz isso em cada uma. A página fecha com um bloco "O que não afirmamos hoje" e com a postura de soberania diante de raízes de confiança de hardware dos EUA.
Duas camadas de leitura
Cada etapa mostra primeiro uma linha em linguagem simples e o fluxo "entra → sai". O botão Ver detalhe técnico (ou o interruptor Modo técnico, que abre todas) mostra a especificação, as notas, o modelo de ameaças em duas colunas (o que você pode verificar / o que não é possível) e as referências a esta documentação.
Os laboratórios
Nada na página é simulação:
- Rastreie um número (A3). Pega um
citation_idreal, decompõe comparseMultiId(), resolve cominferSourceKey()/deepLinkFor()do registro de fontes e busca o registro publicado empublic/data/citations/<ISO3>.json. - Recalcule um recibo (B3–B4). Recalcula
contributor_id,salt_version,contribution_id, o corpo canônico,receipt_hashe a assinatura v2 opcional com Web Crypto, no navegador, sem chamadas de rede.src/lib/trust-receipt-web.tsé um port deserver/trust/ledger.ts, esrc/lib/trust-receipt-web.test.tsexige paridade byte a byte commakeReceipt()para recibos v1 e v2: se o servidor muda o algoritmo, o build falha antes que a demo se desvie. Usa o sal público de desenvolvimento e declara isso: seus ids nunca coincidem com os de produção. - Verificador independente. Aceita qualquer recibo, inclusive um real de /contribuir: remove
receipt_hashe a assinatura, canonicaliza o resto e recalcula o SHA-256. Um botão altera um campo para mostrar que o hash deixa de conferir. - Visão do atacante. Demonstra o ataque de dicionário contra um
contributor_idcalculado com o sal público, que é exatamente por que a produção exigeTRUST_ID_SALTsecreto. - Status do ledger (B5). Lê
GET /api/contributee mostra se o armazenamento compartilhado está configurado.
Os números de cabeçalho (observações, registros de citação) são lidos ao vivo de /api/v1/index.json e linkam para esse arquivo.
Relação com outras páginas
- A tese e a mecânica completa do recibo vivem em Fundo Fiduciário de Dados.
- A sequência criptográfica-alvo (fases C, D, G, H) vive em Procedência: roteiro;
/como-funcionaa apresenta, não a redefine. Se as duas divergirem, corrige-se a página, não o roteiro.