sql >> Base de Datos >  >> RDS >> Mysql

¿Cuál es el mejor método para usar / almacenar claves de cifrado en MySQL?

No estoy seguro de si el uso del cifrado incorporado de MySQL sería la mejor solución para su problema.

M_CRYPT de PHP Se cree que el paquete es bastante bueno y le brinda la flexibilidad de elegir el algoritmo que mejor se adapte a sus necesidades.

Almacenar su clave en algún otro servidor tiene una gran ventaja:la clave no está en la misma máquina que los datos cifrados. Entonces, mientras el atacante no tenga suficiente control sobre la máquina comprometida, no podrá acceder a la clave.
Si el atacante obtiene el control total de la máquina en la que se almacenan los datos, lo más probable es que pueda consultar el servicio web para la clave.

Sin embargo, la transmisión de la clave de una máquina a otra abre un área completamente nueva que debe protegerse. Probablemente involucre más claves y más capas de cifrado, lo que aumenta la posibilidad de que se cometan errores.

La otra opción es ingresar la contraseña al iniciar el servidor web y solo guardarla en la memoria.

Posible solución
Si vio una solución empleada que utilizó el siguiente método para cifrar archivos para usuarios con acceso web (no estoy seguro de su entorno, pero podría ser útil):

  • Después de la creación del usuario, se asigna una clave aleatoria larga al nuevo usuario.
  • Esta clave aleatoria se almacena en una columna cifrada en el registro de usuario.
    (¡Solo esta columna está cifrada para no afectar el rendimiento del resto del registro! )
  • El cifrado de la columna de clave aleatoria se realiza con 1 contraseña maestra, almacenada en un archivo o en la memoria.
    (La mejor opción es ingresar la contraseña al iniciar su servidor web y solo almacenarla en la memoria. )
    (Otro enfoque sería dejar que el usuario ingrese una contraseña y usarla para cifrar/descifrar la columna de clave aleatoria, pero no estoy seguro de si eso aumentaría o disminuiría la seguridad )
  • Todos los documentos que deben cifrarse se cifran con la clave aleatoria para ese usuario y luego se almacenan en el disco.
  • Los documentos se almacenan con permisos mínimos en el sistema de archivos.

Las ventajas de este enfoque son:
1. La clave aleatoria está cifrada en la base de datos. Así que aún tiene la seguridad adicional del servidor de base de datos, en combinación con la columna encriptada.2. Los documentos se almacenan con diferentes claves, si el atacante obtiene una clave, solo una parte de los documentos se ve comprometida.

Sin embargo:
Si el atacante obtiene la contraseña maestra y tiene acceso de lectura a la tabla de usuarios, todo el sistema, una vez más, se rompe.