En la seguridad informática la función hash es fundamental para asegurar la integridad de la trasferencia y registro de información que precisa de altos niveles de protección.

Las funciones hash se emplean en acciones como la validación y autentificación de usuarios, la firma de documentos, y asimismo en las criptomonedas como procedimiento para eludir la falsificación de transacciones y prevenir acciones maliciosas.

Una función hash es un procedimiento criptográfico donde se emplea un algoritmo concreto para convertir una información determinada (por poner un ejemplo, un texto) en una una secuencia alfanumérica única de longitud fija, llamada hash.

Como ya hemos explicado en detalle qué es un hash en el precedente capítulo, no vamos a entrar en mucho detalle, mas destacaremos que un hash no viene a resultas de un cifrado, si no que es un resumen unidireccional por el hecho de que el proceso es irreversible, o sea, no se puede descifrar / recobrar la información original desde el hash final si no es probando a hashear sin parar hasta dar con el texto original, puesto que el hash encontrado va a coincidir con el que buscabas y ya sabías.

 

Función hash criptográfica

A lo largo de los años han aparecido muchas formas (algoritmos) de producir hashes, o sea existen muchos géneros de funciones hash, mas desde un punto de vista técnico todas y cada una deben tener una serie de peculiaridades para cumplir con su cometido de forma correcta:

  • Unidireccionalidad: Si tenemos un documento M el hash deja efectuar un hash resumen del mismo llamado h(M), mas desde este hash es imposible conocer el contenido del documento original M.
  • Compresión: Es indiferente el peso del documento M puesto que el hash resultante siempre y en todo momento va a tener exactamente la misma longitud con exactamente el mismo número de bits.
  • Facilidad de cálculo: Ha de ser fácil efectuar el cálculo de h(M) desde ‘M’ para una generación veloz y que no resulte un desperdicio de tiempo, energía y poder de cálculo.
  • Difusión de bits: El hash h(M) ha de ser una función compleja del mensaje original ‘M’. Si se diese el caso que se modificara M en cualquier parte, y si bien fuera una modificación mínima, el factor h(M) cambiara por completo.
  • Resistencia enclenque a colisiones: Va a ser computacionamente imposible que conocido M, podamos localizar otro M’ tal que h(M) = h(M’). Primera pre-imagen.
  • Resistencia fuerte a colisiones: Ha de ser computacionalmente bastante difícil hallar un par (M, M’) de manera que h(M) = h(M’). Segunda pre-imagen.

Seguridad del hash

Si. Se puede localizar el texto original de un hash. Mas es casi imposible. Solo a través de fuerza bárbara.

Por ejemplo, el hash de ciento veintiocho bits (una versión básica de hash) cuenta con 2^128 posibilidades diferentes y la probabilidad del cincuenta por ciento seria la raíz cuadrada de 2^128 que da como resultado 2^64 de que se de una instancia. De esto se consigue que a nivel estadístico es más fácil romper la colisión que romper la resistencia de la imagen anterior.

Así que es cierto, no hay una función hash en el planeta que esté libre de choques, mas si no tiene un fallo en su diseño, lograr romperla es muy complicado y llevaría un tiempo significativo, en ocasiones miles y miles de millones de años con una capacidad de cálculo superior a la de todo el planeta tierra.

Función hash en Bitcoin

Uno de los algoritmos de función hash por antonomasia es el SHA-256, se utiliza en infinidad de casuísticas dado su equilibrio entre seguridad y dificultad de generación (en cuánto a tiempo y gasto de energía se refiere)

Uno de los centenares de miles de lugares donde se utiliza es en Bitcoin.

Dentro del ecosistema de Bitcoin la función del hash es fundamental toda vez que este sea eficaz, y a fin de que eso sea de esta manera el hash ha de ser complejo ofertando de esta forma un alto grado seguridad, lo que implica que se precisa más tiempo para su cálculo y más ineficiente es el proceso.

La función Hash en Bitcoin se usa en 2 áreas.

1. Creación de la dirección

Uno de los usos más frecuentes de la función hash es en el proceso de generación de la dirección Bitcoin.

La función hash de tipo SHA256 se emplea hasta en tres veces en el proceso de generación de la dirección.

Gracias a esta función se logra que la dirección sea más corta que la clave pública de la que viene. Además de esto se logra que sea consistente en conjunto al producir caracteres de control (checksum).

Si incluso no sabes de qué manera se produce una dirección puedes pasarte por el próximo enlace.

2. Minería: Proof-of-Work

Como ya hemos explicado en detalle en el capítulo destinado a la minería de Bitcoin, es la acción efectuada por ciertas personas que deciden ofrecer su potencia de cómputo a la red Bitcoin para la verificación de las distintas transacciones.

Las funciones hash es un proceso clave en la creación de bloques, es más, se utiliza asimismo en múltiples pasos, en tanto que el minero debe asociar las transacciones al bloque. Para esto usa la función hash para crear el Árbol de Merkle.

Con ese resultado, aparte del al hash resultante del bloque precedente y un dato que el debe inventarse (llamado nonce) debe lograr que el hash resultante tenga un determinado patrón. Si lo cumple va a haber resuelto el problema, va a haber minado un bloque y va a ganar prácticamente cincuenta.00 euros hoy en día (Junio dos mil veinte).

Así es como se logra vincular por completo todas y cada una de las transacciones nuevas y pasadas, produciendo total integridad y también inmutabilidad

Hacer el proceso de hash una vez es exageradamente simple, mas el minero debe hacerlo millones de veces. Es como hacer una sentadilla, que es simple, mas millones de veces no.

Finalmente, a fin de que los nodos comprueben que todo es adecuado, volverán a hacer el proceso una sola vez, aplicando nuevamente la función hash en las distintas unas partes del proceso.

Ahora bien sabes qué es una función hash y que papeles juega en las criptomonedas. Te animamos a continuar formándote para transformarte en un especialista en las criptomonedas y la tecnología blockchain.