Hashes

El hashing, de manera sencilla, se puede ver como una operación matemática que al entrarle unos datos concretos, va a sacar un código de texto concreto llamado hash. Tiene las siguientes características que lo hacen tan interesante:

  • Un mismo texto siempre producirá el mismo hash, pero no se puede llegar al texto a partir del hash.
  • El más mínimo cambio (una sola letra por ejemplo) produce un hash completamente distinto.
  • Los hashes siempre tienen el mismo tamaño. Un texto/archivo muy grande produce un hash igual de largo que un solo carácter.
  • Podemos hacer un hash de cualquier tipo de archivo digital: fotos, ejecutables, textos, etc.
  • Son muy usados para comprobar que un fichero digital concreto no ha sido modificado por, por ejemplo, un atacante.

Tenemos que la misma entrada resultará en la misma salida, sin importar cuántas veces se repita el proceso. Pero si se hace un pequeño cambio en la entrada, la salida cambiará completamente. Como tal, las funciones de hash son deterministas, y en el mundo de la criptografía, la mayoría de ellas están diseñadas como funciones de hash unidireccional. Al ser unidireccionales, es casi imposible calcular cuál fue la entrada de un hash particular. 

Existen distintos tipos de hashing, que básicamente difieren en el tipo de función matemática usada para obtener el resultado final. Algunos produciendo cadenas de texto más largas y, por lo tanto, más seguras. Los más conocidos son el SHA-1, MD5, SHA-256, etc. 

Vamos a ver un ejemplo con un algoritmo de hashing muy sencillo y conocido, el MD5. No te asustes, no vamos a ver nada de matemáticas. Vamos a ver como sería el hashing de el texto "tuprivacidad". Usaremos esta página para aplicar el algoritmo. El funcionamiento es el siguiente:

"tuprivacidad" --> ALGORITMO MD5 --> db78186c8eedca9755118d4faf059d92

Podemos ver que al pasar el texto por el algoritmo obtenemos una cadena de texto con números y letras. Ese es el hash producido por "tuprivacidad" y muy poco probablemente ningún otro texto va a producir un hash igual (cuanto más largo es el hash, menos probable es encontrar dos iguales, con SHA-256 se considera imposible esa probabilidad).

Ahora lo compararemos con el hash de "tuprivacydad", como vemos solo cambiamos una sola letra y el hash cambia por completo.

"tuprivacydad" --> ALGORITMO MD5 --> 362c98d530e9cabc1f49cc3288e2d0b4
"tuprivacidad" --> ALGORITMO MD5 --> db78186c8eedca9755118d4faf059d92

Si encuentras páginas que dicen "descifrar" algoritmos de hashing, lo único que usan son grandes bases de datos con entradas y sus hashes. Si tienes suerte y lo que intentas "descifrar" está en su base de datos, pues podrás ver el origen del hash.