Necesario: Necesito poder almacenar datos de usuario cifrados AES (entradas de diario) en mi base de datos y esas entradas deben poder buscarse en texto sin formato.
Problema: MySQL envía las consultas a sus registros en texto sin formato.
Historial: Ya he logrado el comportamiento deseado al permitir que MySQL maneje el cifrado y buscar con AES_DYCRYPT
y LIKE
, pero eso significa que MySQL está generando las entradas de mis usuarios junto con mi Clave AES en texto plano a sus registros.
Posible solución: Intenté mover mi paso de encriptación al servidor antes de enviar datos a MySQL, pero no puedo hacer que el DB maneje el descifrado y, por lo tanto, la búsqueda de texto sin formato complica las cosas. No quiero tener que ingresar todas las entradas de un usuario específico y luego filtrarlas según la consulta de texto del servidor.
Pregunta: ¿Qué tan grande es un agujero de seguridad que MySQL envía todas las consultas a sus registros en texto sin formato cuando decide utilizar la función AES_ENCRYPT
de MySQL? Debería usar las funciones de encriptación de MySQL para poder usar su función LIKE
, o debería encriptar en el servidor y buscar otras soluciones, como almacenar un índice de palabras con hash como una nueva columna para poder proporcionar algún tipo de texto. buscar?
Debo tener en cuenta que estoy usando una solución MySQL alojada que, al precio que estoy pagando actualmente, no me permite administrar la configuración del administrador. La empresa de alojamiento tiene acceso a los registros.