informacion-privada-apps

Información privada en apps… ¿es posible?

Si eres un desarrollador con la intención de mantener información privada en apps, seguro que en tu cabeza ronda algo como… ¿puedo estar tranquilo de que los datos no salgan del móvil? La respuesta rápida es que… no, pero con algunos matices…

Con el aumento descontrolado del uso de dispositivos móviles en nuestras vidas, el desarrollo de apps se ha vuelto un negocio más que rentable. A estas alturas cualquier servicio tiene su versión móvil para que podamos acceder a él sin tener que sentarnos frente a nuestro “antiguo ordenador”.

En el último proyecto en el que me he visto involucrado, me he encontrado con el problema de tratar de asegurar la información que una app recibe de un servidor, así como la forma en la que tratar de evitar que esos datos se puedan capturar una vez están en el dispositivo.

Piensa en un escenario en el que vas a mostrar cierta información que llega de un servidor y que deseas almacenar en el dispositivo para no tener que volver a pedirla en el futuro. En la mayoría de los casos, esos datos no serán sensibles y no te preocupará que se puedan acceder por otras vías que no sean la propia app.

Pero ¿y si quiero almacenar información privada?

Confiar en un amplio abanico de usuarios con diferentes motivaciones (sanas o malvadas) es algo que no nos podemos permitir.

De forma automática, las apps (ver consejos de seguridad de Android) (ver consejos de seguridad de iOS) cuentan con un espacio de usuario al que otras apps no pueden acceder. De esta forma protegemos nuestra información privada en apps, ya sea la base de datos, ficheros de configuración, archivos temporales… del acceso desde terceros.

Es lo que se conoce como sandbox o aislamiento de procesos, una forma de poner cerco a todo lo relacionado con la ejecución de una aplicación.

app-sandbox

Diferencia de la ejecución normal o con el uso de sandbox.

El problema surge cuando estos dispositivos pueden rootearse, ahí se nos cae todo… Un dispositivo Android al que se le ha hecho root o un iOS al que se le ha aplicado jailbreak, dará acceso total al usuario para poder hacer lo que quiera y acceder (con mayor o menor dificultad) a todas las zonas del dispositivo.

¿Entonces, estoy vendido?

Tampoco es eso, pero que alguien acceda a la información privada en apps es cuestión de tiempo y ganas. Dependiendo del valor de lo que almacenes, tendrás que esforzarte para que ese tiempo y esas ganas tengan que ser mayores.

Si tu información no es importante, entonces el sandboxing servirá (aunque te importe poco lo que ocurra con los datos).

Pero si necesitas que ciertos datos no sean accesibles por nadie que no sea la app que debe gestionarlos, puedes optar por:

1) Cifrar la información privada en apps, todos los datos que almacenes deben estar cifrados. Ojo, esto tampoco te asegura 100%, pero complicará un poco más el acceso y puede que sea suficiente barrera para quitarle las ganas a un posible atacante.

2) Ofuscar tu código, de esa forma, le complicarás un poco más la vida a aquel que quiera echar un vistazo a la forma en la que cifras los datos.

Si la seguridad total no existe, nos toca esperar que la paciencia del atacante sea finita

La conclusion en este tema es sencilla, nada hace que sea imposible acceder a la información privada en apps.

Podemos tomar los consejos de ofuscar el código y cifrar todos los datos sensibles, pero si topamos con un atacante con suficiente paciencia como para decompilar nuestra app y estar días y noches sin dormir hasta llegar al tesoro, entonces es altamente probable que lo consiga.

Nuestro objetivo será valorar la importancia de la información para calcular cuántas barreras necesitamos poner como para romper esa paciencia.

 

Si ves algún error, no estás de acuerdo con lo que cuento o quieres hacer alguna aportación, no dudes en pasarte por los comentarios.

Cristóbal Espinosa

Cristóbal Espinosa

Cloud Security Manager en Accenture.

Ingeniero en Informática, Máster en Seguridad de la Información, CISA, CPTP e ISO 27.001 LA.

He sido galardonado con el premio Microsoft Imagine Cup 2.007 en la categoría Software Design y como Microsoft Active Professional en 2.010. También con el diploma honorífico de la Universidad de Granada y el X premio Granada Joven.

Quiero contar lo que hago en el trabajo, lo que aprendo de los compañeros y cualquier cosa que te pueda ayudar a solucionar ese problema, a mejorar un proceso o a interesarte por la seguridad.

Si quieres saber más o contactar, puedes ver mi perfil en LinkedIn.
Cristóbal Espinosa