En informática , una lista hash es normalmente una lista de hashes de los bloques de datos de un archivo o conjunto de archivos. Las listas de hashes se utilizan para muchos propósitos diferentes, como la búsqueda rápida de tablas ( tablas hash ) y las bases de datos distribuidas ( tablas hash distribuidas ).
Una lista hash es una extensión del concepto de aplicar un algoritmo hash a un elemento (por ejemplo, un archivo). Una lista hash es un subárbol de un árbol Merkle .
A menudo, se utiliza un hash adicional de la propia lista de hash (un hash superior , también llamado hash raíz o hash maestro ). Antes de descargar un archivo en una red p2p , en la mayoría de los casos, el hash superior se obtiene de una fuente confiable, por ejemplo, un amigo o un sitio web que se sabe que tiene buenas recomendaciones de archivos para descargar. Cuando el hash superior está disponible, la lista de hash se puede recibir de cualquier fuente no confiable, como cualquier par en la red p2p. Luego, la lista de hash recibida se verifica con el hash superior confiable y, si la lista de hash está dañada o es falsa, se probará con otra lista de hash de otra fuente hasta que el programa encuentre una que coincida con el hash superior.
En algunos sistemas (por ejemplo, BitTorrent ), en lugar de un hash superior, la lista completa de hashes está disponible en un sitio web en un archivo pequeño. Este " archivo torrent " contiene una descripción, nombres de archivo, una lista de hashes y algunos datos adicionales.
Las listas hash se pueden utilizar para proteger cualquier tipo de datos almacenados, manipulados y transferidos en y entre ordenadores. Un uso importante de las listas hash es asegurarse de que los bloques de datos recibidos de otros pares en una red peer to peer se reciban intactos y sin alteraciones, y comprobar que los otros pares no "mientan" y envíen bloques falsos.
Por lo general, se utiliza una función hash criptográfica, como SHA-256, para el hash. Si la lista hash solo necesita protegerse contra daños involuntarios, se pueden utilizar sumas de comprobación no seguras, como CRC .
Las listas hash son mejores que un simple hash de todo el archivo, ya que, en caso de que un bloque de datos esté dañado, esto se detecta y solo es necesario volver a descargar el bloque dañado. Con solo un hash del archivo, se tendrían que volver a descargar muchos bloques intactos y reconstruir y probar el archivo hasta obtener el hash correcto de todo el archivo. Las listas hash también protegen contra los nodos que intentan sabotear enviando bloques falsos, ya que en tal caso el bloque dañado se puede obtener de alguna otra fuente.