Demostrar que un registro forma parte de un conjunto de datos grande solía implicar enviar el conjunto de datos. Eso es poco práctico para una copia de seguridad, un archivo de transacciones o una caché web.

La tesis de 1979 y el artículo de 1989 de Merkle describen un árbol en el que cada bloque se somete a hash y los hashes se emparejan hasta que queda una sola raíz. Verificar un miembro requiere los log-n hashes en la ruta, no el archivo.

El árbol convierte una prueba de pertenencia en una prueba de igualdad sobre la raíz, y un cambio en cualquier lugar se manifiesta como una ruta modificada. Es la forma en que se puede avalar toda una estructura de datos sin ver cada byte.

Comprometer las hojas mediante hashes por pares hasta una sola raíz

El tamaño de la prueba es logarítmico, por lo que la verificación sigue siendo barata en los conjuntos de datos más grandes.

La raíz compromete todo el conjunto de datos, por lo que se detecta cualquier manipulación.

Un verificador solo necesita la raíz y una ruta corta, no confiar en el servidor.

Es una cadena de hashes unidireccionales, por lo que no se revela información sobre los datos.

Para demostrar un hecho sobre un todo enorme, no envíes el todo. Redúcelo a un solo resumen y luego proporciona solo la ruta corta que conecta la afirmación con ese resumen.

Los árboles de Merkle son fundamentales en Git, las cadenas de bloques de criptomonedas, la transparencia de certificados y el almacenamiento distribuido. Permiten a un cliente verificar una pequeña pieza de un almacén grande y no autenticado confiando solo en una raíz corta.

CONSULTA LAS PRUEBAS

Las fuentes

  1. A certified digital signature Advances in Cryptology — CRYPTO '89 · dblp.org
  2. Merkle tree Wikipedia · en.wikipedia.org