Verificación

Cómo comprobar un certificado sin confiar en nosotros

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.

A qué apunta un certificado

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.

El paquete de evidencias

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ó.

El anclaje

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.

Las tres comprobaciones

En este orden. La tercera solo tiene sentido si la segunda pasó.

  1. 01

    Recalcular la huella

    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.

  2. 02

    Compárala con el certificado

    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.

  3. 03

    Confirma el anclaje en la cadena

    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.

Por qué siempre es la misma huella

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.

Hazlo tú mismo

Dos comandos y un enlace. Nada de esto es nuestro.

Recalcula la huella: macOS, Linux

shasum -a 256 evidence.json

Recalcula la huella: Windows

certutil -hashfile evidence.json SHA256

Abre 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

0x5CceC6F5806b7C949eB90D61fB9D13Cb639AC203

Fuente 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 Polygonscan

El verificador de referencia

Mantenemos 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.

Una transacción, o un lote al día

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.

Transacción dedicada

El evento Anchored lleva directamente la huella de tu paquete. Buscas tu propio hash y lo encuentras, o no.

Lote Merkle diario (aún no en uso)

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.

Lo que ve un tercero, y lo que no ve

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.

Lo que devuelve la verificación pública

  • el código del certificado
  • si es un registro de documento o una reunión protegida
  • la huella del paquete de evidencias
  • la red, la transacción, el bloque y la marca de tiempo del anclaje
  • si se ancló por sí solo o dentro de un lote
  • la versión del esquema y cuándo se emitió el certificado
  • cuántas partes aceptaron

Lo que nunca devuelve

  • ningún nombre
  • ninguna dirección de correo electrónico
  • ningún nombre de empresa
  • ningún título del documento ni de la reunión
  • ningún texto del NDA, ninguna transcripción, ninguna grabación

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.

Si algo no coincide

Una discrepancia es información, no una acusación. Léela en este orden.

  1. La huella difiere

    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.

  2. Sigue sin coincidir

    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.

  3. No se encuentra el código

    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.

hub@witup.ai

¿Tienes un código delante?

La verificación pública no pide nada más: ni cuenta, ni dirección de correo electrónico, ni motivo.

Verificar un certificado

Adónde ir a continuación