¿Qué es una buena estrategia de cifrado de datos para un recurso compartido (texto)?

5

Tengo un caso de uso en el que necesito cifrar una parte de la información de PII en una base de datos, que luego puede ser descifrada y accedida por múltiples roles de usuario en una aplicación (por ejemplo, el usuario al que pertenece, servicio al cliente, ingeniería, etc.) ..).

¿Qué es una estrategia estándar de la industria para este tipo de cosas?

ACTUALIZACIÓN: POR FAVOR LEA ANTES DE PUBLICAR : Además de publicar los comentarios de mi idea a continuación (que realmente aprecio), también proponga una estrategia. Creo que sería muy útil para cualquiera que intente cifrar cualquier recurso compartido en la actualidad.

Esto es lo que tengo en mente en este momento y espero que describa a qué me refiero mejor:

Divulgación completa : la información a continuación también está destinada a obtener una opinión o una revisión por pares sobre mi estrategia actual que encontré

Como parte de una estrategia de defensa en capas, mi criterio es tener al menos 3 factores para la estrategia de cifrado / descifrado de esa manera, si se comprometen 2 piezas, los datos aún no se pueden descifrar.

Los 3 factores: el software que accede a la información, una base de datos con datos cifrados (DB1), una base de datos con las claves de cifrado (DB2).

La estrategia de cifrado:

  1. Los datos se ingresan en el software
  2. A, digamos, se genera una clave de 128 bits
  3. Los datos se cifran con esa clave
  4. Los datos cifrados se almacenan en la base de datos (que se presenta como DB1 en los 3 factores anteriores)
  5. La clave 128b se encripta con una clave maestra codificada en el software
  6. La clave 128b cifrada se almacena en la otra base de datos (presentada como DB2 en los 3 factores anteriores)

La estrategia de descifrado es la inversa ...

El punto es que el software contiene la clave maestra (Factor 1), DB1 tiene los datos cifrados (Factor 2) y DB2 tiene las claves de cifrado cifradas (yay para la repetición de palabras ... también Factor 3) que solo se pueden descifrar con la llave maestra.

En mi cabeza, si alguno de estos se expone, es información inútil que no revela la PII cifrada.

Por cierto, esto supone algoritmos de cifrado sólidos como AES (... lo más probable es que AES solo se deba a que DES, 3DES y Blowfish están en desuso).

Actualizar me doy cuenta de que no me aclaré en qué punto se verán estos 3 factores. Los 3 estarán en diferentes entornos de alojamiento en 3 servidores diferentes  Estamos hablando de una estrategia a gran escala (que también podría funcionar a pequeña escala) donde los DB son entidades de hardware inherentemente separadas. En mi opinión, ese era el supuesto para empezar.

Actualización 2 Gran parte de los comentarios aquí con razón sugiere que el software es el talón del ágil aquí. Este también es mi gran cananda. No puedo pensar en ninguna estrategia de software en la que, si el software está comprometido, los datos no estén en riesgo, dado que el software siempre tiene una abra la conexión en la base de datos y contiene toda la lógica empresarial para ver / manejar esos datos. Incluso si implementa mydiamo en el software, eso significa que los datos se verán comprometidos si alguien toma el control del software.

    
pregunta dwkd 15.12.2016 - 21:06
fuente

6 respuestas

7

Alguien que irrumpa en su servidor se irá con el software y las bases de datos. Teniendo todos sus factores, entonces podrán ejecutar la estrategia de descifrado a la inversa para recuperar toda la PII.

En la autenticación multifactor, los factores adicionales no cuentan si se los robarían al mismo tiempo que un factor existente. Por ejemplo, un token de hardware es un factor diferente de una contraseña, ya que un registrador de claves (la forma típica de robar la contraseña), al ser software, no podría robar el token de hardware al mismo tiempo.

    
respondido por el DepressedDaniel 16.12.2016 - 01:39
fuente
3

Si he entendido correctamente tu pregunta, estás intentando reforzar los datos contra un atacante que podría tomar un control parcial de tu centro de datos. No olvide que una vez que se comprometa una parte de un centro de datos, se asume que la zona completa accesible desde el punto de vista administrativo está comprometida. Eso significa que no es suficiente separar la información en 3 servidores diferentes, sino que 3 servidores deben estar en 3 zonas diferentes con un firewall estricto entre ellos para garantizar que solo se pueda intercambiar la información requerida. O al menos, la base de datos segura y la base de datos normal no deben estar en la misma zona.

