Si el atacante tiene acceso total en el servidor de la base de datos Y tiene acceso al servidor, descifrando los datos que perdió con cualquiera de estos sistemas de base de datos. He escuchado acerca de los mainframes y los sistemas construidos a medida donde la base de datos está integrada en el sistema operativo y usted no obtiene ningún acceso de administrador real, pero incluso para aquellos que un atacante con privilegios lo suficientemente altos pueden establecer los límites de lectura lo suficientemente altos como para leerlos. toda la base de datos fila por fila y nada por debajo de los 100.000 USD por año.
En su caso con SQLite con SQLcipher, necesitará almacenar el descifrado en algún lugar, y como con SQLite es generalmente el servidor de aplicaciones al que el atacante normalmente solo necesita acceder con los derechos de la aplicación / servidor web para obtener todos los datos. Otros sistemas de bases de datos proporcionan una funcionalidad similar, como se menciona a continuación , pero pueden estar disponibles solo en ciertas ediciones como Microsoft SQL Server en las ediciones Enterprise y Datacenter.
Formas de hacerlo más difícil para el atacante:
- Refuerce su servidor (mantenga el software actualizado, firewall, configuración segura para aplicaciones, acceso restringido (mantenimiento) a ciertos rangos de direcciones IP, control de llamadas, no ejecute servicios como administrador, límite de velocidad, ... )
- No almacene datos que no necesita o en un formulario que no necesita (sin contraseñas en texto claro, a veces no necesita el nombre de una persona para procesar, sino solo identificadores únicos, ... )
- Encriptación de la base de datos: algunas bases de datos ofrecen diferentes opciones de encriptación de la base de datos, como la base de datos completa, tablas, columnas para ver un ejemplo, haga clic aquí . Tenga en cuenta que esto podría significar una gran reducción de rendimiento. Esto hace que el atacante también necesite la clave de cifrado, pero si tiene acceso total al servidor de la base de datos, también puede rastrear la clave enviada al servidor de la base de datos, excepto en el caso del cifrado del lado del cliente, pero entonces solo necesitaría un acceso suficiente a la servidor accediendo a la base de datos.
- Limitar la superficie de ataque: puede colocar datos más confidenciales en servidores separados con mejores auditorías de seguridad. Por ejemplo, para los nombres de usuario y las contraseñas, puede usar un servidor separado con un único servicio web con las funciones "Verificar contraseña para la identificación del usuario", "Agregar contraseña para la identificación del usuario", "Eliminar contraseña para la identificación del usuario" y un servidor de base de datos adicional para aquellos Datos que solo aceptan conexiones desde este servidor. Debido a que tiene menos funcionalidad / código, es más fácil de auditar y tiene menos superficie de ataque.
Por supuesto, también necesitará otra medida de seguridad no mencionada en su vector de ataque, como el acceso físico al servidor, el cifrado de discos duros / copias de seguridad, ...