¿Qué es el hash de contraseñas (y cómo funciona)?

Si eres un habitante frecuente de Internet como yo, es muy probable que hayas recibido un correo electrónico que diga algo como esto:

Querido Cliente Valioso,

Recientemente, nuestro sitio web fue víctima de un ciberataque en nuestra red corporativa. Todas las contraseñas se cifraron, pero como medida de precaución, exigimos a todos nuestros clientes que restablezcan sus contraseñas de inmediato.

Gracias.

Entonces, hubo una violación, se filtró parte de su información, incluida su contraseña cifrada. ¿Su cuenta está en riesgo?

Respuesta corta: SÍ, pero ¿por qué?

Para comprender esto, debe comprender el concepto de “hash de contraseña”.

¿Qué es un hash?

Un hash es solo una forma de representar cualquier dato como una cadena única de caracteres. Puede aplicar hash a cualquier cosa: música, películas, su nombre o este artículo. Hablando metafóricamente, el hash es una forma de asignar un “nombre” a sus datos. Le permite tomar una entrada de cualquier longitud y convertirla en una cadena de caracteres que siempre tiene la misma longitud. Obviamente, existen muchos métodos (algoritmos) para hacer esto.

Algunos de los algoritmos hash más populares:

  • MD5: dado que cualquier dato devolverá un hash único de 32 caracteres.
  • SHA1: dado que cualquier dato devolverá un hash único de 40 caracteres.
  • SHA256: dado que cualquier dato devolverá un hash único de 64 caracteres; diseñado por la Agencia de Seguridad Nacional.

Veamos un ejemplo simple:

Mi nombre es “Jamin Becker”

La representación de hash MD5 de mi nombre es:

La representación de hash SHA1 de mi nombre es:

La representación de hash SHA256 de mi nombre es:

¿Por qué el hash es seguro?

La razón por la que el hash es seguro es simple: el hash es una operación unidireccional. No se pueden revertir. Dada una cadena “eeb7048c69b088739908f5f5144cd1f5”, no hay forma de invertir el hash MD5 para devolver “Jamin Becker”. Esto se debe a la forma en que los matemáticos y programadores estructuraron el algoritmo hash MD5, y vuelve a un problema fundamental de la informática llamado ” P vs NP “. P y NP son solo dos clases de algoritmos.

La mayoría de los algoritmos hash se incluyen en NP, lo que significa que se pueden calcular rápidamente. Sin embargo, los algoritmos de eliminación de hash (es decir, “eeb7048c69b088739908f5f5144cd1f5” -> “Jamin Becker”) pertenecen a la clase P y solo se pueden resolver de manera eficiente en tiempo polinomial (es decir, utilizando una computadora cuántica significativamente más avanzada que las disponibles en la actualidad).

Entonces, ¿por qué esto es bueno para la seguridad?

Supongamos que se suscribe a un sitio web y elige la contraseña “12345”. Inmediatamente, ese sitio web aplicará un hash a su contraseña, probablemente con SHA1, y la almacenará en una base de datos. Ahora, cada vez que inicie sesión, el sitio web repetirá su contraseña y la comparará con la almacenada en la base de datos. Si coinciden, se le autenticará correctamente. Si alguna vez se viola el sitio web y se filtra la base de datos de contraseñas, su contraseña aparecerá como “8cb2237d0679ca88db6464eac60da96345513964” y no como “12345”.

Estrategias de ataque hash

Entonces, el atacante tiene la versión hash de mi contraseña y no hay forma de revertirla a 12345. No tengo nada de qué preocuparme, ¿verdad? ¡INCORRECTO!

Un método que se usa comúnmente para obtener la contraseña de texto sin formato de un hash se llama ataque de fuerza bruta. En este ataque, el atacante ejecutará una lista de palabras gigante y hará un hash de cada palabra con el algoritmo de hash apropiado. Luego pueden comparar los valores hash de la lista de palabras con los que han obtenido de la base de datos. Si un hash de la lista de palabras coincide con el de la base de datos, simplemente pueden encontrar la contraseña de texto sin formato correspondiente en la lista de palabras original. Los atacantes experimentados usarán listas de palabras extremadamente grandes combinadas con un software poderoso para ejecutar millones de posibilidades de contraseña por segundo.

Otro método de ataque intenta explotar el algoritmo de hash creando una colisión de hash. Una colisión de hash ocurre cuando dos conjuntos de datos diferentes se resuelven en el mismo hash, y aunque esto es poco común, puede ser mortal. Esto permitiría al atacante generar una cadena de caracteres que no es su contraseña, pero aún así podrá iniciar sesión en su cuenta ya que genera el mismo hash.

Conclusión

Los algoritmos de hash son cada vez más avanzados. Los matemáticos y los informáticos diseñan constantemente algoritmos de hash criptográficos con menores probabilidades de colisiones. Sin embargo, es importante recordar que no importa qué tan fuerte sea el algoritmo de hash, siempre se puede descifrar mediante un ataque de fuerza bruta. La buena noticia es que también puede defenderse fácilmente contra estos ataques simplemente siguiendo la política de contraseñas de mejores prácticas.

  1. El tamaño sí importa: cuanto más larga sea la contraseña original, es menos probable que aparezca en una lista de palabras.
  2. No sea predecible: evite el uso de palabras como “contraseña” y “myname123”
  3. Utilice una mezcla de caracteres especiales, números, letras mayúsculas y minúsculas.

¿Qué piensas sobre el hash? Comparta sus puntos de vista en el comentario a continuación.

Crédito de la imagen: Huella digital en línea de lupa de BigStockPhot

¡Si te ha gustado vota con 5 Estrellas!
(Votos: 0 Promedio: 0)

Escribe Aquí Tu Comentario