Almacenar la clave de cifrado de datos en la base de datos. Seguro o no?

1

Actualmente estoy asumiendo el control de un servicio y mientras miro a través de la base de datos, noté que ciframos algunos de nuestros datos mediante una función en la base de datos donde la clave de cifrado está codificada en la función DB.

Por lo que sé, esto no es una buena práctica y hace que el cifrado sea bastante redundante porque el objetivo principal de cifrar los datos de la base de datos es proteger los datos en caso de que la base de datos se filtre a terceros no autorizados. Pero en este caso, si la base de datos se ve comprometida, también lo es la clave de cifrado y el cifrado carece de significado.

¿Estoy en lo correcto aquí o me estoy perdiendo algo?

Además, si es una práctica incorrecta, ¿debo cambiar el proceso de cifrado / descifrado para que se realice en el nivel de la aplicación del servidor?

    
pregunta dK3 29.10.2016 - 14:07
fuente

1 respuesta

2

La regla general es que desea mantener los datos cifrados y la clave de cifrado "lo más separados posible", lo que significa que desea minimizar la probabilidad de que, dado que los datos se filtran, la clave también se filtre .

Esta gran respuesta tiene una clasificación de uno (mejor) a siete (peor) en dónde almacenar el Clave de encriptación. Y, lo has adivinado, el número siete está "en la base de datos":

  

7. Almacena la clave en la base de datos. Ahora ni siquiera lo estás intentando. Aún así, una opción deprimentemente popular.

Por lo tanto, es posible que desee considerar las otras alternativas enumeradas allí. Dicho esto, almacenarlo en código en una función es mejor que almacenarlo en una tabla si se cumplen las siguientes condiciones:

  1. No se puede acceder directamente al servidor de la base de datos desde Internet.
  2. El usuario web de la base de datos (es decir, el usuario que la aplicación inicia sesión como) no tiene permiso para leer el código fuente de las funciones (por lo que el usuario web no pudo leer la clave de cifrado).
  3. Las copias de seguridad de la base de datos no incluyen el código fuente de la función.

Mover el cifrado a la capa de la aplicación no necesariamente mejora las cosas si la clave de cifrado está codificada en el código fuente de la aplicación en lugar del código fuente de la base de datos.

    
respondido por el Anders 29.10.2016 - 19:25
fuente

Lea otras preguntas en las etiquetas