¿Es seguro almacenar contraseñas en el almacenamiento de la aplicación Android / iOS?

5

Estoy creando una aplicación que inicia sesión en una API remota que no implementa auth2 u otro mecanismo similar, y quiero saber si es razonablemente seguro asumir que la contraseña será segura si se almacena en el almacenamiento privado de la aplicación como Preferencias compartidas o SQLite?

    
pregunta IAmJulianAcosta 01.08.2016 - 15:48
fuente

1 respuesta

4

OWASP, una organización que brinda orientación a los desarrolladores de aplicaciones, tiene algunos materiales de referencia:

  1. La referencia de almacenamiento de datos inseguros de Mobile Top Ten 2012 original - enlace
  2. La referencia actualizada sobre almacenamiento de datos inseguros de Mobile Top Ten 2014 - enlace
  3. Una hoja de trucos para desarrolladores de iOS que hace sugerencias específicas sobre dónde almacenar qué tipos de datos, cuando se requieren las tareas funcionales de una aplicación: enlace

Para Android, podría sugerir el uso de preferencias-seguras en lugar de las Preferencias Compartidas que sugirió, o tal vez cwac-prefs . Vea ejemplos de estos en el libro de recetas de seguridad de Android.

En iOS, asegúrese de leer el libro de Seguridad de aplicaciones de iOS, que recomienda Lockbox para almacenar datos en el llavero, también Como métodos para agregar y eliminar credenciales. Si está creando una aplicación móvil iOS, este libro es muy recomendable.

Si no te gusta o por alguna razón no puedes usar Lockbox (o simplemente quieres probar diferentes opciones), entonces revisa esta idea del libro, Pruebas de penetración de aplicaciones móviles:

  

Utilice las diferentes opciones proporcionadas por Apple, como aprendimos en el   sección Protección de datos de llavero en el Capítulo 2, Snooping Around the   Arquitectura. También puedes utilizar uno de los simples envoltorios.   PDKeyChainBindingController   ( enlace ) para asegurar   Los datos del llavero. Sin embargo, si el dispositivo tiene jailbreak, entonces llavero   La información no es segura. Se recomienda utilizar cifrado personalizado.   Técnicas para cifrar la cadena que se almacena en el llavero. Hacer   El mejor uso de los servicios de llavero API.   ( enlace ).

El libro también trata otro tema relacionado con el almacenamiento de credenciales en el llavero:

  

El 18 de junio de 2015, una vulnerabilidad de robo de contraseña, también conocida como   XARA (ataque de recursos de aplicación cruzada), descrito para iOS y OS X   Rompió los servicios de Llavero en la cárcel rota y la no rota   dispositivos La vulnerabilidad es similar a la solicitud entre sitios.   Ataque de falsificación en aplicaciones web. A pesar del aislamiento de Apple.   protección y la investigación de seguridad de su App Store, fue posible   Eludir el mecanismo de control de seguridad. Proporcionó claramente la   Necesidad de proteger el mecanismo de aplicación cruzada entre el sistema operativo.   y el desarrollador de la aplicación. Apple lanzó una actualización de seguridad semana después   La investigación de XARA. Más información se puede encontrar en    enlace

y proporciona detalles sobre el llavero en sí, si se utiliza un dispositivo con jailbreak para intentar acceder a él

  

El llavero en un dispositivo iOS se usa para almacenar de manera segura información confidencial   información como credenciales, como nombres de usuario, contraseñas,   tokens de autenticación para diferentes aplicaciones, y así sucesivamente, a lo largo de   con credenciales de conectividad (Wi-Fi / VPN) y así sucesivamente. Se encuentra en   Los dispositivos iOS como un archivo de base de datos SQLite cifrado ubicado en   /private/var/Keychains/keychain-2.db

    
respondido por el atdre 02.08.2016 - 06:53
fuente

Lea otras preguntas en las etiquetas