Miré a mi alrededor y no encontré información sobre cómo Android logra almacenar contraseñas en el dispositivo. Especialmente las contraseñas de Gmail. ¿Estoy buscando aprender cómo Android encripta y almacena las contraseñas? Qué clave usa y dónde se almacena esta clave, y qué algoritmo de cifrado usa.
security
gmail
password
gmail-password
asudhak
fuente
fuente
Respuestas:
La aplicación oficial de Gmail no almacena la contraseña en su dispositivo. Su contraseña es 100% segura si usa esta aplicación.
Así es como funciona: los servidores de autenticación de Google utilizan la contraseña SOLAMENTE por primera vez. Después de la primera autenticación exitosa,
Auth Token
se descarga un dispositivo que se almacena en elaccounts.db
archivo como texto sin formato. Para todos los inicios de sesión posteriores, estoAuth Token
se utiliza, NO su contraseña original.Entonces, si su dispositivo es robado, todo lo que cualquiera puede obtener es el
Auth Token
que se invalida una vez que cambia su contraseña. Entonces, estarás al mando.Para la máxima seguridad, te recomiendo habilitar
2-Factor Authentication
y crearDevice Specific Password
para tu dispositivo. Después de perder el dispositivo, todo lo que necesita es desactivar ese dispositivo. Ni siquiera necesita cambiar la contraseña principal.Nota: Todo esto no es cierto si usa aplicaciones de correo electrónico de terceros para Gmail viz. La aplicación Stock Email, K-9 Mail, etc. El protocolo IMAP o POP necesita una contraseña original para autenticar a los usuarios en todo momento. Por lo tanto, la contraseña simple debe estar disponible para la aplicación de correo electrónico antes de enviarla al servidor. Por lo tanto, la mayoría de las aplicaciones de correo electrónico almacenan contraseñas en texto plano (el hashing / cifrado no sirve de nada porque la clave de hashing / cifrado debe almacenarse localmente). En este caso, le recomendaría que habilite
2-Factor Authentication
y creeDevice Specific Password
para su dispositivo. Después de perder el dispositivo, todo lo que necesita es desactivar ese dispositivo.Actualización:
Técnicamente, es posible almacenar contraseñas localmente en forma cifrada / hash sin mantener la clave de cifrado / clave hashing en texto plano localmente. Gracias a @JFSebastian por señalarlo.
Desafortunadamente, dicha implementación para Android aún no está disponible.Al iniciar ICS, Android proporciona KeyChain API mediante el cual una aplicación puede almacenar una contraseña localmente en forma segura. Las aplicaciones que usan KeyChain API son raras, pero la aplicación de correo electrónico común lo usa (Gracias a @wawa por esta información). Por lo tanto, su contraseña estará segura con la aplicación de correo electrónico estándar siempre que su pantalla esté bloqueada. Recuerde, KeyChain no es seguro si el dispositivo está rooteado y no está disponible en dispositivos anteriores a ICS.fuente
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 aplicación Gmail , que usa tokens de autenticación como se describe en la respuesta de Sachin Sekhar .
Para Jelly Bean, la ubicación de la base de datos es:
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 rooteados, los usuarios ya han descifrado técnicamente su propia seguridad, e incluso si no estuviera en texto plano, aún sería trivial descifrar ya que la clave debe 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:
Además, dado que este problema parece molestar a muchos usuarios de Android, también puede seguir esta discusión en Slashdot: datos de contraseña de Android almacenados en texto sin formato .
fuente
accounts.db
archivo está protegido para que no lo lean otras cuentassystem
.