La clave en el caso de la función mencionada anteriormente se rellena con cero cuando su longitud es inferior a 16 bytes.
Eso es algo que debes abordar. Las claves AES siempre deben tener un tamaño de 128, 192 o 256 bits, y no deben distinguirse del azar para un atacante.
Mi pregunta es: ¿Cómo puedo realizar una ampliación de clave con algo como PBKDF2 en mysql para mejorar la fuerza de las claves débiles?
Recomiendo encarecidamente a no que realice una función de este tipo dentro de las consultas de la base de datos. PBKDF2 (o cualquier otra función) debe ser lo más rápido posible para hacer que las posibles ventajas de los atacantes sean lo más pequeñas posible. De lo contrario, el factor de trabajo (el recuento de iteraciones para PBKDF2) no puede ser lo suficientemente grande.
Intente encontrar una versión optimizada de PBKDF2 e intégrela con su software.
También me gustaría saber que si uso un valor hexadecimal directamente de una función como SHA2 ('Clave', 512) como mi clave para la función aes_encrypt (), ¿reducirá la fuerza de la clave porque habrá solo debe haber 16 caracteres en el conjunto de caracteres cada vez que se genere una clave.
La salida de las funciones SHA-2 consiste en bytes , no en hexadecimales. Puede ser que su implementación traduzca esto automáticamente a hexadecimales. En ese caso, debe especificar explícitamente la salida en bruto o debe decodificar los hexadecimales para usarlos como clave AES.
El problema con solo SHA-2 es que no espera una sal ni un factor de trabajo. Esto significa que los ataques de diccionario y las tablas de arco iris son vectores de ataque válidos. Esta es la razón por la que necesita una función de derivación de clave basada en contraseña, como PBKDF2.
PBKDF2 solo no es necesario si la entrada "contraseña" tiene suficiente fuerza. Pero para el cifrado AES, necesitaría algo cerca de 128 bits de aleatoriedad, y es poco probable que se proporcione con una contraseña en él.