Ok, he estado estudiando mucho sobre el hash de contraseñas últimamente. Y tengo algunas preguntas. Por lo tanto, explicaré lo que sé (si me he equivocado en algún punto del camino, corríjame para que pueda aprender) para que pueda mostrarle dónde está mi confusión.
Por lo tanto, la razón por la que quiero copiar las contraseñas de mis usuarios es que si un pirata informático se apodera de la base de datos, no puede usar sus correos electrónicos y escribir sus contraseñas para robar su dinero. También hace que los administradores no puedan ver cuáles son sus contraseñas. Así que la conclusión es mantener a mis usuarios seguros.
Usar solo un hash como MD5
no es lo suficientemente bueno porque las tablas del arco iris se pueden usar para averiguar cuál es su contraseña de inmediato y las computadoras rápidas pueden descifrarlas de todos modos, independientemente de la sal o no.
Pero es importante usar sal cuando se utiliza el hash para asegurarse de que las tablas de arco iris no se pueden usar y obliga a los piratas informáticos a tener que atacar con fuerza para encontrar la contraseña. Entonces, cuando almacenemos la sal, digamos que agregándola al hash, <hash>_<salt>
no importa si está en texto plano porque los hackers se ven obligados a forzar el hash.
Así que ahora en mis preguntas.
1. ¿Por qué no cifro la sal de mi código y luego almaceno la sal cifrada en la base de datos?
Parece que si hiciera esto, sería imposible para un pirata informático tener la fuerza bruta y obtener la contraseña porque supondrían que Salt es un texto simple cuando en realidad no lo es. Así que intentaron y trataron de no inventar la contraseña. Pero esto lleva a mi segunda pregunta.
2. ¿Cómo puede un pirata informático saber qué tipo de algoritmo de hash usé cuando miraba la base de datos?
Si heheado mi contraseña usando bcrypt y luego hash que usando scrypt y así sucesivamente, parece que la única manera de poder averiguar el orden de hashing es poder ver mi código.
Bien, para poder explicarme mejor, inventemos un escenario. Un pirata informático utiliza algún tipo de inyección SQL para imprimir toda mi lista de usuarios, obteniendo 1000 filas de correos electrónicos con contraseñas de hash. Estas contraseñas adjunté a mi sal que se ha cifrado con mi clave que solo se guarda en el código. ¿Cómo sabría el hacker que la sal está encriptada? Y si de alguna manera discernía que estaba encriptado, no podría descifrar la sal a menos que tuviera la llave. La única forma de obtener la clave es si tuvo acceso a mi código. Si él tuviera acceso a mi código, en ese momento, vería exactamente cómo eliminé y eliminé mis contraseñas para poder duplicar fácilmente el proceso, ya sea que tuviera mi clave o no, y luego comience a forzar de forma bruta para obtener las contraseñas. Por lo tanto, parece que hacer algo como cifrar la sal detendría a cualquier pirata informático que no tuviera acceso al código para descifrar las contraseñas. ¿No es esto cierto? Si no, por favor explícamelo en detalle. = D