Si no es un especialista en criptografía y seguridad, se recomienda que no implemente el cifrado de la base de datos usted mismo, no importa cuán tentador se sienta esa ruta. Es mejor elegir la solución que mejor se adapte a su caso de uso y modelo de amenaza, o pedirle a una empresa dedicada al desarrollo competente en seguridad que le proporcione dicha solución.
Sin conocer sus casos de uso, además, es un consejo muy amplio que puedo dar, después de haber pasado muchos años en el tema.
Existen múltiples enfoques para el cifrado de la base de datos, y todos dependen de un modelo de amenaza: qué está protegiendo, contra quién, qué partes de su sistema tienen más probabilidades de verse comprometidas. La criptografía no es una bala de plata y protege bien contra los riesgos que has evaluado bien en primer lugar.
- ¿Es importante o paranoico que alguien como yo use software como TrueCrypt?
- ¿Cuál debería ser mi carrera profesional para ser un experto en seguridad cibernética?
- ¿Cómo omiten las botnets el captcha en varios sitios web?
- Cómo iniciar sesión de forma remota en mi computadora en India desde EE. UU.
- ¿Por qué los clientes de correo electrónico bloquean imágenes?
No hay demasiados lugares en los que pueda cifrar los datos.
- Nivel de aplicación Cifrar / descifrar datos en su aplicación, enviarlos a la base de datos. Problemas: ubicación clave, la base de datos no puede hacer nada con datos cifrados, solo necesita cifrado selectivo en campos confidenciales. Riesgos: la aplicación está más cerca del usuario en este esquema, por lo que también está más cerca del atacante.
- Entre aplicación y almacenamiento . Puede cifrar en el lado de la base de datos, si tiene tales capacidades. De esta manera, mantiene secretos en el lado de la aplicación y blobs encriptados en el lado de la base de datos, por lo que comprometer ambos es necesario para filtrar la mayoría de los datos. El TDE mencionado anteriormente es uno de los casos secundarios de cifrado del lado de la base de datos, donde los secretos están bien compartimentados en un entorno separado. Riesgos: modelo de riesgo frágil. Hazlo mal y TDE / cifrado de proxy / cifrado en consulta se volverá inútil, solo consumiendo recursos.
- Cifrado de disco Los datos en reposo están protegidos a nivel de disco. Protege bien contra el compromiso físico. Si el sistema pierde discos físicos, son inútiles. No ayuda mucho en el entorno moderno, donde el sistema operativo debajo de la base de datos probablemente se vea comprometido primero, no el hardware físico.
Aspectos a tener en cuenta : la aplicación comprometida pierde tanta información como ahora está dentro de la aplicación, más las credenciales para acceder a la base de datos (que pueden incluir o no los secretos).
Existen algunas técnicas para evitar que las credenciales se filtren desde el lado de la aplicación, no hay muchas técnicas que eviten que los atacantes alteren el flujo de la aplicación de manera que descargue todos los registros de la base de datos uno por uno, como una acción legítima. No hay balas de plata, lo siento, pero hay un montón de trucos que tal vez quieras emplear (ver los enlaces a continuación).
Algunos enlaces para leer más:
- Para cosas más modernas como SSE, CryptDB, Homomorphic Encryption de una manera menos orientada al usuario y más fundamental, consulte la increíble presentación de Tony Arcieri – Frontiers in Cryptography.
- La compañía para la que trabajo hace mucho sobre el cifrado de bases de datos y backend, y hace algún tiempo escribimos una serie de publicaciones en el blog para hacer una descripción general de las técnicas y enfoques modernos en la protección de backend (que incluye, pero está lejos de limitarse a, la investigación que realizamos). También hemos lanzado recientemente la herramienta de cifrado de bases de datos de código abierto Acra, con un diseño criptográfico clásico aplicado a problemas modernos (soy uno de los ingenieros detrás de la parte criptográfica).
- Vormetric hace un muy buen trabajo explicando la arquitectura de seguridad detrás de sus soluciones de cifrado de bases de datos (hacen TDE, cifrado en el lado de la aplicación, compartimentación de claves, muchas cosas) en la página de cifrado de bases de datos.
- Sorprendentemente, Cisco ha producido una crítica bastante sensata sobre la implementación del cifrado de la base de datos en la aplicación, con pocos iniciadores prácticos para pensar: Cifrado de la base de datos para el desarrollo de aplicaciones