Función Hash en Bitcoin: [Concepto, Implicaciones, Propiedades]

Las funciones hash son las que utilizan un algoritmo matemático para transformar un conjunto de datos (por ejemplo, un texto) en un código alfanumérico con una longitud fija.

Los hashes tienen una gran aplicación en la tecnología blockchain porque generan identificadores únicos a partir de una información determinada.

Ese conjunto de datos puede ser de cualquier tipo: fotografías, videos, música y textos, de contenido digital, que aunque sean iguales en pdf o docx tendrán diferentes códigos alfanuméricos. Es decir, se trata de proteger contenidos mediante el uso de claves.

Los hashes son presentados en código alfanumérico hexadecimal (que usa 16 símbolos para marcar un número, como los 10 dígitos del 0 al 9 y las 6 letras entre A y F) de diferentes algoritmos matemáticos de resumen.

Hay variedad de ellos, como el Secure Hash Algorithm (SHA-2) compuesto de 4 funciones: SHA-224, SHA-256, SHA-384 y SHA-512. Los números establecen la longitud del hash (224, 256, 384 y 512 bits) y cada una de las funciones da un hash diferente para un mismo conjunto de datos.

Así, los 256 bits del SHA-256 nos llevan a un código alfanumérico que tiene 64 caracteres.

Función Hash

Aspectos relacionados con la función hash

El hash es usado para verificar la exactitud de identificadores y contraseñas a fin de permitir el acceso a un software, pues el sistema guarda el hash de la contraseña y no la contraseña propiamente dicha.

Esto aporta más seguridad porque cuando introducimos nuestra contraseña para entrar al sistema, este compara el hash de la contraseña con el hash guardado y solo si hay coincidencia nos permitirá el acceso.

Por eso, en caso de olvidar la contraseña, los sistemas de Internet no pueden mostrar la contraseña olvidada porque no la tienen; en ese caso, debemos crear otra contraseña para que se calcule el hash y que el sistema la guarde nuevamente.

  1. Cada documento genera un hash único, como la huella digital de una persona, de manera que los hashes también tienen la utilidad de verificar la exactitud de documentos o de cualquier archivo.
  2. El proceso de formación de los hashes es de un solo sentido. Por ejemplo, podemos tomar una serie de datos, introducirlos en la función y procesarlos en el ordenador, para obtener una cadena de caracteres de longitud fija y única.
  3. Pero es imposible obtener esos datos desde un hash ya formado, precisamente por eso, porque el proceso va en un solo sentidoEs como si hiciéramos una comida y, una vez cocinada, pretendiéramos devolver el plato a su origen, al punto de los ingredientes en su estado natural sin cocción, lo cual sería imposible de hacer.

¿Qué propiedades tiene la función hash?

Las funciones son varias, entre ellas tenemos:

  1. Es irreversible porque no hay una forma directa de obtener los datos originales a partir del código hash. Solo podría obtenerse de forma indirecta mediante un ataque del proceso conocido como fuerza bruta.
  2. Otra de sus propiedades es que son funciones deterministas porque, para un conjunto de datos determinado, siempre se ha de obtener el mismo valor del código hash. La importancia de esta propiedad es que, si el código hash fuese diferente cada vez, sería imposible usarlo para verificar que los datos de origen sean los mismos.
  3. Otra propiedad es la eficiencia computacional. La función debe obtener el valor del código hash con suma rapidez, porque de no hacerlo las funciones desarrolladas serán deficientes.
  4. Es resistente a colisiones. Con eso queremos decir que al producir el hash de dos contraseñas podemos asegurar que ambas son la misma cuando sus códigos coinciden.
  5. El cálculo del valor hash es de bajo costo.
  6. La función hash comprime los datos muy grandes a datos de menor tamaño.
  7. Es uniforme porque, en caso de una clave elegida al azar, también aporta un valor de resumen, independientemente de cualquier otro elemento.
  8. Es de rango variable porque el rango de valores de resumen puede variar con el tiempo.

¿Cuántos tipos de hash existen?

Los expertos en criptografía han diseñado numerosas funciones hash específicamente para contraseñas, de manera que al tratar de crackearlas se dificulte el proceso.

Algunas son:

  • MD5 (unix).
  • MD5 (APR).
  • MySQL.
  • MySQL5.
  • Skryp (KDF, Key derivation function, o función de derivación clave).
  • Bcrypt.
  • Argon2 (KDF).
  • Sha512-crypt.
  • Sha256-crypt.
  • PBKDF2 (KDF).

La longitud con KDF para contraseñas es diferente a la función hash para contraseñas, pues ésta siempre tendrá la misma longitud de salida. Lo recomendable es utilizar algoritmos de hashing en claves de cifrado o contraseñas almacenadas en una base de datos.

Pero también es prudente que el algoritmo tarde unos segundos para que después sea muy costoso crackearlo. En este sentido, debemos utilizar algoritmos de hashing diseñados exclusivamente para el almacenamiento de contraseñas.

 ¿Qué es el hash de bitcoin?

Uno de los algoritmos de función hash más importantes es el SHA256, dado que tiene un equilibrio entre seguridad y complejidad de producción en cuanto a tiempo y gasto de energía, sobre todo en el bitcoin.

En el mundo bitcoin la función hash será eficiente en tanto sea segura. La función hash se usa en bitcoin en dos rutas:

  1. Uno de sus usos más seguros es en el proceso de la dirección bitcoin donde la función SHA-256 se utiliza para que la dirección sea más corta respecto a la función pública de la que proviene, y además se consigue más consistencia en su conjunto al generar caracteres de control.
  2. La función hash es clave en el proceso de creación de bloques de bitcoin, porque los mineros deben asociar las transacciones a la cadena de bloques.

La serie SHA fue perfeccionada por la Agencia Nacional de Seguridad estadounidense (NSA) e incluye el algoritmo SHA-256, desarrollado por Satoshi Nakamoto, el misterioso inventor del Bitcoin, Satoshi Nakamoto, para hacer funcionar el blockchain de bitcoin.

Misterioso porque no se ha conocido su identidad, hasta el punto de que se estima que podría tratarse de un grupo de expertos informáticos, en vez de una sola persona.

¿Cómo se crea un código hash?

El código hash es una función algorítmica de resumen segura, de un documento o dispositivo de almacenamiento cuyo valor es único. Dos documentos distintos no pueden tener el mismo código hash porque este es único, como el ADN o la huella dactilar de los seres humanos. 

El código hash se usa para firmar electrónicamente documentos, descubrir alteraciones en los mismos y proteger la confidencialidad de una contraseña. Existen en la web muchos sitios para generar códigos hash completamente gratis, muy sencillos de descargar, como:

  1. Quickhash, programa de código abierto multiplataforma muy completo. 
  2. HashMyFiles, que genera hashes de forma masiva, es decir, puedes descargar varios en el mismo momento.
  3. Multihasher. Genera hashes masivos por carpetas y subcarpetas, y soporta todos los algoritmos conocidos.

¿Cuál es el origen del término hash?

No hay una definición específica del término hash. No se sabe por qué comenzó a ser usado para la criptografía. Solo se supone que hash proviene del inglés, donde la palabra significa picar y mezclar.

Como no hay una traducción directa al español, en todos los textos técnicos de informática en nuestro idioma se usan las palabras hash y hashing. La primera vez que se usó el término fue en la empresa IBM, en 1953, cuando el empleado H.P. Luhn lo escribió en un memorándum de la compañía.

Acerca del autor

+ posts

Deja un comentario