Verificación
Todo lo demás en este sitio te pide que creas algo. Esto no. Dado el archivo de evidencias y el certificado, la comprobación es aritmética, y el registro con el que lo comparas está en una blockchain pública que no podemos alterar.
Un certificado es un puntero a dos cosas. Ninguna de las dos es una captura de pantalla, y ninguna de las dos es nuestra palabra.
Un único archivo JSON, evidence.json, que contiene todo lo que se certificó: el NDA y su huella, cada parte con la forma en que realmente se identificó y el momento en que aceptó, y, para una reunión protegida, la transcripción (con ambas versiones y sus huellas, si se corrigió), el registro de eventos de la reunión y la huella de la grabación. No es un resumen de lo que ocurrió. Es lo que ocurrió.
Una transacción pública en Polygon PoS en la que se escribió la huella de ese paquete, con un número de bloque y una marca de tiempo de bloque. Desde el momento en que se mina, ni nosotros ni nadie más podemos moverla, modificarla ni revertirla.
En este orden. La tercera solo tiene sentido si la segunda pasó.
01
Calcula el SHA-256 de evidence.json tal como está. El archivo dentro del paquete ya está en forma canónica, así que no hay nada que normalizar primero ni ninguna biblioteca nuestra que instalar.
02
Debe ser igual al hash del paquete impreso en el certificado: en el PDF, en certificate.json dentro del paquete y en la página pública de verificación. Si difiere, la evidencia que tienes en tus manos no es la evidencia que se certificó, y la tercera comprobación carece de sentido.
03
Abre la transacción de anclaje en cualquier explorador de bloques y lee el evento Anchored. El hash que lleva debe ser el que acabas de calcular. La marca de tiempo del bloque te dice el momento a partir del cual esa huella ya no podía ser modificada por nadie.
Hacer hash de JSON de forma ingenua sería una lotería: el mismo contenido, escrito por dos programas, da dos secuencias de bytes distintas (un orden de claves distinto, un espaciado distinto, una forma distinta de escribir el mismo número) y, por lo tanto, dos hashes distintos.
Así que el paquete se escribe en la forma canónica de RFC 8785. Canónica significa que hay exactamente una manera admisible de escribir un contenido dado: claves ordenadas, una única forma escrita para cada número y cada cadena, salida UTF-8. Dos personas, en dos máquinas, con diez años de diferencia, producen los mismos bytes a partir del mismo paquete, y eso es lo que convierte “recalcular el hash” en un procedimiento en lugar de una invitación.
También es la razón por la que el archivo que distribuimos ya es canónico: en ese archivo, un SHA-256 simple es toda la primera comprobación.
Dos comandos y un enlace. Nada de esto es nuestro.
Recalcula la huella: macOS, Linux
shasum -a 256 evidence.jsonRecalcula la huella: Windows
certutil -hashfile evidence.json SHA256Abre la transacción de anclaje: el id está en tu certificado
https://polygonscan.com/tx/<transaction id>El contrato de anclaje: Polygon PoS, cadena 137
0x5CceC6F5806b7C949eB90D61fB9D13Cb639AC203Fuente verificada en Polygonscan. Anchored(hash, timestamp, sender) se emite para una transacción dedicada. El contrato también define BatchAnchored(merkleRoot, timestamp, sender) para un lote diario, que aún no está en uso: hoy cada certificado tiene su propia transacción.
Abre el contrato en PolygonscanMantenemos un verificador de línea de comandos que hace todo lo anterior en un solo comando, pruebas de Merkle incluidas. Tiene licencia MIT y aún no está publicado en un registro público, así que actualmente no hay forma de que lo obtengas, y es exactamente por eso que esta página está escrita en torno a herramientas que ya tienes. Cuando se publique, aquí aparecerá la instrucción.
Hoy cada huella llega a la cadena en su propia transacción. El contrato también admite un lote diario, aún no en uso; cuando lo esté, será igual de verificable. Lo que cambia es el coste y la inmediatez, no la solidez.
El evento Anchored lleva directamente la huella de tu paquete. Buscas tu propio hash y lo encuentras, o no.
Solo la raíz de un árbol llega a la cadena, en un evento BatchAnchored, y el certificado lleva la prueba que conduce desde tu huella hasta esa raíz: la hoja es el keccak-256 del hash del paquete, y cada nodo interno, el keccak-256 del par ordenado de sus hijos. La prueba se puede comprobar sin conexión, en tu propia máquina, y la raíz debe aparecer entonces en un evento BatchAnchored. Un certificado por lotes no es un certificado más débil: es la misma prueba con un paso corto más.
Un certificado que dice “anclaje pendiente” se ha sellado, pero aún no se ha escrito en la cadena. Su huella ya está fijada; lo que falta es la transacción. Es un estado, y la página dice cuál es: nunca un “anclado” silencioso.
La verificabilidad y la confidencialidad no están en tensión aquí, porque el límite no es una regla que alguien sigue: es una vista de base de datos, y una vista solo puede devolver lo que selecciona.
Nada de esto se oculta a posteriori. No se selecciona: la consulta que sirve esa página no puede acceder a esas columnas en absoluto.
Una discrepancia es información, no una acusación. Léela en este orden.
La causa más común con diferencia es que el archivo se abrió y se volvió a guardar con una herramienta que lo reformateó: basta con un espacio añadido. Descarga de nuevo el archivo original y vuelve a calcular sobre el archivo intacto.
Entonces, la evidencia que te dieron no es la evidencia que se certificó, y el certificado no la cubre. Díselo a quien te dio el archivo y escríbenos con el código del certificado.
Compruébalo carácter por carácter con el certificado: el código tiene una forma fija, CNDA-XXXX-XXXX-XXXX. Un código bien formado que sigue siendo desconocido significa que nunca se emitió ningún certificado con él.
La verificación pública no pide nada más: ni cuenta, ni dirección de correo electrónico, ni motivo.
Verificar un certificado