REVISTA .SEGURIDAD | 1 251 478, 1 251 477 | REVISTA BIMESTRAL

Consideraciones para el uso de cifrado en las bases de datos

El cifrado de datos es una alternativa muy usada para el cumplimiento del requisito de confidencialidad de la información en las bases de datos, sin embargo, cuando se aplica en bases de datos heterogéneas y de gran tamaño, puede llevar a consecuencias no deseadas en su rendimiento. En la primera sección de este artículo se habla sobre el proceso de cifrado y cómo se aplica en las bases de datos. La segunda sección explica las consideraciones para el uso del cifrado con una base de datos y se proponen escenarios en donde puede ser adecuado el uso de este recurso. En la tercera sección se dan recomendaciones para diseñar aplicaciones que utilicen una base de datos cifrada. Finalmente se presentan recomendaciones generales sobre cifrado en las bases de datos. 

El cifrado y las bases de datos

Para introducir al lector en los aspectos generales sobre el cifrado y su importancia como método de seguridad, veamos la siguiente definición: 

“El cifrado es una operación criptográfica reversible que transforma datos significativos sin proteger, conocidos como texto sin formato, en datos ilegibles, cifrados, conocido como texto cifrado, utilizando una clave llamada clave de cifrado.” [1]

En esta definición los datos significativos son el elemento fundamental, ya que por el carácter confidencial de los datos almacenados en las bases de datos, las organizaciones se ven forzadas a implementar controles cada vez más sofisticados para protegerlas, uno de estos controles es el cifrado. 

Sin embargo, la preocupación por la degradación del rendimiento, el soporte de aplicaciones y la forma de administrar las implementaciones de cifrado en bases de datos grandes originan barreras que hacen difícil adoptar esta importante medida de seguridad. 
 
 
Imagen 1. Rendimiento esperado en bases de datos cifradas
 

Existe una presunción sobre la afectación del rendimiento de la base de datos cifrada respecto a la no cifrada, como se muestra en la imagen 1. Si la organización desea aplicar el cifrado es importante conocer por qué se desea utilizar una base de datos cifrada, ya que esto ayuda a decidir la forma de conectarse, ejecutar transacciones y realizar consultas. Tener en cuenta esta pregunta ayudará a afectar al mínimo el rendimiento de la base de datos y el modo en que las aplicaciones de los usuarios crean, obtienen o almacenan la clave de cifrado para la base de datos. 

Si todas las aplicaciones de la organización comparten el mismo motor de base de datos local y la base de datos está cifrada, al conectar cualquier aplicación o al leer y escribir en un archivo de la base de datos, ésta deberá proporcionar la clave de cifrado. 

Para usar una base de datos cifrada debe crearse como cifrada, esto es una opción que existe en la mayoría de los sistemas gestores de bases de datos. Las técnicas para trabajar con una base de datos cifrada son las mismas que para el trabajo con una base de datos no cifrada. En concreto, la ejecución de declaraciones SQL es la misma independientemente de si una base de datos se encuentra o no cifrada.

Claves de cifrado seguras

El proceso de creación de una base de datos cifrada es similar al proceso de creación de una base de datos no cifrada, la diferencia básica es el uso de una clave de cifrado. Esta clave debe ser generada antes de crear la base de datos mediante un proceso que asegure el nivel más elevado posible de privacidad y seguridad para los datos de los usuarios. 

 
 
Imagen 2. Generación de claves de cifrado por contraseña de usuario
 

El método deberá solicitarle al usuario una contraseña que sirva para crear esta clave de cifrado. Deberá utilizarse un método que compruebe que la contraseña introducida por el usuario cumple con los requisitos de longitud de contraseña. Se recomienda que la contraseña tenga entre 8 y 32 caracteres. Debe mezclar letras mayúsculas, minúsculas y al menos un número o caracter especial [2]. El usuario crea la base de datos cifrada indicando la clave de cifrado en el proceso, posteriormente, para conectarse y utilizarla deberá ingresar dicha clave.

 
 
Imagen 3. Proceso de creación de base de datos cifrada
 

Consideraciones para el uso del cifrado en una base de datos

La forma en que se plantea el uso del cifrado representa una parte importante en el control del nivel de privacidad de la información de una base de datos. Por ejemplo, si se está utilizando una base de datos cifrada para proteger la privacidad, incluso contra otros usuarios en el mismo equipo, la base de datos de cada usuario necesita su propia clave de cifrado.

Imagen 4. Acceso de usuarios a la base de datos por el mismo equipo

Para obtener la máxima seguridad, la aplicación puede generar una clave a partir de una contraseña introducida por el usuario. Si la clave de cifrado se basa en una contraseña, se garantiza que un usuario que pudiera suplantar la cuenta de otro en el equipo, no tenga posibilidad de acceder a los datos.

Tanto la aplicación como la técnica utilizada para generar la clave de cifrado se pueden diseñar según el nivel de privacidad que se desee. Las siguientes sugerencias se pueden aplicar para distintos niveles de privacidad de datos:
  • Para que cualquier usuario con acceso a la aplicación pueda consultar una base de datos en cualquier equipo, utilice una sola clave que esté disponible en todas las instancias de la aplicación. 
Imagen 5. Acceso de usuarios a la base de datos desde cualquier equipo
 

Por ejemplo, la primera vez que se ejecute una aplicación puede descargar la clave de cifrado compartida de un servidor mediante un protocolo seguro, como SSL [3]. 

  • Para que un usuario pueda acceder a una base de datos desde cualquier equipo, genere la clave de cifrado a partir de una contraseña de usuario. No utilice algún valor que esté asociado a un equipo concreto. 

Imagen 6. Acceso de un usuario a la base de datos desde cualquier equipo
 
Para que únicamente un usuario determinado pueda acceder a una base de datos en un solo equipo, genere la clave a partir de una contraseña y un valor salt generado [4]. 

Recomendaciones generales sobre cifrado en las bases de datos

A continuación se incluyen consideraciones adicionales sobre seguridad que es importante tener en cuenta a la hora de diseñar una aplicación que utilice una base de datos cifrada:

  • Un sistema sólo es seguro en su vínculo más débil. 
  • Si usa una contraseña introducida por el usuario para generar una clave de cifrado, tenga en cuenta la aplicación de restricciones de complejidad y longitud mínima en las contraseñas. 
  • Una contraseña corta que sólo utilice caracteres básicos se puede adivinar rápidamente.
  • No ponga nunca una clave de cifrado en el código fuente, es preferible mantenerlas en un recurso externo.
  • Tenga en cuenta que la técnica empleada para generar una clave de cifrado puede ser descubierta fácilmente por un atacante.
  • Si opta por cifrar toda la base de datos, se cifrarán todos los objetos utilizados por el sistema gestor de base de datos junto con los datos de los usuarios.
  • El sistema de base de datos retiene algunos datos en memoria interna para mejorar el rendimiento de lectura y escritura en las transacciones y estos datos no están cifrados. 

Referencias

[1] Ewow, Educación y Ciencia, Cifrado asimétrico, Recuperado de: http://www.ehowenespanol.com/cifrado-asimetrico-info_196286, 2014
[3]   Sun Microsystem, Operating SSL Overview, Recuperado de: http://www.manualslib.com/manual/539752/Sun-Microsystems-Eway-5-1-1.html?page=27
 
Si quieres conocer más, consulta:
 
 
 

UNAM

[ CONTACTO ]

Se prohíbe la reproducción total o parcial
de los artículos sin la autorización por escrito de los autores

 

Hecho en México, Universidad Nacional Autónoma de México (UNAM) © Todos los derechos reservados 2017.