Supongamos que estamos en el campo de las aplicaciones de escritorio que necesitan almacenar sus datos en una base de datos. ¿Cómo almaceno la contraseña para esta base de datos evitando los errores más evidentes, que son:
1) codifique la contraseña de la base de datos dentro del código (citado como # 21 codificando horror en „Contraseñas codificadas“ dentro de enlace )
2) cifrando la contraseña de la base de datos y almacenándola en un archivo, cambiaría el problema a: „¿dónde almaceno la contraseña que cifra la contraseña de la base de datos?"
3) utilizando un servidor de base de datos remoto y una arquitectura de n niveles donde el programa no accede directamente a la base de datos sino que se autentica con otra capa que otorga cada operación y la envía a la capa de la base de datos. Todo se encripta a través de ssl y la autenticación se realiza a través de un certificado digital (por lo tanto, mediante el uso de criptografía de clave pública).
¡El número 3 es en realidad una solución, pero no se aplica a las aplicaciones de escritorio que necesitan trabajar sin conexión!
Alguien en otra pregunta similar respondió que "dar a los usuarios no confiables acceso confiable a un sistema" no es factible, por eso el DRM nunca funcionó, sin embargo, no citó un estudio comprobado ni un teorema comprobado.
Observe que ocurre el mismo problema si queremos cifrar la base de datos: ¿dónde almaceno la contraseña con la que cifro una base de datos en una aplicación de escritorio?
¿Alguien puede arrojar alguna idea? Gracias
NOTA: este mismo problema se trata en CWE-259: Uso de contraseña codificada de forma rígida pero no se explica ninguna solución definitiva