Skip to main content

Immutable Logs — Cadena criptográfica de auditoría

SecureAI registra cada interacción con IA y cada acción administrativa en una cadena inmutable de tres capas. Esta arquitectura garantiza que cualquier modificación, borrado o manipulación de los registros sea detectable — incluso si alguien tiene acceso directo a la base de datos.

¿Por qué importa?

Un log que solo existe en MongoDB no es verdaderamente inmutable: quien tenga acceso al servidor puede borrarlo sin dejar rastro. SecureAI resuelve esto anclando cada registro a Sigstore Rekor, un log de transparencia público operado por la Open Source Security Foundation (OpenSSF) — el mismo sistema que usa la industria del software para verificar la cadena de custodia de paquetes críticos.
Garantía técnica: Una vez que un hash de bloque Merkle está en Rekor, nadie — incluyendo el operador de SecureAI — puede alterar retroactivamente ese registro. Cualquier auditor externo puede verificarlo de forma independiente con una sola llamada curl.

Las tres capas de prueba

Cada bundle de interacción tiene tres niveles de evidencia criptográfica:

Capa 1 — Registro MongoDB (L1)

El registro primario de la interacción se almacena en MongoDB con: La cadena prev_hash → current_hash → next_current_hash hace que borrar cualquier fila rompa la cadena — la discrepancia es detectable al recorrer la secuencia.

Capa 2 — Árbol Merkle (L2)

Cada 10 entradas de log se agrupan en un bloque Merkle:
El merkle_root es el hash raíz que representa las 10 entradas. Si cualquier entrada se altera, el merkle_root cambia — lo que invalida la prueba de inclusión.

Capa 3 — Ancla Rekor (L3)

El merkle_root de cada bloque sellado se envía a Sigstore Rekor, un log público append-only. Rekor devuelve: Una vez que el log_index existe en Rekor, nadie puede eliminarlo — el log de Rekor es público, distribuido e inmutable por diseño.

Portal de Transparencia (admin)

Acceder

Admin → AI Gateway → Transparency Portal

Verificar un bundle

  1. Escribe o pega el bundle_id en el campo de búsqueda.
  2. Haz clic en “Verify Proof”.
  3. Verás las tres capas con badges de estado:
    • Verde = verificado correctamente
    • ⚠️ Amarillo = pendiente de sellado/ancla (normal para interacciones de hace menos de 2 minutos)
    • Rojo = fallo de verificación (señal de alerta)

Copiar enlace público de verificación

Cuando el resultado está visible, aparece una barra con el botón “Copy public verification URL”. Ese enlace es público — puedes enviárselo a un auditor externo sin que necesite login.

Página pública de verificación

Cualquier persona con un bundle_id puede verificar la prueba sin acceso a SecureAI:
La página muestra las tres capas, un botón para descargar el JSON de prueba, y comandos para verificar localmente. Esta página no expone:
  • El contenido del mensaje ni la respuesta de la IA
  • Datos del usuario (nombre, email, IP)
  • Cualquier información de identificación personal
Solo muestra hashes, timestamps, índices y estado de verificación.

Verificación independiente con curl

Un auditor externo puede verificar cualquier bundle sin confiar en la interfaz web:

Paso 1 — Obtener la prueba

Paso 2 — Confirmar el hash en la capa Merkle

Paso 3 — Confirmar el ancla en Rekor

Un campo signedEntryTimestamp no vacío confirma que Rekor ha aceptado y firmado la entrada. Ese timestamp no puede ser retroactivamente alterado.

Export bundle firmado (auditores y usuarios)

Además del verificador público por bundle_id, SecureAI permite exportar evidencia criptográfica en un ZIP portable para auditorías offline.

Qué incluye el ZIP

Cuando un administrador usa Export signed bundle en Logs o SMLTP, se descarga un archivo con:
  • data.csv: datos exportados.
  • manifest.json: metadatos criptográficos (rowCount, merkleRootOfExport, signingKeyFingerprint, timestamp, etc.).
  • manifest.sig: firma Ed25519 de manifest.json.
  • verify.js: verificador offline sin dependencias.
  • README.txt: instrucciones rápidas.

Cómo verificar (offline)

  1. Descomprime el ZIP.
  2. Abre una terminal en esa carpeta.
  3. Ejecuta:
Salida esperada en un bundle intacto:

Qué detecta este verificador

  • Edición de cualquier campo en data.csv.
  • Borrado o agregado de filas en data.csv.
  • Modificación de manifest.json.
  • Uso de clave de firma incorrecta.
Si cualquier chequeo aparece como FAIL, ese export no debe considerarse confiable.

Prueba rápida para auditoría

Para demostrar detección de manipulación:
  1. Ejecuta node verify.js sobre el ZIP recién exportado (debe dar todo PASS).
  2. Edita un carácter cualquiera en data.csv y guarda.
  3. Ejecuta de nuevo node verify.js.
  4. Debe fallar al menos Merkle root of export.
Esto confirma evidencia de integridad de extremo a extremo para el dataset exportado.

Interpretación de los estados


Flujo completo de un mensaje


Cumplimiento de proveedores

El badge “Provider Compliance” indica si el proveedor de IA (OpenAI, Anthropic, etc.) confirmó recibir las cabeceras de privacidad SMLTP:

Preguntas frecuentes

¿Puedo verificar un bundle sin internet? Sí, descarga el JSON de prueba desde el botón “Download JSON” mientras tienes conexión. El merkle_root y los hashes son verificables offline recomputando el árbol. ¿Qué pasa si L3 está pendiente? Es normal para interacciones recientes (menos de 1 minuto). El sidecar de Rekor procesa bloques cada ~30 segundos. Si después de 5 minutos sigue pendiente, verifica que el sidecar rekor-anchor esté corriendo. ¿Cuánto tiempo se guardan los registros? Por defecto, los registros se conservan según el retentionPeriod configurado. Los registros marcados como compliance (phi, pii, security, authorization) nunca se eliminan automáticamente. ¿Puedo compartir el enlace de verificación con un cliente? Sí. La URL /verify/<bundle_id> no requiere login y no expone datos sensibles. Es segura para compartir con auditores, reguladores o clientes.