Si tengo una base de datos donde almaceno información confidencial de los usuarios y cifro esa información, ¿necesito hacer algo como PBKDF2 (contraseña, sal, 10 ^ 5) para la clave de cifrado y el hash?
Si tengo una base de datos donde almaceno información confidencial de los usuarios y cifro esa información, ¿necesito hacer algo como PBKDF2 (contraseña, sal, 10 ^ 5) para la clave de cifrado y el hash?
Siempre que tenga una contraseña humana y quiera procesarla en algún formato que "deje huellas", entonces debe hacerlo con una función que sea resistente a la fuerza bruta (por ejemplo, PBKDF2). Por lo tanto, debe hacer eso cuando tiene la contraseña para obtener un token de verificación de contraseña que almacena; También debe hacerlo cuando esté convirtiendo la contraseña en una clave para el cifrado simétrico.
Para aclarar las cosas: si convierte la contraseña P en la clave K y luego utiliza K para cifrar algunos datos D y almacene el resultado cifrado E , luego un atacante, observando E , podría "intentar contraseñas" al convertir una contraseña potencial P ' en la clave K ' y luego tratar de descifrar E con K' y ver si produce algunos datos sensibles D . Esta es la situación de ataque de diccionario sin conexión , muy similar a la básica hashing de contraseña .
Estrictamente hablando, convertir algunos datos en una clave se denomina Derivación de clave , y "PBKDF" realmente significa "Función de derivación de clave basada en contraseña".
Lea otras preguntas en las etiquetas salt encryption databases