Las contraseñas de Android utilizadas con la aplicación de correo electrónico incorporada se almacenan en texto plano dentro de una base de datos SQLite. Esto contrasta con la Gmail que utiliza Auth Tokens como se describe en La respuesta de Sachin Sekhar .
Para Jelly Bean, la ubicación de la base de datos es:
/data/system/users/0/accounts.db
La ubicación anterior varía con la versión de Android
Esta ubicación en un dispositivo no rooteado está asegurada y protegida por el Sistema Operativo.
En los dispositivos enraizados, los usuarios ya han descifrado técnicamente su propia seguridad, e incluso si no fuera en texto plano, seguiría siendo trivial desencriptarlo ya que la clave tiene que existir en algún lugar del dispositivo para hacerlo.
Un miembro del equipo de desarrollo de Android publicó una explicación que hasta hoy todavía se aplica:
Ahora, con respecto a esta preocupación particular. Lo primero que hay que aclarar es que la aplicación de correo electrónico soporta cuatro protocolos - POP3, IMAP, SMTP, y Exchange ActiveSync - y con muy pocas, muy limitadas excepciones, todos ellos son protocolos más antiguos que requieren que el cliente presente la contraseña al servidor en cada conexión. Estos protocolos requieren que retengamos la contraseña durante todo el tiempo que desee utilizar la cuenta en el dispositivo. Los protocolos más nuevos no hacen esto, por lo que algunos de los artículos han sido contrastados con Gmail, por ejemplo. Los protocolos más nuevos permiten al cliente utilizar la contraseña una vez para generar un token, guardar el token y descartar la contraseña.
Les insto a que revisen el artículo vinculado a en comentario #38 que está bien escrito y es bastante informativo. Proporciona muy buenos antecedentes sobre la diferencia entre "oscurecer" las contraseñas, y hacerlas realmente "seguras". Simplemente oscureciendo su contraseña (por ejemplo, base64) o encriptándola con una clave almacenada en otro lugar, se no hacer que su contraseña o sus datos sean más seguros. Un atacante aún podrá recuperarla.
(En particular, se han hecho algunas afirmaciones sobre algunos de los otros clientes de correo electrónico que no almacenan la contraseña en texto claro. Incluso cuando esto es cierto, no indica que la contraseña sea más segura. Una prueba sencilla: si puede arrancar el dispositivo y éste comenzará a recibir correo electrónico en sus cuentas configuradas, entonces las contraseñas no son realmente seguras. Están ofuscadas o encriptadas con otra clave almacenada en otro lugar).
Además, como este tema parece molestar a muchos usuarios de Android, también puede seguir este debate en Slashdot - Datos de la contraseña de Android almacenados en texto plano .
1 votos
¿Por qué hay que cifrar la contraseña almacenada con una clave? Esto sólo significaría que uno tiene que introducir la clave cada vez que se requiera la contraseña, entonces podría simplemente no guardar la contraseña e introducirla cada vez.
0 votos
La clave podría ser específica del dispositivo, obtenida del IMEI del teléfono o algo así. Lo que significa que el software puede obtener la clave sin que el usuario tenga que escribirla cada vez.
1 votos
¿Qué impide que cualquier otra pieza de software que se ejecute en el teléfono obtenga la clave? Este enfoque no añade ninguna capa adicional de seguridad