Verificar reportes.
Cada reporte del audit trail se firma con Ed25519. Cualquiera puede verificar su autenticidad e integridad de forma independiente y offline, usando solo la clave pública de Vericto: sin secretos y sin confiar en nuestros servidores.
Resumen
Cuando exportas el audit trail en CSV o JSON, Vericto genera además una firma digital desacoplada (un archivo .sig) calculada sobre el contenido exacto del reporte. Esta firma permite comprobar dos cosas:
- Autenticidad: el reporte fue generado por Vericto y no por un tercero.
- Integridad: el contenido no fue alterado ni un solo byte desde que se generó.
La verificación es independiente: se hace con la clave pública de Vericto y herramientas estándar (como openssl), sin necesidad de ningún secreto y sin llamar a la API de Vericto. Esto es exactamente lo que un auditor de SOC 2 o ISO 27001 espera de un control de integridad de evidencia.
Descarga tanto el archivo como su firma desde Dashboard → Reportes. Necesitas los dos para verificar: el reporte (.csv/.json) y su firma (.sig).
Por qué se firman (y por qué asimétrica)
Vericto usa Ed25519, un esquema de firma asimétrica: una clave privada (secreta, que nunca sale de nuestros servidores) firma los reportes, y una clave pública (que publicamos abiertamente) permite verificarlos.
La ventaja frente a un checksum con clave simétrica (HMAC) es la verificación por terceros: con una firma asimétrica, un auditor externo verifica el reporte usando solo la clave pública, sin que Vericto le comparta ningún secreto y sin tener que confiar en la palabra de Vericto. La verificación es matemática y reproducible por cualquiera.
Qué descargas
Desde la página Reportes del dashboard, cada exportación lista ofrece estas descargas (el reporte PDF y su firma, cuando el PDF se generó):
| Archivo | Descripción |
|---|---|
Reporte (.csv / .json) |
El audit trail exportado. Queda intacto byte por byte: se abre en Excel, pandas o cualquier herramienta sin modificaciones. |
Firma (.sig) |
Archivo de texto con la firma desacoplada. Es auto-descriptivo e incluye el esquema, el identificador de clave, el hash SHA-256 del contenido y la firma Ed25519 en base64. |
Reporte PDF (.pdf) |
El reporte de cumplimiento del mismo período, para leer y entregar al auditor. Su anexo incluye el SHA-256 y la firma del archivo de datos, lo que liga ambos documentos. |
Firma del PDF (.pdf.sig) |
La firma desacoplada del PDF, en el mismo formato que la del archivo de datos. Los reportes mensuales de Enterprise se descargan igual: el PDF y su firma. |
Ejemplo del contenido de un archivo .sig:
scheme: ed25519-sha256
key-id: default
sha256: 9f2c1a7b0e5d4c3b2a1908f7e6d5c4b3a2918070f6e5d4c3b2a1908f7e6d5c4b3
signature: MEUCIQC2p...base64...t0Y=
Verificar la firma
El esquema es ed25519-sha256: la firma Ed25519 se calcula sobre el digest SHA-256 del reporte (no sobre el archivo completo, para permitir reportes de cualquier tamaño). Verificar tiene dos pasos: calcular el SHA-256 del archivo y comprobar la firma Ed25519 sobre ese digest. Necesitas el reporte, su .sig y la clave pública de Vericto (ver la sección siguiente).
Extrae la firma, calcula el SHA-256 del reporte como bytes crudos y verifica la firma sobre ese digest:
# 1. Guarda la clave pública de Vericto en vericto-public.pem (ver sección siguiente)
# 2. Extrae la firma base64 del .sig a un archivo binario
grep '^signature:' vericto-audit-abcd1234.csv.sig \
| sed 's/^signature: //' | base64 -d > report.sig.bin
# 3. Calcula el SHA-256 del reporte como 32 bytes crudos (el mensaje firmado)
openssl dgst -sha256 -binary vericto-audit-abcd1234.csv > report.sha256.bin
# 4. Verifica la firma Ed25519 sobre el digest
openssl pkeyutl -verify \
-pubin -inkey vericto-public.pem \
-rawin -in report.sha256.bin \
-sigfile report.sig.bin
# Salida esperada:
# Signature Verified Successfully
# (Opcional) Confirma que el sha256 del .sig coincide con el del archivo:
openssl dgst -sha256 vericto-audit-abcd1234.csv
La firma cubre el digest SHA-256 del reporte, así que verificarla equivale a verificar el archivo completo: si un solo byte cambia, el SHA-256 cambia y la firma no coincide. El campo sha256: del .sig te deja además comparar el hash a simple vista.
Obtener la clave pública
La clave pública de firma es información no sensible y se publica en un endpoint abierto (sin autenticación):
curl -s https://api.vericto.com/api/v1/meta/export-signing-key
Respuesta:
{
"scheme": "ed25519-sha256",
"key_id": "vericto-production-2026",
"public_key": "-----BEGIN PUBLIC KEY-----\nMCowBQYDK2Vw...\n-----END PUBLIC KEY-----\n",
"keys": [
{ "key_id": "vericto-production-2026", "public_key": "-----BEGIN PUBLIC KEY-----\n...", "status": "active" }
]
}
Guarda el valor de public_key en un archivo vericto-public.pem (con los saltos de línea reales) y úsalo en los comandos de verificación.
El campo key-id del .sig indica qué clave firmó el reporte. Cuando Vericto rota la clave, la anterior no se borra: sigue publicada en keys como retired, y puedes pedirla directamente con ?key_id=, por ejemplo curl -s "https://api.vericto.com/api/v1/meta/export-signing-key?key_id=vericto-production-2026". Así un reporte firmado antes de una rotación se sigue verificando.
Retención: exportaciones 7 días, reportes mensuales 13 meses
Las exportaciones (archivo de datos, reporte PDF y sus firmas) están disponibles para descarga durante 7 días desde su creación. Pasado ese plazo, los archivos y sus firmas se eliminan de forma permanente del almacenamiento de objetos, y la exportación aparece como Expirada en el dashboard.
Este borrado es real, no solo una etiqueta: un proceso diario elimina los objetos vencidos. Si necesitas conservar un reporte y su firma como evidencia a largo plazo, descárgalos y guárdalos en tu propio repositorio dentro de la ventana de 7 días. La firma Ed25519 seguirá siendo verificable indefinidamente, ya que la clave pública permanece publicada.
Los reportes mensuales de Enterprise se conservan 13 meses (400 días), o el plazo que fije el contrato, y luego se eliminan de la misma forma.
Preguntas frecuentes
¿Necesito un secreto de Vericto para verificar?
No. La verificación usa exclusivamente la clave pública, que es abierta. Nunca necesitas —ni deberías pedir— la clave privada.
¿La verificación depende de que la API de Vericto esté disponible?
No. Una vez que tienes la clave pública guardada, la verificación es totalmente offline. Solo necesitas la API para descargar la clave pública la primera vez.
Modifiqué el archivo (aunque sea un espacio) y la verificación falla. ¿Es normal?
Sí, es el comportamiento correcto. La firma cubre los bytes exactos del reporte original. Cualquier cambio —incluso reordenar columnas o reguardar el CSV desde Excel— invalida la firma. Verifica siempre sobre el archivo tal como se descargó.
¿Qué pasa si un reporte no tiene .sig?
Los reportes generados con la firma habilitada siempre incluyen .sig. Reportes muy antiguos (anteriores a la firma Ed25519) podrían no tenerla; en ese caso, vuelve a generar el export para obtener uno firmado.