¿Dónde almacenar la información global sensible, como las claves API en la aplicación de Android?

Necesito almacenar información confidencial en una aplicación de Android. Si lo pongo en un archivo de recursos, parece que es trivial que otra aplicación pueda navegar y leer ese archivo simplemente usando PackageManager.getResourcesForApplication () .

¿Dónde está el lugar correcto para poner la información como esta que no queremos que la gente pueda fácilmente fisgonear?

¿Debería estar en un archivo java compilado? ¿O los archivos de clase también son fácilmente legibles? Además, si están en archivos java, ¿es posible hacer referencia a ellos desde archivos XML que los necesitan (por ejemplo, para la clave api de google maps)?

Su APK se recuperará del dispositivo y se desgarra de todos modos. (Después de todo, algunos dispositivos están arraigados.) Lo que sea que codifique allí, no importa dónde, será encontrado y extraído. Por supuesto, si la ganancia potencial justifica el esfuerzo. De lo contrario, la seguridad por la oscuridad, como la ofuscación, puede ser el camino a seguir.

Manejar secretos reales debe basarse en algún tipo de entrada, en particular las contraseñas.

Felizmente, las claves API, si se utilizan como se supone que, no son necesariamente un verdadero secreto.

Google tiene algunas buenas recomendaciones sobre esto bajo facturación . Para resumir: utilice el servidor remoto, ofusque y use nonces aleatorios seguros. Nada es seguro en tu apk ya que siempre puede ser ingeniería inversa y la ofuscación sólo funciona contra ataques simples.

Si sólo desea denegar el acceso a sus datos de otras aplicaciones, puede utilizar SharedPreferences. Simplemente use Contex.getSharedPreferences ( nombre de archivo / prefs /, Context.MODE_PRIVATE); Según la documentación MODE_PRIVATE significa que el archivo creado sólo puede ser accedido por la aplicación que llama (o todas las aplicaciones que comparten el mismo ID de usuario).

  • Android.security.KeyStoreException: Bloc de clave no válido
  • ¿Cómo evito que Android tome una captura de pantalla cuando mi aplicación va al fondo?
  • Implementación insegura de la interfaz X509TrustManager - Servicios de Google Play
  • ¿Existen directrices de codificación para la plataforma Android que se centran en la seguridad?
  • El exponente privado de Android KeyStore no se puede extraer
  • ¿Cómo el software anti-virus escanea programaticamente las aplicaciones Android instaladas (sin privilegios de root)?
  • ¿Cómo almacenar de forma segura el token de acceso y el secreto en Android?
  • ¿Cómo puedo usar el Desbloqueo facial de Android en mi aplicación privada?
  • Hacer un IAP válido para diferentes aplicaciones
  • Android - Tiempo de vida de las diferentes opciones de almacenamiento
  • ¿Qué tan seguros son los certificados SSL de clientes en una aplicación para móviles?
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.