Si está utilizando un enfoque simple basado en frase de contraseña, entonces su encriptación es tan segura como su frase de contraseña. E incluso si está utilizando una frase de contraseña larga, su cifrado es tan seguro como la función de derivación clave utilizada para obtener la frase de contraseña a la clave real. Openssl utiliza un simple hash MD5 para generar la clave, que tiene dos inconvenientes:
- Limita su longitud de clave efectiva a 128 bits, por lo que incluso con una frase de contraseña larga, no tiene sentido usar AES-256 sobre AES-128.
- Su seguridad frente a los ataques de colisión es en duda. Ahora si este es un problema para un esquema simple de cifrado de archivos. No lo sé.
Sin embargo, el enlace más débil será la contraseña en sí. ¿Cuánto tiempo tiene que ser? Bueno, la mejor pregunta es: ¿cuánto entropy necesita? Esta pregunta solo puede responderse de manera realista si la frase de contraseña se crea de forma aleatoria. Tome como ejemplo diceware: aquí cada palabra en la frase de contraseña tiene 12.9 bits de entropía, lo que significa que un atacante tiene para probar todas las 7776 palabras en el diccionario diceware para descifrar el archivo (bueno, sí, estadísticamente, el atacante tendrá éxito después de la mitad de ese número). Una frase de contraseña de cinco palabras para dados le brinda aproximadamente 64 bits, una frase de contraseña de diez palabras aproximadamente 129 bits de entropía. Esto significa que necesita una frase de contraseña de diez palabras para desactivar el hash MD5 de la entropía de openssl y muestra cuánto más débil que los otros enlaces que la frase de contraseña suele tener.