Ir al contenido
VinculoSano
Volver a Verificar una exportación

Para peritos y profesionales

Cómo verificar una exportación

Esta guía explica qué contiene una exportación de VinculoSano, cómo se genera y cómo cualquier persona puede comprobar, con herramientas estándar y sin depender de nosotros, que no fue modificada.

1. Qué contiene una exportación

Una madre, un padre o un profesional autorizado por la familia pide una exportación de un período. Se generan dos archivos: un PDF legible y un manifiesto en formato JSON.

El manifiesto no tiene contenido de la familia: lista cada registro exportado con su identificador, su fecha y su huella SHA-256, la huella SHA-256 del PDF, quién la pidió, el período, la versión de la plataforma y una firma digital Ed25519 de VinculoSano.

La huella de cada registro es el SHA-256 de su serialización canónica RFC 8785 (JCS), en UTF-8, tal como la API lo devuelve al generar la exportación.

2. Verificación rápida

En vinculosano.com.ar/verificar elegí el PDF o el manifiesto. Tu navegador calcula su huella SHA-256 y envía solo esa huella. Si coincide con una exportación que generamos y firmamos, vas a ver su identificador, la fecha de generación, el período, la cantidad de registros y el estado de la firma.

Si cambió un solo byte del archivo, la huella es otra y la verificación no encuentra coincidencia.

3. Verificación independiente

Estos pasos no usan nuestra página: solo la clave pública publicada y herramientas estándar.

  1. Comprobá que el PDF es el del manifiesto

    Calculá el SHA-256 del PDF y comparalo con el campo pdf.sha256 del manifiesto. Tienen que ser idénticos.

    # macOS
    shasum -a 256 exportacion.pdf
    # Linux
    sha256sum exportacion.pdf
    # Windows (PowerShell)
    Get-FileHash exportacion.pdf -Algorithm SHA256

  2. Descargá la clave pública

    El campo signature.keyId del manifiesto indica qué clave lo firmó. Las claves también están en la sección Verificación técnica de la página Verificar.

    curl -s https://api.vinculosano.com.ar/api/v1/verification/keys \
      | jq -r '.keys[] | select(.keyId=="<keyId>") | .publicKeyPem' > clave.pem

  3. Reconstruí lo que se firmó

    Lo firmado es el manifiesto completo sin el campo signature, serializado según RFC 8785 (JCS) en UTF-8. Este comando de Node.js lo genera y separa la firma.

    node -e 'const fs=require("fs");const m=JSON.parse(fs.readFileSync(process.argv[1],"utf8"));const s=m.signature;delete m.signature;const jcs=v=>v===null||typeof v!=="object"?JSON.stringify(v):Array.isArray(v)?"["+v.map(jcs).join(",")+"]":"{"+Object.keys(v).sort().map(k=>JSON.stringify(k)+":"+jcs(v[k])).join(",")+"}";fs.writeFileSync("firmado.bin",jcs(m));fs.writeFileSync("firma.bin",Buffer.from(s.value,"base64"));' manifiesto.json

  4. Verificá la firma Ed25519

    Con OpenSSL 3 o posterior. Si el manifiesto fue modificado, el resultado es "Signature Verification Failure".

    openssl pkeyutl -verify -pubin -inkey clave.pem -rawin -in firmado.bin -sigfile firma.bin

4. Mensajes entre madre y padre

Los mensajes no se pueden editar ni borrar desde la app. La base de datos además rechaza cualquier modificación o borrado de un mensaje, salvo el borrado completo de la familia cuando se elimina la cuenta.

Cada mensaje queda encadenado al anterior de la misma familia: su huella SHA-256 incluye su número de orden, su autor, la fecha y hora asignadas por el servidor, una huella de su texto, la sesión y el dispositivo desde donde se envió, el método con el que esa sesión se autenticó y la huella del mensaje anterior. Alterar o quitar un mensaje rompe la cadena a partir de ese punto.

En la exportación, cada mensaje muestra su posición y su huella en la cadena, si el mail del remitente estaba verificado al enviarlo, la antigüedad de su cuenta y el método de autenticación (passkey, contraseña, código por mail o app de autenticación).

5. Sellos de tiempo

Una vez por día, el estado de la cadena de mensajes y del registro de auditoría se sella con una autoridad de sellado de tiempo externa (RFC 3161). Eso fija, con la hora de un tercero, que el historial tenía ese estado en ese momento: lo que se reescriba después deja de coincidir.

Los sellos se verifican con openssl ts -verify. Si los necesitás para una pericia, pedilos por mail indicando el identificador de la exportación.

6. Alcance

VinculoSano no verifica la identidad real de las personas con documento: las exportaciones informan lo que sabemos (mail verificado, antigüedad de la cuenta y método de autenticación de cada envío).

Estas herramientas permiten comprobar que un archivo no fue modificado y que lo generó VinculoSano. Cómo se valora ese archivo lo decide quien corresponda en cada caso.

Consultas técnicas

Si necesitás más detalle para una pericia, escribinos a hola@vinculosano.com.ar con el identificador de la exportación.