Almacene los datos cifrados localmente en el teléfono que la aplicación de Android y iOS descifra.

0

Tengo una aplicación para iOS y Android donde nuestra "salsa secreta" es un grupo de números (pesos, en realidad) almacenados en una base de datos. Nuestra aplicación utiliza estos números para comparar lo que el usuario de la aplicación le ha dado, y luego proporciona un resultado.

Para decirlo de otra manera, un usuario inicia la aplicación y le da a la aplicación un conjunto de números basados en algunas preguntas. Comparamos los números de la entrada del usuario con nuestra base de datos de números de "salsa secreta" y le damos un resultado de comparación.

¿Hay alguna forma de cifrar la base de datos de números de "salsa secreta" a la que solo se puede acceder mediante la aplicación? No necesitamos que el usuario se autentique, solo la aplicación para autenticarse.

Una pequeña arruga aquí es que nos gustaría poder actualizar esa base de datos de "salsa secreta" a medida que obtengamos mejores datos.

    
pregunta MontanaProf 13.06.2016 - 17:23
fuente

2 respuestas

2

Si la aplicación puede acceder a los datos localmente (en el dispositivo del usuario), entonces una persona determinada también puede hacerlo. Si realmente desea mantener los valores en secreto, puede considerar que la aplicación envíe la entrada del usuario a un servidor (que usted controlaría) que almacena los valores secretos y calcula el valor para el usuario. El servidor luego enviaría el valor a la aplicación para mostrar.

Esto mejoraría su problema de actualización, ya que simplemente podría actualizar los valores de los servidores siempre que se requiera un cambio.

Tenga en cuenta que alguien podría enviar fácilmente numerosas entradas y asignarlas a salidas que, según el tipo de cálculos que se estén realizando, podrían permitirles deducir los valores secretos.

    
respondido por el user114292 13.06.2016 - 17:55
fuente
0

¡Gran pregunta y bienvenido a la mina terrestre del cifrado móvil! Desafortunadamente, la respuesta realmente depende de en qué modelo de iPhone / fabricante de Android se ejecutará tu aplicación. Aquí hay un pequeño basurero de lo que sé. ¡Ojalá te lleve por el buen camino!

Tanto iOS como Android proporcionan bibliotecas criptográficas (cifradas) en el sistema operativo. Deberías poder buscar documentos en Google con bastante facilidad.

El enganche con cualquier cifrado basado en software será "¿Dónde almacenamos la clave de descifrado?". Obviamente, almacenar la base de datos cifrada en el espacio de almacenamiento de la aplicación, luego almacenar la clave de descifrado en un archivo justo al lado es un poco inútil.

Cada vez más, los dispositivos móviles están empezando a tener chips de almacenamiento de claves de hardware seguros (a menudo en forma de TPM , o lo que Apple llama "Enclave seguro") que lanzará la clave de descifrado a la aplicación de manera segura. Por lo general, tienen mucha flexibilidad en cuanto a cómo / cuándo se liberan las teclas ("solo se puede acceder durante 10 minutos después del desbloqueo del dispositivo", "solo después del inicio de sesión basado en contraseña", etc.).

El problema es que estas tecnologías aún son muy nuevas y están evolucionando rápidamente, por lo que no todos los dispositivos lo admiten todavía, y los que aún no tienen un conjunto de características / API coherente. Es peor en Android, pero hay cierta incoherencia incluso entre las versiones de Secure Enclave de Apple.

Android Marshmellow realizó una importante revisión de su criptografía para que las claves privadas nunca tengan que ser entregadas a la aplicación, todas las operaciones de cifrado / descifrado se pueden realizar dentro del almacén de claves seguro. Pero los dispositivos Android < 6.0 son impredecibles.

Si decide seguir esta ruta, la realidad es que necesitará detectar la versión del sistema operativo (y quizás el fabricante) en tiempo de ejecución y usar un código diferente según lo que encuentre. Probablemente será un gran esfuerzo de desarrollo y un dolor en el trasero para el control de calidad.

    
respondido por el Mike Ounsworth 13.06.2016 - 17:49
fuente

Lea otras preguntas en las etiquetas