XUT_ / COURSES / CYBER SECURITY 101

Basic Terms

¿Qué son los Hashes?

Un hash es una manera de tomar una pieza de información de cualquier longitud y transformarla en otra de longitud fija. Este proceso oculta el valor original. El valor resultante se obtiene de pasar la información original por un algoritmo hasheador.


¿Qué los hace seguros?

Las funciones hasheadoras están diseñadas para funcionar sólo en una dirección. Este problema computacional tiene sus orígenes en el problema matemático P vs NP.

En ciencia computacional, P y NP son dos clases de problemas que nos ayudan a entender la eficiencia de los algoritmos:

  • P (Polynomial Time): La clase P cubre los problemas cuya solución puede ser encontrada en tiempo polinómico. Considera ordenar una lista en orden ascendente. Cuanto más larga sea la lista, mayor será el tiempo. Sin embargo, el incremento en tiempo no es exponencial.
  • NP (Non-deterministic Polynomial Time): Los problemas de esta clase son aquellos cuyos dada una solución, pueden ser comprobados rápidamente, aunque encontrar la respuesta en sí pueda ser difícil.

Aunque este problema y su complejidad real quedan muy fuera del alcance de esta lección, podemos extrapolar que hashear la información sería P mientras que des-hashearla sería NP.


¿Dónde entra en juego John?

Aunque el algoritmo no es reversible, eso no significa que crackear los hashes sea imposible. Si tienes la versión hasheada de una contraseña, y sabes qué algoritmo se utiliza, puedes usar un algoritmo para hashear una gran cantidad de pseudocontraseñas para obtener un diccionario.

Este proceso se conoce como ataque de diccionario y John the Ripper es una herramienta que ejecuta estos ataques de fuerza bruta en muchos tipos de hashes.

En esta unidad nos centraremos en la versión más extendida de John the Ripper, Jumbo John.