Join FlipAndroid.COM Telegram Group: https://t.me/joinchat/F_aqThGkhwcLzmI49vKAiw


En seguridad de facturación de aplicaciones

He terminado de desarrollar mi aplicación que se utiliza en la facturación de aplicaciones v3. Mi aplicación es una aplicación de ayuda de examen que tiene una lista de preguntas que se insertan en una base de datos. Lo que me preocupa es la seguridad como más allá de proguard hay casi mucho poco más. Mi aplicación consulta el inventario de los artículos comprados, por lo que guardar las compras no es un problema.

Así que el primer problema es que alguien podría descompilar la aplicación (que he hecho) e incluso con proguard puede sin demasiada dificultad recuperar todas las preguntas.

Lo siguiente es la clave pública de la aplicación. Esto se puede tomar fácilmente de mi aplicación y de acuerdo con la guía de desarrolladores, esto es algo que debo mantener seguro.

Sin embargo realmente no sé cómo poner en práctica cualquier forma de seguridad. O incluso qué tan lejos debo ir con la seguridad. Sin un servidor, si estoy manteniendo todo en el dispositivo, reconozco que no será perfecto (lejos de ello), pero al menos me gustaría que los hackers se disuadan en lugar de divertirse.

Así que esencialmente la pregunta es:

¿Qué tipo de seguridad debo utilizar y cómo se utiliza? Sólo me apunta a los enlaces que pasan paso a paso para que pueda entender que sería increíble.

¡Muchas gracias!

Aclaración:

No hay servidor involucrado. Los datos se almacenan en la aplicación. Cuando se consulta el inventario (a través del método queryinventoryasync) vuelve si se compra o no un inventario y éste se ejecuta cada vez que se inicia la aplicación. En la facturación de la aplicación sí mismo presumo está bien, estoy pidiendo más sobre mi propia aplicación la llave pública de la aplicación – estoy significado para hacer de alguna manera que más difícil de copiar pero actualmente acabo de romperlo en 15 secuencias y apenas "agrego" Los unos a los otros en tiempo de ejecución, pero eso es apenas mejor que simplemente tenerlo como una cadena. Me gustaría cifrarlo de alguna manera simplemente no sé cómo.

One Solution collect form web for “En seguridad de facturación de aplicaciones”

Buena pregunta.

La clave pública debe estar disponible en el dispositivo para poder ser utilizada. Una vez que viene en el dispositivo que realmente no está protegido más. La clave en sí no es un secreto, pero tenemos que hacer su posible reemplazo para ser una tarea más difícil.

Lo que puede hacer es utilizar el cifrado XOR. Aquí hay un ejemplo si los métodos de encriptación y descifrado de XOR.

public static String xorEncrypt(String input, String key) { byte[] inputBytes = input.getBytes(); int inputSize = inputBytes.length; byte[] keyBytes = key.getBytes(); int keySize = keyBytes.length - 1; byte[] outBytes = new byte[inputSize]; for (int i=0; i<inputSize; i++) { outBytes[i] = (byte) (inputBytes[i] ^ keyBytes[i % keySize]); } return new String(Base64.encode(outBytes, Base64.DEFAULT)); } public static String xorDecrypt(String input, String key) { byte[] inputBytes = Base64.decode(input, Base64.DEFAULT); int inputSize = inputBytes.length; byte[] keyBytes = key.getBytes(); int keySize = keyBytes.length - 1; byte[] outBytes = new byte[inputSize]; for (int i=0; i<inputSize; i++) { outBytes[i] = (byte) (inputBytes[i] ^ keyBytes[i % keySize]); } return new String(outBytes); } 

Cómo lo que usted necesita es elegir una cadena de la contraseña ( String key ) y cifrar su llave pública ( String input ) que la utiliza. Esta clave encriptada se puede almacenar en una clase. Cuando necesite su valor de clave real, llame a xorDecrypt() con la contraseña y la cadena de clave pública (cifrada). La contraseña es una cadena que almacena en algún lugar de su código. Como he dicho, en realidad no lo protegemos, pero lo hacemos más difícil de encontrar y / o reemplazar.

Puede agregar una lógica más sofisticada sobre cómo combinar clave pública cifrada y contraseña también. Esto sólo añadir más complejidad, pero no le dará ninguna garantía de su clave no será descifrado. En cualquier caso, Google confirma que el cifrado XOR es mejor que nada.

Android 4.3 agregó algunas características de seguridad más que se pueden utilizar para almacenar claves públicas también. Esta solución requerirá un servidor de comunicación y soporte de hardware para ser realmente seguro. Estas son las mejoras de la cadena de claves y el proveedor de Keystore de Android .

FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.