Skip to content

Cómo funciona ​

futuros.xyz/como-funciona es la página que mostramos a socios técnicos e institucionales para explicar, etapa por etapa, qué pasa con un dato desde que existe en una agencia (o en una institución que lo aporta) hasta que aparece como cifra citada. Es pública, trilingüe y no requiere credencial. Esta página documenta qué muestra y qué garantiza.

Dos recorridos, un corpus ​

El recorrido se elige con pestañas y queda en el hash de la URL (#publicos o #aportados), así un enlace compartido abre directamente el recorrido correcto.

El estado de cada etapa ​

Cada etapa lleva una insignia que debe coincidir con el código en main. La fuente de verdad es src/routes/como-funciona.content.ts; si una etapa cambia de estado, se cambia ahí y en esta tabla en el mismo PR.

EtapaEstadoQué significa hoy
A1–A5En producciónEl pipeline completo de datos públicos, descrito en El pipeline de datos y Procedencia.
B1 ConsentimientoEn producciónvalidateContribution() exige consent: true; la licencia fija la postura de corpus. Se registra el compromiso, no el dataset.
B2 Cifrado en el clientePróxima faseCifrado de sobre (AES-256-GCM + HPKE RFC 9180) especificado en la fase H. No construido.
B3 SeudonimizaciónEn produccióncontributor_id = SHA-256 con sal secreta TRUST_ID_SALT; sin sal, producción no emite recibos.
B4 ReciboEn producciónreceipt_hash SHA-256 sobre cuerpo canónico; v2 añade HMAC-SHA256 del emisor cuando TRUST_RECEIPT_HMAC_KEY existe.
B5 Ledger y revocaciónEn producciónEl código y el almacén compartido están en producción: Redis KV, con los mismos nombres de entorno y la misma precedencia que el limitador de tasa (KV_REST_API_* primero, luego UPSTASH_REDIS_REST_*; #1287). GET /api/contribute responde configured: true. El registro público está en vivo y vacío (count 0, comprobado el 2026-10-16). La página lo consulta en vivo.
B6 Sala limpia TEEDiseñoVM confidencial (AMD SEV-SNP / Intel TDX, GPU confidencial) con atestación remota, liberación de llave condicionada y salida solo agregada con privacidad diferencial.
B7 Cómputo en origenDiseñoNodo en la infraestructura del aportante que ejecuta solo manifiestos firmados Ed25519; aprendizaje federado con agregación segura.
B8 Firma pública y anclajeDiseñoEd25519 sobre receipt_hash + log de Merkle RFC 6962 anclado con RFC 3161 / OpenTimestamps (fases C y D).

Las etapas en diseño nombran tecnologías candidatas con el mayor detalle técnico posible, pero ninguna está construida ni contratada, y la página lo dice en cada una. La página cierra con un bloque "Lo que no afirmamos hoy" y con la postura de soberanía frente a raíces de confianza de hardware estadounidense.

Dos capas de lectura ​

Cada etapa muestra primero una línea en lenguaje llano y el flujo "entra → sale". El botón Ver detalle técnico (o el interruptor Modo técnico, que abre todas) despliega la especificación, las notas, el modelo de amenazas en dos columnas (qué puedes verificar / qué no es posible) y las referencias a esta documentación.

Los laboratorios ​

Nada en la página es una simulación:

  • Rastrea una cifra (A3). Toma un citation_id real, lo descompone con parseMultiId(), lo resuelve con inferSourceKey() / deepLinkFor() del registro de fuentes y busca el registro publicado en public/data/citations/<ISO3>.json.
  • Recalcula un recibo (B3–B4). Recalcula contributor_id, salt_version, contribution_id, el cuerpo canónico, receipt_hash y la firma v2 opcional con Web Crypto, en el navegador, sin llamadas de red. El módulo src/lib/trust-receipt-web.ts es un port de server/trust/ledger.ts, y src/lib/trust-receipt-web.test.ts exige paridad byte a byte contra makeReceipt() para recibos v1 y v2: si el servidor cambia el algoritmo, el build falla antes de que la demo se desvíe. Usa la sal pública de desarrollo y lo declara: sus ids nunca coinciden con los de producción.
  • Verificador independiente. Acepta cualquier recibo, incluido uno real de /contribuir: quita receipt_hash y la firma, canonicaliza el resto y recalcula el SHA-256. Un botón altera un campo para mostrar que el hash deja de coincidir.
  • Vista del atacante. Demuestra el ataque de diccionario contra un contributor_id calculado con la sal pública, que es exactamente la razón por la que producción exige TRUST_ID_SALT secreta.
  • Estado del ledger (B5). Lee GET /api/contribute y muestra si el almacén compartido está configurado.

Las cifras de cabecera (observaciones, registros de cita) se leen en vivo de /api/v1/index.json y enlazan a ese archivo.

Relación con otras páginas ​

  • La tesis y la mecánica completa del recibo viven en Fideicomiso de Datos.
  • La secuencia criptográfica objetivo (fases C, D, G, H) vive en Procedencia: hoja de ruta; /como-funciona la presenta, no la redefine. Si ambas divergen, se corrige la página, no la hoja de ruta.

Cada cifra con su fuente — la trazabilidad es el contrato.