Necesito almacenar realmente datos confidenciales en una base de datos alojada por el cliente. Como no hay forma de proteger esta base de datos (porque no la poseo), mi idea fue cifrarla utilizando la contraseña del usuario, por lo que solo el usuario con su propia contraseña puede acceder a su propia información.
Pero estoy un poco preocupado por los ataques de texto simple conocidos: si un atacante sabe qué DB utilizo, sabrá patrones en el contenido que quizás pueden usar para obtener datos confidenciales y / o la contraseña del usuario.
Entonces, la idea que tuve fue: cifremos los datos confidenciales del usuario con su contraseña antes que está almacenada en la base de datos y, como también quiero proteger información secundaria como el número de filas para cada tabla, cifre esa base de datos con una clave = Hash (Salt + misma contraseña de usuario ). De esta manera, un atacante con un ataque de texto simple conocido puede obtener la estructura de la base de datos y / o el hash con sal, pero luego deberá averiguar la contraseña del usuario para acceder a datos confidenciales.
Pero ahora me pregunto ... ¿Estoy reutilizando la misma contraseña dos veces? ¿Puede facilitar la búsqueda de la contraseña original haciendo lo que estoy haciendo aquí? ¿Es realmente tan útil para lo que estoy tratando de lograr o simplemente debo cifrar la base de datos una vez?