Cómo preservar la información confidencial en el lado del cliente binario?

Tengo ganas de desarrollar una aplicación de Android / iphone, los que estarán utilizando una API privada (no libre) con clave de cliente incrustado.

Ahora, ya que es posible hacer ingeniería inversa de los binarios de la aplicación y eliminar las cadenas. Estoy preocupado de perder mi cliente-llave y allí exponiendo la API privada al atacante.

¿Cómo manejar esto? ¿Puede proporcionar enlaces a artículos que discutan estas situaciones?

Teniendo en cuenta que tengo acceso de desarrollo a la API privada, ¿qué mecanismo puedo construir en que para preservar la privacidad de todo el sistema.

Por favor ayuda !

Siempre será posible usar la API privada si tiene acceso al código de sus aplicaciones (vea este hilo también). Sin embargo, puedes hacerlo más difícil. Y puede restringir el uso de la API con las siguientes opciones

1) si no es "su" API, no coloque la clave en la aplicación, sino en un servidor que está ejecutando para servir como proxy para el servicio extranjero (es probable que todavía quiera otra clave para su servidor para ir a la aplicación, a continuación, )

2) cifrar / codificar la clave para que no se agarre fácilmente:

  • Ejemplo simple para codificar: poner la clave en un archivo; Generar un archivo aleatorio de la misma longitud; Xor el archivo clave con el archivo aleatorio (y escríbalo de nuevo en el disco); Cada vez que necesite la clave, lea los archivos y xor ellos de nuevo (cualquier operación reversible en lugar de xor hará – operación más compleja, extendida sobre su código hará más difícil para el ingeniero inverso)
  • Cifrar su clave usando una frase de paso extendida sobre su aplicación (en aplicaciones de despliegue de Android se ofuscó de todos modos, por lo que encontrar es un poco más difícil)

3) si es su servicio o tiene una configuración de proxy, restringir el número de usos por cliente / IP o ofrecer sólo partes del servicio a través de su proxy

Tenga en cuenta que la opción 1 puede incluso ser necesaria si tiene un contrato que prohíbe hacer pública su clave.

  • UML: Cómo modelar la interfaz de usuario y los hilos de fondo para aplicaciones móviles (iPhone / iOS, Android)
  • ¿Los dispositivos Android / webOS admiten eventos multi-touch de Javascript?
  • Conecta el iPhone a Android Wifi Direct soft AP
  • Transmisión en vivo en iPhone / Android: RTMP - HTTP
  • ¿Cuál es el equivalente a Android de findViewById (int) de Android?
  • Reproducción de audio html5 en el navegador android
  • Tomar pagos con tarjeta de crédito en la aplicación
  • ¿Cómo hago que mis aplicaciones iOS / Android cumplan con la Sección 508 de la Ley de Rehabilitación de los Estados Unidos?
  • Tiempo de dev Android vs tiempo de dev de iPhone
  • Desarrollo de sitios específicos para móviles. ¿Donde empezar?
  • IPhone o Android que utilizan la autenticación basada en SMS?
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.