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.
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
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
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.jsonVerificá 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.