+ 34 91 577 98 19 despacho@aledralegal.com

¿Cómo verificar la estampación de un documento en la cadena de bloques?

por | Mar 29, 2019 | Blockchain

Cuando utilizas la herramienta Stamper para estampar tus documentos en la cadena de bloques de Bitcoin o Ethereum dispones de dos vías de verificación:

  1. Acceder al apartado “verificar” situado en la parte superior izquierda de Stamper;
  2. Comprobar manualmente la estampación en la cadena de bloques de Bitcoin o de Ethereum.

A continuación, te explicaremos las nociones básicas y los cuatro pasos que necesitas seguir para comprobar, de una forma manual, la efectiva estampación de tus documentos en una u otra cadena de bloques.

El recibo de estampación que obtendrás estará formado por cinco grupos de información que te permitirán verificar manualmente la estampación de tu documento en las cadenas de bloques. Los grupos de información son:

  1. El documento que ha sido estampado;
  2. El hash del documento estampado;
  3. El hash de la transacción donde se encuentra el Merkle Root;
  4. Los hashes que forman el Merkle Tree;
  5. El sello de tiempo o momento de estampación del documento en las cadenas de bloques;

EL DOCUMENTO ESTAMPADO

En la mayoría de los casos, el documento estampado tiene un formato pdf, aunque en ciertas ocasiones se ha podido estampar en otro formato. Por tanto, a la hora de hacer las posteriores comprobaciones te deberás de asegurar de que tanto el formato como la versión del documento coincida con el escogido para la estampación.

En cualquier caso, podrás encontrar el nombre del documento y el formato de la estampación reflejados en el recibo de estampación.

EL HASH DEL DOCUMENTO ESTAMPADO

Tienes que tener claro que tu documento no se subirá a las cadenas de bloques. Lo que se estampará es un identificador único de tú documento. Para calcular ese identificador único, será preciso utilizar una función hash, concretamente, la función SHA-256.

El primer paso de verificación consistirá en comprobar que el hash del documento que aparece en el recibo de estampación es correcto.

¿Cómo?

Siguiendo los pasos que se detallan en la siguiente imagen:

  1. Tendrás que utilizar el documento original.
  2. Deberás calcular la función hash de dicho documento (no olvides escoger la función SHA-256) y
  3. Así, obtendrás el código hash.

Existen diferentes páginas gratuitas que nos permitirán realizar esta tarea:

  1. https://md5file.com/calculator
  2. https://defuse.ca/checksums.htm
  3. https://www.fileformat.info/tool/hash.htm

Una vez hayas calculado el hash del documento original, deberás compararlo con el hash del documento que aparece en el recibo de estampación y comprobar que son iguales.

De esta forma podremos asegurarnos, que el documento estampado es exactamente igual al documento original que tenemos, certificando la integridad del mismo.

MERKLE TREE Y MERKLE ROOT

El sistema de estampación de documentos utiliza las transacciones para estampar los documentos, solo pudiendo estampar un hash por transacción. Para realizar transacciones rápidas se recomienda añadir una comisión a la misma, de lo contrario se corre el riesgo de que la transacción nunca se llegue a tramitar. En definitiva, sería muy costoso estampar un documento por transacción.

Para solventar dicho problema, se utiliza el sistema “Merkle Tree” que, como verás, permite estampar todos los documentos que desees con un solo hash y, por tanto, en una sola transacción.

Este sistema permite hacer un Merkle Tree con todos los niveles deseados, pudiendo incluir en el hash final o Merkle Root todos los documentos que se quiera. Una de las características principales del sistema Merkle Tree es su inalterabilidad, es decir, si se modifica uno solo de los hashes incluidos en el Merkle Tree, el Merkle Root final será diferente.

Como se mencionaba al inicio de este post, la estampación de tu documento se puede tramitar en la cadena de bloques de Bitcoin o en la de Ethereum. Por ello, tanto los datos correspondientes al hash de la transacción como al Merkle Root y al Merkle Tree serán distintos para cada cadena de bloques.

¿Cómo funciona el Merkle Tree?

La función hash SHA-256 calcula un código binario de 256 dígitos (1001010…01010) para cualquier documento o frase. Normalmente, para que sea más sencillo representar ese código de 256 dígitos, se transformará dicho código a lenguaje hexadecimal, obteniendo un código alfanumérico como los que se encuentran en el recibo de estampación. ATENCIÓN, para comprobar los hashes del Merkle Tree siempre se utiliza la versión del hash en código binario. Por ello, tendrás que convertir los hashes de tu Merkle Tree y el hash de tu documento, que aparecen en tu recibo, a código binario.

En la siguiente imagen podrás identificar los siguientes pasos:

  1. Empieza colocando todos los documentos en la base del árbol y calculando el hash de cada uno de esos documentos. Recuerda que la función hash que se utiliza es SHA-256.
  2. A continuación, se emparejaran los hashes de los documentos, creando un código binario de 512 dígitos (256 + 256). Es decir, un hash al lado del otro. A este nuevo código de 512 dígitos se le aplicará la función hash, y se obtendrá un nuevo hash de 256 dígitos.
  3. De esta forma, se utiliza el procedimiento descrito en cada uno de los niveles del Merkle Tree hasta que se obtiene un hash final de 256 dígitos denominado Merkle Root.

