Estoy escribiendo una aplicación de Android que tiene como objetivo encriptar y descifrar archivos usando AES 256. Estoy usando el modo AES-CBC y PBKDF2 para derivar la clave AES de una contraseña ingresada por el usuario. Además, estoy generando una sal segura y pseudoaleatoria para cada clave de cifrado de archivo. Estoy almacenando el IV y la sal con el archivo cifrado, por lo que puedo volver a leerlos y regenerar la clave más adelante para poder descifrar el archivo.¿Se almacena la sal junto con la seguridad de interrupción de archivos cifrados?
Mi pregunta: ¿Almacenar la sal junto con la seguridad de la rotura del archivo cifrado y el significado de la sal en sí? ¿No puede un atacante saber que la sal y el IV realizan un ataque de fuerza bruta sin conexión contra el archivo cifrado para averiguar la clave de cifrado?
Pero, ¿y si el atacante construyera una tabla de arcoíris con una sal válida que pueda leer en texto sin formato del archivo? –
@AlexAmiryan La construcción de una mesa de arcoíris es al menos tan cara como un ataque de fuerza bruta. Entonces, si no puede reutilizar la tabla (y eso es lo que previenen las sales), es inútil construir una tabla. Simplemente ejecuta un ataque de fuerza bruta directamente. – CodesInChaos