He escuchado que la sal no está destinada a ser secreta, pero ¿y si la hubiera hecho secreta? [duplicar]

5

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

    
pregunta Aust 26.01.2013 - 23:06
fuente

1 respuesta

3

Permite suponer que un pirata informático se ha hecho con tu base de datos.

Le permite analizar lo que sucede cuando almacena el sal cifrado en su base de datos. La función de hashing que utiliza la sal encriptada no podrá usarla hasta que se descifre. Por lo tanto, su código solicitaría la sal encriptada y tendría que ser descifrado con una clave. Podemos asumir que esta clave está en el código.

Dado que el pirata informático tiene su base de datos, tendrán la sal encriptada. Ahora realmente solo necesitan la llave. En su ejemplo, la clave se almacena en el código. Las sales normales también se almacenarán en el código. Realmente no agrega ninguna seguridad en absoluto , ya que el pirata informático simplemente puede descifrar sal obteniendo la clave del código como si tuvieran que obtener la sal del código.

La mayoría de las funciones de hashing tendrán suficiente entropy que no puedes analizar la cadena para calcular cuál fue la función hash utilizada. Sin embargo, puede ver visualmente que los diferentes hash contienen una cantidad y un tipo de caracteres diferentes, lo que le dará una mejor pista de la que se está utilizando.

Si un pirata informático obtuviera su base de datos, obtener su código puede ser igual de fácil. El propósito de una sal es que no pueda ser objeto de un ataque de mesa de arco iris. Pero, por supuesto, podrían generar una tabla de arco iris, pero puede llevar demasiado tiempo hacerlo.

    
respondido por el ponsfonze 27.01.2013 - 01:05
fuente

Lea otras preguntas en las etiquetas