Cifrar los registros de la base de datos para que sean accedidos por múltiples usuarios

0

Quiero cifrar los datos del cliente serializados y almacenarlos en una base de datos para protegerme contra ataques donde el atacante tiene acceso a los registros de la base de datos sin procesar. Los registros deben ser accesibles para múltiples usuarios registrados, pero no necesitan ser indexados ni buscados.

El enfoque ingenuo sería utilizar una clave de todo el sistema para el cifrado simétrico utilizando AES o similar, sin embargo, no estoy seguro de que esto sea más seguro que ningún cifrado.

¿Es generalmente seguro decir que el acceso a base de datos en bruto es más una amenaza que el acceso al código fuente? Suponiendo que sí (lo que creo que es el caso en mi situación), ¿hay un mejor enfoque que pueda usar que una clave de todo el sistema?

Gracias

    
pregunta David John Smith 30.01.2015 - 04:28
fuente

2 respuestas

2

El problema con el acceso directo a la base de datos es que los usuarios pueden extraer grandes cantidades de datos, por ejemplo. SELECT * FROM TableName.

Si encripta los datos en la base de datos utilizando encriptación transparente, los usuarios con acceso a los datos ven la encriptación de manera transparente o, en otras palabras, ven datos de texto sin cifrar. Incluso si ven datos encriptados, pueden tener una vista configurada para ver esos datos a la vista.

Podría considerar cifrar los datos en la capa de aplicación. Esto significa que los datos se cifrarían dentro de la base de datos para que los DBA solo vean los datos cifrados. La aplicación puede luego descifrar y publicar datos dependiendo de los privilegios del usuario. Esto podría ajustarse para que los usuarios finales solo vean datos individuales a la vez en lugar de listas o volúmenes, y el registro podría habilitarse para que pueda identificar quién ha accedido a qué datos.

Luego, debe considerar cómo se implementa la administración de su clave para que la clave de encriptación utilizada por la aplicación no se almacene en texto claro y no esté disponible para ningún usuario. AES con una longitud de bit de 128 o mayor es una clave simétrica perfectamente razonable para usar.

    
respondido por el AndyMac 30.01.2015 - 21:24
fuente
1

Suponiendo que quiere decir "leer el código fuente" y no "modificar el código fuente" cuando dice "acceso al código fuente", entonces El principio de Kerckhoffs se aplica y, de hecho, está en lo cierto de que el acceso directo a la base de datos es una amenaza mayor. Eso no quiere decir que debas facilitarle a nadie la obtención de tu código fuente, pero lo ideal es que tu sistema esté diseñado para que no seas intrínsecamente vulnerable si tu código fuente se filtra.

No puedo imaginar una forma en que los atacantes puedan tener acceso a los registros de la base de datos sin procesar y seguir siendo seguros. Sus usuarios necesitarán un sistema para convertir esos registros en algo útil, y si es una clave, entonces depende de que de alguna manera les brinde a los usuarios la clave de una forma segura que los atacantes nunca podrían comprometer. Necesitarías usar algo como Algoritmo de Shamir's Secret Sharing para darle a cada usuario una clave única o cambiar clave (y vuelva a cifrar su base de datos) con una alta frecuencia para que los ex usuarios no puedan acceder a los datos. Esto supone que sus atacantes nunca serán usuarios y nunca podrán comprometer los sistemas de los usuarios y nunca podrán encontrar su clave en su servidor. Si quiere decir que los atacantes pueden insertar o actualizar los registros de la base de datos cuando dice que "el atacante tiene acceso a los registros de la base de datos sin procesar", no hay nada que pueda hacer para evitar que su sistema sea completamente controlado. Todo el asunto grita "mala idea".

En general, los usuarios acceden a las bases de datos a través de una página web o programa, y solo ese servidor web o software tiene acceso a la base de datos. La página web o programa maneja la autenticación y restringe lo que los usuarios pueden hacer para prevenir ataques. La página web o el programa deben escribirse para que no accedan a los registros de sus usuarios hasta que los haya autenticado con las credenciales almacenadas en su servidor backend; esto evita que los atacantes obtengan sus datos de manera mucho más efectiva que regalando su base de datos y tratando de encontrar un algoritmo de cifrado que sea rápido para los usuarios y resista el uso brusco de los atacantes, y un método de implementación que protegerá suficientemente su clave de descifrado. >

Dicho todo esto, AES sería un algoritmo aceptable si realmente quisieras hacerlo de esa manera, a pesar de todas las razones, sería una mala idea.

    
respondido por el Aron Foster 30.01.2015 - 21:10
fuente

Lea otras preguntas en las etiquetas