Llegados a este punto, estarás listo para proceder con el segundo paso de verificación donde comprobarás que el hash de tú documento es parte del Merkle Root, el cual te aparece identificado en tú recibo de estampación.

Además, el recibo de estampación te muestra los hashes del Merkle Tree para que puedas hacer la comprobación de manera manual de la siguiente forma:

  1. El recibo contiene una serie de hashes, uno encima del otro y cada uno de ellos tiene indicado “left” o “right” (izquierda o derecha);
  2. Deberás coger el hash de tú documento y juntarlo con el primer hash de la lista “hashes del Merkle Tree”, obteniendo un código binario de 512 dígitos;
  3. Si el primer hash de la lista tiene indicado “izquierda” colocarás a la izquierda los 256 dígitos del hash de la lista y a la derecha los 256 dígitos del hash del documento original. En caso contrario, cuando el hash de la lista tenga la indicación “derecha”, para formar el código de 512 dígitos situaremos los 256 dígitos del hash del documento original a la izquierda y los 256 dígitos del hash de la lista a la derecha;
  4. Una vez calculado el nuevo hash del siguiente nivel, realizarás nuevamente la misma operación juntando el nuevo hash obtenido con el segundo hash de la lista de “hashes del Merkle Tree”;
  5. Continuarás realizando las mismas operaciones subiendo los niveles del Merkle Tree hasta obtener el hash final o Merkle Root, pudiendo así, comprobar que el hash de nuestro documento es parte del Merkle Root.

COMPROBACIÓN DE LA ESTAMPACIÓN DEL MERKLE ROOT EN LA CADENA DE BLOQUES

Una vez comprobado el hash de tú documento y que dicho hash es parte del Merkle Root, estarás listo para proceder con el tercer paso de verificación, comprobando que el Merkle Root se encuentra estampado en la cadena de bloques.

  1. Tendrás que buscar la transacción registrada en la cadena de bloques en la que se encuentra tu Merkle Root, esta transacción te aparecerá reflejada en tu recibo de estampación.
  2. Para poder visualizar una transacción en la cadena de bloques deberás dirigirte a algún explorador de la cadena de bloques. Te recomendamos los siguientes:
  3. https://www.blockchain.com/explorer
  4. https://blockexplorer.com
  5. https://blockchair.com/
  6. https://etherscan.io
  7. Estos sitios web ofrecen cajas de búsqueda diferentes para Bitcoin y Ethereum, (deberás seleccionar la cadena de bloques indicada en el recibo de estampación) donde deberás introducir el hash de la transacción.
  8. Una vez tengas la información de la transacción buscarás:
  9. En el buscador de Bitcoin: los Scripts, situados normalmente en la parte inferior o derecha del buscador, donde te aparecerá alguna de estas variables OP_RETURN / RETURN PUSHDATA entre los datos, y podrás comprobar que esa variable contiene el Merkle Root.
  10. En el buscador de Ethereum: el apartado input data o entrada de datos, donde te aparecerá tu Merkle Root.
  11. Una vez hayas localizado el Merkle Root en la transacción, podrás comprobar la estampación.

ATENCIÓN: deberás contar con que cada explorador es diferente y es posible que:

  1. El explorador no te identifique de la misma forma las variables o apartados que incluyen el Merkle Root, pero como hay pocas variables en las transacciones podrás identificarlo rápidamente.
  2. En relación a la información completa de la transacción, algunos exploradores suelen mostrar una versión reducida de la transacción, pero suelen tener una opción para ver todos los detalles de la misma donde encontrará el Merkle Root.
  3. Puedes encontrar una variable titulada “Raíz de Merkle”, ésta variable no hará referencia a tu Merkle Root, sino al conjunto de todas las transacciones del bloque. RECUERDA que tu Merkle Root se identifica de forma diferente.

Por último, ya puedes realizar el cuarto paso de verificación. En tu transacción podrás, asimismo, comprobar la hora y fecha en la que se estampó el Merkle Root, (deberás tener en cuenta los husos horarios) que debería coincidir con la del recibo de estampación. En caso de discrepancia entre fechas y horas deberá prevalecer la establecida en la transacción de la cadena de bloques.

RESUMEN DE LOS PASOS DE VERIFICACIÓN

  1. Comprobar que el hash de tú documento coincide con el indicado en el recibo;
  2. Calcular los hashes de los diferentes niveles del Merkle Tree para asegurarte que el hash de tu documento es parte del Merkle Root que aparece en el recibo;
  3. Comprobar que el Merkle Root está dentro de una transacción en la cadena de bloques;
  4. Comprobar tu sello del tiempo de tu documento indicado en el recibo en la cadena de bloques.

0 comentarios

CAtegorías