Manera segura de almacenar datos de usuario sin encriptar la base de datos

1

Estoy buscando una manera o una mejor práctica para almacenar datos de usuario de forma segura en una base de datos sin cifrar la base de datos.

Estamos hablando de un servidor de aplicaciones conectado a un servidor de base de datos. Mi enfoque fue cifrar los datos de usuario en el servidor de aplicaciones (¿Cómo?) Y almacenar los datos cifrados en el servidor de base de datos. Si un usuario se autentica en el servidor de aplicaciones, los datos cifrados deben leerse desde el servidor de aplicaciones, descifrarlos y entregarlos al usuario ...

Actualización: es obligatorio que el servidor de aplicaciones pueda descifrar los datos del usuario (por ejemplo, nombre, apellidos, tipo de sangre, productos que compraron, otros datos personales, no se mencionan las contraseñas aquí) porque el servidor de aplicaciones tiene que descifrar los datos almacenados. Datos en la base de datos para presentar los datos al cliente.

¿Existen herramientas / mejores prácticas para este escenario?

Supongo que una base de datos totalmente encriptada podría ser la mejor solución, pero ¿hay alguna forma de proteger este entorno sin encriptar completamente la base de datos?

Actualizar

Intentaré aclarar el caso de uso:

El cliente está ejecutando un sitio web donde los usuarios inician sesión con sus credenciales (nombre de usuario / contraseña). Appserver es Tomcat, la base de datos es Oracle Afaik. No hay requisitos legales (no PCI, Sox, HIPAA, etc.) involucrados para los datos almacenados, sin embargo, el cliente desea proteger los datos mediante su cifrado. El cliente no desea cifrar la base de datos debido a problemas de licencia, problemas de rendimiento y el "problema" que los administradores de la base de datos pueden descifrar de la base de datos ... por lo tanto, los datos deben cifrarse en el servidor de la aplicación y luego enviado al servidor de la base de datos.

Los arquitectos de software quieren ir con el enfoque de Seguridad por oscuridad y desarrollar su propia técnica de "cifrado" (tal vez rot14 o lo que sea :)) e implementarla en la capa del servidor de aplicaciones. El cliente es plenamente consciente del hecho de que todos los arquitectos de software ahora podrán leer los datos cifrados almacenados en la base de datos, pero eso está bien para él ...

    
pregunta kekeria 18.06.2012 - 16:13
fuente

2 respuestas

1

El caso de uso todavía es un poco complejo, pero aquí hay algunos pensamientos que he leído hasta ahora.

  1. ¿Es un requisito que la aplicación realice la decodificación, o es el requisito de que el cifrado no se realice en la base de datos? Puede hacer que un servidor intermediario cifre / descifre o use un módulo de seguridad de hardware, etc.
  2. Suponiendo que no es un requisito que el propietario de la aplicación web necesite acceso de lectura, es posible que pueda realizar un cifrado de clave privada de los datos confidenciales (obviamente no en las referencias de la tabla hijo-padre y demás). Es una molestia, pero es posible asignar certificados de usuario final para el inicio de sesión y la autenticación, y creo que puede aprovechar eso para el cifrado.
  3. Si solo desea que los datos estén encriptados en el almacenamiento y tenga una confianza razonable de sus desarrolladores (no debería), puede hacer que la aplicación use su propia clave privada para el cifrado en la aplicación de los datos confidenciales y cifrarlos antes de almacenarlos. la base de datos. También deberías descubrir cómo proteger la clave privada. También puede usar un módulo de hardware aquí.

Además, incluso si la organización no cree que tengan los requisitos de HIPAA, seguramente suena así. Podrían ser un "asociado de negocios" , que todavía podría tener algunas implicaciones de HIPAA. También me preguntaría sobre el modelo de negocio donde tienen una gran cantidad de datos pero no quieren la capacidad de agregar o extraer datos; puede usar todo tipo de referencias de seudónimos para unir las cosas a nivel individual para un procesamiento por persona (por ejemplo, consultar todas mis filas de análisis de sangre y hacer la agregación cuando cargue la página). ¿Ha considerado la organización el impacto de realizar el cifrado en el nivel de la aplicación, o tal vez sea solo para unos pocos datos clave?

    
respondido por el Eric G 24.06.2012 - 08:06
fuente
0

Puede usar el Cifrado de datos transparente (TDE) de Oracle para asegurar las columnas necesarias.

enlace

Esto le permitiría cifrar la columna y aún así poder buscarla de manera eficiente. Dependiendo de su acuerdo de licencia con Oracle, es posible que se requiera una actualización de la licencia para esta función.

Alternativamente, puede usar los paquetes java.security y javax.crypto en su aplicación para cifrar sus datos antes de enviarlos a la base de datos. Un inconveniente de esto sería la posible disminución del rendimiento en caso de que se deban consultar los datos cifrados.

    
respondido por el Todd Dill 19.06.2012 - 15:50
fuente

Lea otras preguntas en las etiquetas