Las funciones hash son una parte esencial de la tecnología blockchain, por lo que sirven muchos propósitos. Son funciones matemáticas que toman una entrada de cualquier extensión y producen una salida con una extensión predefinida. A la salida suele llamársele valor hash, compendio hash o simplemente hash.

Hay tantas funciones hash que hay calculadoras en línea para funciones hash (como esta, por ejemplo). Las llamadas calculadoras permiten al usuario aplicarle un hash a una misma entrada utilizando a la vez diferentes funciones. La extensión de la salida puede oscilar desde un solo carácter hasta archivos completos, pero el tamaño de la salida siempre será el mismo por función.

Una función hash criptográfica debe cumplir con los siguientes criterios para utilizarse en una cadena de bloques de manera viable:

  • Unidireccionalidad - Debe ser fácil calcular la salida de una entrada pero imposible calcular la entrada a partir de la salida. Al discutir el minado de criptomonedas más adelante en este mismo capítulo, este principio desempeñará un papel importante.
  • Seudoaleatoriedad - Un cambio en la entrada produce siempre un cambio impredecible en la salida. Si el valor hash de la entrada 2 fue 4, el hash de la entrada 3 no puede ser 6.
  • Resistencia a las colisiones - Debe ser muy difícil (entiéndase imposible) encontrar dos entradas que al pasar por una función hash produzcan la misma salida (colisionen).
  • Determinismo - Dos entradas iguales deben siempre producir también dos salidas iguales.

Hash function Hash function

La función hash más utilizada en la actualidad es SHA-256 (Secure Hash Algorithm). El número indica la extensión de la salida en bits. Por ejemplo, hay cuatro extensiones de salida en la familia SHA: 224, 256, 384 y 512 bits. Otro tipo de funciones hash relevantes a las cadenas de bloques son las de la familia RIPEMD. Muchas criptomonedas suelen utilizar RIPEMD160, el cual, como es de esperarse, produce salidas de 160 bits.

Los valores hash se utilizan con muchos propósitos en el mundo de criptomonetario y de cadenas de bloques. El más destacado de estos procesos es el encadenamiento de bloques, responsable de crear la blockchain. Al valor hash se le suele llamar también huella de datos por su propiedad de ser resistente a las repeticiones o colisiones. El usuario remitente de un archivo puede también incluir el hash de dicho archivo aplicándole una función hash antes de adjuntarlo. El receptor puede calcular también el valor hash del archivo tras recibirlo y, comparándolo al valor que le proporcionó el usuario, determinar si el archivo recibido le ha llegado íntegro.

Cada conjunto de datos utilizado como entrada puede identificarse fácilmente por medio del hash único que genera. Es casi imposible encontrar dos entradas para una misma función hash que resulten en la misma salida (es decir, que provoquen una colisión). Se requerirían todas las supercomputadoras del mundo y varios miles de años de tiempo para lograr una colisión. Esto se debe a que no hay manera de calcular una colisión, pues se pueden lograr solamente al azar, ingresando entrada tras entrada a la función hash hasta obtener una colisión por casualidad.

Resumen

Las funciones hash son la piedra angular de la tecnología blockchain. El hash de un archivo es como una huella digital. Resulta fácil detectar si dos archivos son idénticos o no comparando sus hashes. Las funciones hash encadenan a los bloques, por lo que no puede modificarse información pasada sin incluir el hash del bloque anterior. Al intentar modificar los datos, las referencias o enlaces se romperán.

En nuestro próximo artículo veremos a fondo el tema de criptografía de llave pública. Este tipo de criptografía puede considerarse la segunda piedra angular de la tecnología de cadenas de bloques y de la asignación de una identidad dentro de las mismas.