Estoy escribiendo un programa simple para el cifrado de archivos. Principalmente como un ejercicio académico, pero posiblemente para un futuro uso serio. Todo el trabajo pesado se realiza con bibliotecas de terceros, pero armar las piezas de una manera segura sigue siendo todo un desafío para el que no es criptógrafo. Básicamente, tengo casi todo funcionando como creo que debería.¿Usar MD5 para generar una clave de encriptación a partir de una contraseña?
Estoy usando AES de 128 bits para el cifrado con una longitud de clave de 128 bits. Quiero que los usuarios puedan ingresar contraseñas de longitud variable, así que decidí usar la contraseña con MD5 y luego usar el hash como clave. Pensé que esto era aceptable: se supone que la clave siempre es un secreto, por lo que no hay motivo para preocuparse por los ataques de colisión.
Ahora que lo he implementado, me encontré con un par de artículos que indican que esta es una mala idea. Mi pregunta es: ¿por qué? Si se elige una buena contraseña, se supone que el cifrador es lo suficientemente fuerte como para no revelar la clave, excepto a través de un extraordinario esfuerzo de fuerza bruta (es decir, no factible), ¿no? ¿Debo usar algo como PBKDF2 para generar la clave o es eso demasiado exagerado para todas las aplicaciones criptográficas excepto para las más extremas?
sal la contraseña – helloandre