2011-01-12 10 views
9

Estoy usando la API de Dropbox. En la aplicación de ejemplo, incluye estas líneas:Almacenar claves de API en Android, ¿es suficiente obfusticación?

// Replace this with your consumer key and secret assigned by Dropbox. 
// Note that this is a really insecure way to do this, and you shouldn't 
// ship code which contains your key & secret in such an obvious way. 
// Obfuscation is good. 
final static private String CONSUMER_KEY = "PUT_YOUR_CONSUMER_KEY_HERE"; 
final static private String CONSUMER_SECRET = "PUT_YOUR_CONSUMER_SECRET_HERE"; 

Soy muy consciente del mantra 'El secreto no es de seguridad', y la ofuscación realmente aumenta sólo ligeramente la cantidad de esfuerzo necesario para extraer las claves. No estoy de acuerdo con su declaración "Obfusticación es buena". ¿Qué debería hacer para proteger las llaves? ¿Es obfusticación buena suficiente, o debería considerar algo más elaborado?

+2

Lea amablemente la discusión sobre este tema aquí: https://groups.google.com/d/topic/android-developers/quD5gYIZ4Ig/discussion –

Respuesta

5

No se puede evitar. Si el usuario (atacante) tiene los datos protegidos y el código que realiza la desprotección, el usuario puede acceder a los datos. Es tan simple como eso. Un depurador y un punto de interrupción en el momento adecuado es todo lo que necesitan. Eso, y mucho tiempo libre y determinación.

Si el secreto es lo suficientemente bueno para sus propósitos depende de las especificaciones de su negocio. Pero, en general, en el mundo de los dispositivos móviles, si el cliente está preocupado porque sus datos sean robados, implementa controles de hurto y pérdida de alto nivel. Cosas como limpieza remota, bloqueo de pantalla obligatorio, etc. No creo que corresponda al programador de la aplicación duplicar todas esas cosas.

2

La seguridad nunca puede ser perfecta, por lo que depende de usted decidir cuánto trabajo desea hacer. Puede dividir el secreto del consumidor en múltiples cadenas para un cambio simple que ofrece una cantidad mínima de seguridad adicional o puede crear un algoritmo para representar el secreto de otra manera (desde insertar caracteres que no se utilizan cada X espacios en la cadena) para modificar cada carácter, quizás basado en la representación numérica).

Tienes que considerar el trabajo vs. beneficio. Si esta es una aplicación que usted y algunos amigos van a usar, entonces probablemente no importe mucho. Si esta va a ser una aplicación utilizada por 10 millones de personas, la seguridad es obviamente más preocupante.

Cuestiones relacionadas