Almacenamiento de datos cifrados legibles solo por el usuario pero creados por el servidor

1

Contexto

En realidad estoy creando una aplicación de escaneo de seguridad automatizada, lo que significa que cada usuario podrá escanear su propio sitio web (la parte de verificación de la propiedad está hecha) y obtener fallas encontradas en los informes.

El problema es que realmente quiero asegurar los datos almacenados, lo que significa que quiero que mis datos sean legibles solo por el usuario y el servidor (debido a que están expuestos mediante una API RESTful, al servidor de una aplicación angularjs).

Los datos se almacenan en un graphdb llamado neo4j

Ya pensado

  • Almacenar una clave de cifrado en cada nodo de usuario

    • El problema es que si alguien roba mi base de datos, solo tiene que encontrar el algoritmo utilizado para cifrar y puede obtener todos los defectos de cada sitio web.
  • Cifre los datos enviados por el usuario con su contraseña (borrar) en el lado del cliente, de modo que el servidor no conozca la clave, ya que solo está almacenando la contraseña con hash.

    • El problema es que el servidor no podrá almacenar datos cifrados si no conoce la clave de cifrado.

¿Cómo puedo lograr eso? Realmente necesito proteger mis datos en este punto, lo que significa que incluso si robas la base de datos, es imposible obtener datos de ella, a menos que seas ... yo o el desarrollador que creó el sistema de cifrado.

    
pregunta Supamiu 01.12.2015 - 18:37
fuente

1 respuesta

1

Uno de los principales principios de criptografía es el principio de Kerckhoffs : "Un criptosistema debe ser seguro incluso si todo sobre el sistema, excepto la clave, es de conocimiento público".

Entonces la opción con clave especial para cada usuario suena razonable. El algoritmo seleccionado y la longitud de la clave deben ser lo suficientemente fuertes como para proteger los datos en caso de que la base de datos sea robada. Las recomendaciones para seleccionar el algoritmo y la longitud de la clave se pueden encontrar en la guía de OWASP enlace

El problema principal en ese caso sería cómo proteger las claves de usuario contra el robo e implementar la administración de claves adecuada. Los siguientes elementos deben tenerse en cuenta durante el proceso de implementación:

  • Almacenamiento de claves: archivo o HSM (como SafeNet)
  • Frecuencia de rotación de claves (por ejemplo, cambiar claves una vez al año)
  • Protección de la clave maestra (una clave del almacenamiento con otras claves)
respondido por el Salamander 01.12.2015 - 19:36
fuente

Lea otras preguntas en las etiquetas