¿Cómo almacenan los sitios web las contraseñas y los nombres de usuario?

Funciones hash

Las funciones hash son funciones informáticas que se utilizan para convertir una entrada del usuario de manera que tenga las siguientes características

  1. Calcular el hash de cualquier entrada del usuario es extremadamente fácil.
  2. La ingeniería inversa del hash, es decir, recuperar la entrada original del usuario del valor hash es extremadamente difícil desde el punto de vista informático
  3. Debería ser extremadamente improbable que dos entradas de usuario diferentes terminen teniendo el mismo hash.

Ahora hay muchos formatos hash estándar como CRC32, MD2, SHA-1, etc.

Veamos algunos ejemplos.

Si mi contraseña es- lumpenplorenteriat

Tendrá diferentes valores hash para diferentes estándares, como

MD2

4b6dfec5def4141634d094912836b249

SHA-1

b7793b41c0cfd4c67ba4d7e1496cd1bfe5bf9615

y así.

Ahora estas largas y tediosas cadenas son las que realmente se guardan en los servidores. Entonces, si eres un hacker y terminas en los servidores de Google, encontrarás una cadena similar.

Ahora vea que estas cadenas son muy largas. Además, en realidad no tiene el algoritmo exacto para rastrear la entrada exacta del usuario, por lo que es extremadamente difícil de descifrar computacionalmente.

Entonces, cuando ingrese su contraseña, supongamos que Facebook, en realidad primero encuentra su hash y luego lo compara con su base de datos. De esa manera, incluso si alguien puede piratear su red, solo debería poder ver su valor hash, no su contraseña real, está seguro 🙂

Ahora viene la parte divertida.

¿Qué sucede si dos entradas de usuario completamente diferentes resultan exactamente en el mismo hash?

Bueno, entonces tienes suerte! Obtiene acceso completo a la cuenta de esa otra persona desafortunada.

Tomemos un ejemplo.

Tenemos dos personas con nombres aburridos, A y B. Nunca se han conocido en toda su vida. Lo que no saben es que son las únicas 2 personas en esta Tierra que pueden recordar cadenas alfanuméricas largas y largas con relativa facilidad. Por eso tienen contraseñas largas y tediosas.

UNA-

4dc968ff0ee35c209572d4777b721587d36fa7b21bdc56b74a3dc0783e7b9518afbfa200a8284bf36e8e4b55b35f427593d849676da0d1555d8360fb5f07fea2

SI-

4dc968ff0ee35c209572d4777b721587d36fa7b21bdc56b74a3dc0783e7b9518afbfa202a8284bf36e8e4b55b35f427593d849676da0d1d55d8360fb5f07fea2

Sí, esas son sus contraseñas.

(Puede pensar que ambos son exactamente iguales, no lo son. Hay una ligera diferencia en alguna parte. Esa es la tarea para usted)

Y por un giro completo del destino, A de alguna manera ingresa el nombre de usuario de B pero ingresa su propia contraseña. ¿Y ahora qué?

A obtiene acceso a la cuenta de B, incluso cuando ingresó la contraseña incorrecta. ¿Cómo preguntas?

Porque ambos tienen el mismo hash

008ee33a9d58b51cfeb425b0959121c9

Este es un ejemplo “simple” de colisión MD5, una especie de colisión hash en el estándar MD5 donde dos entradas de usuario producen el mismo hash.

Entonces, si tienes toda la suerte del mundo que te favorece o tal vez todo el tiempo en una eternidad, puedes terminar en la cuenta de otra persona usando tu propia contraseña.

PD: la salida es de 128 bits, lo que hace que el número total de valores posibles sea 2 ^ 128, y solo uno de ellos es el hash de su propia contraseña. Buena suerte con eso.

Traté de simplificarlo tanto como pude. Y tal vez en mi camino hacia la simplificación, terminé complicando demasiado. Déjame saber.

¿Hay dos cadenas conocidas que tengan el mismo valor hash MD5?

KB

Depende del codificador cómo quiere salvar

Sin embargo, así es como almaceno las contraseñas de mis usuarios

Sha512 (md5 (Contraseña real + sal))

en este sha512 y MD5 son cifrados

mientras que la contraseña real es la contraseña del usuario y salt es un texto único para asegurar el cifrado que hace que sea imposible piratear

Los nombres de usuario se almacenan en formato plano

Si no está buscando seguridad, aquí hay una simple

Almacenan sus contraseñas y nombres de usuario en la base de datos mysql