Seguridad en Bases de Datos: Protocolo TLS y Gestión de Usuarios

Servicios de Seguridad

El protocolo TLS (Transport Layer Security) implementa servicios de confidencialidad, integridad y autenticación de datos entre un cliente y el Sistema Gestor de la Base de Datos (SGBD).

  • Confidencialidad: Se implementa mediante la distribución segura de una clave de sesión entre las partes.
  • Integridad y Autenticación: Se implementan mediante la distribución segura de una clave de autenticación y funciones hash. Esta distribución se realiza utilizando la clave pública del SGBD.
  • No Repudio (opcional): Se implementa mediante la firma digital con un certificado y clave privada del cliente.

Servicio de No Repudio

El servicio de No Repudio garantiza la identidad del usuario de forma inequívoca. Se implementa mediante la firma digital, es decir, el cifrado con la clave privada del cliente de los mensajes intercambiados con el SGBD.

Creación de Usuarios

Para crear usuarios con diferentes niveles de seguridad, se utilizan las siguientes sentencias SQL:

  • GRANT ALL PRIVILEGES ON *.* TO 'Cliente_1'@'%' IDENTIFIED BY 'ssl' WITH GRANT OPTION; (Crea el usuario ‘Cliente_1’ con clave ‘ssl’ y permisos para otorgar privilegios).
  • GRANT ALL PRIVILEGES ON *.* TO 'Cliente_1'@'%' IDENTIFIED BY 'ssl' REQUIRE SSL; (Exige al usuario ‘Cliente_1’ con clave ‘ssl’ utilizar SSL).
  • GRANT ALL PRIVILEGES ON *.* TO 'Cliente_1'@'%' IDENTIFIED BY 'ssl' REQUIRE X509; (Exige al usuario ‘Cliente_1’ con clave ‘ssl’ autenticación a través de un Certificado digital X.509).

Mensajes SSL

Certificate Verify

Este mensaje realiza (opcionalmente) una firma digital con la clave privada del cliente. Se cifra un resumen (hash) de los mensajes SSL intercambiados con la clave privada del cliente. Esto garantiza la identidad del cliente. La cláusula REQUIRE X509 exige del cliente los mensajes»Certificat» y»Certificate Verif».

Client Key Exchange

El cliente envía una clave de sesión y una de autenticación cifradas con la clave pública del servidor (Gestor MySQL). La distribución de las claves se realiza de forma confidencial, ya que solo quien tenga la clave privada del servidor puede descifrar el contenido. Se realiza un cifrado con la clave privada de un resumen (hash) de los mensajes SSL intercambiados, garantizando la identidad del cliente.

Client Key Exchange (Autenticación e Integridad)

Una vez distribuida la clave de autenticación de forma segura, los datos de las consultas al Gestor MySQL se agrupan en segmentos. A cada segmento se le añade un bloque criptográfico (función hash) formado por el código de autenticación del segmento, utilizando la clave de autenticación distribuida. Este bloque se comprueba en destino, y si se recibe inalterado, confirma la autenticación e integridad de los segmentos recibidos.

Información Relativa al Usuario

  • La contraseña e incluso el login del usuario están protegidos por el protocolo SSL, que garantiza la confidencialidad de la información cifrando los datos con una clave de sesión SSL distribuida entre el cliente y el SGBD.
  • Una vez distribuida la clave de sesión de forma segura, las consultas al Gestor MySQL se cifran mediante un mecanismo de cifrado simétrico, utilizando la clave de sesión distribuida. Este mecanismo implementa el servicio de confidencialidad.
  • La Base de Datos de Gestión de MySQL se llama»mysq» y la tabla en la que se almacena la información relativa al usuario, dirección IP de acceso, login y contraseña es la Tabla»use».
  • La contraseña de los usuarios nunca se almacena en claro en el SGBD, solo se almacena un resumen (hash) de la contraseña en la Tabla mysql.user. El cliente presenta una contraseña cuyo hash coincida con el almacenado por el SGBD.
  • Login Request: (IP) Source: usuario y Destination: SGBD

Certificados

Cliente

  • CL_Certificado.pem: Certificado de clave pública.
  • CL_ClavePrivada.pem: Clave privada asociada.
  • CACertificado.pem: Certificado de la Autoridad de Certificación (CA) que se utiliza para comprobar la firma del certificado del servidor enviado en el mensaje»Certificad» del protocolo SSL.

Servidor

  • SR_certificado.pem: Contiene el certificado del Gestor MySQL, que a su vez contiene la clave pública que el cliente utilizará para distribuir claves de sesión y autenticación. Se envía en el mensaje»Certificad» del servidor.
  • SR_ClavePrivada.pem: Contiene la clave privada del Gestor MySQL, que se utilizará para descifrar las claves de sesión y autenticación que enviará el cliente al Gestor MySQL en el mensaje»Intercambio de clave de Client».
  • CA_Certificado.pem: Contiene la Autoridad de Certificación que se utilizará para validar el certificado enviado por el cliente (mensaje»Certificad»), es decir, se utilizará para comprobar que está firmado por esta autoridad.

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.