Al crear una aplicación móvil, se espera (OWASP, etc.) que todos los datos confidenciales que almacena la aplicación estén correctamente cifrados. Eso incluiría, por ejemplo, contraseñas, cookies de sesión, tokens de OAuth.
En Android, las aplicaciones normalmente usan SharedPreferences para almacenar dichos datos. Estos solo pueden ser leídos por la propia aplicación, a menos que alguien tenga acceso de root al teléfono, en cuyo caso puede leer las preferencias compartidas de todas las aplicaciones.
Aunque estoy totalmente de acuerdo con el cifrado de dichos datos, no tengo claro qué amenaza estamos mitigando al hacerlo, porque:
- En un teléfono no rooteado, solo la aplicación puede leer los datos, encriptados o no.
- En un teléfono rooteado, todas las apuestas están desactivadas, ya que root puede forzar las claves maestras y luego extraer las claves de la aplicación para descifrar los datos.
Un punto que veo es que si se hiciera una copia de seguridad de todo el contenido del teléfono en un servicio / sistema de archivos externo, entonces las protecciones del sistema operativo ya no se aplicarían, por lo que cualquier persona con acceso a la copia de seguridad podría leer todos los archivos. . ¿Hay alguna otra amenaza que estemos mitigando con el cifrado?