Estoy tratando de averiguar dónde o cómo debo almacenar los secretos y las claves de la aplicación dentro de una aplicación de escritorio. Por ejemplo, una clave de la aplicación de Facebook o una clave de Dropbox y un secreto.
Así que he leído que debo hash, saltear, cifrar, etc., estos valores. Esto es para evitar que alguien ingrese mi código de ingeniería inversa y vea las claves.
Todo está bien y está bien, pero con todos estos métodos, simplemente estoy almacenando un valor de sal o hash en algún lugar en lugar de la clave, al final. Seguramente, si un pirata informático puede obtener el código sal / hash y posiblemente el código fuente, podrá descifrar la clave cifrada y obtener mi contraseña / clave / secreto de todos modos.
Una opción sobre la que he leído que parece más segura es no almacenar este valor en la aplicación de escritorio, sino llamar a un servicio web para obtener la clave (probablemente encriptada). Pero mi pregunta es que, incluso en este caso, un pirata informático decente simplemente hará un volcado de memoria o algo para ver cuál es el valor devuelto por el servicio web, y luego estamos de vuelta en el punto 1.
La siguiente mejor alternativa parece ser la oscuridad.
¿Me estoy perdiendo algo completamente?
En una nota al margen, ¿de qué sirve una clave / secreto de facebook / twitter / dropbox / etc para un pirata informático? Seguramente todavía necesitarían las credenciales de un usuario o el token de acceso para poder usarlo de todos modos.
Cualquier consejo o sugerencia será apreciada.