Proteger el contenido de la base de datos contra las fugas

0

Modelo / Escenario de amenaza
Me preocupa un modelo de subproceso, donde ciertos datos confidenciales se almacenan en una base de datos. No es tan confidencial como la información o las contraseñas de la tarjeta de crédito, sino los números de teléfono, las direcciones de correo electrónico, etc. Asumamos que temo una fuga de base de datos, donde un atacante puede leer más información de la que se le permite. ¿Qué puede hacer uno como administrador contra eso?

Lo que consideré
Supongamos que mantenemos actualizado el software que organiza y distribuye los datos y parchamos todas las vulnerabilidades tan rápido como hay un parche disponible.

Consideré que podemos cifrar los datos confidenciales con, por ejemplo, la contraseña del usuario. (No el hash almacenado en la base de datos). Sin embargo, el consenso es que no es una buena práctica guardar datos cifrados en una base de datos. Además, los datos se perderían si un usuario olvida su contraseña.

También consideré encriptar todos los datos con una clave almacenada en el entorno del sistema operativo, pero esto probablemente no ayudaría contra las fugas en forma de, por ejemplo. Inyecciones de SQL, a menos que uno mantenga los datos cifrados hasta que un usuario inicie sesión y luego descifre solo la parte de los datos de los usuarios hasta que cierre la sesión nuevamente.

Entonces, mi pregunta es, ¿cuál sería una manera sensata de hacerlo en el escenario mencionado?

    
pregunta WeGi 10.05.2017 - 18:54
fuente

1 respuesta

0

La única razón para no cifrar los datos dentro de las columnas de la base de datos que conozco es por cuestiones de rendimiento / duplicación de datos. ¿Va a realizar uniones o búsquedas desde la base de datos en función de los datos en cuestión? Si no necesita hacerlo, siéntase libre de encriptar los datos en las columnas de la base de datos

Creo que la forma correcta de hacerlo sería cifrar las columnas en la base de datos y almacenar la clave de cifrado en un almacén de datos separado, como en un archivo en el sistema de archivos. El descifrado debe realizarse sobre la marcha en la aplicación web siempre que se soliciten los datos. De esa manera, si la base de datos se ve comprometida alguna vez a través de la inyección de SQL, el atacante podrá recuperar los datos cifrados. Tenga en cuenta que si no tiene una clave única por usuario, es posible que un atacante determine dos usuarios que tengan el mismo número de teléfono, ya que el mismo texto simple cifrado con la misma clave de cifrado proporcionará el mismo texto cifrado. Por favor, tenga en cuenta la rotación adecuada de las llaves también.

    
respondido por el user52472 10.05.2017 - 19:14
fuente

Lea otras preguntas en las etiquetas