Un hash es una función matemática que convierte una entrada de longitud arbitraria en una salida cifrada de longitud fija. Independientemente de la cantidad original de datos, su hash único siempre tendrá el mismo tamaño.

El hashing es esencial para la gestión de cadenas de bloques en criptomonedas, por eso en el artículo de hoy miraremos cómo se genera el hash y sus propiedades.

¿Qué es el hash en la cadena de bloques?

El hashing en la cadena de bloques se refiere al proceso de tener un elemento de entrada de cualquier longitud que refleje un elemento de salida de una longitud fija. En las criptomonedas, por ejemplo, las transacciones de diferente duración se ejecutan a través de un algoritmo hash determinado y todas dan un resultado de una duración fija. A la salida le llamamos un hash.

A nivel de funciones hash criptográficas, una función hash toma cualquier transacción o entrada de datos y la rehará para producir una salida de un tamaño fijo. El proceso de usar una función hash dada para procesar una transacción se llama hash. La salida transaccional de esa función hash dada es lo que llamamos un hash.

Características de las funciones hash criptográficas

Las características de las funciones hash criptográficas son las que hacen que la función hash sea segura y adecuada para criptomonedas que utilizan tecnología blockchain, como Bitcoin o Ethereum. Tienes las características a continuación:

  • Determinista. Una función hash debe tener una salida fija o específica.
  • Cálculo rápido. Una buena función hash es aquella que realiza cálculos rápidos para cada entrada de datos.
  • Resistencia previa a la imagen. Las funciones hash criptográficas seguras son unidireccionales. Las funciones que carecen de esta propiedad son vulnerables a los ataques previos a la imagen.
  • Resistente a colisiones.  Las funciones hash criptográficas tienen propiedades resistentes a colisiones (en los casos en que una función hash da resultados similares para diferentes entradas).

¿Cómo funciona una función hash típica?

A continuación te comparto una descripción de alto nivel de cómo funciona una función hash típica.

Las funciones hash generan un hash de longitud fija a partir de una entrada de longitud arbitraria, siendo el hash el mismo con cada llamada de función porque en la mayoría de las funciones hash las entradas se dividen en bloques más pequeños de igual longitud.

Concepto de algoritmo hash

El tamaño del bloque de datos varía según el algoritmo. Además, este tamaño no es necesariamente un múltiplo del tamaño del bloque. Cuando eso pasa se agregan datos - relleno - al bloque de entrada final para que coincida con la longitud de los bloques anteriores y el tamaño del bloque de la función dada.

El proceso secuencial de cálculo de hash se puede iniciar después de la división del mensaje en bloques de longitud fija. El algoritmo hash se ejecuta en cada uno de los bloques.

Efecto de avalancha durante la generación de funciones hash

La función toma como parámetros los datos del bloque actual y el hash del bloque anterior. El cálculo se repite hasta que los datos calculados del último bloque devuelvan el hash final. Los bloques se cuentan en alrededor de una docena de rondas y el valor del último hash se comprime adicionalmente.

Cómo vimos en artículos anteriores, vinculando los cálculos del algoritmo con las respuestas de los bloques anteriores hace que el cambio de un bit de datos genere un hash completamente diferente, por el efecto de avalancha.

Conclusión

Para acabar, la función hash criptográfica es una parte integral de la cadena de bloques. Esta característica brinda capacidades de seguridad a las transacciones procesadas, haciéndolas inmutables.

Por tanto, el proceso de generación de una firma de bloque (hash) implica pasar por los detalles de la transacción a través de una función hash unidireccional, y ejecutar el valor de salida a través de un algoritmo de firma, con la clave privada del usuario.

Fuentes: