Asegurar cadena en APK

Estoy desarrollando una aplicación para Android con Mono para Android de Xamarin. Actualmente estoy trabajando para agregar la capacidad de compra en la aplicación mediante la API de Google Play. Para ello, necesito enviar a Google la clave de licencia pública desde mi aplicación. En relación con este problema, Google recomienda lo siguiente:

Recomendación de seguridad: Se recomienda encarecidamente que no codifique el valor exacto de la cadena de claves de licencia pública que proporciona Google Play. En su lugar, puede construir toda la cadena de claves de licencia pública en tiempo de ejecución a partir de subcadenas o recuperarla de un almacén cifrado antes de pasarlo al constructor. Este enfoque hace que sea más difícil para terceros maliciosos modificar la cadena de claves de licencia pública en su archivo APK.

Nunca me he ocupado de la encriptación, hacking / cracking o cualquier otra faceta de la seguridad del software, así que no estoy seguro de cómo implementar el consejo de Google. Mi pregunta es ¿cómo proteger adecuadamente una cadena en un APK Android hecho con Mono para Android sin tener que ser un experto en seguridad?

One Solution collect form web for “Asegurar cadena en APK”

No sonar demasiado atrevido, pero creo que puede ignorar con seguridad su sugerencia. Los beneficios de seguridad de lo que están sugiriendo son mínimos en el mejor de los casos.

Para una discusión más detallada, lea esto: Cómo proteger la clave pública de Google Play al realizar la facturación de InApp

La verdad es que ninguno de los métodos descritos allí es perfectamente seguro. Si alguien está decidido a calcular su clave pública, lo harán. No importa lo que hagas, la clave pública terminará siendo pasada a la ctor, por lo que un usuario malintencionado siempre podría examinarlo en este momento. Todos los "juegos" que están sugiriendo están haciendo esto un poco más difícil, pero definitivamente no imposible.

Creo que lo mejor es aceptar esto por lo que realmente es. Esta clave es pública por una razón y es necesario vivir con el hecho de que podría verse comprometida fácilmente. Dado que todo el mundo duerme bien por la noche sabiendo esto, no veo ninguna razón por la que no debería así 🙂

Si realmente no puede dormir por la noche y quiere hacer algo .. Coloque su clave en su código con los dos primeros caracteres cambiados. Luego, durante el tiempo de ejecución, cambie los dos caracteres antes de usar la tecla. Esto debería ser suficiente para protegerse contra los ataques automatizados de fuerza bruta. Los ataques inteligentes que usted no puede hacer nada.

Editar:

Si está buscando una forma estándar de la industria para proteger su código, utilice un obfuscator comercial. Estas herramientas están diseñadas para este propósito. Algunos ejemplos son Mono para Android, obfuscation de código . Asegúrese de utilizar versiones comerciales con todas las funciones que incluyen cifrado de cadenas.

  • Mono para Android: ¿dónde está GCMBaseIntentService?
  • ¿Son las aplicaciones MonoDroid (Xamarin) menos propensas al robo?
  • Xamarin / Android: F # scoping - ¿Cómo veo un espacio de nombres en un archivo diferente?
  • Xamarin Forms PCL HttpClient lanzando una excepción no controlada en Android
  • Binding Library Mono para Android
  • No se puede depurar Xamarin aplicación de Android en VS con ADB
  • Creación de aplicaciones de mapas de muestras monodroide
  • La instalación de Xamarin Android falla
  • Cómo cerrar la actividad de Android con visual studio y xamarin
  • ¿Cómo detectar la salida de la aplicación en android?
  • Selección de Intenciones de Android para mostrar sólo la opción de correo electrónico
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.