En particular, la aplicación solo debe poder obtener la clave de cifrado / descifrado a través de un servicio web y presentando las credenciales que demuestren que lo hace en nombre de un usuario autorizado. Eso significa que tendrá que configurar un sólido sistema de autenticación y autorización y examinar a fondo todas las implicaciones de seguridad. Y también debe configurar auditorías de código para controlar que la aplicación no mantenga esa clave por más tiempo del necesario

Lo que quiero decir es que es necesario usar un sistema de cifrado sólido, pero es solo la parte visible de lo que se debe hacer para aumentar la seguridad. La parte esencial no será solo técnica, sino que incluirá la organización y una definición precisa de qué privilegios se otorgan a quién y a qué servidor se le permite comunicarse con el otro. También debe considerar cómo se realizan las copias de seguridad porque son una parte esencial en un sistema seguro porque deben ser robustas pero no demasiado accesibles. En mi humilde opinión, también debe analizar el valor de los datos y los riesgos a los que está expuesto. Porque configurar un sistema seguro no vendrá sin un costo.

TL / DR: no hay fallas evidentes en lo que describe, pero lo que falta es la definición de la segregación entre las diferentes partes, porque el diablo se esconderá en tales detalles.

    
respondido por el Serge Ballesta 20.12.2016 - 18:20
fuente
1

Sé que mencionó que tiene las dos bases de datos segregadas, sin embargo, obviamente se comunican de alguna manera, por lo que consideraría que ambas están en riesgo si su red está comprometida, lo que significa que podrían considerarse solo como un factor.

Tener un token físico separado sigue siendo una buena idea, obviamente, pero mi mensaje es que usar 2 bases de datos puede no ser mucho mejor que usar 1.

    
respondido por el Rory Alsop 20.12.2016 - 16:47
fuente
1

Tal vez una forma de mejorar la seguridad no sea codificar la "clave maestra" en el software, sino obtener el tiempo de ejecución de otro servidor. Al menos de esa manera, el atacante no puede simplemente alejarse con software y bases de datos, sino que debe crear un volcado de memoria para obtener la clave maestra o incluso atacar al servidor de claves.

    
respondido por el Sunil Agrawal 20.12.2016 - 18:44
fuente
1

Si lo que está haciendo es un proyecto a gran escala como mencionó, mi recomendación es ir con soluciones comerciales que aborden precisamente eso.

Usted conoce el consejo habitual: no haga rodar los suyos cuando se trata de criptografía / cifrado. Hay muchas maneras en que su estrategia puede salir mal. Es mejor revisar una solución probada y hay algunas que creo que se adaptarían exactamente a sus requisitos.

En pocas palabras, desea una solución que tenga cifrado a nivel de columna, que proporcione diferentes claves de cifrado / descifrado para cada columna y que le permita definir políticas de control de acceso por columna.

La solución también debería ayudarlo a almacenar y administrar sus claves en un servidor separado (preferiblemente HSM) y garantizar una transmisión segura de las claves entre los servidores.

Como revelación, he trabajado como consultor de cifrado de bases de datos durante bastante tiempo, pero nuevamente, esto me pone en una posición para darle un consejo de "He estado allí, he hecho eso". / p >

He consultado para muchos clientes que tienen requisitos muy estrictos de seguridad y rendimiento. No estoy seguro de qué DBMS está utilizando, pero si está utilizando una base de datos de código abierto, puede encontrar mydiamo para tener todo lo que está buscando. Si está utilizando DBMS comerciales, este compañero y o esto tiene soluciones bastante bien probadas.

    
respondido por el NA AE 21.12.2016 - 02:52
fuente
1

HSMs

Una práctica bastante común en tales contextos es tener la "clave maestra" de su escenario para que resida en un módulo de seguridad de hardware, por lo que nunca la abandona y puede descifrar las claves específicas de los datos cuando sea necesario.

Como se describe actualmente, su software parece ser un punto único de falla: una vulnerabilidad en su aplicación tendría acceso a la clave maestra y probablemente también acceso de lectura a ambas bases de datos. Si realmente desea una "defensa en capas", entonces debería asegurarse de que el sistema que tiene acceso a todos los datos no pueda descifrarlos, y el sistema que puede descifrar los datos no puede acceder a todos los datos.

    
respondido por el Peteris 21.12.2016 - 03:11
fuente