Por qué cifrar datos confidenciales de aplicaciones móviles

4

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?

    
pregunta Andrei Socaciu 19.12.2016 - 11:55
fuente

3 respuestas

3

La respuesta está parcialmente en tu pregunta:

  

En un teléfono no rooteado, solo la aplicación en sí puede leer los datos, encriptados o no.

Esta es una suposición de que el sistema operativo del teléfono proporciona garantías de seguridad correctamente. La evidencia práctica muestra que con frecuencia no es así, por lo que se recomienda precisamente cifrar los datos confidenciales: si falla el control de acceso normal.

Para que las personas propongan dos contramedidas: - cifrando todo con secreto externo (contraseña del usuario) - cifrar todo con un secreto, que se almacena en un almacenamiento compartimentado seguro (trustzone / secure enclave).

Incluso este último no es lo suficientemente bueno (cuando la implementación del sistema operativo es mala, la zona de confianza está sujeta a ataques, vea enlace ).

  

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.

El objetivo de un buen cifrado es hacer que el forzoso bruto no tenga sentido en primer lugar.

    
respondido por el Eugene 19.12.2016 - 17:15
fuente
4

Esto es sobre defensa en profundidad.

Aunque solo la aplicación correcta debería ser la única con acceso en un teléfono no rooteado, hay muchos ejemplos de aplicaciones capaces de romper el modelo de seguridad estándar (especialmente en Android) .

    
respondido por el Julian Knight 19.12.2016 - 12:03
fuente
0

Muchas aplicaciones, incluidas las aplicaciones de chat, no cifran el contenido de sus archivos confidenciales, por las razones exactas que menciona. Cuando realice una copia de seguridad en el almacenamiento local, por ejemplo, la tarjeta SD, o en una ubicación remota, deberá cifrar los archivos.

    
respondido por el Yorick de Wid 19.12.2016 - 12:02
fuente

Lea otras preguntas en las etiquetas